<?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 Pompa ciepła - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/pompa-ciepla/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/pompa-ciepla/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Wed, 16 Sep 2026 15:24:04 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Pompa ciepła - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/pompa-ciepla/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Bufor ciepła z grzałkami czy pompa ciepła? Kalkulator kosztów i opłacalności.</title>
		<link>https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 08 Jul 2026 15:39:46 +0000</pubDate>
				<category><![CDATA[Bufor ciepła]]></category>
		<category><![CDATA[Bufory ciepła]]></category>
		<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Finanse i opłacalność]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[amortyzacja pompy ciepła]]></category>
		<category><![CDATA[bufor ciepła]]></category>
		<category><![CDATA[jastrych akumulacyjny]]></category>
		<category><![CDATA[koszty ogrzewania 2026]]></category>
		<category><![CDATA[moc grzałek]]></category>
		<category><![CDATA[obliczenia ozc]]></category>
		<category><![CDATA[ogrzewanie elektryczne]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[taryfa g12w]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=6624</guid>

					<description><![CDATA[<p>Planujesz modernizację kotłowni lub budowę nowego domu i zastanawiasz się, jakie źródło zasilania wodnego ogrzewania podłogowego będzie najbardziej ekonomiczne dla Twojego budżetu? Wybór odpowiedniego systemu grzewczego to poważna decyzja na dekady, która bezpośrednio wpłynie na Twoje długoterminowe finanse. W tym kompleksowym, inżynierskim poradniku bierzemy pod lupę dwa najpopularniejsze rozwiązania rynkowe, bezwzględnie obalając mity instalatorów. Przeczytaj nasz najnowszy artykuł: Bufor ciepła z grzałkami czy pompa ciepła? Szokujące porównanie kosztów i opłacalności w 2026 roku. Odkryj twarde wyliczenia inżynierskie, wzory fizyczne oraz realne stopy zwrotu (ROI) dla różnych metraży budynków, które uchronią Cię przed branżową ściemą i kosztownym błędem wykonawczym.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/">Bufor ciepła z grzałkami czy pompa ciepła? Kalkulator kosztów i opłacalności.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-buffer-pump {
    --rk-dark:#102536;
    --rk-navy:#15384d;
    --rk-blue:#078fbe;
    --rk-cyan:#25c7d8;
    --rk-cyan-soft:#e8fafd;
    --rk-orange:#ff6a3d;
    --rk-orange-soft:#fff0ea;
    --rk-green:#16836b;
    --rk-green-soft:#eaf8f3;
    --rk-yellow:#9a6900;
    --rk-yellow-soft:#fff7dc;
    --rk-red:#c7443a;
    --rk-red-soft:#fff0ee;
    --rk-purple:#6659c7;
    --rk-purple-soft:#f1efff;
    --rk-ink:#1c2d38;
    --rk-text:#465d6c;
    --rk-muted:#687f8d;
    --rk-line:#d6e5eb;
    --rk-soft:#f4f9fb;
    --rk-white:#fff;
    width:100%;
    color:var(--rk-ink);
    font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
    font-size:17px;
    line-height:1.72;
  }
  #rk-buffer-pump,
  #rk-buffer-pump *,
  #rk-buffer-pump *::before,
  #rk-buffer-pump *::after{box-sizing:border-box}
  #rk-buffer-pump [hidden]{display:none!important}
  #rk-buffer-pump img,
  #rk-buffer-pump svg{display:block;max-width:100%}
  #rk-buffer-pump button,
  #rk-buffer-pump input,
  #rk-buffer-pump select,
  #rk-buffer-pump summary{font:inherit}
  #rk-buffer-pump button{cursor:pointer;-webkit-tap-highlight-color:transparent}
  #rk-buffer-pump a{color:#007fae;font-weight:760;text-decoration-thickness:1.4px;text-underline-offset:3px}
  #rk-buffer-pump a:hover{color:#005d82}
  #rk-buffer-pump a:focus-visible,
  #rk-buffer-pump button:focus-visible,
  #rk-buffer-pump input:focus-visible,
  #rk-buffer-pump select:focus-visible,
  #rk-buffer-pump summary:focus-visible{outline:3px solid rgba(37,199,216,.5);outline-offset:3px}
  #rk-buffer-pump h2,
  #rk-buffer-pump h3,
  #rk-buffer-pump h4,
  #rk-buffer-pump p,
  #rk-buffer-pump ul,
  #rk-buffer-pump ol,
  #rk-buffer-pump blockquote{margin-top:0}
  #rk-buffer-pump h2,
  #rk-buffer-pump h3,
  #rk-buffer-pump h4{color:var(--rk-dark);line-height:1.18}
  #rk-buffer-pump h2{margin-bottom:18px;font-size:clamp(1.7rem,3.6vw,2.55rem);font-weight:920;letter-spacing:-.035em}
  #rk-buffer-pump h3{margin:28px 0 12px;font-size:clamp(1.16rem,2.2vw,1.46rem);font-weight:880;letter-spacing:-.02em}
  #rk-buffer-pump h4{margin:20px 0 8px;font-size:1.04rem}
  #rk-buffer-pump p{margin-bottom:18px;color:var(--rk-text)}
  #rk-buffer-pump strong{color:var(--rk-ink)}
  #rk-buffer-pump ul,
  #rk-buffer-pump ol{margin-bottom:22px;padding-left:1.3em;color:var(--rk-text)}
  #rk-buffer-pump li{margin-bottom:8px}
  #rk-buffer-pump section[id]{scroll-margin-top:24px}
  #rk-buffer-pump .rk-bp-shell{width:min(100%,1280px);margin:0 auto;border:1px solid var(--rk-line);border-radius:28px;background:var(--rk-white);box-shadow:0 22px 70px rgba(16,37,54,.09)}

  #rk-buffer-pump .rk-bp-hero{position:relative;isolation:isolate;overflow:hidden;padding:clamp(36px,6vw,76px) clamp(24px,6vw,74px) clamp(30px,5vw,58px);border-radius:27px 27px 0 0;background:radial-gradient(circle at 8% 118%,rgba(255,106,61,.22),transparent 38%),linear-gradient(128deg,#102536 0%,#123d51 55%,#0c6971 100%)}
  #rk-buffer-pump .rk-bp-hero::before,
  #rk-buffer-pump .rk-bp-hero::after{position:absolute;z-index:-1;border:clamp(22px,4vw,48px) solid rgba(255,255,255,.055);border-radius:50%;content:"";pointer-events:none}
  #rk-buffer-pump .rk-bp-hero::before{right:-115px;bottom:-185px;width:390px;height:390px}
  #rk-buffer-pump .rk-bp-hero::after{right:125px;bottom:-238px;width:290px;height:290px}
  #rk-buffer-pump .rk-bp-kicker,
  #rk-buffer-pump .rk-bp-eyebrow{display:block;margin-bottom:13px;color:var(--rk-orange);font-size:.76rem;font-weight:900;letter-spacing:.13em;line-height:1.35;text-transform:uppercase}
  #rk-buffer-pump .rk-bp-hero-title{max-width:1100px;margin:0 0 20px;color:#fff!important;font-size:clamp(2.05rem,5.1vw,4.35rem);font-weight:950;line-height:.99;letter-spacing:-.06em}
  #rk-buffer-pump .rk-bp-hero-title span{color:#63e5f2!important}
  #rk-buffer-pump .rk-bp-lead{max-width:1050px;margin-bottom:24px;color:#dceef2;font-size:clamp(1.03rem,2vw,1.31rem);line-height:1.62}
  #rk-buffer-pump .rk-bp-tags,
  #rk-buffer-pump .rk-bp-byline{display:flex;flex-wrap:wrap;gap:10px 12px}
  #rk-buffer-pump .rk-bp-tag{display:inline-flex;align-items:center;min-height:36px;padding:6px 15px;border:1px solid rgba(255,255,255,.22);border-radius:999px;background:rgba(255,255,255,.07);color:#fff!important;font-size:.78rem;font-weight:850}
  #rk-buffer-pump .rk-bp-byline{margin-top:23px;color:#e2f1f4!important;font-size:.82rem;font-weight:760}
  #rk-buffer-pump .rk-bp-byline span,
  #rk-buffer-pump .rk-bp-byline strong{color:#fff!important}
  #rk-buffer-pump .rk-bp-hero-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:34px}
  #rk-buffer-pump .rk-bp-hero-metric{min-width:0;padding:22px;border:1px solid rgba(255,255,255,.19);border-radius:19px;background:rgba(255,255,255,.075);backdrop-filter:blur(3px)}
  #rk-buffer-pump .rk-bp-hero-metric b{display:block;margin-bottom:7px;color:#fff!important;font-size:1rem;line-height:1.35}
  #rk-buffer-pump .rk-bp-hero-metric span{display:block;color:#dceef2!important;font-size:.91rem;line-height:1.55}

  #rk-buffer-pump .rk-bp-nav{padding:22px clamp(18px,4vw,48px) 24px;border-bottom:1px solid var(--rk-line);background:#f4fafc}
  #rk-buffer-pump .rk-bp-nav-label{display:block;margin-bottom:11px;color:var(--rk-dark);font-size:.74rem;font-weight:950;letter-spacing:.12em;text-transform:uppercase}
  #rk-buffer-pump .rk-bp-nav-track{display:flex;flex-wrap:wrap;gap:8px}
  #rk-buffer-pump .rk-bp-nav a{display:inline-flex;align-items:center;min-height:34px;padding:6px 11px;border:1px solid #c9e0e8;border-radius:999px;background:#fff;color:#345264;font-size:.75rem;font-weight:820;line-height:1.25;text-decoration:none}
  #rk-buffer-pump .rk-bp-nav a:hover{border-color:#7fc8d8;background:var(--rk-cyan-soft);color:#075d78}

  #rk-buffer-pump .rk-bp-section{padding:clamp(42px,7vw,78px) clamp(22px,6vw,72px);border-bottom:1px solid var(--rk-line)}
  #rk-buffer-pump .rk-bp-section:last-child{border-bottom:0}
  #rk-buffer-pump .rk-bp-section-soft{background:var(--rk-soft)}
  #rk-buffer-pump .rk-bp-section-dark{background:var(--rk-dark)}
  #rk-buffer-pump .rk-bp-section-dark h2,
  #rk-buffer-pump .rk-bp-section-dark h3,
  #rk-buffer-pump .rk-bp-section-dark p,
  #rk-buffer-pump .rk-bp-section-dark li{color:#fff}
  #rk-buffer-pump .rk-bp-intro{max-width:980px;font-size:1.06rem}
  #rk-buffer-pump .rk-bp-answer{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:24px;align-items:stretch}
  #rk-buffer-pump .rk-bp-answer-main{padding:28px;border:1px solid #b9e4eb;border-radius:22px;background:linear-gradient(135deg,#e7fbfd,#f7ffff)}
  #rk-buffer-pump .rk-bp-answer-main p:last-child{margin-bottom:0}
  #rk-buffer-pump .rk-bp-verdict{display:grid;gap:13px}
  #rk-buffer-pump .rk-bp-verdict-item{padding:18px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-buffer-pump .rk-bp-verdict-item b{display:block;margin-bottom:5px}
  #rk-buffer-pump .rk-bp-verdict-item span{display:block;color:var(--rk-text);font-size:.9rem;line-height:1.55}
  #rk-buffer-pump .rk-bp-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  #rk-buffer-pump .rk-bp-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
  #rk-buffer-pump .rk-bp-card{min-width:0;padding:23px;border:1px solid var(--rk-line);border-radius:20px;background:#fff}
  #rk-buffer-pump .rk-bp-card h3,
  #rk-buffer-pump .rk-bp-card h4{margin-top:0}
  #rk-buffer-pump .rk-bp-card p:last-child,
  #rk-buffer-pump .rk-bp-card ul:last-child{margin-bottom:0}
  #rk-buffer-pump .rk-bp-card-accent{border-color:#bce6ed;background:var(--rk-cyan-soft)}
  #rk-buffer-pump .rk-bp-card-warn{border-color:#f1d492;background:var(--rk-yellow-soft)}
  #rk-buffer-pump .rk-bp-card-green{border-color:#bfe5d8;background:var(--rk-green-soft)}
  #rk-buffer-pump .rk-bp-note{margin:24px 0;padding:20px 22px;border-left:5px solid var(--rk-cyan);border-radius:0 16px 16px 0;background:var(--rk-cyan-soft)}
  #rk-buffer-pump .rk-bp-note.warn{border-color:#e0a12b;background:var(--rk-yellow-soft)}
  #rk-buffer-pump .rk-bp-note.error{border-color:var(--rk-red);background:var(--rk-red-soft)}
  #rk-buffer-pump .rk-bp-note p:last-child{margin-bottom:0}
  #rk-buffer-pump .rk-bp-formula{margin:22px 0;padding:18px 22px;border:1px solid #bfdfe7;border-radius:16px;background:#f8fdff;color:var(--rk-dark);font-weight:830;text-align:center;overflow-wrap:anywhere}

  #rk-buffer-pump .rk-bp-number-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;counter-reset:rkstep}
  #rk-buffer-pump .rk-bp-number-card{display:flex;align-items:flex-start;gap:16px;min-width:0;padding:21px;border:1px solid var(--rk-line);border-radius:18px;background:#fff;counter-increment:rkstep}
  #rk-buffer-pump .rk-bp-number{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;margin:0;border-radius:50%;background:#d8f4f8;color:#135671;font-size:1rem;font-weight:950;line-height:1;text-align:center}
  #rk-buffer-pump .rk-bp-number::before{content:counter(rkstep)}
  #rk-buffer-pump .rk-bp-number-copy{min-width:0}
  #rk-buffer-pump .rk-bp-number-copy h3{margin:2px 0 7px;font-size:1.02rem}
  #rk-buffer-pump .rk-bp-number-copy p{margin:0;font-size:.91rem;line-height:1.58}

  #rk-buffer-pump .rk-bp-tool{margin-top:28px;padding:clamp(20px,4vw,34px);border:1px solid #bedee8;border-radius:24px;background:#f8fcfd;box-shadow:0 14px 40px rgba(16,37,54,.06)}
  #rk-buffer-pump .rk-bp-tool-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:25px}
  #rk-buffer-pump .rk-bp-tool-head h3{margin:0 0 8px}
  #rk-buffer-pump .rk-bp-tool-head p{margin:0;max-width:760px;font-size:.91rem}
  #rk-buffer-pump .rk-bp-badge{display:inline-flex;align-items:center;min-height:32px;padding:5px 11px;border-radius:999px;background:var(--rk-cyan-soft);color:#09647e;font-size:.72rem;font-weight:900;white-space:nowrap}
  #rk-buffer-pump .rk-bp-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
  #rk-buffer-pump .rk-bp-control{min-width:0}
  #rk-buffer-pump .rk-bp-control label{display:block;margin-bottom:7px;color:var(--rk-dark);font-size:.82rem;font-weight:850;line-height:1.35}
  #rk-buffer-pump .rk-bp-control small{display:block;margin-top:5px;color:var(--rk-muted);font-size:.72rem;line-height:1.42}
  #rk-buffer-pump .rk-bp-input-wrap{display:flex;align-items:stretch;width:100%;border:1px solid #bdd5df;border-radius:12px;background:#fff;overflow:hidden}
  #rk-buffer-pump .rk-bp-input-wrap:focus-within{border-color:var(--rk-blue);box-shadow:0 0 0 3px rgba(7,143,190,.12)}
  #rk-buffer-pump .rk-bp-input-wrap input,
  #rk-buffer-pump .rk-bp-input-wrap select{width:100%;min-width:0;padding:11px 12px;border:0;background:#fff;color:var(--rk-ink);font-weight:760;outline:0}
  #rk-buffer-pump .rk-bp-input-wrap span{display:grid;place-items:center;flex:0 0 auto;padding:0 11px;border-left:1px solid var(--rk-line);background:#edf5f7;color:#536d7b;font-size:.76rem;font-weight:820;white-space:nowrap}
  #rk-buffer-pump .rk-bp-subhead{grid-column:1/-1;margin:10px 0 -2px;padding-top:10px;border-top:1px solid var(--rk-line);color:var(--rk-dark);font-size:.78rem;font-weight:950;letter-spacing:.08em;text-transform:uppercase}
  #rk-buffer-pump .rk-bp-reset{align-self:flex-start;padding:8px 13px;border:1px solid #bfd6df;border-radius:999px;background:#fff;color:#345264;font-size:.75rem;font-weight:850}
  #rk-buffer-pump .rk-bp-reset:hover{background:var(--rk-cyan-soft)}
  #rk-buffer-pump .rk-bp-results{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:24px}
  #rk-buffer-pump .rk-bp-result{min-width:0;padding:18px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-buffer-pump .rk-bp-result b{display:block;margin-bottom:5px;color:var(--rk-dark);font-size:clamp(1.12rem,2.6vw,1.55rem);line-height:1.2;overflow-wrap:anywhere}
  #rk-buffer-pump .rk-bp-result span{display:block;color:var(--rk-muted);font-size:.75rem;font-weight:760;line-height:1.42}
  #rk-buffer-pump .rk-bp-result.primary{border-color:#7fd0dc;background:linear-gradient(135deg,#e8fbfd,#fff)}
  #rk-buffer-pump .rk-bp-result.good{border-color:#a9dccb;background:var(--rk-green-soft)}
  #rk-buffer-pump .rk-bp-result.warn{border-color:#efcf89;background:var(--rk-yellow-soft)}
  #rk-buffer-pump .rk-bp-result.bad{border-color:#e5aaa5;background:var(--rk-red-soft)}
  #rk-buffer-pump .rk-bp-result-wide{grid-column:span 2}
  #rk-buffer-pump .rk-bp-driver{margin-top:16px;padding:18px 20px;border:1px solid #c6dde5;border-radius:17px;background:#fff}
  #rk-buffer-pump .rk-bp-driver b{display:block;margin-bottom:6px}
  #rk-buffer-pump .rk-bp-driver p{margin:0;font-size:.88rem;line-height:1.55}

  #rk-buffer-pump .rk-bp-tabs{display:flex;flex-wrap:wrap;gap:9px;margin:22px 0 16px}
  #rk-buffer-pump .rk-bp-tab{min-height:42px;padding:9px 15px;border:1px solid #bcd8e1;border-radius:12px;background:#fff;color:#28495b;font-size:.79rem;font-weight:880}
  #rk-buffer-pump .rk-bp-tab[aria-pressed="true"]{border-color:var(--rk-blue);background:var(--rk-blue);color:#fff}
  #rk-buffer-pump .rk-bp-chart-card{padding:18px;border:1px solid var(--rk-line);border-radius:20px;background:#fff}
  #rk-buffer-pump .rk-bp-chart-wrap{width:100%;min-height:360px;overflow:hidden}
  #rk-buffer-pump .rk-bp-chart-wrap svg{width:100%;height:auto;min-height:330px}
  #rk-buffer-pump .rk-bp-chart-legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:12px;color:var(--rk-text);font-size:.78rem;font-weight:780}
  #rk-buffer-pump .rk-bp-legend{display:inline-flex;align-items:center;gap:7px}
  #rk-buffer-pump .rk-bp-legend::before{width:24px;height:4px;border-radius:9px;background:var(--rk-orange);content:""}
  #rk-buffer-pump .rk-bp-legend.pump::before{background:var(--rk-blue)}
  #rk-buffer-pump .rk-bp-chart-note{margin:13px 0 0;font-size:.78rem;line-height:1.5}

  #rk-buffer-pump .rk-bp-flow-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 18px}
  #rk-buffer-pump .rk-bp-flow-tab{min-height:44px;padding:10px 17px;border:1px solid #bad5df;border-radius:999px;background:#fff;color:#28495b;font-size:.8rem;font-weight:900}
  #rk-buffer-pump .rk-bp-flow-tab[aria-pressed="true"]{border-color:var(--rk-dark);background:var(--rk-dark);color:#fff}
  #rk-buffer-pump .rk-bp-flow-status{margin:0 0 20px;padding:14px 18px;border-radius:14px;background:#edf8fb;color:#315564;font-size:.9rem}
  #rk-buffer-pump .rk-bp-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  #rk-buffer-pump .rk-bp-flow-card{position:relative;min-width:0;padding:18px 14px;border:1px solid var(--rk-line);border-radius:18px;background:#fff}
  #rk-buffer-pump .rk-bp-flow-card:not(:last-child)::after{position:absolute;top:29px;right:-13px;z-index:2;width:24px;color:var(--rk-orange);font-size:1.35rem;font-weight:950;line-height:1;text-align:center;content:"→"}
  #rk-buffer-pump .rk-bp-flow-icon{display:grid;place-items:center;width:44px;height:44px;margin-bottom:13px;border-radius:50%;background:var(--rk-cyan-soft);color:#08769a;font-size:1.2rem;font-weight:950;line-height:1}
  #rk-buffer-pump .rk-bp-flow-card h3{margin:0 0 8px;font-size:.98rem}
  #rk-buffer-pump .rk-bp-flow-card p{margin:0;font-size:.78rem;line-height:1.52}
  #rk-buffer-pump .rk-bp-flow-pair{display:grid;gap:7px}
  #rk-buffer-pump .rk-bp-flow-pair span{display:block;padding:7px;border-radius:9px;background:#f2f7f9;color:#44606e;font-size:.72rem;line-height:1.4}
  #rk-buffer-pump .rk-bp-flow-pair b{font-size:.7rem}

  #rk-buffer-pump .rk-bp-table-wrap{width:100%;margin:24px 0;border:1px solid var(--rk-line);border-radius:20px;overflow:hidden;background:#fff}
  #rk-buffer-pump table{width:100%;border-collapse:collapse;table-layout:fixed}
  #rk-buffer-pump th,
  #rk-buffer-pump td{padding:15px 16px;border-right:1px solid var(--rk-line);border-bottom:1px solid var(--rk-line);vertical-align:top;text-align:left;overflow-wrap:anywhere}
  #rk-buffer-pump th:last-child,
  #rk-buffer-pump td:last-child{border-right:0}
  #rk-buffer-pump tr:last-child td{border-bottom:0}
  #rk-buffer-pump thead th{background:var(--rk-navy);color:#fff;font-size:.82rem;font-weight:900}
  #rk-buffer-pump tbody td{color:var(--rk-text);font-size:.86rem;line-height:1.55}
  #rk-buffer-pump tbody tr:nth-child(even){background:#f7fafb}
  #rk-buffer-pump .rk-bp-table-summary{width:100%;padding:15px 18px;border-bottom:1px solid var(--rk-line);background:#edf8fb;color:#294b5d;font-size:.83rem;font-weight:760;line-height:1.55}

  #rk-buffer-pump .rk-bp-cta{position:relative;isolation:isolate;overflow:hidden;margin-top:30px;padding:clamp(27px,5vw,44px);border-radius:22px;background:linear-gradient(125deg,#102536,#174a5d 70%,#0a7077);color:#fff;box-shadow:0 18px 45px rgba(16,37,54,.16)}
  #rk-buffer-pump .rk-bp-cta::after{position:absolute;z-index:-1;right:-70px;bottom:-110px;width:270px;height:270px;border:34px solid rgba(255,255,255,.06);border-radius:50%;content:""}
  #rk-buffer-pump .rk-bp-cta .rk-bp-eyebrow{color:#ff9a78}
  #rk-buffer-pump .rk-bp-cta-title{max-width:900px;margin:0 0 12px;color:#fff!important;font-size:clamp(1.45rem,3.5vw,2.35rem);font-weight:930;line-height:1.13;letter-spacing:-.035em}
  #rk-buffer-pump .rk-bp-cta p{max-width:930px;color:#dceef2}
  #rk-buffer-pump .rk-bp-cta-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:11px 20px;border-radius:12px;background:var(--rk-orange);color:#fff!important;font-size:.84rem;font-weight:900;text-align:center;text-decoration:none;box-shadow:0 8px 20px rgba(0,0,0,.16)}
  #rk-buffer-pump .rk-bp-cta-button:hover{background:#e8572f;color:#fff!important}

  #rk-buffer-pump .rk-bp-sources{margin-bottom:22px}
  #rk-buffer-pump .rk-bp-sources li{margin-bottom:11px}
  #rk-buffer-pump .rk-bp-responsibility{padding:20px 22px;border:1px solid var(--rk-line);border-radius:17px;background:#f8fbfc}
  #rk-buffer-pump .rk-bp-responsibility p{margin-bottom:9px;font-size:.82rem;line-height:1.55}
  #rk-buffer-pump .rk-bp-responsibility p:last-child{margin-bottom:0}
  #rk-buffer-pump .rk-bp-faq{display:grid;gap:12px}
  #rk-buffer-pump .rk-bp-faq details{border:1px solid var(--rk-line);border-radius:15px;background:#fff}
  #rk-buffer-pump .rk-bp-faq summary{position:relative;padding:18px 52px 18px 19px;color:var(--rk-dark);font-weight:860;line-height:1.45;cursor:pointer;list-style:none}
  #rk-buffer-pump .rk-bp-faq summary::-webkit-details-marker{display:none}
  #rk-buffer-pump .rk-bp-faq summary::after{position:absolute;top:17px;right:18px;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--rk-cyan-soft);color:#0a7695;font-size:1.1rem;font-weight:900;line-height:1;content:"+"}
  #rk-buffer-pump .rk-bp-faq details[open] summary::after{content:"−"}
  #rk-buffer-pump .rk-bp-faq-answer{padding:0 19px 18px}
  #rk-buffer-pump .rk-bp-faq-answer p{margin:0;font-size:.91rem}

  #rk-buffer-pump .rk-bp-author{overflow:hidden;border:1px solid rgba(255,255,255,.15);border-radius:25px;background:linear-gradient(120deg,#102f42,#174e5d);color:#fff}
  #rk-buffer-pump .rk-bp-author-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-end;padding:34px 42px 29px;border-bottom:1px solid rgba(255,255,255,.13)}
  #rk-buffer-pump .rk-bp-author-head .rk-bp-eyebrow{color:#65e8f3}
  #rk-buffer-pump .rk-bp-author-head h2{margin:0 0 10px;color:#fff!important}
  #rk-buffer-pump .rk-bp-author-head p{max-width:810px;margin:0;color:#e0f0f3}
  #rk-buffer-pump .rk-bp-author-mark{display:inline-flex;align-items:center;min-height:42px;padding:8px 14px;border:1px solid rgba(255,255,255,.2);border-radius:999px;color:#fff;font-size:.72rem;font-weight:900;white-space:nowrap}
  #rk-buffer-pump .rk-bp-author-layout{display:grid;grid-template-columns:310px minmax(0,1fr)}
  #rk-buffer-pump .rk-bp-author-side{padding:38px 32px;border-right:1px solid rgba(255,255,255,.13);text-align:center}
  #rk-buffer-pump .rk-bp-author-photo{width:144px;height:144px;margin:0 auto 19px;padding:7px;border-radius:50%;background:rgba(255,255,255,.14)}
  #rk-buffer-pump .rk-bp-author-photo img{width:100%;height:100%;border-radius:50%;object-fit:cover}
  #rk-buffer-pump .rk-bp-author-name{font-size:1.22rem;font-weight:920}
  #rk-buffer-pump .rk-bp-author-name a{color:#fff;text-decoration:none}
  #rk-buffer-pump .rk-bp-author-role{margin:8px 0 20px;color:#dceef2;font-size:.83rem;line-height:1.5}
  #rk-buffer-pump .rk-bp-author-social-label,
  #rk-buffer-pump .rk-bp-author-mini-label{margin-bottom:10px;color:#64e6f2;font-size:.68rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
  #rk-buffer-pump .rk-bp-author-social{display:flex;justify-content:center;gap:10px}
  #rk-buffer-pump .rk-bp-author-social a{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff}
  #rk-buffer-pump .rk-bp-author-social svg{width:20px;height:20px;fill:currentColor}
  #rk-buffer-pump .rk-bp-author-main{padding:38px 42px}
  #rk-buffer-pump .rk-bp-author-quote{position:relative;margin:0 0 28px;padding:11px 0 0 57px;border:0}
  #rk-buffer-pump .rk-bp-author-quote::before{position:absolute;top:-8px;left:0;color:#64e6f2;font-size:4rem;font-weight:950;line-height:1;content:"“"}
  #rk-buffer-pump .rk-bp-author-quote p{margin:0;color:#fff;font-size:clamp(1.05rem,2vw,1.3rem);font-weight:830;font-style:italic;line-height:1.65}
  #rk-buffer-pump .rk-bp-author-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  #rk-buffer-pump .rk-bp-author-card{min-width:0;padding:20px;border-radius:16px;background:rgba(255,255,255,.085)}
  #rk-buffer-pump .rk-bp-author-card b{display:block;margin-bottom:8px;color:#63e5f2;font-size:.81rem}
  #rk-buffer-pump .rk-bp-author-card p{margin:0;color:#e0f0f3;font-size:.76rem;line-height:1.55}
  #rk-buffer-pump .rk-bp-author-mini-label{margin-top:25px}
  #rk-buffer-pump .rk-bp-portals{display:flex;flex-wrap:wrap;gap:10px}
  #rk-buffer-pump .rk-bp-portals a{display:inline-flex;align-items:center;min-height:38px;padding:7px 13px;border:1px solid rgba(255,255,255,.18);border-radius:999px;color:#fff;font-size:.72rem;text-decoration:none}

  @media (max-width:980px){
    #rk-buffer-pump .rk-bp-answer{grid-template-columns:1fr}
    #rk-buffer-pump .rk-bp-grid-3{grid-template-columns:1fr 1fr}
    #rk-buffer-pump .rk-bp-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-buffer-pump .rk-bp-results{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-buffer-pump .rk-bp-flow{grid-template-columns:1fr}
    #rk-buffer-pump .rk-bp-flow-card{display:grid;grid-template-columns:48px minmax(0,1fr);column-gap:13px;align-items:start}
    #rk-buffer-pump .rk-bp-flow-icon{grid-row:1/3;margin:0}
    #rk-buffer-pump .rk-bp-flow-card:not(:last-child)::after{top:auto;right:auto;bottom:-17px;left:25px;transform:rotate(90deg)}
    #rk-buffer-pump .rk-bp-author-layout{grid-template-columns:250px minmax(0,1fr)}
    #rk-buffer-pump .rk-bp-author-cards{grid-template-columns:1fr}
  }
  @media (max-width:760px){
    #rk-buffer-pump{font-size:16px}
    #rk-buffer-pump .rk-bp-shell{border-radius:20px}
    #rk-buffer-pump .rk-bp-hero{border-radius:19px 19px 0 0}
    #rk-buffer-pump .rk-bp-hero-metrics,
    #rk-buffer-pump .rk-bp-grid-2,
    #rk-buffer-pump .rk-bp-grid-3,
    #rk-buffer-pump .rk-bp-number-grid{grid-template-columns:1fr}
    #rk-buffer-pump .rk-bp-controls{grid-template-columns:1fr}
    #rk-buffer-pump .rk-bp-results{grid-template-columns:1fr}
    #rk-buffer-pump .rk-bp-result-wide{grid-column:auto}
    #rk-buffer-pump .rk-bp-tool-head{display:block}
    #rk-buffer-pump .rk-bp-tool-head .rk-bp-reset{margin-top:14px}
    #rk-buffer-pump .rk-bp-chart-wrap{min-height:290px}
    #rk-buffer-pump .rk-bp-chart-wrap svg{min-height:270px}
    #rk-buffer-pump .rk-bp-table-wrap{border:0;border-radius:0;background:transparent;overflow:visible}
    #rk-buffer-pump .rk-bp-table-summary{margin-bottom:12px;border:1px solid var(--rk-line);border-radius:14px;background:#edf8fb}
    #rk-buffer-pump table,
    #rk-buffer-pump thead,
    #rk-buffer-pump tbody,
    #rk-buffer-pump tr,
    #rk-buffer-pump th,
    #rk-buffer-pump td{display:block;width:100%}
    #rk-buffer-pump thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
    #rk-buffer-pump tbody{display:grid;gap:12px}
    #rk-buffer-pump tbody tr{padding:9px 14px;border:1px solid var(--rk-line);border-radius:15px;background:#fff!important}
    #rk-buffer-pump tbody td{display:grid;grid-template-columns:minmax(110px,42%) minmax(0,1fr);gap:12px;padding:9px 0;border:0;border-bottom:1px dashed #dbe7eb;font-size:.82rem}
    #rk-buffer-pump tbody td:last-child{border-bottom:0}
    #rk-buffer-pump tbody td::before{content:attr(data-label);color:var(--rk-dark);font-size:.73rem;font-weight:900;line-height:1.45}
    #rk-buffer-pump .rk-bp-author-head{display:block;padding:28px 24px}
    #rk-buffer-pump .rk-bp-author-mark{margin-top:18px}
    #rk-buffer-pump .rk-bp-author-layout{grid-template-columns:1fr}
    #rk-buffer-pump .rk-bp-author-side{border-right:0;border-bottom:1px solid rgba(255,255,255,.13)}
    #rk-buffer-pump .rk-bp-author-main{padding:30px 24px}
    #rk-buffer-pump .rk-bp-author-quote{padding-left:42px}
    #rk-buffer-pump .rk-bp-cta-button{width:100%}
  }
  @media (max-width:460px){
    #rk-buffer-pump .rk-bp-section{padding-left:17px;padding-right:17px}
    #rk-buffer-pump .rk-bp-hero{padding-left:20px;padding-right:20px}
    #rk-buffer-pump .rk-bp-nav{padding-left:15px;padding-right:15px}
    #rk-buffer-pump .rk-bp-nav a{font-size:.69rem}
    #rk-buffer-pump .rk-bp-number-card{gap:12px;padding:17px}
    #rk-buffer-pump .rk-bp-number{flex-basis:42px;width:42px;height:42px}
    #rk-buffer-pump tbody td{grid-template-columns:1fr;gap:3px}
  }
  @media (prefers-reduced-motion:reduce){
    #rk-buffer-pump *,#rk-buffer-pump *::before,#rk-buffer-pump *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}
  }
</style>

<div id="rk-buffer-pump">
  <article class="rk-bp-shell" aria-label="Bufor ciepła z grzałkami czy pompa ciepła — poradnik i kalkulatory">
    <header class="rk-bp-hero">
      <span class="rk-bp-kicker">Koszt źródła, taryfa i wykonalność techniczna</span>
      <div class="rk-bp-hero-title">Bufor z grzałkami czy <span>pompa ciepła?</span></div>
      <p class="rk-bp-lead">Bufor nie jest źródłem ciepła, a niska cena nocnej energii nie gwarantuje, że cały mróz da się pokryć w tanich godzinach. Porównaj oba układy dla tego samego domu, tych samych stawek i jednego okresu — potem sprawdź, czy pojemność zbiornika, moc grzałek oraz przyłącze rzeczywiście wystarczą.</p>
      <div class="rk-bp-tags" aria-label="Zakres poradnika">
        <span class="rk-bp-tag">kalkulator TCO</span>
        <span class="rk-bp-tag">bufor 1000 l</span>
        <span class="rk-bp-tag">moc grzałek</span>
        <span class="rk-bp-tag">SCOP pompy</span>
        <span class="rk-bp-tag">taryfa G12w</span>
      </div>
      <div class="rk-bp-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 27 minut</span>
        <span>Aktualizacja techniczna: 13 września 2026 r.</span>
      </div>
      <div class="rk-bp-hero-metrics">
        <div class="rk-bp-hero-metric"><b>Jedno zapotrzebowanie</b><span>Oba warianty dostarczają tę samą ilość użytecznego ciepła do budynku i CWU.</span></div>
        <div class="rk-bp-hero-metric"><b>Jedna struktura taryfy</b><span>Te same stawki taniej i drogiej energii; osobno zmieniasz tylko realny udział godzin.</span></div>
        <div class="rk-bp-hero-metric"><b>Dwa niezależne testy</b><span>Ekonomia TCO nie zastępuje sprawdzenia bufora, grzałek, zabezpieczeń i hydrauliki.</span></div>
      </div>
    </header>

    <nav class="rk-bp-nav" aria-label="Na skróty">
      <span class="rk-bp-nav-label">Na skróty</span>
      <div class="rk-bp-nav-track">
        <a href="#rk-bp-answer">Szybka odpowiedź</a>
        <a href="#rk-bp-compare">Co porównujemy</a>
        <a href="#rk-bp-flow">Przepływ energii</a>
        <a href="#rk-bp-data">Dane wejściowe</a>
        <a href="#rk-bp-tco">Kalkulator TCO</a>
        <a href="#rk-bp-chart-reading">Jak czytać wykres</a>
        <a href="#rk-bp-buffer-tool">Bufor i grzałki</a>
        <a href="#rk-bp-tariff">Taryfa i przyłącze</a>
        <a href="#rk-bp-losses">Straty bufora</a>
        <a href="#rk-bp-scop">SCOP pompy</a>
        <a href="#rk-bp-floor">Projekt podłogówki</a>
        <a href="#rk-bp-service">Serwis i wymiany</a>
        <a href="#rk-bp-scenarios">Scenariusze</a>
        <a href="#rk-bp-when-buffer">Kiedy bufor</a>
        <a href="#rk-bp-when-pump">Kiedy pompa</a>
        <a href="#rk-bp-errors">Błędy porównania</a>
        <a href="#rk-bp-method">Metodyka</a>
        <a href="#rk-bp-conclusion">Wnioski</a>
        <a href="#rk-bp-sources">Źródła</a>
        <a href="#rk-bp-faq">FAQ</a>
        <a href="#rk-bp-author">Autor</a>
      </div>
    </nav>

    <section class="rk-bp-section" id="rk-bp-answer">
      <span class="rk-bp-eyebrow">Odpowiedź w 60 sekund</span>
      <h2>Co jest tańsze: bufor z grzałkami czy pompa ciepła?</h2>
      <div class="rk-bp-answer">
        <div class="rk-bp-answer-main">
          <p><strong>Nie ma jednej odpowiedzi dla każdego domu.</strong> Bufor z grzałkami zwykle wymaga niższego nakładu, ale każdą 1 kWh energii elektrycznej zamienia na około 1 kWh ciepła i dodatkowo ponosi straty magazynowania. Pompa ciepła kosztuje więcej na początku, lecz sezonowo może dostarczać kilka kWh ciepła z 1 kWh energii elektrycznej.</p>
          <p>O wyniku decydują jednocześnie: roczne zapotrzebowanie na ciepło, pełny koszt inwestycji, udział tanich godzin, rzeczywisty SCOP, straty bufora, serwis, planowane wymiany i długość analizy. Dlatego pytanie „co jest tańsze” trzeba rozdzielić na <strong>rachunek za pierwszy rok</strong>, <strong>pełny koszt posiadania</strong> oraz <strong>wykonalność techniczną w najzimniejszej dobie</strong>.</p>
        </div>
        <div class="rk-bp-verdict">
          <div class="rk-bp-verdict-item"><b>Niższy CAPEX</b><span>Często bufor z grzałkami, jeśli zakres ofert jest naprawdę porównywalny.</span></div>
          <div class="rk-bp-verdict-item"><b>Niższy pobór energii</b><span>Zwykle pompa ciepła przy prawidłowym doborze i niskiej temperaturze wody.</span></div>
          <div class="rk-bp-verdict-item"><b>Najważniejszy test</b><span>Czy wrażliwy na założenia wynik nadal pozostaje korzystny po zmianie cen i sprawności?</span></div>
        </div>
      </div>
      <div class="rk-bp-note warn"><p><strong>Ważne:</strong> porównanie „bufor kontra pompa” jest skrótem. Bufor to magazyn i element hydrauliczny; źródłem ciepła w pierwszym wariancie są grzałki. Również instalacja z pompą ciepła może mieć bufor, jeśli wymaga go określona funkcja układu.</p></div>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-compare">
      <span class="rk-bp-eyebrow">Najpierw granice porównania</span>
      <h2>Co naprawdę porównujemy?</h2>
      <p class="rk-bp-intro">Uczciwe zestawienie dotyczy dwóch kompletnych systemów dostarczających ten sam komfort: <strong>grzałki elektryczne + magazynowanie ciepła w wodzie + hydraulika</strong> oraz <strong>pompa ciepła + hydraulika, a w razie potrzeby także bufor</strong>. Sama pojemność zbiornika lub cena jednostki zewnętrznej nie opisuje kosztu gotowej kotłowni.</p>
      <div class="rk-bp-grid-2">
        <div class="rk-bp-card">
          <h3>Grzałki i bufor</h3>
          <ul>
            <li>grzałki oporowe wytwarzają ciepło z energii elektrycznej;</li>
            <li>zbiornik przesuwa część poboru energii między godzinami taryfy;</li>
            <li>pompa obiegowa i ewentualny zawór mieszający zasilają odbiorniki;</li>
            <li>straty postojowe oraz użyteczna różnica temperatur zmniejszają praktyczny efekt magazynu.</li>
          </ul>
        </div>
        <div class="rk-bp-card">
          <h3>Pompa ciepła</h3>
          <ul>
            <li>sprężarkowy obieg przenosi energię ze źródła dolnego do instalacji;</li>
            <li>SCOP opisuje sezon, a nie pojedynczy punkt katalogowy;</li>
            <li>efektywność zależy między innymi od temperatury zasilania i warunków zewnętrznych;</li>
            <li>bufor może pełnić funkcję hydrauliczną, zapewniać wymagany zład albo wspierać odszranianie.</li>
          </ul>
        </div>
      </div>
      <p>Więcej o tym, kiedy zbiornik przy pompie jest uzasadniony, wyjaśnia poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła do domu — dobór, SCOP, bufor i hydraulika</a>. Osobno warto sprawdzić <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">funkcje bufora ciepła w ogrzewaniu podłogowym</a> oraz to, co rzeczywiście zmienia <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/">większy lub mniejszy zład wody</a>. Jeśli zakres obu ofert różni się przygotowaniem CWU, automatyką lub modernizacją instalacji elektrycznej, najpierw trzeba te różnice jawnie dopisać do CAPEX.</p>
    </section>

    <section class="rk-bp-section" id="rk-bp-flow">
      <span class="rk-bp-eyebrow">Modułowa grafika edukacyjna</span>
      <h2>Jak energia dociera do podłogi w obu wariantach?</h2>
      <p>Wybierz wariant. Pięć niezależnych kart pokazuje kolejno miejsce zakupu energii, sposób jej zamiany, rolę magazynu lub modulacji, hydraulikę i końcowy bilans budynku. Na telefonie moduły ustawiają się pionowo, więc tekst nie nakłada się na schemat.</p>
      <div class="rk-bp-flow-tabs" role="group" aria-label="Wybór wariantu przepływu energii">
        <button type="button" class="rk-bp-flow-tab" data-flow="buffer" aria-pressed="true">Bufor + grzałki</button>
        <button type="button" class="rk-bp-flow-tab" data-flow="pump" aria-pressed="false">Pompa ciepła</button>
        <button type="button" class="rk-bp-flow-tab" data-flow="compare" aria-pressed="false">Porównaj przepływ</button>
      </div>
      <p class="rk-bp-flow-status" id="rk-bp-flow-status" aria-live="polite">Grzałki produkują ciepło w godzinach pracy, a bufor przesuwa część jego wykorzystania na później.</p>
      <div class="rk-bp-flow" id="rk-bp-flow-cards">
        <div class="rk-bp-flow-card"><span class="rk-bp-flow-icon">1</span><h3>Sieć i taryfa</h3><div class="rk-bp-flow-copy"><p>Energia jest pobierana głównie w wybranym oknie taniej strefy, ale część może przypaść na strefę drogą.</p></div></div>
        <div class="rk-bp-flow-card"><span class="rk-bp-flow-icon">2</span><h3>Konwersja</h3><div class="rk-bp-flow-copy"><p>Grzałka oporowa zamienia energię elektryczną na ciepło ze sprawnością bliską jedności.</p></div></div>
        <div class="rk-bp-flow-card"><span class="rk-bp-flow-icon">3</span><h3>Magazyn</h3><div class="rk-bp-flow-copy"><p>Woda przechowuje energię między temperaturą maksymalną i minimalną użyteczną; po drodze występują straty.</p></div></div>
        <div class="rk-bp-flow-card"><span class="rk-bp-flow-icon">4</span><h3>Hydraulika</h3><div class="rk-bp-flow-copy"><p>Pompa obiegowa, armatura i pętle przenoszą energię do czynnej powierzchni podłogi.</p></div></div>
        <div class="rk-bp-flow-card"><span class="rk-bp-flow-icon">5</span><h3>Budynek</h3><div class="rk-bp-flow-copy"><p>Ostatecznie system musi pokryć bieżące straty przegród i wentylacji bez utraty komfortu.</p></div></div>
      </div>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-data">
      <span class="rk-bp-eyebrow">Ta sama baza dla obu systemów</span>
      <h2>Jakich danych wymaga uczciwe porównanie kosztów?</h2>
      <p class="rk-bp-intro">Metraż domu nie wystarcza. Dwa budynki o powierzchni 150 m² mogą różnić się zużyciem ciepła wielokrotnie. Do kosztów rocznych potrzebna jest energia, a do weryfikacji najzimniejszej doby — projektowe obciążenie cieplne.</p>
      <div class="rk-bp-number-grid">
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Roczne ciepło użytkowe</h3><p>kWh/rok dla ogrzewania pomieszczeń oraz osobno CWU, jeśli oba systemy mają je przygotowywać.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Obciążenie projektowe</h3><p>Moc w kW przy temperaturze projektowej lokalizacji, potrzebna do testu skrajnej doby.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Pełny CAPEX</h3><p>Źródło, magazyn, osprzęt, elektryka, hydraulika, montaż, uruchomienie i faktyczne dotacje.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Stawki taryfowe</h3><p>Zmienne ceny 1 kWh z dystrybucją oraz realny udział poboru w taniej i drogiej strefie.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Sprawność i straty</h3><p>SCOP pompy, sprawność grzałek, straty postojowe zbiornika oraz energia urządzeń pomocniczych.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Serwis i naprawy</h3><p>Warunki gwarancji, przeglądy, koszty okresowe i uzasadnione rezerwy na wymiany elementów.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Horyzont analizy</h3><p>Ten sam okres 5, 10, 15, 20 lub 25 lat oraz jawne tempo wzrostu ceny energii.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Ograniczenia techniczne</h3><p>Pojemność użyteczna, czas ładowania, moc grzałek, przyłącze, temperatury, przepływy i opory.</p></div></div>
      </div>
      <div class="rk-bp-note"><p>Jeżeli masz tylko moc urządzenia albo wskaźnik z charakterystyki energetycznej, nie traktuj go automatycznie jako rocznego ciepła użytkowego. Rozdzielenie kW od kWh jest podstawą wiarygodnego wyniku. Zobacz także, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne budynku</a> i dlaczego <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/">strefa klimatyczna wpływa na OZC</a>.</p></div>
    </section>

    <section class="rk-bp-section" id="rk-bp-tco">
      <span class="rk-bp-eyebrow">Główne narzędzie artykułu</span>
      <h2>Kalkulator kosztów eksploatacji i TCO: bufor z grzałkami czy pompa ciepła</h2>
      <p>Wprowadź dane konkretnego domu i obie kompletne oferty. Kalkulator wykorzystuje jedną parę stawek taryfowych dla obu wariantów, a osobno pozwala określić realny udział energii kupowanej taniej. Dzięki temu nie porównuje grzałek w G12w z pompą w arbitralnie droższej taryfie.</p>
      <div class="rk-bp-tool" id="rk-bp-tco-calculator">
        <div class="rk-bp-tool-head">
          <div><h3>Dane budynku, taryfy i obu systemów</h3><p>Wartości startowe są wyłącznie przykładem do działania narzędzia. Zastąp je danymi z własnych obliczeń, rachunku i ofert.</p></div>
          <button type="button" class="rk-bp-reset" id="rk-bp-tco-reset">Przywróć przykład</button>
        </div>
        <div class="rk-bp-controls">
          <div class="rk-bp-subhead">Wspólne zapotrzebowanie i okres</div>
          <div class="rk-bp-control"><label for="rk-bp-space-heat">Ciepło na ogrzewanie</label><div class="rk-bp-input-wrap"><input id="rk-bp-space-heat" type="number" min="0" max="100000" step="100" value="7500" inputmode="decimal"><span>kWh/rok</span></div><small>Użyteczne ciepło oddane do pomieszczeń.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-dhw-heat">Ciepło na CWU</label><div class="rk-bp-input-wrap"><input id="rk-bp-dhw-heat" type="number" min="0" max="30000" step="100" value="2500" inputmode="decimal"><span>kWh/rok</span></div><small>Wpisz 0, jeśli CWU nie ma być porównywane.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-years">Okres analizy</label><div class="rk-bp-input-wrap"><select id="rk-bp-years"><option value="5">5 lat</option><option value="10">10 lat</option><option value="15">15 lat</option><option value="20">20 lat</option><option value="25" selected="">25 lat</option></select></div><small>Wykres i TCO obejmą wybrany okres.</small></div>

          <div class="rk-bp-subhead">Ta sama taryfa — różny udział stref</div>
          <div class="rk-bp-control"><label for="rk-bp-cheap-price">Cena energii w taniej strefie</label><div class="rk-bp-input-wrap"><input id="rk-bp-cheap-price" type="number" min="0" max="5" step="0.01" value="0.70" inputmode="decimal"><span>zł/kWh</span></div><small>Energia czynna i zmienne składniki dystrybucji.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-high-price">Cena energii w drogiej strefie</label><div class="rk-bp-input-wrap"><input id="rk-bp-high-price" type="number" min="0" max="5" step="0.01" value="1.25" inputmode="decimal"><span>zł/kWh</span></div><small>Wpisz tę samą wartość dla taryfy jednostrefowej.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-price-growth">Roczny wzrost ceny energii</label><div class="rk-bp-input-wrap"><input id="rk-bp-price-growth" type="number" min="-10" max="20" step="0.1" value="2.0" inputmode="decimal"><span>%/rok</span></div><small>Scenariusz, nie prognoza.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-buffer-cheap-share">Tani udział — grzałki</label><div class="rk-bp-input-wrap"><input id="rk-bp-buffer-cheap-share" type="number" min="0" max="100" step="1" value="75" inputmode="decimal"><span>%</span></div><small>Nie zakładaj 100%, jeśli bufor lub moc nie wystarczają.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-pump-cheap-share">Tani udział — pompa</label><div class="rk-bp-input-wrap"><input id="rk-bp-pump-cheap-share" type="number" min="0" max="100" step="1" value="45" inputmode="decimal"><span>%</span></div><small>Pompa może pracować także w obu strefach tej samej taryfy.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-discount">Stopa dyskontowa</label><div class="rk-bp-input-wrap"><input id="rk-bp-discount" type="number" min="0" max="20" step="0.1" value="0" inputmode="decimal"><span>%/rok</span></div><small>0% pokazuje TCO nominalne; wyższa wartość — bieżącą wartość kosztów.</small></div>

          <div class="rk-bp-subhead">Bufor z grzałkami</div>
          <div class="rk-bp-control"><label for="rk-bp-buffer-capex">Nakład po dotacjach</label><div class="rk-bp-input-wrap"><input id="rk-bp-buffer-capex" type="number" min="0" max="250000" step="500" value="16000" inputmode="decimal"><span>zł</span></div><small>Kompletny porównywalny zakres.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-heater-eff">Sprawność grzałek i przekazania</label><div class="rk-bp-input-wrap"><input id="rk-bp-heater-eff" type="number" min="70" max="100" step="0.5" value="98" inputmode="decimal"><span>%</span></div><small>Nie obejmuje osobno wpisanych strat magazynu.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-buffer-loss">Straty magazynowania i dystrybucji</label><div class="rk-bp-input-wrap"><input id="rk-bp-buffer-loss" type="number" min="0" max="40" step="0.5" value="8" inputmode="decimal"><span>%</span></div><small>Uśredniony udział w dostarczanym cieple.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-buffer-aux">Energia pomocnicza</label><div class="rk-bp-input-wrap"><input id="rk-bp-buffer-aux" type="number" min="0" max="5000" step="10" value="180" inputmode="decimal"><span>kWh/rok</span></div><small>Pompy, sterowanie i automatyka.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-buffer-service">Serwis i rezerwa roczna</label><div class="rk-bp-input-wrap"><input id="rk-bp-buffer-service" type="number" min="0" max="20000" step="50" value="250" inputmode="decimal"><span>zł/rok</span></div><small>Nie wpisuj automatycznie zera.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-buffer-replace">Wymiana / większa naprawa</label><div class="rk-bp-input-wrap"><input id="rk-bp-buffer-replace" type="number" min="0" max="100000" step="500" value="2500" inputmode="decimal"><span>zł</span></div><small>Koszt jednorazowy w wybranym roku.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-buffer-replace-year">Rok kosztu jednorazowego</label><div class="rk-bp-input-wrap"><input id="rk-bp-buffer-replace-year" type="number" min="1" max="25" step="1" value="15" inputmode="numeric"><span>rok</span></div><small>Jeśli kosztu nie zakładasz, wpisz 0 zł.</small></div>

          <div class="rk-bp-subhead">Pompa ciepła</div>
          <div class="rk-bp-control"><label for="rk-bp-pump-capex">Nakład po dotacjach</label><div class="rk-bp-input-wrap"><input id="rk-bp-pump-capex" type="number" min="0" max="250000" step="500" value="42000" inputmode="decimal"><span>zł</span></div><small>Ten sam zakres funkcji co w wariancie bufora.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-scop-input">Sezonowy SCOP</label><div class="rk-bp-input-wrap"><input id="rk-bp-scop-input" type="number" min="1" max="7" step="0.1" value="3.6" inputmode="decimal"><span>—</span></div><small>Wartość dla instalacji i zakresu ogrzewanie + ewentualne CWU.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-pump-aux">Energia pomocnicza poza SCOP</label><div class="rk-bp-input-wrap"><input id="rk-bp-pump-aux" type="number" min="0" max="5000" step="10" value="220" inputmode="decimal"><span>kWh/rok</span></div><small>Tylko pobory niewliczone już do przyjętego SCOP.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-pump-service">Serwis i rezerwa roczna</label><div class="rk-bp-input-wrap"><input id="rk-bp-pump-service" type="number" min="0" max="20000" step="50" value="650" inputmode="decimal"><span>zł/rok</span></div><small>Wynika z warunków gwarancji, urządzenia i zakresu prac.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-pump-replace">Wymiana / większa naprawa</label><div class="rk-bp-input-wrap"><input id="rk-bp-pump-replace" type="number" min="0" max="200000" step="500" value="14000" inputmode="decimal"><span>zł</span></div><small>Jawne założenie do testu wrażliwości.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-pump-replace-year">Rok kosztu jednorazowego</label><div class="rk-bp-input-wrap"><input id="rk-bp-pump-replace-year" type="number" min="1" max="25" step="1" value="15" inputmode="numeric"><span>rok</span></div><small>Przesuń albo wpisz 0 zł, jeśli analizujesz inaczej.</small></div>
        </div>

        <div class="rk-bp-results" aria-live="polite">
          <div class="rk-bp-result"><b id="rk-bp-buffer-kwh">—</b><span>prąd grzałek + urządzeń pomocniczych / rok</span></div>
          <div class="rk-bp-result"><b id="rk-bp-pump-kwh">—</b><span>prąd pompy + urządzeń pomocniczych / rok</span></div>
          <div class="rk-bp-result"><b id="rk-bp-buffer-year1">—</b><span>koszt bufora w pierwszym roku z serwisem</span></div>
          <div class="rk-bp-result"><b id="rk-bp-pump-year1">—</b><span>koszt pompy w pierwszym roku z serwisem</span></div>
          <div class="rk-bp-result primary"><b id="rk-bp-buffer-tco">—</b><span>TCO bufora w wybranym okresie</span></div>
          <div class="rk-bp-result primary"><b id="rk-bp-pump-tco">—</b><span>TCO pompy w wybranym okresie</span></div>
          <div class="rk-bp-result rk-bp-result-wide"><b id="rk-bp-tco-diff">—</b><span>różnica kosztu całkowitego</span></div>
          <div class="rk-bp-result rk-bp-result-wide"><b id="rk-bp-break-even">—</b><span>pierwszy rok, w którym pompa nie jest droższa od bufora</span></div>
        </div>
        <div class="rk-bp-driver"><b>Co najmocniej zmienia wynik?</b><p id="rk-bp-driver-text" aria-live="polite">—</p></div>

        <div class="rk-bp-tabs" role="group" aria-label="Widok wykresu kalkulatora">
          <button type="button" class="rk-bp-tab" data-chart="cumulative" aria-pressed="true">Skumulowany TCO</button>
          <button type="button" class="rk-bp-tab" data-chart="annual" aria-pressed="false">Koszt kolejnych lat</button>
          <button type="button" class="rk-bp-tab" data-chart="sensitivity" aria-pressed="false">Wrażliwość na SCOP</button>
        </div>
        <div class="rk-bp-chart-card">
          <div class="rk-bp-chart-wrap"><svg id="rk-bp-chart" viewBox="0 0 900 400" role="img" aria-labelledby="rk-bp-chart-title rk-bp-chart-desc"><title id="rk-bp-chart-title">Porównanie kosztów bufora z grzałkami i pompy ciepła</title><desc id="rk-bp-chart-desc">Wykres aktualizuje się po zmianie danych kalkulatora.</desc></svg></div>
          <div class="rk-bp-chart-legend"><span class="rk-bp-legend">Bufor + grzałki</span><span class="rk-bp-legend pump">Pompa ciepła</span></div>
          <p class="rk-bp-chart-note" id="rk-bp-chart-note">—</p>
        </div>
        <div class="rk-bp-table-wrap">
          <div class="rk-bp-table-summary" id="rk-bp-table-summary">Zestawienie skumulowanych kosztów w wybranych latach.</div>
          <table aria-label="Koszt całkowity obu systemów w wybranych latach">
            <thead><tr><th>Rok</th><th>Bufor + grzałki</th><th>Pompa ciepła</th><th>Różnica</th></tr></thead>
            <tbody id="rk-bp-tco-table"></tbody>
          </table>
        </div>
      </div>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-chart-reading">
      <span class="rk-bp-eyebrow">Wynik bez fałszywej precyzji</span>
      <h2>Jak czytać wykres kosztów i próg opłacalności?</h2>
      <div class="rk-bp-grid-3">
        <div class="rk-bp-card"><h3>Punkt startowy</h3><p>W roku 0 widzisz nakład po dotacjach. Jeśli oferty nie obejmują tego samego zakresu, nawet idealny wykres da błędny wniosek.</p></div>
        <div class="rk-bp-card"><h3>Nachylenie linii</h3><p>Pokazuje tempo narastania wydatków. Zmieniają je pobór energii, udział stref, ceny i serwis — nie sam metraż.</p></div>
        <div class="rk-bp-card"><h3>Przecięcie</h3><p>To pierwszy rok, gdy wyższy nakład zostaje skompensowany. Brak przecięcia w 25 latach jest pełnoprawnym wynikiem.</p></div>
      </div>
      <p>W widoku „wrażliwość na SCOP” sprawdzisz, czy wynik zmienia się po niewielkiej korekcie sprawności. Jeżeli zwycięzca odwraca się przy zmianie SCOP z 3,6 na 3,4 albo udziału taniej energii o kilka punktów procentowych, decyzja jest wrażliwa i wymaga ostrożniejszego scenariusza. Jednocześnie pamiętaj, że <a href="https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">koszt ogrzewania elektrycznego i wodnej podłogówki</a> zależy również od tego, czy porównujesz samo źródło, czy kompletny emiter.</p>
    </section>

    <section class="rk-bp-section" id="rk-bp-buffer-tool">
      <span class="rk-bp-eyebrow">Drugi test: najzimniejsza doba</span>
      <h2>Ile energii magazynuje bufor i jakiej mocy wymagają grzałki?</h2>
      <p>Bufor 1000 l nagrzany od 35 do 85°C ma teoretycznie około 58,2 kWh pojemności cieplnej. Nie oznacza to jednak, że cała ta energia będzie dostępna w pomieszczeniach: ograniczają ją straty, mieszanie warstw, wymagana temperatura zasilania oraz rezerwa regulacyjna. Samą wielkość projektową budynku trzeba ustalić zgodnie z logiką opisaną w poradniku o <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">obciążeniu cieplnym i PN-EN 12831</a>.</p>
      <div class="rk-bp-formula">E<sub>teor.</sub> [kWh] = V [l] × 0,001163 × (T<sub>max</sub> − T<sub>min</sub>)</div>
      <p>Kalkulator poniżej nie wykonuje OZC. Przyjmuje wpisane projektowe obciążenie i sprawdza konsekwencje: pojemność teoretyczną i użyteczną, energię potrzebną poza oknem ładowania, wymaganą objętość, minimalną moc grzałek, czas ładowania oraz rezerwę przyłącza.</p>
      <div class="rk-bp-tool" id="rk-bp-buffer-calculator">
        <div class="rk-bp-tool-head">
          <div><h3>Kalkulator bufora ciepła, mocy grzałek i przyłącza</h3><p>To sprawdzenie skrajnego dnia przy uproszczeniu stałego obciążenia. Nie zastępuje dobowego profilu budynku ani obliczeń instalacji.</p></div>
          <button type="button" class="rk-bp-reset" id="rk-bp-buffer-reset">Przywróć przykład</button>
        </div>
        <div class="rk-bp-controls">
          <div class="rk-bp-control"><label for="rk-bp-design-load">Projektowe obciążenie budynku</label><div class="rk-bp-input-wrap"><input id="rk-bp-design-load" type="number" min="0.5" max="50" step="0.1" value="6.0" inputmode="decimal"><span>kW</span></div><small>Wynik obliczeń, nie moc katalogowa urządzenia.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-volume">Pojemność bufora</label><div class="rk-bp-input-wrap"><input id="rk-bp-volume" type="number" min="50" max="10000" step="50" value="1000" inputmode="decimal"><span>l</span></div><small>Nominalna objętość zbiornika.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-hot-temp">Temperatura maksymalna</label><div class="rk-bp-input-wrap"><input id="rk-bp-hot-temp" type="number" min="30" max="95" step="1" value="80" inputmode="decimal"><span>°C</span></div><small>Sprawdź ograniczenia zbiornika, armatury i źródła.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-min-temp">Minimalna temperatura użyteczna</label><div class="rk-bp-input-wrap"><input id="rk-bp-min-temp" type="number" min="20" max="70" step="1" value="35" inputmode="decimal"><span>°C</span></div><small>Wynika z wymaganej temperatury odbiorników i regulacji.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-storage-loss">Redukcja pojemności użytecznej</label><div class="rk-bp-input-wrap"><input id="rk-bp-storage-loss" type="number" min="0" max="50" step="1" value="12" inputmode="decimal"><span>%</span></div><small>Łączna rezerwa na straty i niepełne wykorzystanie zakresu.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-charge-hours">Dostępne godziny ładowania</label><div class="rk-bp-input-wrap"><input id="rk-bp-charge-hours" type="number" min="1" max="23" step="0.5" value="10" inputmode="decimal"><span>h/dobę</span></div><small>Sprawdź rzeczywiste okna taryfy i sterowanie.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-heater-power">Łączna moc grzałek</label><div class="rk-bp-input-wrap"><input id="rk-bp-heater-power" type="number" min="1" max="60" step="0.5" value="15" inputmode="decimal"><span>kW</span></div><small>Moc dostępna jednocześnie.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-connection">Moc przyłączeniowa</label><div class="rk-bp-input-wrap"><input id="rk-bp-connection" type="number" min="3" max="100" step="0.5" value="25" inputmode="decimal"><span>kW</span></div><small>Nie utożsamiaj z samą wartością zabezpieczenia.</small></div>
          <div class="rk-bp-control"><label for="rk-bp-house-reserve">Rezerwa na pozostałe odbiory</label><div class="rk-bp-input-wrap"><input id="rk-bp-house-reserve" type="number" min="0" max="50" step="0.5" value="6" inputmode="decimal"><span>kW</span></div><small>Kuchnia, CWU, wentylacja i inne odbiorniki.</small></div>
        </div>
        <div class="rk-bp-results" aria-live="polite">
          <div class="rk-bp-result"><b id="rk-bp-theoretical-energy">—</b><span>teoretyczna energia w zakresie temperatur</span></div>
          <div class="rk-bp-result"><b id="rk-bp-usable-energy">—</b><span>przyjęta energia użyteczna bufora</span></div>
          <div class="rk-bp-result"><b id="rk-bp-off-energy">—</b><span>ciepło potrzebne poza oknem ładowania</span></div>
          <div class="rk-bp-result"><b id="rk-bp-required-volume">—</b><span>orientacyjna objętość dla godzin bez ładowania</span></div>
          <div class="rk-bp-result"><b id="rk-bp-min-heater">—</b><span>minimalna moc dla produkcji dobowej w oknie</span></div>
          <div class="rk-bp-result"><b id="rk-bp-charge-time">—</b><span>czas pełnego ładowania wpisaną mocą</span></div>
          <div class="rk-bp-result"><b id="rk-bp-current">—</b><span>prąd trójfazowy grzałek przy 400 V</span></div>
          <div class="rk-bp-result" id="rk-bp-headroom-card"><b id="rk-bp-headroom">—</b><span>rezerwa mocy po grzałkach i innych odbiorach</span></div>
        </div>
        <div class="rk-bp-driver"><b>Ocena przykładowego wariantu</b><p id="rk-bp-buffer-assessment">—</p></div>
      </div>

      <div class="rk-bp-cta">
        <span class="rk-bp-eyebrow">Od bilansu do wykonania</span>
        <div class="rk-bp-cta-title">Kalkulator sprawdza wariant. Projekt potwierdza, czy instalacja zadziała.</div>
        <p>Wynik nie określa jeszcze mocy poszczególnych pomieszczeń, powierzchni czynnej podłogi, temperatury zasilania, długości pętli, przepływów ani oporów hydraulicznych. Te elementy trzeba połączyć w jednym projekcie dla konkretnego budynku.</p>
        <a class="rk-bp-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      </div>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-tariff">
      <span class="rk-bp-eyebrow">Cena to nie cały profil</span>
      <h2>Jak taryfa, godziny ładowania i przyłącze zmieniają wynik?</h2>
      <p>Ogrzewanie buforem w taryfie G12w nie oznacza, że 100% energii zawsze zostanie kupione po najniższej stawce. W mroźny dzień ograniczeniem może być pojemność zbiornika, moc grzałek, długość okna taryfowego albo moc przyłączeniowa. W cieplejszych dniach udział taniej strefy może być znacznie wyższy.</p>
      <div class="rk-bp-grid-3">
        <div class="rk-bp-card"><h3>Cena zmienna</h3><p>Do kalkulatora wpisuj energię czynną i te składniki dystrybucji, które rosną wraz z poborem. Opłat stałych nie przypisuj tylko jednemu wariantowi, jeśli i tak je ponosisz.</p></div>
        <div class="rk-bp-card"><h3>Udział taniej strefy</h3><p>Powinien wynikać z profilu pracy i wykonalności, a nie z samej nazwy taryfy. Kalkulator techniczny pomaga wykryć nierealne 100%.</p></div>
        <div class="rk-bp-card"><h3>Moc jednoczesna</h3><p>Grzałki konkurują o moc z płytą indukcyjną, CWU, wentylacją, ładowarką auta i innymi odbiorami. Rezerwa musi istnieć także w praktyce.</p></div>
      </div>
      <p>Aktualne oferty i warunki trzeba sprawdzić dla swojej grupy taryfowej i operatora. Punktem odniesienia może być oficjalna <a href="https://maszwybor.ure.gov.pl/" target="_blank" rel="nofollow noopener noreferrer">porównywarka ofert energii Urzędu Regulacji Energetyki</a>, ale do kalkulatora najlepiej przepisać zmienne stawki z własnego rachunku lub umowy.</p>
    </section>

    <section class="rk-bp-section" id="rk-bp-losses">
      <span class="rk-bp-eyebrow">58,2 kWh nie zawsze znaczy 58,2 kWh do podłogi</span>
      <h2>Straty bufora i użyteczna różnica temperatur</h2>
      <p>Fizyczny wzór na pojemność wody jest prosty, lecz jego praktyczne granice już nie. Minimalna temperatura użyteczna nie jest stałą wartością 35°C dla każdego domu. Zależy od mocy potrzebnej w pomieszczeniach, oporu okładzin, powierzchni czynnej, rozstawu rur i aktualnych strat budynku.</p>
      <div class="rk-bp-grid-2">
        <div class="rk-bp-card rk-bp-card-accent"><h3>Co zmniejsza energię użyteczną?</h3><ul><li>straty postojowe zbiornika i przewodów;</li><li>mieszanie warstw oraz położenie króćców;</li><li>rezerwa temperatury dla stabilnej regulacji;</li><li>minimalna temperatura, przy której podłoga nadal pokrywa obciążenie;</li><li>niepełne naładowanie w dostępnym oknie.</li></ul></div>
        <div class="rk-bp-card rk-bp-card-warn"><h3>Czego nie dodajemy automatycznie?</h3><p>Nie przyjmujemy stałego „35% magazynu w jastrychu”. Posadzka rzeczywiście magazynuje energię, ale jej udział zależy od masy, warstw, temperatur, strat budynku i dopuszczalnych wahań komfortu. Przegrzewanie domu o 1–1,5°C nie jest obowiązkową regułą projektową.</p></div>
      </div>
      <p>Osobny poradnik o <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej ogrzewania podłogowego</a> pokazuje, dlaczego grubość wylewki sama nie wyznacza czasu reakcji i dlaczego magazynowania w posadzce nie można dopisywać ryczałtem. Warstwy i ograniczenia wykonawcze trzeba rozpatrywać w kontekście całej <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewki na ogrzewanie podłogowe</a>, a nie jednej zalecanej liczby milimetrów.</p>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-scop">
      <span class="rk-bp-eyebrow">Jedna liczba nie opisuje każdego sezonu</span>
      <h2>SCOP pompy ciepła i temperatura zasilania</h2>
      <p>SCOP 3,5 może być rozsądnym scenariuszem, lecz nie uniwersalnym faktem. Wartość sezonowa zależy od klimatu, temperatury wymaganej przez odbiorniki, przygotowania CWU, odszraniania, modulacji, grzałki wspomagającej i granic przyjętych w obliczeniu.</p>
      <div class="rk-bp-grid-3">
        <div class="rk-bp-card"><h3>Temperatura wody</h3><p>Im mniejszy wymagany poziom temperatury, tym korzystniejsze warunki pracy pompy. Dlatego najpierw sprawdza się odbiorniki, a dopiero potem obiecuje rachunek.</p></div>
        <div class="rk-bp-card"><h3>Punkt projektowy</h3><p>Urządzenie musi mieć odpowiednią moc nie tylko przy łagodnej pogodzie. Dobór wymaga zestawienia charakterystyki pompy ze stratami budynku.</p></div>
        <div class="rk-bp-card"><h3>Zakres SCOP</h3><p>Jeżeli kalkulator obejmuje również CWU, przyjęta efektywność powinna odpowiadać temu zakresowi. Nie należy bez wyjaśnienia używać SCOP ogrzewania do całego bilansu.</p></div>
      </div>
      <p>Zależność między parametrami wody a efektywnością szerzej omawia poradnik <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">temperatura zasilania pompy ciepła — czy 35°C wystarczy</a>. Ustawienie eksploatacyjne powinno wynikać z <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej ogrzewania podłogowego</a>, a nie ze stałej temperatury przez cały sezon.</p>
    </section>

    <section class="rk-bp-section" id="rk-bp-floor">
      <span class="rk-bp-eyebrow">Źródło i emiter muszą się spotkać</span>
      <h2>Jak wybór źródła wpływa na projekt ogrzewania podłogowego?</h2>
      <p>Nie istnieje jeden obowiązkowy rozstaw 10 cm, jedna długość pętli ani jedna grubość jastrychu przypisana do bufora. Projekt zaczyna się od obciążenia każdego pomieszczenia, temperatury wewnętrznej i czynnej powierzchni. Dopiero potem dobiera się temperatury, rozstaw, średnicę, długości obiegów, przepływy i opory.</p>
      <div class="rk-bp-number-grid">
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Obciążenie pomieszczenia</h3><p>Projektowe straty w watach dla rzeczywistej temperatury wewnętrznej i zewnętrznej.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Powierzchnia czynna</h3><p>Fragment podłogi faktycznie oddający ciepło, bez trwałej zabudowy ograniczającej wymianę.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Temperatury wody</h3><p>Zasilanie i powrót wynikają z wymaganej mocy, okładzin, geometrii i sposobu regulacji źródła.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Hydraulika</h3><p>Przepływy i opory krytycznej drogi określają pracę pompy, rozdzielaczy oraz możliwość regulacji.</p></div></div>
      </div>
      <p>Gdy bufor pracuje w wysokiej temperaturze, podłogówka może wymagać właściwego układu regulacji i ochrony temperatury. Funkcję oraz konsekwencje takiego rozwiązania opisuje poradnik o <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworze mieszającym w ogrzewaniu podłogowym</a>. Dobór przepływu trzeba połączyć z charakterystyką <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy obiegowej podłogówki</a>, a nie tylko z mocą źródła.</p>
      <p>W części wykonawczej rozstaw powinien wynikać z obliczeń, zgodnie z zasadami opisanymi w poradniku <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 czy 15 cm</a>. Następnie sprawdza się <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">długość i parametry pętli grzewczej</a>, <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur w podłogówce</a> oraz cały <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obieg grzewczy instalacji wodnej</a>. Te decyzje są od siebie zależne.</p>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-service">
      <span class="rk-bp-eyebrow">TCO obejmuje więcej niż rachunek</span>
      <h2>Koszty serwisu, automatyki i wymian</h2>
      <p>Hasła „zero serwisu” i „obowiązkowy coroczny przegląd każdej pompy” są zbyt szerokie. Zakres obsługi wynika z warunków gwarancji, konstrukcji urządzenia, rodzaju oraz ilości czynnika, progów prawnych i stanu całej instalacji. Przepisy F-gazowe określają obowiązki zależnie od układu i progów, a nie jedną identyczną usługę dla każdego urządzenia.</p>
      <div class="rk-bp-table-wrap">
        <div class="rk-bp-table-summary">Do kalkulatora wpisuj kwoty z dokumentów i ofert, a nie marketingowe obietnice trwałości.</div>
        <table aria-label="Elementy kosztu serwisowego obu systemów">
          <thead><tr><th>Zakres</th><th>Bufor + grzałki</th><th>Pompa ciepła</th><th>Jak modelować</th></tr></thead>
          <tbody>
            <tr><td data-label="Zakres"><strong>Obsługa bieżąca</strong></td><td data-label="Bufor + grzałki">Armatura, pompa obiegowa, anoda lub wymagania zbiornika, sterowanie.</td><td data-label="Pompa ciepła">Kontrola układu, filtrów, hydrauliki, skroplin i wymogi producenta.</td><td data-label="Jak modelować">Roczny koszt na podstawie umowy lub świadomej rezerwy.</td></tr>
            <tr><td data-label="Zakres"><strong>Naprawy</strong></td><td data-label="Bufor + grzałki">Grzałki, styczniki, czujniki, sterownik, pompa.</td><td data-label="Pompa ciepła">Automatyka, wentylator, pompy, elementy obiegu chłodniczego.</td><td data-label="Jak modelować">Scenariusz kosztu jednorazowego, nie pewnik.</td></tr>
            <tr><td data-label="Zakres"><strong>Żywotność</strong></td><td data-label="Bufor + grzałki">Zależy od zbiornika, jakości wody, temperatur i osprzętu.</td><td data-label="Pompa ciepła">Zależy od godzin pracy, taktowania, warunków i jakości montażu.</td><td data-label="Jak modelować">Testuj kilka lat i kwot wymiany.</td></tr>
            <tr><td data-label="Zakres"><strong>Przepisy</strong></td><td data-label="Bufor + grzałki">Wymogi elektryczne, bezpieczeństwo zbiornika i instalacji wodnej.</td><td data-label="Pompa ciepła">Zakres zależny między innymi od rozwiązania chłodniczego i ładunku czynnika.</td><td data-label="Jak modelować">Oddziel obowiązek prawny od warunku gwarancji.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Aktualną podstawę prawną dotyczącą fluorowanych gazów cieplarnianych stanowi <a href="https://eur-lex.europa.eu/eli/reg/2024/573/oj/eng" target="_blank" rel="nofollow noopener noreferrer">rozporządzenie (UE) 2024/573</a>. Przy konkretnym urządzeniu sprawdza się czynnik, ilość, konstrukcję i instrukcję producenta.</p>
    </section>

    <section class="rk-bp-section" id="rk-bp-scenarios">
      <span class="rk-bp-eyebrow">Nie ranking, lecz punkty kontrolne</span>
      <h2>Przykładowe scenariusze dla różnych budynków</h2>
      <p>Poniższe profile nie podają gotowych rachunków. Pokazują, które dane stają się krytyczne. Wyniki kosztowe policz w narzędziu dla rzeczywistej energii, stawek i ofert.</p>
      <div class="rk-bp-table-wrap">
        <table aria-label="Scenariusze porównania bufora i pompy ciepła">
          <thead><tr><th>Scenariusz</th><th>Co może sprzyjać buforowi</th><th>Co może sprzyjać pompie</th><th>Co trzeba potwierdzić</th></tr></thead>
          <tbody>
            <tr><td data-label="Scenariusz"><strong>Mały, bardzo oszczędny dom</strong></td><td data-label="Co może sprzyjać buforowi">Niskie roczne ciepło ogranicza wartość oszczędności operacyjnych wobec różnicy CAPEX.</td><td data-label="Co może sprzyjać pompie">Mała jednostka dobrze modulująca może obniżyć pobór i przygotować CWU.</td><td data-label="Co trzeba potwierdzić">Minimalną moc, realny CAPEX i miejsce na magazyn.</td></tr>
            <tr><td data-label="Scenariusz"><strong>Dom o większym zużyciu</strong></td><td data-label="Co może sprzyjać buforowi">Duży udział taniej strefy i wystarczające przyłącze mogą ograniczać koszt zakupu energii.</td><td data-label="Co może sprzyjać pompie">Każda poprawa SCOP działa na większą liczbę kWh ciepła.</td><td data-label="Co trzeba potwierdzić">Obciążenie, temperaturę zasilania i koszt 20–25 lat.</td></tr>
            <tr><td data-label="Scenariusz"><strong>Modernizacja z wysoką temperaturą</strong></td><td data-label="Co może sprzyjać buforowi">Prosta konwersja oporowa nie traci COP wraz ze wzrostem temperatury, lecz rośnie pobór prądu.</td><td data-label="Co może sprzyjać pompie">Po modernizacji odbiorników i obniżeniu temperatury może odzyskać przewagę eksploatacyjną.</td><td data-label="Co trzeba potwierdzić">Moc odbiorników i pracę urządzenia w wymaganym punkcie.</td></tr>
            <tr><td data-label="Scenariusz"><strong>Ograniczona moc przyłącza</strong></td><td data-label="Co może sprzyjać buforowi">Sterowanie priorytetami może pomóc tylko w granicach dostępnego czasu i energii.</td><td data-label="Co może sprzyjać pompie">Niższa moc elektryczna dla tej samej mocy cieplnej często ułatwia bilans przyłącza.</td><td data-label="Co trzeba potwierdzić">Moc jednoczesną wszystkich odbiorów i zabezpieczenia.</td></tr>
          </tbody>
        </table>
      </div>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-when-buffer">
      <span class="rk-bp-eyebrow">Warunki, nie obietnica</span>
      <h2>Kiedy warto analizować bufor ciepła z grzałkami?</h2>
      <p>Wariant zasługuje na obliczenie, gdy priorytetem jest ograniczenie nakładu początkowego, roczne zapotrzebowanie na ciepło jest niewielkie, istnieje wystarczająca moc przyłączeniowa, a harmonogram taryfy da się wykorzystać bez przekraczania komfortu i temperatur odbiorników.</p>
      <div class="rk-bp-grid-3">
        <div class="rk-bp-card rk-bp-card-green"><h3>Znane małe zużycie</h3><p>Masz wiarygodne kWh/rok oraz niskie obciążenie, więc różnica kosztu energii może wolniej spłacać droższe źródło.</p></div>
        <div class="rk-bp-card rk-bp-card-green"><h3>Wykonalne ładowanie</h3><p>Bufor, moc grzałek i przyłącze pokrywają realistyczny profil, a nie tylko średnią dobę sezonu.</p></div>
        <div class="rk-bp-card rk-bp-card-green"><h3>Akceptowany model pracy</h3><p>Masz miejsce na zbiornik, kontrolę temperatury, przewidziane straty i świadomie dobraną automatykę.</p></div>
      </div>
      <p>Nie jest to jednak automatyczna rekomendacja. Duży bufor zajmuje miejsce, wysoka temperatura zwiększa straty, a produkcja całej dobowej energii w krótkim oknie może wymagać znacznej mocy elektrycznej.</p>
    </section>

    <section class="rk-bp-section" id="rk-bp-when-pump">
      <span class="rk-bp-eyebrow">Przewaga rośnie wraz z energią</span>
      <h2>Kiedy przewagę może mieć pompa ciepła?</h2>
      <p>Pompa ciepła zyskuje, gdy budynek zużywa więcej ciepła, instalacja pracuje na niskich temperaturach, urządzenie ma właściwą moc i modulację, a różnica nakładu nie została sztucznie powiększona przez nieporównywalny zakres ofert. Znaczenie ma także ograniczona moc przyłącza: sprężarka może dostarczać kilka razy więcej mocy cieplnej niż pobiera elektrycznej.</p>
      <div class="rk-bp-grid-2">
        <div class="rk-bp-card rk-bp-card-accent"><h3>Dobry przypadek techniczny</h3><ul><li>niskotemperaturowa podłogówka lub odpowiednio dobrane odbiorniki;</li><li>OZC i charakterystyka urządzenia zestawione w tych samych punktach;</li><li>kontrolowana minimalna moc i taktowanie;</li><li>prawidłowy przepływ, zład i sposób odszraniania;</li><li>jawny udział grzałki wspomagającej.</li></ul></div>
        <div class="rk-bp-card"><h3>Dobry przypadek ekonomiczny</h3><ul><li>oszczędność energii działa przez wystarczająco długi okres;</li><li>CAPEX po realnych dotacjach jest kompletny;</li><li>SCOP pozostaje wiarygodny także w ostrożnym scenariuszu;</li><li>serwis i wymiana nie są ani pomijane, ani zawyżane;</li><li>wynik nie odwraca się po niewielkiej zmianie założeń.</li></ul></div>
      </div>
      <p>Pełny proces techniczny opisuje poradnik <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>. Nie wystarczy przypisać urządzeniu „SCOP 3,5” — trzeba sprawdzić, czy budynek i instalacja pozwolą pracować w warunkach zbliżonych do założonych. Po uruchomieniu znaczenie mają również <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowanie pogodowe podłogówką</a> i świadomie zaprojektowane <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe</a>.</p>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-errors">
      <span class="rk-bp-eyebrow">Najczęstsze skróty prowadzące do złej decyzji</span>
      <h2>Błędy w porównaniu bufora z grzałkami i pompy ciepła</h2>
      <div class="rk-bp-number-grid">
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Dwie różne taryfy</h3><p>Grzałki liczone wyłącznie po taniej stawce, a pompa wyłącznie po drogiej, bez uzasadnienia profilu.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Stałe ceny jako fakt</h3><p>Kwota 0,63 lub 0,95 zł/kWh nie jest ponadczasową ceną dla każdego operatora i rachunku.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>1000 l zawsze wystarczy</h3><p>Objętość ocenia się z różnicy temperatur, strat, profilu doby, obciążenia i godzin pracy grzałek.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>SCOP katalogowy jako rachunek</h3><p>Sezonowa sprawność instalacji wymaga określenia temperatur, klimatu, CWU i urządzeń pomocniczych.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Metraż zamiast energii</h3><p>Powierzchnia nie określa ani rocznych kWh, ani projektowych kW bez danych o budynku.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Stałe 35% w jastrychu</h3><p>Magazynowanie w posadzce zależy od masy, temperatur, strat i dopuszczalnego wahania komfortu.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Reguły 10 cm i 100 m</h3><p>Rozstaw i długość pętli wynikają z obliczeń cieplnych i hydraulicznych, a nie jednej granicy dla wszystkich.</p></div></div>
        <div class="rk-bp-number-card"><span class="rk-bp-number" aria-hidden="true"></span><div class="rk-bp-number-copy"><h3>Pełna pewność po jednym scenariuszu</h3><p>Decyzję trzeba testować na niższym SCOP, innym udziale taryfy, większym koszcie serwisu i wymiany.</p></div></div>
      </div>
    </section>

    <section class="rk-bp-section" id="rk-bp-method">
      <span class="rk-bp-eyebrow">Co liczy narzędzie, a czego nie obiecuje</span>
      <h2>Metodyka i ograniczenia kalkulatorów</h2>
      <h3>Kalkulator kosztów i TCO</h3>
      <p>Roczne użyteczne ciepło jest wspólne. Dla grzałek pobór wynika ze sprawności oraz wpisanej redukcji na straty magazynowania. Dla pompy pobór wynika z SCOP. Do obu wariantów dodawana jest osobna energia pomocnicza, a jej koszt korzysta z ważonej ceny taryfowej właściwej dla danego udziału stref. TCO obejmuje CAPEX, energię, serwis i jednorazową wymianę. Wzrost ceny energii i stopa dyskontowa są jawne.</p>
      <h3>Kalkulator techniczny</h3>
      <p>Energia w buforze wynika z objętości, ciepła właściwego wody i różnicy temperatur. Użyteczną część zmniejsza podany procent rezerwy. Energia poza oknem ładowania jest liczona przy uproszczeniu stałego obciążenia projektowego, a minimalna moc grzałek zakłada wytworzenie dobowej energii w zadanym czasie. Prąd trójfazowy to wartość orientacyjna dla 400 V i współczynnika mocy bliskiego 1.</p>
      <div class="rk-bp-note error"><p><strong>Narzędzia nie są projektem ani ofertą.</strong> Nie modelują godzinowego przebiegu temperatury zewnętrznej, strat zależnych od temperatury zbiornika, warstwowania wody, dynamicznej odpowiedzi budynku, dokładnego COP w kolejnych punktach, taryfowych opłat stałych, finansowania ani podatków. Wyniki zaokrąglono i należy traktować je jako analizę wariantową. Zakres pełnych obliczeń pokazuje poradnik <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy do ogrzewania podłogowego potrzebny jest projekt</a>.</p></div>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-conclusion">
      <span class="rk-bp-eyebrow">Decyzja po dwóch testach</span>
      <h2>Bufor z grzałkami czy pompa ciepła — wnioski</h2>
      <p id="rk-bp-conclusion-answer"><strong>Bufor z grzałkami może wygrać niższym nakładem, a pompa ciepła niższym poborem energii.</strong> To, który system ma niższy koszt całkowity, zależy od tego samego zapotrzebowania, pełnych ofert, realnego profilu taryfy, SCOP, strat, serwisu, wymian i czasu. Wynik ekonomiczny trzeba następnie sprawdzić technicznie w najzimniejszej dobie.</p>
      <p>Jeżeli po zmianie najważniejszych założeń jeden wariant nadal wygrywa i jednocześnie przechodzi test mocy, temperatur, przyłącza oraz hydrauliki, decyzja ma solidniejszą podstawę. Jeżeli wynik jest bliski, przewagę mogą rozstrzygnąć miejsce, hałas, elastyczność rozbudowy, sposób przygotowania CWU i akceptowany poziom obsługi.</p>
      <div class="rk-bp-cta">
        <span class="rk-bp-eyebrow">Najpierw parametry, potem zakupy</span>
        <div class="rk-bp-cta-title">Połącz wybór źródła z policzoną podłogówką</div>
        <p>Indywidualny projekt ustala obciążenia pomieszczeń, powierzchnie czynne, temperaturę wody, rozstawy, długości pętli, przepływy, opory, rozdzielacze i parametry pompy obiegowej. Dzięki temu źródło nie jest dobierane do instalacji wykonanej wcześniej „na oko”.</p>
        <a class="rk-bp-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
      </div>
    </section>

    <section class="rk-bp-section" id="rk-bp-sources">
      <span class="rk-bp-eyebrow">Materiały oficjalne i podstawa techniczna</span>
      <h2>Źródła oficjalne</h2>
      <ul class="rk-bp-sources">
        <li><a href="https://maszwybor.ure.gov.pl/" target="_blank" rel="nofollow noopener noreferrer">Urząd Regulacji Energetyki — oficjalna porównywarka ofert energii elektrycznej</a>.</li>
        <li><a href="https://eur-lex.europa.eu/eli/reg/2024/573/oj/eng" target="_blank" rel="nofollow noopener noreferrer">EUR-Lex — rozporządzenie Parlamentu Europejskiego i Rady (UE) 2024/573 w sprawie fluorowanych gazów cieplarnianych</a>.</li>
        <li><a href="https://www.iso.org/standard/74682.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-1:2021 — definicje i symbole wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego</a>.</li>
        <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wyznaczanie projektowej mocy grzewczej i chłodniczej</a>.</li>
        <li><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie systemów płaszczyznowych</a>.</li>
        <li><a href="https://energy.ec.europa.eu/topics/energy-efficiency/energy-performance-buildings/energy-performance-buildings-directive_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — charakterystyka energetyczna budynków i EPBD</a>.</li>
      </ul>
      <div class="rk-bp-responsibility">
        <p><strong>Stan źródeł:</strong> odnośniki sprawdzono 13 września 2026 r. Karty ISO opisują zakres norm; pełna treść dokumentów może być odpłatna.</p>
        <p><strong>Wartości startowe:</strong> wszystkie ceny, SCOP, straty, koszty serwisu i wymian w kalkulatorach są edytowalnym przykładem, a nie aktualnym cennikiem lub gwarancją wyniku.</p>
        <p><strong>Odpowiedzialność:</strong> artykuł i narzędzia mają charakter edukacyjny. Nie są projektem wykonawczym, audytem, ofertą urządzenia, prognozą cen energii ani poradą finansową.</p>
      </div>
    </section>

    <section class="rk-bp-section rk-bp-section-soft" id="rk-bp-faq">
      <span class="rk-bp-eyebrow">Najczęstsze pytania inwestorów</span>
      <h2>FAQ: bufor ciepła z grzałkami czy pompa ciepła</h2>
      <div class="rk-bp-faq">
        <details><summary>Co jest tańsze: bufor z grzałkami czy pompa ciepła?</summary><div class="rk-bp-faq-answer"><p>Bufor z grzałkami często ma niższy koszt startowy, a pompa ciepła niższy pobór energii. Niższy TCO zależy od zapotrzebowania, cen i udziału stref, SCOP, strat, serwisu, wymian i okresu analizy.</p></div></details>
        <details><summary>Ile kWh magazynuje bufor 1000 l?</summary><div class="rk-bp-faq-answer"><p>Przy różnicy temperatur 50 K teoretyczna pojemność wody wynosi około 58,2 kWh. Energia praktycznie użyteczna jest mniejsza z powodu strat, mieszania warstw, rezerwy regulacyjnej i minimalnej temperatury potrzebnej instalacji.</p></div></details>
        <details><summary>Czy bufor 1000 l wystarczy do ogrzewania domu?</summary><div class="rk-bp-faq-answer"><p>Nie da się odpowiedzieć z samej powierzchni domu. Trzeba znać projektowe obciążenie, liczbę godzin bez ładowania, użyteczną różnicę temperatur, straty, moc grzałek i profil pracy odbiorników.</p></div></details>
        <details><summary>Jak dobrać moc grzałek do bufora?</summary><div class="rk-bp-faq-answer"><p>Moc musi pokryć energię, którą chcesz wytworzyć w dostępnym oknie, przy uwzględnieniu sprawności i bieżącego odbioru budynku. Wynik trzeba następnie zestawić z mocą przyłącza, zabezpieczeniami i pozostałymi odbiorami.</p></div></details>
        <details><summary>Czy całą energię dla bufora można kupić w taryfie G12w?</summary><div class="rk-bp-faq-answer"><p>Tylko jeśli czas ładowania, moc grzałek, pojemność użyteczna i przyłącze pozwalają przenieść potrzebny pobór. W najzimniejszych dobach część energii może przypaść na droższą strefę.</p></div></details>
        <details><summary>Czy pompa ciepła też może mieć bufor?</summary><div class="rk-bp-faq-answer"><p>Tak. Bufor może zapewniać wymagany zład, wspierać odszranianie, stabilizować przepływ albo rozdzielać hydraulicznie obiegi. Jego funkcja i pojemność powinny wynikać z konkretnego układu.</p></div></details>
        <details><summary>Czy SCOP 3,5 oznacza trzy i pół razy niższy rachunek?</summary><div class="rk-bp-faq-answer"><p>Nie automatycznie. SCOP dotyczy określonych granic sezonowych, a rachunek zależy też od taryfy, energii pomocniczej, grzałki wspomagającej, CWU, serwisu i kosztu inwestycji.</p></div></details>
        <details><summary>Czy gruba wylewka zawsze poprawia system z buforem?</summary><div class="rk-bp-faq-answer"><p>Większa masa może zwiększać pojemność cieplną i bezwładność, lecz nie określa samodzielnie komfortu ani mocy. Warstwy, straty budynku, temperatury, okładzina i sterowanie muszą być rozpatrywane razem.</p></div></details>
        <details><summary>Po ilu latach zwraca się pompa ciepła względem grzałek?</summary><div class="rk-bp-faq-answer"><p>To pierwszy rok, w którym niższe skumulowane koszty energii i obsługi pokrywają różnicę nakładów i wymian. Przy niektórych założeniach zwrot może nastąpić szybko, późno albo wcale w badanych 25 latach.</p></div></details>
        <details><summary>Czy kalkulatory zastępują OZC i projekt podłogówki?</summary><div class="rk-bp-faq-answer"><p>Nie. Kalkulator TCO analizuje skutki finansowe założeń, a kalkulator bufora wykonuje uproszczony bilans. OZC i projekt określają moce pomieszczeń, temperatury, powierzchnie czynne, pętle, przepływy oraz opory.</p></div></details>
      </div>
    </section>

    <section class="rk-bp-section rk-bp-section-dark" id="rk-bp-author" aria-labelledby="rk-bp-author-heading">
      <div class="rk-bp-author">
        <div class="rk-bp-author-head">
          <div>
            <span class="rk-bp-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
            <h2 id="rk-bp-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Treść przygotowana z perspektywy bilansu cieplnego, kosztu cyklu życia, parametrów elektrycznych i hydrauliki całego systemu.</p>
          </div>
          <span class="rk-bp-author-mark">Aktualizacja: 13.09.2026</span>
        </div>
        <div class="rk-bp-author-layout">
          <aside class="rk-bp-author-side">
            <div class="rk-bp-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji grzewczych" width="132" height="132" loading="lazy" decoding="async"></div>
            <div class="rk-bp-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
            <p class="rk-bp-author-role">Projektant instalacji sanitarnych i specjalista HVAC</p>
            <div class="rk-bp-author-social-label">Profile branżowe</div>
            <div class="rk-bp-author-social" aria-label="Profile branżowe Roberta Kucharskiego">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6.5 8.2H3.2V21h3.3V8.2ZM4.85 3A1.92 1.92 0 1 0 4.9 6.84 1.92 1.92 0 0 0 4.85 3ZM21 13.66c0-3.86-2.06-5.66-4.81-5.66a4.14 4.14 0 0 0-3.75 2.06V8.2H9.12V21h3.32v-6.34c0-1.67.32-3.29 2.39-3.29 2.04 0 2.07 1.91 2.07 3.4V21H21v-7.34Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14 8.5V7c0-.74.5-.92.85-.92H17V3.13L14.05 3C11.13 3 10.47 5.16 10.47 6.55V8.5H8v3.36h2.47V21H14v-9.14h2.7l.44-3.36H14Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" 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"></path></svg></a>
            </div>
          </aside>
          <div class="rk-bp-author-main">
            <blockquote class="rk-bp-author-quote"><p>Nie porównuję bufora z grzałkami z pompą ciepła na jednej cenie prądu i jednym SCOP. Najpierw ustalam wspólne zapotrzebowanie na ciepło, realny profil taryfy, straty magazynowania i pełny koszt w tym samym okresie.</p></blockquote>
            <div class="rk-bp-author-cards">
              <div class="rk-bp-author-card"><b>Praktyka projektowa</b><p>Analiza OZC, powierzchni czynnej, temperatur, pętli, przepływów, rozdzielaczy, źródeł ciepła i automatyki.</p></div>
              <div class="rk-bp-author-card"><b>Metoda</b><p>Oba warianty korzystają z tego samego zapotrzebowania i taryfy; osobno analizowane są SCOP, straty, udział stref i pełny TCO.</p></div>
              <div class="rk-bp-author-card"><b>Zakres aktualizacji</b><p>Usunięto kategoryczne reguły, dodano dwa kalkulatory, trzy widoki wykresu, test przyłącza, źródła i ograniczenia.</p></div>
            </div>
            <div class="rk-bp-author-mini-label">Portale autora</div>
            <div class="rk-bp-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>
  </article>
</div>

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

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

  var chartMode="cumulative";
  var latest=null;
  var moneyFormatter=new Intl.NumberFormat("pl-PL",{maximumFractionDigits:0});
  var numberFormatter=new Intl.NumberFormat("pl-PL",{maximumFractionDigits:1});

  function byId(id){return document.getElementById(id);}
  function clamp(value,min,max){return Math.min(max,Math.max(min,value));}
  function readNumber(id,fallback){
    var field=byId(id);
    if(!field){return fallback;}
    var parsed=parseFloat(String(field.value).replace(",","."));
    if(!Number.isFinite(parsed)){return fallback;}
    return parsed;
  }
  function money(value){return moneyFormatter.format(Math.round(value))+" zł";}
  function one(value){return numberFormatter.format(value);}
  function kwh(value){return moneyFormatter.format(Math.round(value))+" kWh";}
  function setText(id,value){var node=byId(id);if(node){node.textContent=value;}}
  function setValue(id,value){var node=byId(id);if(node){node.value=String(value);}}
  function weightedPrice(cheap,high,share){var s=clamp(share,0,100)/100;return cheap*s+high*(1-s);}

  var tcoDefaults={
    "rk-bp-space-heat":7500,
    "rk-bp-dhw-heat":2500,
    "rk-bp-years":25,
    "rk-bp-cheap-price":0.70,
    "rk-bp-high-price":1.25,
    "rk-bp-price-growth":2.0,
    "rk-bp-buffer-cheap-share":75,
    "rk-bp-pump-cheap-share":45,
    "rk-bp-discount":0,
    "rk-bp-buffer-capex":16000,
    "rk-bp-heater-eff":98,
    "rk-bp-buffer-loss":8,
    "rk-bp-buffer-aux":180,
    "rk-bp-buffer-service":250,
    "rk-bp-buffer-replace":2500,
    "rk-bp-buffer-replace-year":15,
    "rk-bp-pump-capex":42000,
    "rk-bp-scop-input":3.6,
    "rk-bp-pump-aux":220,
    "rk-bp-pump-service":650,
    "rk-bp-pump-replace":14000,
    "rk-bp-pump-replace-year":15
  };

  function getTcoParams(){
    return{
      space:Math.max(0,readNumber("rk-bp-space-heat",7500)),
      dhw:Math.max(0,readNumber("rk-bp-dhw-heat",2500)),
      years:clamp(Math.round(readNumber("rk-bp-years",25)),1,25),
      cheap:Math.max(0,readNumber("rk-bp-cheap-price",0.70)),
      high:Math.max(0,readNumber("rk-bp-high-price",1.25)),
      growth:clamp(readNumber("rk-bp-price-growth",2),-10,20)/100,
      bufferShare:clamp(readNumber("rk-bp-buffer-cheap-share",75),0,100),
      pumpShare:clamp(readNumber("rk-bp-pump-cheap-share",45),0,100),
      discount:clamp(readNumber("rk-bp-discount",0),0,20)/100,
      bufferCapex:Math.max(0,readNumber("rk-bp-buffer-capex",16000)),
      heaterEff:clamp(readNumber("rk-bp-heater-eff",98),70,100)/100,
      bufferLoss:clamp(readNumber("rk-bp-buffer-loss",8),0,40)/100,
      bufferAux:Math.max(0,readNumber("rk-bp-buffer-aux",180)),
      bufferService:Math.max(0,readNumber("rk-bp-buffer-service",250)),
      bufferReplace:Math.max(0,readNumber("rk-bp-buffer-replace",2500)),
      bufferReplaceYear:clamp(Math.round(readNumber("rk-bp-buffer-replace-year",15)),1,25),
      pumpCapex:Math.max(0,readNumber("rk-bp-pump-capex",42000)),
      scop:clamp(readNumber("rk-bp-scop-input",3.6),1,7),
      pumpAux:Math.max(0,readNumber("rk-bp-pump-aux",220)),
      pumpService:Math.max(0,readNumber("rk-bp-pump-service",650)),
      pumpReplace:Math.max(0,readNumber("rk-bp-pump-replace",14000)),
      pumpReplaceYear:clamp(Math.round(readNumber("rk-bp-pump-replace-year",15)),1,25)
    };
  }

  function calculateTco(p,scopOverride){
    var q=p.space+p.dhw;
    var safeStorageFactor=Math.max(0.05,1-p.bufferLoss);
    var usedScop=scopOverride===undefined?p.scop:clamp(scopOverride,1,7);
    var bufferKwh=q/(p.heaterEff*safeStorageFactor)+p.bufferAux;
    var pumpKwh=q/usedScop+p.pumpAux;
    var bufferPrice=weightedPrice(p.cheap,p.high,p.bufferShare);
    var pumpPrice=weightedPrice(p.cheap,p.high,p.pumpShare);
    var bufferBaseEnergy=bufferKwh*bufferPrice;
    var pumpBaseEnergy=pumpKwh*pumpPrice;
    var bufferCum=[p.bufferCapex];
    var pumpCum=[p.pumpCapex];
    var bufferAnnual=[p.bufferCapex];
    var pumpAnnual=[p.pumpCapex];
    var breakEven=null;
    if(p.pumpCapex<=p.bufferCapex){breakEven=0;}
    for(var year=1;year<=p.years;year+=1){
      var priceFactor=Math.pow(1+p.growth,year-1);
      var presentFactor=Math.pow(1+p.discount,year);
      var bufferReplacement=year===p.bufferReplaceYear?p.bufferReplace:0;
      var pumpReplacement=year===p.pumpReplaceYear?p.pumpReplace:0;
      var bufferYear=(bufferBaseEnergy*priceFactor+p.bufferService+bufferReplacement)/presentFactor;
      var pumpYear=(pumpBaseEnergy*priceFactor+p.pumpService+pumpReplacement)/presentFactor;
      bufferAnnual.push(bufferYear);
      pumpAnnual.push(pumpYear);
      bufferCum.push(bufferCum[year-1]+bufferYear);
      pumpCum.push(pumpCum[year-1]+pumpYear);
      if(breakEven===null){if(pumpCum[year]<=bufferCum[year]){breakEven=year;}}
    }
    return{
      q:q,
      bufferKwh:bufferKwh,
      pumpKwh:pumpKwh,
      bufferPrice:bufferPrice,
      pumpPrice:pumpPrice,
      bufferBaseEnergy:bufferBaseEnergy,
      pumpBaseEnergy:pumpBaseEnergy,
      bufferYear1:bufferBaseEnergy+p.bufferService+(p.bufferReplaceYear===1?p.bufferReplace:0),
      pumpYear1:pumpBaseEnergy+p.pumpService+(p.pumpReplaceYear===1?p.pumpReplace:0),
      bufferCum:bufferCum,
      pumpCum:pumpCum,
      bufferAnnual:bufferAnnual,
      pumpAnnual:pumpAnnual,
      breakEven:breakEven,
      scop:usedScop
    };
  }

  function comparisonAtPeriod(params,overrides){
    var p={};
    Object.keys(params).forEach(function(key){p[key]=params[key];});
    Object.keys(overrides).forEach(function(key){p[key]=overrides[key];});
    var result=calculateTco(p);
    var year=p.years;
    return result.pumpCum[year]-result.bufferCum[year];
  }

  function driverText(params,result){
    var baseline=result.pumpCum[params.years]-result.bufferCum[params.years];
    var tests=[
      {name:"SCOP pompy",value:Math.abs(comparisonAtPeriod(params,{scop:Math.min(7,params.scop*1.10)})-baseline)},
      {name:"udział taniej energii dla grzałek",value:Math.abs(comparisonAtPeriod(params,{bufferShare:Math.min(100,params.bufferShare+10)})-baseline)},
      {name:"udział taniej energii dla pompy",value:Math.abs(comparisonAtPeriod(params,{pumpShare:Math.min(100,params.pumpShare+10)})-baseline)},
      {name:"straty magazynowania",value:Math.abs(comparisonAtPeriod(params,{bufferLoss:Math.min(0.40,params.bufferLoss+0.05)})-baseline)},
      {name:"nakład na pompę",value:Math.abs(comparisonAtPeriod(params,{pumpCapex:params.pumpCapex*1.10})-baseline)},
      {name:"nakład na bufor",value:Math.abs(comparisonAtPeriod(params,{bufferCapex:params.bufferCapex*1.10})-baseline)}
    ];
    tests.sort(function(a,b){return b.value-a.value;});
    var capexGap=params.pumpCapex-params.bufferCapex;
    var annualSaving=result.bufferYear1-result.pumpYear1;
    return "W tym zestawie największą wrażliwość tworzą: "+tests[0].name+", "+tests[1].name+" oraz "+tests[2].name+". Różnica nakładów na starcie wynosi "+money(Math.abs(capexGap))+" "+(capexGap>=0?"na korzyść bufora":"na korzyść pompy")+", a różnica kosztu pierwszego roku to "+money(Math.abs(annualSaving))+" "+(annualSaving>=0?"na korzyść pompy":"na korzyść bufora")+". Zmień te trzy założenia i sprawdź, czy wniosek pozostaje stabilny.";
  }

  function niceMax(value){
    if(value<=0){return 1;}
    var exponent=Math.pow(10,Math.floor(Math.log10(value)));
    var normalized=value/exponent;
    var nice=1;
    if(normalized>1){nice=2;}
    if(normalized>2){nice=5;}
    if(normalized>5){nice=10;}
    return nice*exponent;
  }

  function axisMoney(value){
    if(Math.abs(value)>=1000000){return one(value/1000000)+" mln";}
    if(Math.abs(value)>=1000){return one(value/1000)+" tys.";}
    return moneyFormatter.format(Math.round(value));
  }

  function drawChart(params,result){
    var svg=byId("rk-bp-chart");
    if(!svg){return;}
    var xs=[];
    var a=[];
    var b=[];
    var xLabel="Rok";
    var yLabel="Koszt [zł]";
    var title="Skumulowany koszt całkowity";
    if(chartMode==="cumulative"){
      for(var y=0;y<=params.years;y+=1){xs.push(y);a.push(result.bufferCum[y]);b.push(result.pumpCum[y]);}
      setText("rk-bp-chart-note",result.breakEven===null?"W wybranym okresie linie nie pokazują roku, w którym pompa przestaje być droższa od bufora.":"Pierwszy rok, w którym skumulowany koszt pompy nie jest wyższy od bufora: "+result.breakEven+".");
    }else if(chartMode==="annual"){
      for(var ay=1;ay<=params.years;ay+=1){xs.push(ay);a.push(result.bufferAnnual[ay]);b.push(result.pumpAnnual[ay]);}
      title="Koszt kolejnych lat";
      setText("rk-bp-chart-note","Skoki w wybranym roku wynikają z wpisanych kosztów wymiany. Przy stopie dyskontowej powyżej 0% pokazane są wartości bieżące.");
    }else{
      var scops=[2.5,3,3.5,4,4.5,5];
      scops.forEach(function(s){var temp=calculateTco(params,s);xs.push(s);a.push(temp.bufferCum[params.years]);b.push(temp.pumpCum[params.years]);});
      xLabel="SCOP";
      title="TCO przy zmianie SCOP pompy";
      setText("rk-bp-chart-note","Pomarańczowa linia pozostaje stała, ponieważ SCOP dotyczy wariantu pompy. Sprawdź, przy jakiej sprawności zmienia się wynik.");
    }
    var width=900;
    var height=400;
    var left=78;
    var right=28;
    var top=32;
    var bottom=62;
    var plotW=width-left-right;
    var plotH=height-top-bottom;
    var all=a.concat(b);
    var maxVal=Math.max.apply(null,all);
    var yMax=niceMax(maxVal*1.06);
    var minX=Math.min.apply(null,xs);
    var maxX=Math.max.apply(null,xs);
    if(maxX===minX){maxX=minX+1;}
    function xPos(v){return left+(v-minX)/(maxX-minX)*plotW;}
    function yPos(v){return top+plotH-(v/yMax)*plotH;}
    function points(values){return values.map(function(v,index){return xPos(xs[index]).toFixed(1)+","+yPos(v).toFixed(1);}).join(" ");}
    var parts=[];
    parts.push("<title id=\"rk-bp-chart-title\">"+title+"</title>");
    parts.push("<desc id=\"rk-bp-chart-desc\">Interaktywny wykres porównujący wariant bufora z grzałkami i pompy ciepła.</desc>");
    parts.push("<rect x=\"0\" y=\"0\" width=\"900\" height=\"400\" rx=\"16\" fill=\"#ffffff\"/>");
    for(var g=0;g<=5;g+=1){
      var gy=top+plotH-(g/5)*plotH;
      var gv=yMax*(g/5);
      parts.push("<line x1=\""+left+"\" y1=\""+gy.toFixed(1)+"\" x2=\""+(width-right)+"\" y2=\""+gy.toFixed(1)+"\" stroke=\"#dbe8ec\" stroke-width=\"1\"/>");
      parts.push("<text x=\""+(left-12)+"\" y=\""+(gy+4).toFixed(1)+"\" text-anchor=\"end\" fill=\"#607986\" font-size=\"12\">"+axisMoney(gv)+"</text>");
    }
    xs.forEach(function(x,index){
      var show=chartMode==="sensitivity"?true:(index===0||index===xs.length-1||index%5===0);
      if(show){
        var xp=xPos(x);
        parts.push("<line x1=\""+xp.toFixed(1)+"\" y1=\""+(top+plotH)+"\" x2=\""+xp.toFixed(1)+"\" y2=\""+(top+plotH+6)+"\" stroke=\"#78909b\"/>");
        parts.push("<text x=\""+xp.toFixed(1)+"\" y=\""+(top+plotH+24)+"\" text-anchor=\"middle\" fill=\"#607986\" font-size=\"12\">"+String(x).replace(".",",")+"</text>");
      }
    });
    parts.push("<line x1=\""+left+"\" y1=\""+(top+plotH)+"\" x2=\""+(width-right)+"\" y2=\""+(top+plotH)+"\" stroke=\"#78909b\" stroke-width=\"1.5\"/>");
    parts.push("<polyline points=\""+points(a)+"\" fill=\"none\" stroke=\"#ff6a3d\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>");
    parts.push("<polyline points=\""+points(b)+"\" fill=\"none\" stroke=\"#078fbe\" stroke-width=\"4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>");
    if(chartMode==="cumulative"){
      if(result.breakEven!==null){
        if(result.breakEven<=params.years){
          var bx=xPos(result.breakEven);
          var by=yPos(result.pumpCum[result.breakEven]);
          parts.push("<circle cx=\""+bx.toFixed(1)+"\" cy=\""+by.toFixed(1)+"\" r=\"7\" fill=\"#ffffff\" stroke=\"#15384d\" stroke-width=\"3\"/>");
        }
      }
    }
    parts.push("<text x=\""+(left+plotW/2)+"\" y=\"387\" text-anchor=\"middle\" fill=\"#294b5d\" font-size=\"13\" font-weight=\"700\">"+xLabel+"</text>");
    parts.push("<text x=\"18\" y=\""+(top+plotH/2)+"\" text-anchor=\"middle\" transform=\"rotate(-90 18 "+(top+plotH/2)+")\" fill=\"#294b5d\" font-size=\"13\" font-weight=\"700\">"+yLabel+"</text>");
    svg.innerHTML=parts.join("");
  }

  function renderTcoTable(params,result){
    var body=byId("rk-bp-tco-table");
    if(!body){return;}
    var candidate=[0,5,10,15,20,25];
    var years=candidate.filter(function(y){return y<=params.years;});
    if(years.indexOf(params.years)===-1){years.push(params.years);years.sort(function(a,b){return a-b;});}
    var rows=years.map(function(y){
      var diff=result.pumpCum[y]-result.bufferCum[y];
      var label=diff===0?"bez różnicy":money(Math.abs(diff))+" mniej: "+(diff>0?"bufor":"pompa");
      return "<tr><td data-label=\"Rok\"><strong>"+y+"</strong></td><td data-label=\"Bufor + grzałki\">"+money(result.bufferCum[y])+"</td><td data-label=\"Pompa ciepła\">"+money(result.pumpCum[y])+"</td><td data-label=\"Różnica\">"+label+"</td></tr>";
    });
    body.innerHTML=rows.join("");
    setText("rk-bp-table-summary","Skumulowany koszt całkowity w wybranych latach. Okres analizy: "+params.years+" lat; stopa dyskontowa: "+one(params.discount*100)+"%.");
  }

  function updateTco(){
    var p=getTcoParams();
    var r=calculateTco(p);
    latest={params:p,result:r};
    setText("rk-bp-buffer-kwh",kwh(r.bufferKwh));
    setText("rk-bp-pump-kwh",kwh(r.pumpKwh));
    setText("rk-bp-buffer-year1",money(r.bufferYear1));
    setText("rk-bp-pump-year1",money(r.pumpYear1));
    setText("rk-bp-buffer-tco",money(r.bufferCum[p.years]));
    setText("rk-bp-pump-tco",money(r.pumpCum[p.years]));
    var diff=r.pumpCum[p.years]-r.bufferCum[p.years];
    setText("rk-bp-tco-diff",diff===0?"Koszty są równe":money(Math.abs(diff))+" mniej: "+(diff>0?"bufor + grzałki":"pompa ciepła"));
    var breakText="brak w "+p.years+" latach";
    if(r.breakEven!==null){breakText=r.breakEven===0?"już w roku 0":r.breakEven+". rok";}
    setText("rk-bp-break-even",breakText);
    setText("rk-bp-driver-text",driverText(p,r));
    drawChart(p,r);
    renderTcoTable(p,r);
  }

  Object.keys(tcoDefaults).forEach(function(id){
    var field=byId(id);
    if(field){field.addEventListener("input",updateTco);field.addEventListener("change",updateTco);}
  });
  var tcoReset=byId("rk-bp-tco-reset");
  if(tcoReset){tcoReset.addEventListener("click",function(){Object.keys(tcoDefaults).forEach(function(id){setValue(id,tcoDefaults[id]);});updateTco();});}
  root.querySelectorAll("[data-chart]").forEach(function(button){
    button.addEventListener("click",function(){
      chartMode=button.getAttribute("data-chart")||"cumulative";
      root.querySelectorAll("[data-chart]").forEach(function(item){item.setAttribute("aria-pressed",item===button?"true":"false");});
      if(latest){drawChart(latest.params,latest.result);}
    });
  });

  var bufferDefaults={
    "rk-bp-design-load":6,
    "rk-bp-volume":1000,
    "rk-bp-hot-temp":80,
    "rk-bp-min-temp":35,
    "rk-bp-storage-loss":12,
    "rk-bp-charge-hours":10,
    "rk-bp-heater-power":15,
    "rk-bp-connection":25,
    "rk-bp-house-reserve":6
  };

  function updateBuffer(){
    var load=Math.max(0.1,readNumber("rk-bp-design-load",6));
    var volume=Math.max(1,readNumber("rk-bp-volume",1000));
    var hot=readNumber("rk-bp-hot-temp",80);
    var minimum=readNumber("rk-bp-min-temp",35);
    var reduction=clamp(readNumber("rk-bp-storage-loss",12),0,50)/100;
    var hours=clamp(readNumber("rk-bp-charge-hours",10),1,23);
    var heater=Math.max(0.1,readNumber("rk-bp-heater-power",15));
    var connection=Math.max(0,readNumber("rk-bp-connection",25));
    var reserve=Math.max(0,readNumber("rk-bp-house-reserve",6));
    var delta=Math.max(0,hot-minimum);
    var theoretical=volume*0.001163*delta;
    var usable=theoretical*(1-reduction);
    var offHours=24-hours;
    var offEnergy=load*offHours;
    var denominator=0.001163*delta*(1-reduction);
    var requiredVolume=denominator>0?offEnergy/denominator:0;
    var minHeater=load*24/(hours*0.98);
    var chargeTime=theoretical/(heater*0.98);
    var current=heater*1000/(Math.sqrt(3)*400);
    var headroom=connection-reserve-heater;
    setText("rk-bp-theoretical-energy",one(theoretical)+" kWh");
    setText("rk-bp-usable-energy",one(usable)+" kWh");
    setText("rk-bp-off-energy",one(offEnergy)+" kWh");
    setText("rk-bp-required-volume",delta>0?moneyFormatter.format(Math.ceil(requiredVolume/10)*10)+" l":"brak ΔT");
    setText("rk-bp-min-heater",one(minHeater)+" kW");
    setText("rk-bp-charge-time",one(chargeTime)+" h");
    setText("rk-bp-current",one(current)+" A/fazę");
    setText("rk-bp-headroom",one(headroom)+" kW");
    var headroomCard=byId("rk-bp-headroom-card");
    if(headroomCard){
      headroomCard.classList.remove("good","warn","bad");
      if(headroom<0){headroomCard.classList.add("bad");}
      else if(headroom<2){headroomCard.classList.add("warn");}
      else{headroomCard.classList.add("good");}
    }
    var messages=[];
    if(delta<=0){messages.push("Temperatura maksymalna musi być wyższa od minimalnej użytecznej.");}
    else{
      if(usable>=offEnergy){messages.push("Przyjęta pojemność użyteczna pokrywa uproszczone zapotrzebowanie w godzinach bez ładowania.");}
      else{messages.push("Pojemność użyteczna jest mniejsza od uproszczonego zapotrzebowania poza oknem ładowania o "+one(offEnergy-usable)+" kWh.");}
      if(heater>=minHeater){messages.push("Wpisana moc grzałek wystarcza do wytworzenia dobowej energii w zadanym oknie przy tym uproszczeniu.");}
      else{messages.push("Wpisana moc grzałek jest niższa od orientacyjnego minimum o "+one(minHeater-heater)+" kW.");}
      if(headroom>=0){messages.push("Po odjęciu pozostałych odbiorów pozostaje "+one(headroom)+" kW rezerwy przyłącza.");}
      else{messages.push("Jednoczesna moc przekracza wpisaną moc przyłączeniową o "+one(Math.abs(headroom))+" kW.");}
    }
    setText("rk-bp-buffer-assessment",messages.join(" ")+" Wynik nie uwzględnia godzinowej zmienności strat ani warstwowania wody.");
  }

  Object.keys(bufferDefaults).forEach(function(id){
    var field=byId(id);
    if(field){field.addEventListener("input",updateBuffer);field.addEventListener("change",updateBuffer);}
  });
  var bufferReset=byId("rk-bp-buffer-reset");
  if(bufferReset){bufferReset.addEventListener("click",function(){Object.keys(bufferDefaults).forEach(function(id){setValue(id,bufferDefaults[id]);});updateBuffer();});}

  var flowData={
    buffer:{
      status:"Grzałki produkują ciepło w godzinach pracy, a bufor przesuwa część jego wykorzystania na później.",
      cards:[
        ["Sieć i taryfa","Energia jest pobierana głównie w wybranym oknie taniej strefy, ale część może przypaść na strefę drogą."],
        ["Konwersja","Grzałka oporowa zamienia energię elektryczną na ciepło ze sprawnością bliską jedności."],
        ["Magazyn","Woda przechowuje energię między temperaturą maksymalną i minimalną użyteczną; po drodze występują straty."],
        ["Hydraulika","Pompa obiegowa, armatura i pętle przenoszą energię do czynnej powierzchni podłogi."],
        ["Budynek","System musi pokryć bieżące straty przegród i wentylacji bez utraty komfortu."]
      ]
    },
    pump:{
      status:"Pompa ciepła pobiera energię elektryczną i przenosi dodatkowe ciepło ze źródła dolnego; może współpracować z buforem, ale nie musi magazynować całej doby.",
      cards:[
        ["Sieć i taryfa","Sprężarka i urządzenia pomocnicze pobierają energię zgodnie z modulacją, automatyką i warunkami taryfy."],
        ["Obieg chłodniczy","Energia ze źródła dolnego i praca sprężarki są przekazywane wodzie instalacyjnej."],
        ["Modulacja i zład","Urządzenie dopasowuje moc w swoim zakresie; bufor może zapewniać funkcję hydrauliczną lub wymagany zład."],
        ["Hydraulika","Pompa obiegowa dostarcza wodę do pętli przy wymaganym przepływie i możliwie niskiej temperaturze."],
        ["Budynek","Bieżące straty są pokrywane pracą źródła i energią zakumulowaną w konstrukcji oraz ewentualnym zbiorniku."]
      ]
    },
    compare:{
      status:"Oba systemy kończą w tym samym budynku i na tej samej podłodze. Różnią się sposobem wytworzenia ciepła, profilem poboru oraz kosztami urządzeń.",
      cards:[
        ["Sieć i taryfa","Grzałki: większa moc w krótkim oknie|Pompa: mniejszy pobór rozłożony według modulacji"],
        ["Konwersja","Grzałki: około 1 kWh ciepła z 1 kWh prądu|Pompa: ciepło przeniesione + energia sprężarki"],
        ["Magazyn / modulacja","Grzałki: bufor przesuwa energię|Pompa: modulacja, czasem bufor funkcjonalny"],
        ["Hydraulika","W obu: przepływy, opory, armatura i temperatura|Różni się sposób regulacji źródła"],
        ["Budynek","W obu: identyczne użyteczne ciepło i komfort|Różnią się pobór energii i TCO"]
      ]
    }
  };

  function updateFlow(mode){
    var data=flowData[mode]||flowData.buffer;
    setText("rk-bp-flow-status",data.status);
    var cards=root.querySelectorAll("#rk-bp-flow-cards .rk-bp-flow-card");
    cards.forEach(function(card,index){
      var heading=card.querySelector("h3");
      var copy=card.querySelector(".rk-bp-flow-copy");
      if(heading){heading.textContent=data.cards[index][0];}
      if(copy){
        if(mode==="compare"){
          var pair=data.cards[index][1].split("|");
          var first=pair[0]||"";
          var second=pair[1]||"";
          copy.innerHTML="<div class=\"rk-bp-flow-pair\"><span><b>Bufor + grzałki</b><br>"+first.replace("Grzałki: ","")+"</span><span><b>Pompa ciepła</b><br>"+second.replace("Pompa: ","")+"</span></div>";
        }else{copy.innerHTML="<p>"+data.cards[index][1]+"</p>";}
      }
    });
  }

  root.querySelectorAll("[data-flow]").forEach(function(button){
    button.addEventListener("click",function(){
      var mode=button.getAttribute("data-flow")||"buffer";
      root.querySelectorAll("[data-flow]").forEach(function(item){item.setAttribute("aria-pressed",item===button?"true":"false");});
      updateFlow(mode);
    });
  });

  updateTco();
  updateBuffer();
  updateFlow("buffer");
})();
</script>

<script type="application/ld+json">
{
  "@context":"https://schema.org",
  "@graph":[
    {
      "@type":"WebSite",
      "@id":"https://projekt-ogrzewania.pl/#website",
      "url":"https://projekt-ogrzewania.pl/",
      "name":"Projekt Ogrzewania",
      "description":"Projektowanie ogrzewania podłogowego, obliczenia OZC, hydraulika instalacji i poradniki techniczne HVAC.",
      "inLanguage":"pl-PL",
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "potentialAction":{
        "@type":"SearchAction",
        "target":{"@type":"EntryPoint","urlTemplate":"https://projekt-ogrzewania.pl/?s={search_term_string}"},
        "query-input":"required name=search_term_string"
      }
    },
    {
      "@type":"Organization",
      "@id":"https://projekt-ogrzewania.pl/#organization",
      "name":"Projekt Ogrzewania",
      "url":"https://projekt-ogrzewania.pl/",
      "logo":{"@id":"https://projekt-ogrzewania.pl/#logo"},
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "sameAs":[
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type":"Organization",
      "@id":"https://remont.biz.pl/#organization",
      "name":"Remont.biz.pl",
      "url":"https://remont.biz.pl/",
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type":"Organization",
      "@id":"https://sobir.pl/#organization",
      "name":"Sobir.pl",
      "url":"https://sobir.pl/",
      "founder":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type":"ImageObject",
      "@id":"https://projekt-ogrzewania.pl/#logo",
      "url":"https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "contentUrl":"https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "width":1024,
      "height":1024,
      "caption":"Projekt Ogrzewania"
    },
    {
      "@type":"ImageObject",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#primaryimage",
      "url":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Bufor-ciepla-z-grzalkami-czy-pompa-ciepla-Szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku.webp",
      "contentUrl":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Bufor-ciepla-z-grzalkami-czy-pompa-ciepla-Szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku.webp",
      "width":1050,
      "height":1050,
      "encodingFormat":"image/webp",
      "caption":"Bufor ciepła z grzałkami czy pompa ciepła — porównanie kosztów i opłacalności"
    },
    {
      "@type":"Person",
      "@id":"https://projekt-ogrzewania.pl/#robert-kucharski",
      "name":"Robert Kucharski",
      "url":"https://projekt-ogrzewania.pl/author/admin3399/",
      "image":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle":"Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "affiliation":[
        {"@id":"https://remont.biz.pl/#organization"},
        {"@id":"https://sobir.pl/#organization"}
      ],
      "knowsAbout":[
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "bufory ciepła",
        "grzałki elektryczne",
        "obliczenia OZC",
        "koszt cyklu życia TCO",
        "hydraulika instalacji",
        "temperatura zasilania",
        "efektywność sezonowa SCOP"
      ],
      "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/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#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":"Bufor z grzałkami czy pompa ciepła","item":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/"}
      ]
    },
    {
      "@type":"WebPage",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#webpage",
      "url":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/",
      "name":"Bufor ciepła z grzałkami czy pompa ciepła? Kalkulator kosztów i opłacalności",
      "description":"Bufor ciepła z grzałkami czy pompa ciepła? Policz rachunki, koszt 20 lat, pojemność bufora, moc grzałek i próg opłacalności obu systemów w konkretnym domu.",
      "inLanguage":"pl-PL",
      "isPartOf":{"@id":"https://projekt-ogrzewania.pl/#website"},
      "breadcrumb":{"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#breadcrumb"},
      "primaryImageOfPage":{"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#primaryimage"},
      "datePublished":"2026-07-08T15:39:46+00:00",
      "dateModified":"2026-09-13T00:00:00+00:00",
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "reviewedBy":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "mainEntity":{"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#article"},
      "speakable":{"@type":"SpeakableSpecification","cssSelector":["#rk-bp-answer","#rk-bp-conclusion-answer"]}
    },
    {
      "@type":"TechArticle",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#article",
      "headline":"Bufor ciepła z grzałkami czy pompa ciepła? Kalkulator kosztów i opłacalności",
      "alternativeHeadline":"Bufor 1000 l z grzałkami czy pompa ciepła — koszt eksploatacji, TCO, pojemność i moc grzałek",
      "description":"Techniczne i finansowe porównanie grzałek z buforem oraz pompy ciepła wraz z kalkulatorem TCO, wykresem, bilansem bufora, mocą grzałek i testem przyłącza.",
      "image":{"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#primaryimage"},
      "mainEntityOfPage":{"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#webpage"},
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "datePublished":"2026-07-08T15:39:46+00:00",
      "dateModified":"2026-09-13T00:00:00+00:00",
      "inLanguage":"pl-PL",
      "articleSection":[
        "Bufory ciepła",
        "Pompy ciepła",
        "Koszty ogrzewania",
        "Ogrzewanie podłogowe",
        "Kalkulatory"
      ],
      "keywords":[
        "bufor ciepła z grzałkami czy pompa ciepła",
        "bufor 1000 l z grzałkami koszt ogrzewania",
        "ogrzewanie buforem w taryfie G12w",
        "pompa ciepła czy grzałki elektryczne co tańsze",
        "ile kWh magazynuje bufor 1000 l",
        "jak dobrać moc grzałek do bufora",
        "jaka pojemność bufora do ogrzewania domu",
        "koszt ogrzewania domu buforem elektrycznym",
        "czas zwrotu pompy ciepła",
        "kalkulator bufora ciepła z grzałkami"
      ],
      "about":[
        {"@type":"Thing","name":"Bufor ciepła"},
        {"@type":"Thing","name":"Grzałka elektryczna"},
        {"@type":"Thing","name":"Pompa ciepła"},
        {"@type":"Thing","name":"Ogrzewanie podłogowe"},
        {"@type":"Thing","name":"Koszt cyklu życia"}
      ],
      "mentions":[
        {"@type":"DefinedTerm","name":"CAPEX","description":"Nakład inwestycyjny"},
        {"@type":"DefinedTerm","name":"OPEX","description":"Koszt eksploatacyjny"},
        {"@type":"DefinedTerm","name":"TCO","description":"Całkowity koszt posiadania"},
        {"@type":"DefinedTerm","name":"SCOP","description":"Sezonowy współczynnik efektywności pompy ciepła"},
        {"@type":"DefinedTerm","name":"Pojemność cieplna bufora","description":"Energia magazynowana w wodzie w zadanym zakresie temperatur"}
      ],
      "hasPart":[
        {"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#tco-calculator"},
        {"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#buffer-calculator"},
        {"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#howto"},
        {"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#comparison-inputs"},
        {"@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#faq-schema"}
      ],
      "citation":[
        "https://maszwybor.ure.gov.pl/",
        "https://eur-lex.europa.eu/eli/reg/2024/573/oj/eng",
        "https://www.iso.org/standard/74682.html",
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html",
        "https://energy.ec.europa.eu/topics/energy-efficiency/energy-performance-buildings/energy-performance-buildings-directive_en"
      ]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#tco-calculator",
      "name":"Kalkulator kosztów eksploatacji i TCO bufora z grzałkami oraz pompy ciepła",
      "url":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#rk-bp-tco-calculator",
      "description":"Oblicza pobór energii, koszt pierwszego roku, skumulowany koszt posiadania do 25 lat, różnicę oraz pierwszy rok przecięcia dla dwóch systemów korzystających z tej samej taryfy.",
      "applicationCategory":"UtilitiesApplication",
      "applicationSubCategory":"Heating cost and TCO calculator",
      "operatingSystem":"Any",
      "browserRequirements":"JavaScript",
      "isAccessibleForFree":true,
      "inLanguage":"pl-PL",
      "creator":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "offers":{"@type":"Offer","price":"0","priceCurrency":"PLN"},
      "featureList":[
        "wspólne ciepło na ogrzewanie i CWU",
        "jedna para edytowalnych stawek taryfowych",
        "osobny udział taniej energii dla obu systemów",
        "sprawność grzałek i straty magazynowania",
        "sezonowy SCOP pompy ciepła",
        "energia pomocnicza obu systemów",
        "nakłady po dotacjach",
        "serwis i jednorazowe wymiany",
        "wzrost cen energii i stopa dyskontowa",
        "TCO od 5 do 25 lat",
        "pierwszy rok przecięcia kosztów",
        "trzy widoki interaktywnego wykresu",
        "tabela kosztów w wybranych latach",
        "analiza wrażliwości najważniejszych założeń"
      ]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#buffer-calculator",
      "name":"Kalkulator pojemności bufora, mocy grzałek i przyłącza",
      "url":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#rk-bp-buffer-calculator",
      "description":"Oblicza teoretyczną i użyteczną energię bufora, zapotrzebowanie poza oknem ładowania, wymaganą objętość, minimalną moc grzałek, czas ładowania, prąd trójfazowy i rezerwę mocy przyłącza.",
      "applicationCategory":"UtilitiesApplication",
      "applicationSubCategory":"Thermal buffer sizing calculator",
      "operatingSystem":"Any",
      "browserRequirements":"JavaScript",
      "isAccessibleForFree":true,
      "inLanguage":"pl-PL",
      "creator":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "offers":{"@type":"Offer","price":"0","priceCurrency":"PLN"},
      "featureList":[
        "projektowe obciążenie cieplne",
        "pojemność zbiornika",
        "maksymalna i minimalna temperatura użyteczna",
        "redukcja pojemności użytecznej",
        "godziny ładowania",
        "moc grzałek",
        "moc przyłączeniowa i rezerwa innych odbiorów",
        "teoretyczna i użyteczna energia magazynu",
        "wymagana objętość bufora",
        "minimalna moc grzałek",
        "czas ładowania i prąd trójfazowy",
        "ocena ograniczeń wariantu"
      ]
    },
    {
      "@type":"HowTo",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#howto",
      "name":"Jak porównać bufor z grzałkami i pompę ciepła krok po kroku",
      "description":"Osiem kroków od wspólnego zapotrzebowania i taryfy po TCO, test bufora, przyłącze i potwierdzenie projektu.",
      "totalTime":"PT50M",
      "supply":[
        {"@type":"HowToSupply","name":"Roczne użyteczne ciepło i projektowe obciążenie cieplne"},
        {"@type":"HowToSupply","name":"Kompletne oferty obu systemów"},
        {"@type":"HowToSupply","name":"Rachunek lub umowa za energię"},
        {"@type":"HowToSupply","name":"Dane sezonowe pompy ciepła"},
        {"@type":"HowToSupply","name":"Parametry bufora, grzałek i przyłącza"}
      ],
      "tool":[
        {"@type":"HowToTool","name":"Kalkulator TCO w artykule"},
        {"@type":"HowToTool","name":"Kalkulator techniczny bufora w artykule"},
        {"@type":"HowToTool","name":"Dokumentacja budynku i instalacji"}
      ],
      "step":[
        {"@type":"HowToStep","position":1,"name":"Ustal ten sam zakres","text":"Zdefiniuj identyczne ogrzewane pomieszczenia, temperatury, harmonogram i zakres CWU dla obu systemów."},
        {"@type":"HowToStep","position":2,"name":"Wprowadź użyteczne ciepło","text":"Użyj rocznych kWh dla kosztów i projektowych kW dla sprawdzenia najzimniejszej doby; nie zamieniaj tych wielkości miejscami."},
        {"@type":"HowToStep","position":3,"name":"Wyrównaj zakres CAPEX","text":"Porównaj źródło, bufor, automatykę, elektrykę, hydraulikę, montaż, uruchomienie i rzeczywiste dotacje."},
        {"@type":"HowToStep","position":4,"name":"Wpisz jedną taryfę","text":"Wprowadź wspólne stawki taniej i drogiej energii, a następnie osobno realny udział tanich godzin dla każdego wariantu."},
        {"@type":"HowToStep","position":5,"name":"Dodaj sprawność i straty","text":"Dla grzałek uwzględnij sprawność, straty magazynu i energię pomocniczą, a dla pompy sezonowy SCOP i dodatkowe pobory."},
        {"@type":"HowToStep","position":6,"name":"Policz TCO i wrażliwość","text":"Dodaj serwis, wymiany, horyzont, wzrost ceny i stopę dyskontową; sprawdź trzy widoki wykresu i kilka scenariuszy."},
        {"@type":"HowToStep","position":7,"name":"Sprawdź bufor i przyłącze","text":"Porównaj pojemność użyteczną z godzinami bez ładowania, minimalną moc grzałek z mocą wpisaną oraz moc jednoczesną z przyłączem."},
        {"@type":"HowToStep","position":8,"name":"Potwierdź instalację","text":"Zweryfikuj moce pomieszczeń, powierzchnie czynne, temperatury, pętle, przepływy, opory, automatykę i warunki konkretnego urządzenia."}
      ]
    },
    {
      "@type":"ItemList",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#comparison-inputs",
      "name":"Dane potrzebne do porównania bufora z grzałkami i pompy ciepła",
      "numberOfItems":8,
      "itemListOrder":"https://schema.org/ItemListOrderAscending",
      "itemListElement":[
        {"@type":"ListItem","position":1,"name":"Roczne ciepło użytkowe"},
        {"@type":"ListItem","position":2,"name":"Projektowe obciążenie cieplne"},
        {"@type":"ListItem","position":3,"name":"Kompletny CAPEX po dotacjach"},
        {"@type":"ListItem","position":4,"name":"Stawki i udziały stref taryfowych"},
        {"@type":"ListItem","position":5,"name":"Sprawność grzałek, straty i SCOP"},
        {"@type":"ListItem","position":6,"name":"Serwis i planowane wymiany"},
        {"@type":"ListItem","position":7,"name":"Horyzont i scenariusz cen energii"},
        {"@type":"ListItem","position":8,"name":"Bufor, grzałki, przyłącze i hydraulika"}
      ]
    },
    {
      "@type":"FAQPage",
      "@id":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#faq-schema",
      "url":"https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/#rk-bp-faq",
      "inLanguage":"pl-PL",
      "mainEntity":[
        {"@type":"Question","name":"Co jest tańsze: bufor z grzałkami czy pompa ciepła?","acceptedAnswer":{"@type":"Answer","text":"Bufor z grzałkami często ma niższy koszt startowy, a pompa ciepła niższy pobór energii. Niższy TCO zależy od zapotrzebowania, cen i udziału stref, SCOP, strat, serwisu, wymian i okresu analizy."}},
        {"@type":"Question","name":"Ile kWh magazynuje bufor 1000 l?","acceptedAnswer":{"@type":"Answer","text":"Przy różnicy temperatur 50 K teoretyczna pojemność wody wynosi około 58,2 kWh. Energia praktycznie użyteczna jest mniejsza z powodu strat, mieszania warstw, rezerwy regulacyjnej i minimalnej temperatury potrzebnej instalacji."}},
        {"@type":"Question","name":"Czy bufor 1000 l wystarczy do ogrzewania domu?","acceptedAnswer":{"@type":"Answer","text":"Nie da się odpowiedzieć z samej powierzchni domu. Trzeba znać projektowe obciążenie, liczbę godzin bez ładowania, użyteczną różnicę temperatur, straty, moc grzałek i profil pracy odbiorników."}},
        {"@type":"Question","name":"Jak dobrać moc grzałek do bufora?","acceptedAnswer":{"@type":"Answer","text":"Moc musi pokryć energię, którą chcesz wytworzyć w dostępnym oknie, przy uwzględnieniu sprawności i bieżącego odbioru budynku. Wynik trzeba zestawić z mocą przyłącza, zabezpieczeniami i pozostałymi odbiorami."}},
        {"@type":"Question","name":"Czy całą energię dla bufora można kupić w taryfie G12w?","acceptedAnswer":{"@type":"Answer","text":"Tylko jeśli czas ładowania, moc grzałek, pojemność użyteczna i przyłącze pozwalają przenieść potrzebny pobór. W najzimniejszych dobach część energii może przypaść na droższą strefę."}},
        {"@type":"Question","name":"Czy pompa ciepła też może mieć bufor?","acceptedAnswer":{"@type":"Answer","text":"Tak. Bufor może zapewniać wymagany zład, wspierać odszranianie, stabilizować przepływ albo rozdzielać hydraulicznie obiegi. Jego funkcja i pojemność powinny wynikać z konkretnego układu."}},
        {"@type":"Question","name":"Czy SCOP 3,5 oznacza trzy i pół razy niższy rachunek?","acceptedAnswer":{"@type":"Answer","text":"Nie automatycznie. SCOP dotyczy określonych granic sezonowych, a rachunek zależy też od taryfy, energii pomocniczej, grzałki wspomagającej, CWU, serwisu i kosztu inwestycji."}},
        {"@type":"Question","name":"Czy gruba wylewka zawsze poprawia system z buforem?","acceptedAnswer":{"@type":"Answer","text":"Większa masa może zwiększać pojemność cieplną i bezwładność, lecz nie określa samodzielnie komfortu ani mocy. Warstwy, straty budynku, temperatury, okładzina i sterowanie muszą być rozpatrywane razem."}},
        {"@type":"Question","name":"Po ilu latach zwraca się pompa ciepła względem grzałek?","acceptedAnswer":{"@type":"Answer","text":"To pierwszy rok, w którym niższe skumulowane koszty energii i obsługi pokrywają różnicę nakładów i wymian. Przy niektórych założeniach zwrot może nastąpić szybko, późno albo wcale w badanych 25 latach."}},
        {"@type":"Question","name":"Czy kalkulatory zastępują OZC i projekt podłogówki?","acceptedAnswer":{"@type":"Answer","text":"Nie. Kalkulator TCO analizuje skutki finansowe założeń, a kalkulator bufora wykonuje uproszczony bilans. OZC i projekt określają moce pomieszczeń, temperatury, powierzchnie czynne, pętle, przepływy oraz opory."}}
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/bufor-ciepla-z-grzalkami-czy-pompa-ciepla-szokujace-porownanie-kosztow-i-oplacalnosci-w-2026-roku/">Bufor ciepła z grzałkami czy pompa ciepła? Kalkulator kosztów i opłacalności.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pompa ciepła, podłogówka i grzejniki – jak połączyć układ mieszany?</title>
		<link>https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 04 Jul 2026 07:13:33 +0000</pubDate>
				<category><![CDATA[Grzejniki]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[OZC]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Termomodernizacja]]></category>
		<category><![CDATA[bufor ciepła]]></category>
		<category><![CDATA[grupa pompowa]]></category>
		<category><![CDATA[grzejniki v33]]></category>
		<category><![CDATA[instalacja mieszana]]></category>
		<category><![CDATA[klimakonwektory]]></category>
		<category><![CDATA[kryzowanie grzejników]]></category>
		<category><![CDATA[obliczenia ozc]]></category>
		<category><![CDATA[pn-en 12831]]></category>
		<category><![CDATA[pompa ciepła podłogówka i grzejniki]]></category>
		<category><![CDATA[przepływ zwarciowy]]></category>
		<category><![CDATA[regulacja hydrauliczna]]></category>
		<category><![CDATA[sprawność scop]]></category>
		<category><![CDATA[sprzęgło hydrauliczne]]></category>
		<category><![CDATA[taktowanie pompy ciepła]]></category>
		<category><![CDATA[układ hybrydowy]]></category>
		<category><![CDATA[zawór trójdrogowy mieszający]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=6505</guid>

					<description><![CDATA[<p>Planowanie nowoczesnego systemu grzewczego w domu jednorodzinnym wymaga precyzyjnych obliczeń inżynierskich, a nie kompromisów. Układ, w którym współpracują pompa ciepła podłogówka i grzejniki, to technicznie wymagający system hybrydowy. Wymusza on zderzenie dwóch skrajnie różnych światów: niskotemperaturowego ogrzewania płaszczyznowego o wysokich oporach hydraulicznych z punktowymi emiterami konwekcyjnymi. W tym praktycznym poradniku inżynier Robert Kucharski bez ściemy analizuje warunki poprawnego montażu takiego systemu. Dowiesz się, jak poprawnie dobrać pojemność bufora równoległego zgodnie ze standardem VDI 4650, jak obliczyć masowe natężenie przepływu oraz jak uniknąć zjawiska przepływu zwarciowego, które drastycznie obniża sprawność SCOP sprężarki i generuje gigantyczne straty na rachunkach za prąd.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">Pompa ciepła, podłogówka i grzejniki – jak połączyć układ mieszany?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<!--
  PROJEKT-OGRZEWANIA.PL — pełny kod do bloku „Własny HTML”.
  Wklej kod POD natywnym tytułem H1 generowanym przez WordPress.

  USTAWIENIA WORDPRESS / YOAST:
  H1: Pompa ciepła, podłogówka i grzejniki – jak połączyć układ mieszany?
  Fraza główna: pompa ciepła podłogówka i grzejniki
  SEO title: Pompa ciepła, podłogówka i grzejniki – kalkulator
  Meta description: Sprawdź, czy pompa ciepła może zasilać podłogówkę i grzejniki. Oblicz moc grzejnika przy niskiej temperaturze i wybierz właściwy układ.
  Slug: pompa-ciepla-podlogowka-i-grzejniki

  GRAFIKA WYRÓŻNIAJĄCA:
  ALT: Pompa ciepła, podłogówka i grzejniki – układ mieszany
  Tytuł: Pompa ciepła, podłogówka i grzejniki
  Opis: Porównanie wspólnego obiegu niskotemperaturowego i instalacji z dwoma poziomami temperatury.
-->

<style>
  #rk-mixed-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-mixed-guide,
  #rk-mixed-guide * {
    box-sizing: border-box;
    min-width: 0;
  }

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

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

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

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

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

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

  #rk-mixed-guide .rk-mixed-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-mixed-guide .rk-mixed-kicker {
    color: #6ce5ef;
    display: block;
    font-size: 0.77rem;
    font-weight: 900;
    letter-spacing: 0.13em;
    margin: 0 0 19px 28px;
    text-transform: uppercase;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-mixed-guide .rk-mixed-card .rk-mixed-bullets {
    margin-top: 12px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-mixed-guide .rk-mixed-presets {
    gap: 9px;
    margin-top: 20px;
  }

  #rk-mixed-guide .rk-mixed-preset,
  #rk-mixed-guide .rk-mixed-action,
  #rk-mixed-guide .rk-mixed-reset {
    border-radius: 11px;
    cursor: pointer;
    font-weight: 900;
    min-height: 46px;
    padding: 10px 15px;
  }

  #rk-mixed-guide .rk-mixed-preset {
    background: #173e51;
    border: 1px solid #426b7e;
    color: #ffffff;
  }

  #rk-mixed-guide .rk-mixed-preset:hover,
  #rk-mixed-guide .rk-mixed-preset[aria-pressed="true"] {
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
    color: #082c3c;
  }

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

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

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

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

  #rk-mixed-guide .rk-mixed-result-box {
    background: #f5f9fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-mixed-guide .rk-mixed-result-box strong {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    margin-bottom: 5px;
    text-transform: uppercase;
  }

  #rk-mixed-guide .rk-mixed-result-box span {
    color: var(--rk-ink);
    display: block;
    font-size: 1.22rem;
    font-weight: 900;
  }

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

  #rk-mixed-guide .rk-mixed-chart-wrap {
    background: #f7fbfc;
    border: 1px solid #cfe0e7;
    border-radius: 16px;
    margin-top: 22px;
    padding: 18px;
  }

  #rk-mixed-guide .rk-mixed-chart-head {
    align-items: flex-start;
    display: flex;
    gap: 20px;
    justify-content: space-between;
    margin-bottom: 14px;
  }

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

  #rk-mixed-guide .rk-mixed-chart-legend {
    color: var(--rk-copy);
    display: flex;
    flex-wrap: wrap;
    font-size: 0.76rem;
    gap: 10px 16px;
  }

  #rk-mixed-guide .rk-mixed-chart-legend span::before {
    background: var(--rk-cyan-dark);
    border-radius: 50%;
    content: "";
    display: inline-block;
    height: 9px;
    margin-right: 6px;
    width: 9px;
  }

  #rk-mixed-guide .rk-mixed-chart-legend span:last-child::before {
    background: var(--rk-orange);
  }

  #rk-mixed-guide .rk-mixed-chart-canvas {
    display: block;
    height: 350px;
    max-width: 100%;
    width: 100%;
  }

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

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

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

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

  #rk-mixed-guide .rk-mixed-path-card {
    background: #edf3f6;
    border: 2px solid transparent;
    border-radius: 16px;
    color: var(--rk-copy);
    padding: 20px;
  }

  #rk-mixed-guide .rk-mixed-path-card.is-active {
    background: #e4faf6;
    border-color: var(--rk-green);
    box-shadow: 0 10px 25px rgba(47, 205, 161, 0.12);
  }

  #rk-mixed-guide .rk-mixed-path-card h4 {
    color: var(--rk-ink);
    margin: 0 0 8px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-mixed-guide .rk-mixed-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-mixed-guide .rk-mixed-author-social a:hover {
    background: var(--rk-cyan);
    color: var(--rk-navy);
  }

  #rk-mixed-guide .rk-mixed-author-main { padding: 37px; }
  #rk-mixed-guide .rk-mixed-author-title { font-size: clamp(1.85rem, 3.5vw, 3rem); }

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

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

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

  #rk-mixed-guide .rk-mixed-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-mixed-guide .rk-mixed-visually-hidden {
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    overflow: hidden;
    position: absolute;
    white-space: nowrap;
    width: 1px;
  }

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

  @media (max-width: 820px) {
    #rk-mixed-guide .rk-mixed-hero,
    #rk-mixed-guide .rk-mixed-section,
    #rk-mixed-guide .rk-mixed-author {
      padding-left: 28px;
      padding-right: 28px;
    }
    #rk-mixed-guide .rk-mixed-hero::before { left: 28px; }
    #rk-mixed-guide .rk-mixed-shortcuts { padding-left: 22px; padding-right: 22px; }
    #rk-mixed-guide .rk-mixed-grid-3,
    #rk-mixed-guide .rk-mixed-path-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-mixed-guide .rk-mixed-author-layout { grid-template-columns: minmax(0, 1fr); }
    #rk-mixed-guide .rk-mixed-author-side { padding-bottom: 28px; }
  }

  @media (max-width: 660px) {
    #rk-mixed-guide .rk-mixed-hero { padding-bottom: 42px; padding-top: 52px; }
    #rk-mixed-guide .rk-mixed-section,
    #rk-mixed-guide .rk-mixed-author { padding-bottom: 46px; padding-top: 46px; }
    #rk-mixed-guide .rk-mixed-grid-2,
    #rk-mixed-guide .rk-mixed-grid-3,
    #rk-mixed-guide .rk-mixed-grid-4,
    #rk-mixed-guide .rk-mixed-source-grid,
    #rk-mixed-guide .rk-mixed-tool-fields,
    #rk-mixed-guide .rk-mixed-result-grid,
    #rk-mixed-guide .rk-mixed-path-grid,
    #rk-mixed-guide .rk-mixed-author-facts,
    #rk-mixed-guide .rk-mixed-check-columns { grid-template-columns: minmax(0, 1fr); }
    #rk-mixed-guide .rk-mixed-tool,
    #rk-mixed-guide .rk-mixed-cta { border-radius: 17px; padding: 20px; }
    #rk-mixed-guide .rk-mixed-result { padding: 18px; }
    #rk-mixed-guide .rk-mixed-actions { display: grid; grid-template-columns: minmax(0, 1fr); }
    #rk-mixed-guide .rk-mixed-action,
    #rk-mixed-guide .rk-mixed-reset,
    #rk-mixed-guide .rk-mixed-cta-button { text-align: center; width: 100%; }
    #rk-mixed-guide .rk-mixed-chart-head { display: block; }
    #rk-mixed-guide .rk-mixed-chart-legend { margin-top: 10px; }
    #rk-mixed-guide .rk-mixed-chart-canvas { height: 300px; }
    #rk-mixed-guide .rk-mixed-table-wrap { overflow: visible; }
    #rk-mixed-guide table,
    #rk-mixed-guide thead,
    #rk-mixed-guide tbody,
    #rk-mixed-guide tr,
    #rk-mixed-guide th,
    #rk-mixed-guide td { display: block; min-width: 0; width: 100%; }
    #rk-mixed-guide thead {
      clip: rect(0 0 0 0);
      clip-path: inset(50%);
      height: 1px;
      overflow: hidden;
      position: absolute;
      white-space: nowrap;
      width: 1px;
    }
    #rk-mixed-guide tbody { display: grid; gap: 14px; }
    #rk-mixed-guide tbody tr {
      background: #ffffff;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      overflow: hidden;
    }
    #rk-mixed-guide td,
    #rk-mixed-guide tbody tr td:first-child,
    #rk-mixed-guide tbody tr td:last-child {
      border: 0;
      border-bottom: 1px solid #e1ebef;
      border-radius: 0;
      padding: 13px 15px;
    }
    #rk-mixed-guide td:last-child { border-bottom: 0; }
    #rk-mixed-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-mixed-guide .rk-mixed-author-main { padding: 25px 20px; }
  }

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

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

<article id="rk-mixed-guide" aria-labelledby="rk-mixed-visual-title">
  <div class="rk-mixed-shell">
    <header class="rk-mixed-hero">
      <span class="rk-mixed-kicker">Układ mieszany · aktualizacja techniczna 2026</span>
      <div class="rk-mixed-hero-title" id="rk-mixed-visual-title">Pompa ciepła, podłogówka i grzejniki: <span>najpierw jedna temperatura</span></div>
      <p class="rk-mixed-hero-lead">Dwa rodzaje odbiorników nie oznaczają automatycznie dwóch obiegów, bufora i zaworu mieszającego. Najpierw sprawdź straty każdego pomieszczenia, moc grzejników przy niskiej temperaturze oraz hydraulikę całej instalacji. Dopiero potem wybierz schemat.</p>
      <div class="rk-mixed-hero-tags" aria-label="Zakres poradnika">
        <span>moc grzejnika przy ΔT</span>
        <span>wspólny niski parametr</span>
        <span>dwa obiegi temperatury</span>
        <span>bufor i sprzęgło</span>
        <span>przepływ i sterowanie</span>
      </div>
      <div class="rk-mixed-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 27 minut</strong></span>
        <span>Aktualizacja techniczna: <strong>16 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-mixed-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-mixed-shortcuts-label">Na skróty</span>
      <a href="#rk-mixed-answer">Szybka odpowiedź</a>
      <a href="#rk-mixed-decision">Jedna czy dwie temperatury</a>
      <a href="#rk-mixed-temperature">Temperatura a sprawność</a>
      <a href="#rk-mixed-calculator-section">Kalkulator grzejnika</a>
      <a href="#rk-mixed-analyzer-section">Analizator układu</a>
      <a href="#rk-mixed-common">Wspólny obieg</a>
      <a href="#rk-mixed-two-temperature">Dwa obiegi</a>
      <a href="#rk-mixed-buffer">Bufor i sprzęgło</a>
      <a href="#rk-mixed-radiators">Istniejące grzejniki</a>
      <a href="#rk-mixed-floor">Podłogówka</a>
      <a href="#rk-mixed-hydraulics">Hydraulika</a>
      <a href="#rk-mixed-minimum-flow">Minimalny przepływ</a>
      <a href="#rk-mixed-control">Sterowanie</a>
      <a href="#rk-mixed-retrofit">Modernizacja</a>
      <a href="#rk-mixed-errors">Błędy</a>
      <a href="#rk-mixed-data">Dane do projektu</a>
      <a href="#rk-mixed-final">Wniosek</a>
      <a href="#rk-mixed-sources">Źródła</a>
      <a href="#rk-mixed-faq">FAQ</a>
      <a href="#rk-mixed-author">Autor</a>
    </nav>

    <section class="rk-mixed-section" id="rk-mixed-answer">
      <span class="rk-mixed-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-mixed-section-title">Czy pompa ciepła może zasilać podłogówkę i grzejniki?</h2>
      <p class="rk-mixed-lead"><strong>Tak.</strong> O powodzeniu nie decyduje jednak sama obecność podłogówki i grzejników, lecz temperatura potrzebna do pokrycia projektowych strat ciepła, wymagane przepływy, opory obiegów oraz sposób sterowania.</p>
      <div class="rk-mixed-answer">
        <strong>Najlepszy punkt wyjścia: zaprojektować oba rodzaje odbiorników dla wspólnej, możliwie niskiej temperatury zasilania.</strong>
        <p>Jeżeli podłoga i wszystkie grzejniki pokrywają obciążenie pomieszczeń przy jednym parametrze, rozdzielanie temperatur może być zbędne. Jeżeli choć jedno pomieszczenie wymaga wyższej temperatury, trzeba zwiększyć jego powierzchnię grzejną, ograniczyć straty albo świadomie zaprojektować osobny obieg temperaturowy.</p>
      </div>
      <div class="rk-mixed-grid-3">
        <article class="rk-mixed-card">
          <span class="rk-mixed-icon">1</span>
          <h3>Policz obciążenie pomieszczeń</h3>
          <p>Całkowita moc domu dobiera źródło, ale dopiero wynik pomieszczenie po pomieszczeniu pozwala sprawdzić grzejniki i podłogę.</p>
        </article>
        <article class="rk-mixed-card">
          <span class="rk-mixed-icon">2</span>
          <h3>Sprawdź moc odbiorników</h3>
          <p>Moc grzejnika przy 75/65/20°C nie jest jego mocą przy 45/35/20°C. Potrzebna jest korekta do rzeczywistej różnicy temperatur.</p>
        </article>
        <article class="rk-mixed-card">
          <span class="rk-mixed-icon">3</span>
          <h3>Dopiero potem wybierz hydraulikę</h3>
          <p>Bufor, sprzęgło, dodatkowa pompa i mieszanie mają konkretne funkcje. Nie dodaje się ich automatycznie za samą nazwę „układ mieszany”.</p>
        </article>
      </div>
      <p class="rk-mixed-copy">Podstawą jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>. Jeżeli chcesz najpierw uporządkować zasadę pracy źródła, zobacz także poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">jak działa pompa ciepła</a> oraz analizę, <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">czy pompa ciepła ogrzeje dom z podłogówką</a>.</p>
    </section>

    <section class="rk-mixed-section rk-mixed-section-soft" id="rk-mixed-decision">
      <span class="rk-mixed-eyebrow">Pytanie ważniejsze niż schemat kotłowni</span>
      <h2 class="rk-mixed-section-title">Jedna czy dwie temperatury zasilania?</h2>
      <p class="rk-mixed-lead">Słowo „grzejnik” nie oznacza automatycznie 55°C, a „podłogówka” nie oznacza zawsze 35°C. Projektowy parametr wynika z wymaganej mocy, wielkości odbiornika, temperatury pomieszczenia i konstrukcji podłogi.</p>
      <div class="rk-mixed-table-wrap">
        <table>
          <thead>
            <tr><th>Wynik obliczeń</th><th>Co oznacza</th><th>Możliwy kierunek</th><th>Czego jeszcze nie przesądza</th></tr>
          </thead>
          <tbody>
            <tr>
              <td data-label="Wynik obliczeń"><strong>Oba odbiorniki pokrywają straty przy wspólnym parametrze</strong></td>
              <td data-label="Co oznacza">Grzejniki zostały dobrane lub przewymiarowane do pracy niskotemperaturowej.</td>
              <td data-label="Możliwy kierunek">Jeden poziom temperatury i możliwie prosty układ.</td>
              <td data-label="Czego nie przesądza">Trzeba nadal potwierdzić przepływy, opory, automatykę i minimalny zład.</td>
            </tr>
            <tr>
              <td data-label="Wynik obliczeń"><strong>Grzejniki potrzebują wyższej temperatury</strong></td>
              <td data-label="Co oznacza">Przy niskim parametrze nie pokrywają OZC części pomieszczeń.</td>
              <td data-label="Możliwy kierunek">Wymiana odbiorników albo dwa świadomie zaprojektowane poziomy temperatury.</td>
              <td data-label="Czego nie przesądza">Różnica temperatur sama nie wyznacza typu ani pojemności bufora.</td>
            </tr>
            <tr>
              <td data-label="Wynik obliczeń"><strong>Brakuje OZC lub danych grzejników</strong></td>
              <td data-label="Co oznacza">Nie da się sprawdzić najważniejszego warunku.</td>
              <td data-label="Możliwy kierunek">Uzupełnienie obliczeń i identyfikacja odbiorników.</td>
              <td data-label="Czego nie przesądza">Temperatury nie należy ustalać na podstawie wieku budynku lub wielkości grzejnika „na oko”.</td>
            </tr>
          </tbody>
        </table>
      </div>
      <div class="rk-mixed-note rk-mixed-note-good"><p><strong>Najważniejsza zasada:</strong> wspólna niska temperatura jest celem projektowym, a nie obietnicą. Musi zostać potwierdzona osobno dla każdego pomieszczenia.</p></div>
      <p class="rk-mixed-copy">Samo pytanie, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">czy można połączyć podłogówkę z grzejnikami</a>, dotyczy możliwości hydraulicznej. Ten poradnik idzie krok dalej: sprawdza, czy takie połączenie pozwoli pompie ciepła pracować przy rozsądnym parametrze.</p>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-temperature">
      <span class="rk-mixed-eyebrow">Temperatura jest wynikiem, nie założeniem z katalogu</span>
      <h2 class="rk-mixed-section-title">Dlaczego najbardziej wymagające pomieszczenie wpływa na całą pompę ciepła?</h2>
      <p class="rk-mixed-lead">Jeżeli wszystkie odbiorniki są zasilane bezpośrednio z jednego obiegu, krzywa grzewcza musi zapewnić temperaturę potrzebną w najtrudniejszym pomieszczeniu. Jeden niedowymiarowany grzejnik może więc podnieść parametr dla całego domu.</p>
      <div class="rk-mixed-grid-4">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">OZC</span><h3>Strata pomieszczenia</h3><p>Określa moc, którą odbiornik musi dostarczyć przy obliczeniowej temperaturze zewnętrznej.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">ΔT</span><h3>Różnica średniej temperatury</h3><p>Im mniejsza różnica między wodą a powietrzem, tym mniejszą moc oddaje ten sam grzejnik.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">Tz</span><h3>Temperatura zasilania</h3><p>Powinna być tak niska, jak pozwala pokrycie strat przez wszystkie odbiorniki.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">SCOP</span><h3>Wynik konkretnej pompy</h3><p>Nie da się go uczciwie wyprowadzić z jednej temperatury bez charakterystyki urządzenia i danych klimatycznych.</p></article>
      </div>
      <p class="rk-mixed-copy">Korzyść z niskiego parametru wyjaśnia poradnik <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>. Nie należy jednak traktować 35°C jako wartości gwarantowanej. <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">Temperatura zasilania podłogówki</a> wynika z mocy, temperatury powierzchni, rozstawu rur i oporu okładziny.</p>
      <div class="rk-mixed-note"><p><strong>Uwaga na jednostki:</strong> różnica zasilanie–powrót opisuje zmianę temperatury wody w obiegu. Współczynnik używany do korekty mocy grzejnika odnosi się natomiast do różnicy między średnią temperaturą wody a temperaturą pomieszczenia.</p></div>
    </section>

    <section class="rk-mixed-section rk-mixed-section-dark" id="rk-mixed-calculator-section">
      <span class="rk-mixed-eyebrow">Narzędzie główne</span>
      <h2 class="rk-mixed-section-title">Kalkulator mocy grzejnika przy niskiej temperaturze</h2>
      <p class="rk-mixed-lead">Wprowadź projektowe obciążenie pomieszczenia oraz dane istniejącego lub planowanego grzejnika. Kalkulator skoryguje moc katalogową do wybranych parametrów i pokaże rezerwę albo niedobór.</p>
      <div class="rk-mixed-tool" id="rk-radiator-calculator">
        <div class="rk-mixed-tool-head">
          <h3>Czy ten grzejnik pokryje OZC pomieszczenia?</h3>
          <p>Najlepsze dane wejściowe to moc z dokumentacji odbiornika, warunki jej deklarowania oraz obciążenie cieplne policzone dla konkretnego pokoju.</p>
        </div>
        <div class="rk-mixed-tool-fields">
          <label class="rk-mixed-field">
            <span>Projektowe obciążenie pomieszczenia [W]</span>
            <input id="rk-rad-load" type="number" min="100" max="20000" step="50" value="1200" inputmode="decimal">
            <small>Wynik OZC dla jednego pomieszczenia, bez automatycznego narzutu procentowego.</small>
          </label>
          <label class="rk-mixed-field">
            <span>Moc katalogowa grzejnika [W]</span>
            <input id="rk-rad-nominal" type="number" min="100" max="30000" step="50" value="2000" inputmode="decimal">
            <small>Moc dla warunków referencyjnych podanych w dokumentacji.</small>
          </label>
          <label class="rk-mixed-field">
            <span>Referencyjna różnica temperatur ΔTn [K]</span>
            <select id="rk-rad-nominal-delta">
              <option value="50" selected="">ΔT50</option>
              <option value="60">ΔT60</option>
              <option value="30">ΔT30</option>
              <option value="20">ΔT20</option>
            </select>
            <small>Najczęściej spotykane oznaczenie mocy grzejnika to ΔT50.</small>
          </label>
          <label class="rk-mixed-field">
            <span>Temperatura zasilania [°C]</span>
            <input id="rk-rad-flow" type="number" min="25" max="75" step="1" value="45" inputmode="decimal">
          </label>
          <label class="rk-mixed-field">
            <span>Temperatura powrotu [°C]</span>
            <input id="rk-rad-return" type="number" min="20" max="70" step="1" value="35" inputmode="decimal">
          </label>
          <label class="rk-mixed-field">
            <span>Temperatura pomieszczenia [°C]</span>
            <input id="rk-rad-room" type="number" min="16" max="26" step="1" value="20" inputmode="decimal">
          </label>
          <label class="rk-mixed-field">
            <span>Wykładnik charakterystyki n</span>
            <input id="rk-rad-exponent" type="number" min="0.8" max="2" step="0.01" value="1.30" inputmode="decimal">
            <small>Wpisz wartość z dokumentacji. 1,30 jest jedynie typowym założeniem orientacyjnym.</small>
          </label>
        </div>
        <div class="rk-mixed-presets" aria-label="Szybkie ustawienia temperatury">
          <button class="rk-mixed-preset" type="button" data-rk-flow="35" data-rk-return="30">35/30/20°C</button>
          <button class="rk-mixed-preset" type="button" data-rk-flow="40" data-rk-return="35">40/35/20°C</button>
          <button class="rk-mixed-preset" type="button" data-rk-flow="45" data-rk-return="35" aria-pressed="true">45/35/20°C</button>
          <button class="rk-mixed-preset" type="button" data-rk-flow="55" data-rk-return="45">55/45/20°C</button>
        </div>
        <div class="rk-mixed-result" id="rk-rad-result" aria-live="polite">
          <p class="rk-mixed-result-status" id="rk-rad-status">Obliczanie wyniku…</p>
          <p class="rk-mixed-result-intro" id="rk-rad-intro">Kalkulator porównuje skorygowaną moc grzejnika z obciążeniem pomieszczenia.</p>
          <div class="rk-mixed-result-grid">
            <div class="rk-mixed-result-box"><strong>Średnia różnica ΔT</strong><span id="rk-rad-actual-delta">—</span></div>
            <div class="rk-mixed-result-box"><strong>Współczynnik korekcyjny</strong><span id="rk-rad-factor">—</span></div>
            <div class="rk-mixed-result-box"><strong>Szacowana moc grzejnika</strong><span id="rk-rad-output">—</span></div>
            <div class="rk-mixed-result-box"><strong>Bilans wobec OZC</strong><span id="rk-rad-balance">—</span></div>
            <div class="rk-mixed-result-box"><strong>Wymagana moc katalogowa</strong><span id="rk-rad-required">—</span></div>
            <div class="rk-mixed-result-box"><strong>Orientacyjne zasilanie graniczne</strong><span id="rk-rad-required-flow">—</span></div>
          </div>
          <div class="rk-mixed-chart-wrap">
            <div class="rk-mixed-chart-head">
              <h4>Moc grzejnika a temperatura zasilania</h4>
              <div class="rk-mixed-chart-legend"><span>moc grzejnika</span><span>OZC pomieszczenia</span></div>
            </div>
            <canvas class="rk-mixed-chart-canvas" id="rk-rad-chart" role="img" aria-label="Wykres mocy grzejnika i projektowego obciążenia pomieszczenia w zależności od temperatury zasilania"></canvas>
          </div>
          <p class="rk-mixed-disclaimer">Wynik jest obliczeniem porównawczym. Nie uwzględnia zabudowy grzejnika, sposobu podłączenia, przepływu poza zakresem wymaganym przez odbiornik, korekt konkretnego producenta ani dynamicznej pracy pompy ciepła.</p>
        </div>
      </div>
      <div class="rk-mixed-formula">Q = Qn × (ΔT / ΔTn)<sup>n</sup>, gdzie ΔT = (Tz + Tp) / 2 − Ti</div>
      <p class="rk-mixed-copy">Jeżeli nie masz OZC, możesz poznać zakres danych w poradniku <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne w budynku</a> albo użyć <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulatora strat ciepła</a> jako wstępnego oszacowania. Do ostatecznego doboru źródła i odbiorników potrzebne są obliczenia pomieszczenie po pomieszczeniu.</p>

      <aside class="rk-mixed-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <div class="rk-mixed-cta-title">Grzejnik przeszedł test? To nadal tylko jeden element instalacji</div>
        <p>Trzeba jeszcze sprawdzić każde pomieszczenie, moc podłogi, rozstaw i długość pętli, wspólną temperaturę projektową, przepływy, drogę krytyczną oraz minimalny przepływ i zład wymagany przez pompę ciepła. Dopiero wtedy wiadomo, czy instalacja może pracować bez mieszania, czy potrzebuje osobnych obiegów.</p>
        <a class="rk-mixed-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        <small class="rk-mixed-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-mixed-section rk-mixed-section-dark" id="rk-mixed-analyzer-section">
      <span class="rk-mixed-eyebrow">Drugi etap decyzji</span>
      <h2 class="rk-mixed-section-title">Analizator architektury: jeden obieg, dwa obiegi czy najpierw modernizacja?</h2>
      <p class="rk-mixed-lead">Narzędzie nie rysuje uniwersalnego schematu kotłowni. Porządkuje warunki, które decydują, czy wspólny niski parametr jest realny i gdzie potrzebna jest dodatkowa weryfikacja.</p>
      <div class="rk-mixed-tool" id="rk-system-analyzer">
        <div class="rk-mixed-tool-head">
          <h3>Sprawdź kompletność założeń układu mieszanego</h3>
          <p>Odpowiadaj na podstawie OZC, obliczeń odbiorników, hydrauliki oraz dokumentacji konkretnej pompy ciepła.</p>
        </div>
        <div class="rk-mixed-tool-fields">
          <label class="rk-mixed-field">
            <span>Obciążenie cieplne</span>
            <select id="rk-an-ozc">
              <option value="unknown">Brak lub nie wiem</option>
              <option value="rooms">Policzone dla każdego pomieszczenia</option>
              <option value="building">Tylko wynik całego budynku</option>
            </select>
          </label>
          <label class="rk-mixed-field">
            <span>Grzejniki przy docelowej temperaturze</span>
            <select id="rk-an-radiators">
              <option value="unknown">Nie sprawdzono</option>
              <option value="yes">Pokrywają OZC pomieszczeń</option>
              <option value="no">Nie pokrywają OZC</option>
            </select>
          </label>
          <label class="rk-mixed-field">
            <span>Podłogówka przy tej samej temperaturze</span>
            <select id="rk-an-floor">
              <option value="unknown">Nie sprawdzono</option>
              <option value="yes">Pokrywa OZC i ograniczenia powierzchni</option>
              <option value="no">Wymaga niższej temperatury / innego parametru</option>
            </select>
          </label>
          <label class="rk-mixed-field">
            <span>Wspólny parametr zasilania</span>
            <select id="rk-an-common-temp">
              <option value="unknown">Nieustalony</option>
              <option value="yes">Potwierdzony dla obu odbiorników</option>
              <option value="no">Potrzebne dwa poziomy temperatury</option>
            </select>
          </label>
          <label class="rk-mixed-field">
            <span>Przepływy i droga krytyczna</span>
            <select id="rk-an-hydraulics">
              <option value="unknown">Niepoliczone</option>
              <option value="yes">Policzone dla wszystkich obiegów</option>
              <option value="no">Pompy i nastawy dobierane orientacyjnie</option>
            </select>
          </label>
          <label class="rk-mixed-field">
            <span>Minimalny przepływ pompy ciepła</span>
            <select id="rk-an-min-flow">
              <option value="unknown">Nie sprawdzono</option>
              <option value="yes">Zapewniony w każdym stanie pracy</option>
              <option value="no">Może spaść poniżej wymaganego</option>
            </select>
          </label>
          <label class="rk-mixed-field">
            <span>Minimalny zład / wymagania odszraniania</span>
            <select id="rk-an-volume">
              <option value="unknown">Brak danych urządzenia</option>
              <option value="yes">Potwierdzone dla konkretnego modelu</option>
              <option value="no">Warunek nie jest spełniony</option>
            </select>
          </label>
          <label class="rk-mixed-field">
            <span>Zamykanie stref i głowic</span>
            <select id="rk-an-zones">
              <option value="unknown">Nieustalone</option>
              <option value="safe">Nie odcina wymaganego przepływu</option>
              <option value="risk">Może zamknąć większość odbiorników</option>
            </select>
          </label>
        </div>
        <div class="rk-mixed-actions">
          <button class="rk-mixed-action" id="rk-an-run" type="button">Przeanalizuj układ</button>
          <button class="rk-mixed-reset" id="rk-an-reset" type="button">Wyczyść odpowiedzi</button>
        </div>
        <div class="rk-mixed-result" id="rk-an-result" aria-live="polite">
          <p class="rk-mixed-result-status" id="rk-an-status">Uzupełnij dane całej instalacji</p>
          <p class="rk-mixed-result-intro" id="rk-an-intro">Wynik wskaże najbardziej prawdopodobny kierunek i brakujące warunki.</p>
          <div class="rk-mixed-path-grid" aria-label="Trzy możliwe kierunki projektowe">
            <div class="rk-mixed-path-card" id="rk-path-common"><h4>A. Wspólny niski parametr</h4><p>Jedna temperatura dla podłogi i odpowiednio dobranych grzejników.</p></div>
            <div class="rk-mixed-path-card" id="rk-path-split"><h4>B. Dwa poziomy temperatury</h4><p>Obieg bezpośredni i obieg mieszany, zaprojektowane dla rzeczywistych przepływów.</p></div>
            <div class="rk-mixed-path-card" id="rk-path-retrofit"><h4>C. Najpierw modernizacja</h4><p>Ograniczenie strat lub zwiększenie mocy odbiorników przed wyborem schematu.</p></div>
          </div>
          <div class="rk-mixed-check-columns">
            <div class="rk-mixed-check-column"><h4>Warunki potwierdzone</h4><ul id="rk-an-ok"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-mixed-check-column"><h4>Do obliczenia lub wyjaśnienia</h4><ul id="rk-an-check"><li>Uzupełnij formularz na podstawie projektu i dokumentacji urządzenia.</li></ul></div>
          </div>
          <p class="rk-mixed-disclaimer">Analizator nie dobiera średnic, zaworów, pomp ani pojemności zbiornika. Pokazuje kolejność decyzji i nie zastępuje schematu dla konkretnego urządzenia.</p>
        </div>
      </div>
      <div class="rk-mixed-note"><p><strong>Ważne:</strong> określenie „układ mieszany” oznacza tu dwa rodzaje odbiorników. Nie należy go mylić z hybrydowym źródłem ciepła, w którym pracują dwa różne generatory, np. pompa ciepła i kocioł.</p></div>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-common">
      <span class="rk-mixed-eyebrow">Wariant A</span>
      <h2 class="rk-mixed-section-title">Wspólny obieg niskotemperaturowy</h2>
      <p class="rk-mixed-lead">To rozwiązanie jest możliwe, gdy zarówno podłogówka, jak i wszystkie grzejniki pokrywają straty przy tej samej projektowej temperaturze. Nie oznacza to jednak, że każdy obieg ma identyczny przepływ lub opór.</p>
      <div class="rk-mixed-grid-3">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">01</span><h3>Jedna krzywa źródła</h3><p>Pompa przygotowuje wodę o temperaturze wynikającej z pogody i najbardziej wymagającego poprawnie dobranego odbiornika.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">02</span><h3>Różne przepływy odbiorników</h3><p>Grzejniki i pętle podłogowe mogą potrzebować innych przepływów. Konieczne są obliczenia i regulacja hydrauliczna.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">03</span><h3>Kontrola temperatury powierzchni</h3><p>Brak mieszania nie zwalnia ze sprawdzenia mocy podłogi, oporu okładziny oraz dopuszczalnej temperatury powierzchni.</p></article>
      </div>
      <div class="rk-mixed-note rk-mixed-note-good"><p><strong>Zaletą jest prostota:</strong> ograniczenie liczby pomp i elementów mieszających może zmniejszyć zużycie pomocnicze i ryzyko niepotrzebnego podnoszenia temperatury. Ostateczny układ nadal musi spełnić wymagania konkretnej pompy ciepła.</p></div>
      <p class="rk-mixed-copy">Praktyczne powiązanie tych obliczeń pokazuje poradnik <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>. W nowym domu możliwość wspólnego parametru najłatwiej zapewnić, gdy dobór grzejników i podłogi odbywa się równolegle, a nie po zakończeniu projektu.</p>
    </section>

    <section class="rk-mixed-section rk-mixed-section-soft" id="rk-mixed-two-temperature">
      <span class="rk-mixed-eyebrow">Wariant B</span>
      <h2 class="rk-mixed-section-title">Dwa poziomy temperatury: kiedy mieszanie ma uzasadnienie?</h2>
      <p class="rk-mixed-lead">Jeżeli grzejniki muszą pracować wyżej niż podłoga, pompa wytwarza parametr wymagany przez obieg bezpośredni, a drugi obieg otrzymuje wodę o temperaturze obniżonej przez kontrolowane mieszanie.</p>
      <div class="rk-mixed-grid-4">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">1</span><h3>Źródło ciepła</h3><p>Dobierane do mocy budynku i sprawdzane przy projektowej temperaturze zasilania, a nie tylko w punkcie katalogowym.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">2</span><h3>Obieg bezpośredni</h3><p>Najczęściej zasila odbiorniki wymagające wyższego parametru, o ile hydraulika urządzenia na to pozwala.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">3</span><h3>Obieg mieszany</h3><p>Zawór i pompa obiegowa muszą być dobrane do przepływu, strat ciśnienia, zakresu regulacji oraz autorytetu zaworu.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">4</span><h3>Automatyka</h3><p>Powinna reagować na warunki zewnętrzne i rzeczywiste zapotrzebowanie, a nie utrzymywać jedną wysoką temperaturę przez cały sezon.</p></article>
      </div>
      <p class="rk-mixed-copy">Szczegółową funkcję elementu regulacyjnego opisuje poradnik <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający w ogrzewaniu podłogowym</a>. Sam przepływ nie wystarcza do doboru Kvs — potrzebne są także spadki ciśnienia, wymagany zakres regulacji i sposób współpracy siłownika z automatyką.</p>
      <div class="rk-mixed-note rk-mixed-note-bad"><p><strong>Dwa poziomy temperatury mają koszt energetyczny.</strong> Całe źródło musi zwykle wytworzyć wyższy parametr, a obieg podłogowy dopiero go obniża. Dlatego najpierw warto sprawdzić, czy słabe grzejniki można powiększyć lub wymienić.</p></div>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-buffer">
      <span class="rk-mixed-eyebrow">Cztery różne zadania</span>
      <h2 class="rk-mixed-section-title">Bufor, zbiornik zwiększający zład, sprzęgło i zawór mieszający</h2>
      <p class="rk-mixed-lead">Te elementy nie są zamienne i nie rozwiążą każdego problemu. Najpierw określ funkcję, a dopiero potem dobieraj pojemność, liczbę króćców i sposób włączenia.</p>
      <div class="rk-mixed-table-wrap">
        <table>
          <thead><tr><th>Element</th><th>Główne zadanie</th><th>Kiedy może być potrzebny</th><th>Ryzyko złego zastosowania</th></tr></thead>
          <tbody>
            <tr><td data-label="Element"><strong>Zbiornik szeregowy / volumizer</strong></td><td data-label="Główne zadanie">Zwiększenie objętości wody dostępnej dla pompy.</td><td data-label="Kiedy może być potrzebny">Gdy rzeczywisty zład instalacji nie spełnia wymagań konkretnego urządzenia.</td><td data-label="Ryzyko">Nie rozdzieli automatycznie obiegów o niezależnych przepływach.</td></tr>
            <tr><td data-label="Element"><strong>Bufor równoległy</strong></td><td data-label="Główne zadanie">Dodanie objętości i możliwe rozdzielenie hydrauliczne.</td><td data-label="Kiedy może być potrzebny">Gdy źródło i obiegi wtórne wymagają niezależnych przepływów lub strefy są często zamykane.</td><td data-label="Ryzyko">Mieszanie zasilania z powrotem może podnosić wymaganą temperaturę źródła.</td></tr>
            <tr><td data-label="Element"><strong>Sprzęgło hydrauliczne</strong></td><td data-label="Główne zadanie">Rozdzielenie hydrauliczne obiegu źródła i obiegów odbiorczych.</td><td data-label="Kiedy może być potrzebny">Gdy nie da się zapewnić wymaganych przepływów w jednej wspólnej hydraulice.</td><td data-label="Ryzyko">Nie gwarantuje dużej pojemności ani poprawnej temperatury na odbiornikach.</td></tr>
            <tr><td data-label="Element"><strong>Zawór mieszający</strong></td><td data-label="Główne zadanie">Kontrolowane obniżenie temperatury jednego obiegu.</td><td data-label="Kiedy może być potrzebny">Gdy podłoga rzeczywiście wymaga niższego parametru niż obieg bezpośredni.</td><td data-label="Ryzyko">Zły Kvs i sterowanie powodują niestabilność temperatury lub brak przepływu.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-mixed-copy">Więcej o zadaniach tych elementów znajdziesz w poradnikach <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła w ogrzewaniu podłogowym</a> oraz <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne w instalacji podłogowej</a>.</p>
      <div class="rk-mixed-note"><p><strong>Nie istnieje jeden uniwersalny przelicznik litrów na kW.</strong> Minimalny zład, przepływ podczas odszraniania, dopuszczalne czasy pracy sprężarki i sposób włączenia zbiornika trzeba odczytać z dokumentacji konkretnej pompy oraz sprawdzić dla rzeczywistej instalacji.</p></div>
    </section>

    <section class="rk-mixed-section rk-mixed-section-soft" id="rk-mixed-radiators">
      <span class="rk-mixed-eyebrow">Ocena pomieszczenie po pomieszczeniu</span>
      <h2 class="rk-mixed-section-title">Czy istniejące grzejniki nadają się do pompy ciepła?</h2>
      <p class="rk-mixed-lead">Wiek, masa i typ grzejnika nie wystarczą do odpowiedzi. Potrzebna jest jego moc przy przyjętym parametrze oraz porównanie z obciążeniem konkretnego pokoju.</p>
      <div class="rk-mixed-grid-3">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">DANE</span><h3>Zidentyfikuj odbiornik</h3><p>Ustal typ, wysokość, długość, liczbę płyt lub członów, sposób podłączenia i moc referencyjną.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">KOREKTA</span><h3>Przelicz do nowego ΔT</h3><p>Wykorzystaj tabelę producenta albo kalkulator z wykładnikiem właściwym dla danego odbiornika.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">OZC</span><h3>Porównaj z pokojem</h3><p>Grzejnik jest odpowiedni dopiero wtedy, gdy jego moc po korekcie pokrywa projektową stratę tego pomieszczenia.</p></article>
      </div>
      <ul class="rk-mixed-bullets">
        <li>duży stary grzejnik może mieć użyteczną rezerwę i pracować przy niższej temperaturze,</li>
        <li>nowy, ale mały grzejnik nie musi pokryć obciążenia przy 40/35°C,</li>
        <li>wymiana jednego krytycznego odbiornika może pozwolić obniżyć parametr całej instalacji,</li>
        <li>zabudowy, zasłony, niewłaściwe podłączenie i niedostateczny przepływ zmniejszają efekt praktyczny.</li>
      </ul>
      <div class="rk-mixed-note rk-mixed-note-good"><p><strong>Nie wymieniaj wszystkich grzejników z automatu.</strong> Najpierw znajdź pomieszczenia krytyczne. Często to kilka odbiorników, a nie cała instalacja, narzuca najwyższą temperaturę.</p></div>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-floor">
      <span class="rk-mixed-eyebrow">Druga strona wspólnego parametru</span>
      <h2 class="rk-mixed-section-title">Jak sprawdzić moc ogrzewania podłogowego?</h2>
      <p class="rk-mixed-lead">Podłoga nie ma jednej mocy przypisanej do rozstawu rur. Wynik zależy od temperatury wody, średniej temperatury powierzchni, oporu warstw nad rurą, rozstawu, konstrukcji systemu i powierzchni czynnej.</p>
      <div class="rk-mixed-grid-4">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">A</span><h3>Powierzchnia czynna</h3><p>Stała zabudowa i wyłączone pola ograniczają powierzchnię, która może przekazać wymaganą moc.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">R</span><h3>Opór okładziny</h3><p>Panele, drewno, podkład i klej trzeba rozpatrywać jako kompletny zestaw nad jastrychem.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">s</span><h3>Rozstaw rur</h3><p>Zmienia gęstość strumienia i równomierność powierzchni, ale nie zastępuje obliczeń cieplnych.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">θF</span><h3>Temperatura powierzchni</h3><p>Jest ograniczeniem komfortu i bezpieczeństwa, dlatego mocy nie wolno zwiększać bez końca temperaturą wody.</p></article>
      </div>
      <p class="rk-mixed-copy">Weryfikację ułatwiają poradniki o <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstawie rur w ogrzewaniu podłogowym</a>, <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporze cieplnym wykończenia podłogi</a> oraz <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">wymaganiach PN-EN 1264</a>. W strefach o dużych stratach może pomóc świadomie zaprojektowana <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefa brzegowa</a>.</p>
    </section>

    <section class="rk-mixed-section rk-mixed-section-soft" id="rk-mixed-hydraulics">
      <span class="rk-mixed-eyebrow">Temperatura nie wystarcza</span>
      <h2 class="rk-mixed-section-title">Przepływy, opory i droga krytyczna instalacji</h2>
      <p class="rk-mixed-lead">Dwa obiegi mogą mieć tę samą temperaturę, a mimo to wymagać zupełnie innych przepływów i nastaw. Różnica oporów nie oznacza, że woda zawsze „ominie” podłogówkę — o rozdziale przepływu decyduje pełny układ pomp, zaworów, nastaw i przewodów.</p>
      <div class="rk-mixed-grid-4">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">Q</span><h3>Moc obiegu</h3><p>Razem z projektową różnicą zasilanie–powrót wyznacza wymagany przepływ wody.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">V̇</span><h3>Przepływ</h3><p>Sumuje się dla równolegle pracujących obiegów i musi mieścić się w zakresie źródła oraz armatury.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">Δp</span><h3>Strata ciśnienia</h3><p>Napór pompy wyznacza najbardziej niekorzystna czynna droga, a nie suma wszystkich pętli.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">Kv</span><h3>Regulacja</h3><p>Nastawy wstępne i rotametry rozdzielają przepływy zgodnie z obciążeniem, a nie po równo.</p></article>
      </div>
      <div class="rk-mixed-formula">V̇ [m³/h] ≈ Q [kW] / (1,163 × ΔT wody [K])</div>
      <p class="rk-mixed-copy">Formuła wyznacza przepływ wynikający z mocy i spadku temperatury, ale nie dobiera jeszcze pompy ani zaworu. Zobacz osobno, jak działa <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w instalacji podłogowej</a> oraz użyj <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a> dopiero po zebraniu przepływów i strat ciśnienia.</p>
      <div class="rk-mixed-note rk-mixed-note-bad"><p><strong>Nie dodawaj stałego 15% do OZC tylko dlatego, że w instalacji jest bufor.</strong> Straty przewodów i zbiornika należy ograniczać izolacją oraz określać jawnie, zamiast podnosić moc każdego pomieszczenia arbitralnym narzutem.</p></div>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-minimum-flow">
      <span class="rk-mixed-eyebrow">Warunki urządzenia w każdym stanie pracy</span>
      <h2 class="rk-mixed-section-title">Minimalny przepływ, zład i odszranianie pompy ciepła</h2>
      <p class="rk-mixed-lead">Pompa musi mieć zapewnione warunki pracy nie tylko wtedy, gdy wszystkie pętle i grzejniki są otwarte. Trzeba przeanalizować również zamknięcie stref, małe zapotrzebowanie przejściowe i cykl odszraniania jednostki powietrznej.</p>
      <div class="rk-mixed-grid-3">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">PRZEPŁYW</span><h3>Minimalna wartość przez skraplacz</h3><p>Powinna być zapewniona w dopuszczonych stanach automatyki. Zamknięcie głowic i siłowników nie może jej przypadkowo odciąć.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">OBJĘTOŚĆ</span><h3>Woda dostępna dla urządzenia</h3><p>Wymaganie zależy od modelu, mocy minimalnej, logiki sterowania i sposobu wykorzystania energii podczas odszraniania.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">STEROWANIE</span><h3>Stany częściowego obciążenia</h3><p>Najtrudniejsza sytuacja często pojawia się jesienią i wiosną, gdy czynna jest tylko mała część instalacji.</p></article>
      </div>
      <p class="rk-mixed-copy">Odszranianie nie polega na automatycznym wysłaniu 55°C do podłogi. W wielu pompach ciepło potrzebne do rozmrożenia parownika jest chwilowo pobierane z obiegu wodnego. Dlatego istotne są przepływ, dostępna energia, zawory zwrotne, sterowanie i wymagania konkretnej jednostki.</p>
      <div class="rk-mixed-note"><p><strong>Decyzja projektowa:</strong> by-pass, otwarta pętla referencyjna, zbiornik szeregowy, bufor równoległy lub inny układ są różnymi sposobami spełnienia warunków. Żaden z nich nie jest właściwy bez sprawdzenia dokumentacji urządzenia i działania wszystkich stref.</p></div>
    </section>

    <section class="rk-mixed-section rk-mixed-section-soft" id="rk-mixed-control">
      <span class="rk-mixed-eyebrow">Automatyka ma obniżać parametr, nie walczyć z instalacją</span>
      <h2 class="rk-mixed-section-title">Krzywa grzewcza i sterowanie podłogówką z grzejnikami</h2>
      <p class="rk-mixed-lead">Pompa ciepła pracuje najstabilniej, gdy temperatura wody zmienia się płynnie wraz z pogodą, a przepływ przez instalację nie jest gwałtownie odcinany przez dużą liczbę regulatorów.</p>
      <div class="rk-mixed-grid-3">
        <article class="rk-mixed-card"><span class="rk-mixed-icon">↗</span><h3>Krzywa źródła</h3><p>Ustalana dla obiegu wymagającego najwyższej temperatury. Powinna być obniżana do najniższego poziomu zapewniającego komfort.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-icon">≈</span><h3>Krzywa obiegu mieszanego</h3><p>Jeżeli istnieją dwa parametry, automatyka zaworu powinna dopasowywać temperaturę podłogi do warunków zewnętrznych.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-icon">○</span><h3>Regulacja pomieszczeń</h3><p>Termostaty mogą ograniczać przegrzewanie, ale nie powinny zastępować doboru mocy i prawidłowej krzywej.</p></article>
      </div>
      <p class="rk-mixed-copy">Praktyczne ustawienia omawiają poradniki <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza w ogrzewaniu podłogowym</a>, <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowanie pogodowe</a> oraz <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe — czy warto</a>.</p>
      <div class="rk-mixed-note rk-mixed-note-good"><p><strong>Dobra regulacja zaczyna się od hydrauliki.</strong> Jeżeli odbiorniki nie mają wymaganych przepływów albo są niedowymiarowane, automatyka nie odzyska brakującej mocy.</p></div>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-retrofit">
      <span class="rk-mixed-eyebrow">Nowy dom i modernizacja to dwa różne zadania</span>
      <h2 class="rk-mixed-section-title">Co sprawdzić przed pozostawieniem grzejników?</h2>
      <p class="rk-mixed-lead">W nowym budynku oba rodzaje odbiorników można od początku dobrać do wspólnego parametru. W starszym domu najpierw trzeba ustalić rzeczywiste straty, parametry instalacji i rezerwę istniejących grzejników.</p>
      <div class="rk-mixed-grid-2">
        <article class="rk-mixed-card">
          <span class="rk-mixed-card-number">NOWY DOM</span>
          <h3>Projektuj odbiorniki razem</h3>
          <ul class="rk-mixed-bullets">
            <li>wykonaj OZC dla każdego pomieszczenia,</li>
            <li>ustal wspólną temperaturę projektową,</li>
            <li>dobierz grzejniki do niskiego parametru,</li>
            <li>sprawdź podłogę i okładziny,</li>
            <li>oblicz przepływy i drogę krytyczną.</li>
          </ul>
        </article>
        <article class="rk-mixed-card">
          <span class="rk-mixed-card-number">REMONT</span>
          <h3>Najpierw audyt istniejącego układu</h3>
          <ul class="rk-mixed-bullets">
            <li>zaktualizuj straty po termomodernizacji,</li>
            <li>zinwentaryzuj każdy grzejnik i przewody,</li>
            <li>sprawdź moc przy niższej temperaturze,</li>
            <li>znajdź pomieszczenia krytyczne,</li>
            <li>porównaj wymianę odbiorników z pracą na wyższym parametrze.</li>
          </ul>
        </article>
      </div>
      <p class="rk-mixed-copy">Więcej decyzji remontowych opisuję w poradnikach <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">ogrzewanie podłogowe w remontowanym budynku</a> oraz <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">frezowanie podłogówki w starym domu</a>. Obniżenie strat przez modernizację przegród lub <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperację</a> może zmniejszyć wymaganą moc odbiorników, ale efekt trzeba ująć w zaktualizowanym OZC.</p>
      <div class="rk-mixed-note"><p><strong>Nie zakładaj wyniku na podstawie wieku domu.</strong> Dwa budynki z tego samego roku mogą mieć zupełnie inne straty po wymianie okien, ociepleniu dachu i zmianie wentylacji.</p></div>
    </section>

    <section class="rk-mixed-section rk-mixed-section-soft" id="rk-mixed-errors">
      <span class="rk-mixed-eyebrow">Najczęstsze skróty myślowe</span>
      <h2 class="rk-mixed-section-title">Błędy przy łączeniu pompy ciepła, podłogówki i grzejników</h2>
      <div class="rk-mixed-grid-3">
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 1</span><h3>Automatyczne 35°C i 55°C</h3><p>Temperatury trzeba wyznaczyć z mocy odbiorników. Nie wynikają one wyłącznie z ich nazw.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 2</span><h3>Bufor „bo jest podłogówka”</h3><p>Zbiornik dobiera się do konkretnej funkcji i wymagań urządzenia, a nie do samego połączenia odbiorników.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 3</span><h3>OZC tylko dla całego domu</h3><p>Całkowita moc nie pozwala ocenić, czy grzejnik w sypialni pokryje stratę tego pomieszczenia.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 4</span><h3>SCOP z jednej temperatury</h3><p>Rocznej efektywności nie wolno wyliczać z uniwersalnego mnożnika niezależnego od modelu i klimatu.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 5</span><h3>Dobór pompy z sumy oporów</h3><p>Wymagany napór wynika z drogi krytycznej przy jednoczesnym zapewnieniu sumarycznego przepływu.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 6</span><h3>Zamykanie wszystkich odbiorników</h3><p>Siłowniki i głowice mogą odebrać pompie wymagany przepływ, jeżeli nie przewidziano poprawnej strategii.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 7</span><h3>Mieszanie bez policzonego Kvs</h3><p>Za duży lub za mały zawór utrudnia kontrolę temperatury i może powodować niestabilną pracę obiegu.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 8</span><h3>Ignorowanie pomieszczenia krytycznego</h3><p>Jeden zbyt mały grzejnik może niepotrzebnie podnieść krzywą grzewczą dla całego budynku.</p></article>
        <article class="rk-mixed-card"><span class="rk-mixed-card-number">BŁĄD 9</span><h3>Schemat bez dokumentacji pompy</h3><p>Minimalne przepływy, zład, dopuszczone konfiguracje i sterowanie różnią się między urządzeniami.</p></article>
      </div>
      <div class="rk-mixed-note rk-mixed-note-bad"><p><strong>Najdroższy błąd:</strong> najpierw kupić pompę i grzejniki, a dopiero potem próbować dopasować do nich temperatury, przepływy i schemat.</p></div>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-data">
      <span class="rk-mixed-eyebrow">Checklista przed projektem i zakupem</span>
      <h2 class="rk-mixed-section-title">Jakie dane są potrzebne do zaprojektowania instalacji?</h2>
      <p class="rk-mixed-lead">Kompletny projekt łączy model cieplny budynku z parametrami odbiorników, źródła i hydrauliki. Poniższa lista pozwala sprawdzić, czego jeszcze brakuje.</p>
      <div class="rk-mixed-grid-3">
        <article class="rk-mixed-card">
          <span class="rk-mixed-card-number">BUDYNEK</span>
          <h3>Obciążenie i warunki</h3>
          <ul class="rk-mixed-bullets"><li>rzuty i przekroje,</li><li>warstwy przegród i okna,</li><li>wentylacja i szczelność,</li><li>lokalizacja oraz temperatura projektowa,</li><li>temperatury wymagane w pomieszczeniach.</li></ul>
        </article>
        <article class="rk-mixed-card">
          <span class="rk-mixed-card-number">ODBIORNIKI</span>
          <h3>Grzejniki i podłoga</h3>
          <ul class="rk-mixed-bullets"><li>wymiary i typy grzejników,</li><li>moce i warunki katalogowe,</li><li>powierzchnie czynne podłogi,</li><li>okładziny i ich opór R,</li><li>planowane temperatury zasilania i powrotu.</li></ul>
        </article>
        <article class="rk-mixed-card">
          <span class="rk-mixed-card-number">ŹRÓDŁO</span>
          <h3>Pompa i hydraulika</h3>
          <ul class="rk-mixed-bullets"><li>charakterystyki mocy i COP,</li><li>minimalny oraz maksymalny przepływ,</li><li>wymagany zład i zasady odszraniania,</li><li>opory przewodów i armatury,</li><li>logika stref, pomp i zaworów.</li></ul>
        </article>
      </div>
      <p class="rk-mixed-copy">Strefę klimatyczną i obliczeniową temperaturę zewnętrzną porządkuje poradnik <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 w Polsce a OZC</a>. Pełny zakres dokumentacji pokazuje także <a href="https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/">projekt instalacji grzewczej domu jednorodzinnego</a>.</p>
    </section>

    <section class="rk-mixed-section rk-mixed-final" id="rk-mixed-final">
      <span class="rk-mixed-eyebrow">Wniosek projektowy</span>
      <h2 class="rk-mixed-section-title">Najpierw wspólny niski parametr, potem schemat</h2>
      <p class="rk-mixed-lead">Dobrze zaprojektowana instalacja nie zaczyna się od bufora ani grupy pompowej. Zaczyna się od strat pomieszczeń i sprawdzenia, jaką moc oba rodzaje odbiorników oddadzą przy temperaturze korzystnej dla konkretnej pompy ciepła.</p>
      <div class="rk-mixed-cta">
        <div class="rk-mixed-cta-title">Połącz podłogówkę, grzejniki i pompę w jeden policzony układ</div>
        <p>Projekt określi moc pomieszczeń, temperatury, rozstaw i długość pętli, przepływy, opory, nastawy oraz wymagania hydrauliczne. Dzięki temu wykonawca dostaje parametry instalacji zamiast uniwersalnego schematu dobranego „na oko”.</p>
        <a class="rk-mixed-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
        <small class="rk-mixed-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-mixed-section" id="rk-mixed-sources">
      <span class="rk-mixed-eyebrow">Podstawa techniczna</span>
      <h2 class="rk-mixed-section-title">Źródła oficjalne i zakres obliczeń</h2>
      <p class="rk-mixed-lead">Źródła poniżej dotyczą projektowego obciążenia cieplnego, doboru odbiorników, ogrzewania płaszczyznowego oraz sezonowej oceny pomp ciepła. Linki zewnętrzne prowadzą wyłącznie do instytucji i oficjalnej dokumentacji.</p>
      <div class="rk-mixed-source-grid">
        <article class="rk-mixed-source-card"><a href="https://heatloadcalculator.mcscertified.com/docs/getting-started/introduction" target="_blank" rel="nofollow noopener noreferrer">MCS Heat Load Calculator — BS EN 12831-1</a><p>Oficjalna dokumentacja obliczania obciążenia budynku i pomieszczeń na potrzeby doboru źródła oraz odbiorników.</p></article>
        <article class="rk-mixed-source-card"><a href="https://mcscertified.com/wp-content/uploads/2025/05/MIS-3005-D-2025-V1.0.pdf" target="_blank" rel="nofollow noopener noreferrer">MCS MIS 3005-D — projektowanie systemów z pompą ciepła</a><p>Standard wiążący obciążenie cieplne, projektową temperaturę zasilania, dane odbiorników i sezonową efektywność.</p></article>
        <article class="rk-mixed-source-card"><a href="https://www.seai.ie/sites/default/files/publications/Homeowners-Guide-To-Heat-Pump-Systems.pdf" target="_blank" rel="nofollow noopener noreferrer">SEAI — Homeowner’s Guide to Heat Pump Systems</a><p>Oficjalny poradnik dotyczący współpracy pomp ciepła z grzejnikami i ogrzewaniem podłogowym przy niższych temperaturach.</p></article>
        <article class="rk-mixed-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — moc systemów płaszczyznowych</a><p>Oficjalna karta normy dotyczącej określania projektowej wydajności wbudowanych systemów ogrzewania i chłodzenia.</p></article>
        <article class="rk-mixed-source-card"><a href="https://www.vdi.de/mitgliedschaft/vdi-richtlinien/unsere-richtlinien-highlights/vdi-4650" target="_blank" rel="nofollow noopener noreferrer">VDI 4650 — roczny współczynnik efektywności pomp ciepła</a><p>Oficjalny opis zakresu wytycznej dotyczącej obliczania rocznej efektywności, a nie uniwersalnego przelicznika pojemności bufora.</p></article>
        <article class="rk-mixed-source-card"><a href="https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX%3A02013R0813-20170109" target="_blank" rel="nofollow noopener noreferrer">Rozporządzenie Komisji (UE) nr 813/2013</a><p>Oficjalne wymagania ekoprojektu i zasady oceny sezonowej efektywności ogrzewaczy, w tym pomp ciepła.</p></article>
      </div>
      <div class="rk-mixed-responsibility"><p><strong>Zakres poradnika:</strong> kalkulator przelicza moc jednego grzejnika dla zadanych temperatur, a analizator porządkuje decyzję o architekturze. Nie są projektem instalacji, doborem konkretnej pompy, gwarancją SCOP, schematem producenta ani instrukcją samodzielnego montażu. Ostateczne rozwiązanie musi uwzględniać dokumentację wybranego urządzenia i rzeczywiste warunki budynku.</p></div>
    </section>

    <section class="rk-mixed-section rk-mixed-section-soft" id="rk-mixed-faq">
      <span class="rk-mixed-eyebrow">Pytania inwestorów i wykonawców</span>
      <h2 class="rk-mixed-section-title">FAQ — pompa ciepła, podłogówka i grzejniki</h2>
      <div class="rk-mixed-faq">
        <details><summary>Czy pompa ciepła może jednocześnie zasilać podłogówkę i grzejniki?</summary><div class="rk-mixed-faq-answer"><p>Tak. Najpierw trzeba sprawdzić, czy oba rodzaje odbiorników pokrywają projektowe straty pomieszczeń przy wspólnej temperaturze. Jeżeli nie, potrzebna jest modernizacja odbiorników albo świadomie zaprojektowane dwa poziomy temperatury.</p></div></details>
        <details><summary>Czy podłogówka i grzejniki mogą pracować na jednej temperaturze?</summary><div class="rk-mixed-faq-answer"><p>Tak, jeżeli grzejniki mają wystarczającą moc przy niskim parametrze, a podłoga przy tej temperaturze nie przekracza ograniczeń powierzchni. Wspólna temperatura nie oznacza identycznych przepływów i oporów.</p></div></details>
        <details><summary>Czy stare grzejniki trzeba zawsze wymienić?</summary><div class="rk-mixed-faq-answer"><p>Nie. Każdy odbiornik należy zidentyfikować, przeliczyć jego moc do planowanych temperatur i porównać z OZC pomieszczenia. Duży istniejący grzejnik może mieć rezerwę, a mały nowy może jej nie mieć.</p></div></details>
        <details><summary>Jak przeliczyć moc grzejnika z ΔT50 na 45/35/20°C?</summary><div class="rk-mixed-faq-answer"><p>Wyznacza się średnią temperaturę wody, odejmuje temperaturę pomieszczenia i stosuje współczynnik korekcyjny z wykładnikiem charakterystyki odbiornika. Najlepiej użyć tabeli producenta; kalkulator w artykule pokazuje metodę orientacyjną.</p></div></details>
        <details><summary>Czy większy grzejnik pozwala obniżyć temperaturę zasilania?</summary><div class="rk-mixed-faq-answer"><p>Zwykle tak, ponieważ większa powierzchnia może oddać wymaganą moc przy mniejszej różnicy temperatur. Trzeba jednak sprawdzić przepływ, miejsce montażu, sposób podłączenia i dokumentację odbiornika.</p></div></details>
        <details><summary>Czy bufor jest zawsze potrzebny przy podłogówce i grzejnikach?</summary><div class="rk-mixed-faq-answer"><p>Nie. Potrzeba bufora zależy od minimalnego zładu i przepływu pompy, sposobu regulacji, zamykanych stref, hydrauliki oraz wymagań konkretnego urządzenia. Dwa rodzaje odbiorników same w sobie nie wyznaczają pojemności zbiornika.</p></div></details>
        <details><summary>Czym różni się bufor od sprzęgła hydraulicznego?</summary><div class="rk-mixed-faq-answer"><p>Bufor może magazynować energię i zwiększać objętość instalacji, a przy odpowiednim włączeniu także rozdzielać przepływy. Sprzęgło służy przede wszystkim do rozdzielenia hydraulicznego i nie musi zapewniać wymaganej pojemności wodnej.</p></div></details>
        <details><summary>Czy podłogówka zawsze wymaga zaworu mieszającego?</summary><div class="rk-mixed-faq-answer"><p>Nie. Jeżeli całe źródło pracuje na temperaturze odpowiedniej dla podłogi i grzejników, dodatkowe mieszanie może być zbędne. Zawór jest potrzebny wtedy, gdy jeden obieg rzeczywiście musi otrzymywać niższą temperaturę.</p></div></details>
        <details><summary>Jaka temperatura jest najlepsza dla pompy ciepła?</summary><div class="rk-mixed-faq-answer"><p>Najniższa temperatura, przy której wszystkie pomieszczenia osiągają wymaganą temperaturę wewnętrzną w warunkach projektowych. Nie ma jednej wartości właściwej dla każdego domu i urządzenia.</p></div></details>
        <details><summary>Czy wyższa temperatura zawsze zwiększa koszt ogrzewania?</summary><div class="rk-mixed-faq-answer"><p>Wyższa temperatura zasilania zazwyczaj pogarsza warunki pracy pompy ciepła, ale rzeczywisty wpływ na SCOP i koszt zależy od konkretnego urządzenia, klimatu, zapotrzebowania budynku, taryfy i sposobu sterowania. Nie należy stosować jednego procentu dla wszystkich instalacji.</p></div></details>
        <details><summary>Czy potrzebne są osobne pompy obiegowe?</summary><div class="rk-mixed-faq-answer"><p>Tylko wtedy, gdy wynika to z architektury hydraulicznej i wymaganych przepływów. Przy rozdzieleniu hydraulicznym lub obiegu mieszanym dodatkowe pompy mogą być potrzebne, natomiast prosty wspólny obieg nie zawsze ich wymaga.</p></div></details>
        <details><summary>Jak ustawić krzywą grzewczą dla podłogówki i grzejników?</summary><div class="rk-mixed-faq-answer"><p>Dla wspólnego parametru ustawia się możliwie niską krzywą zapewniającą komfort w najbardziej wymagającym pomieszczeniu. Przy dwóch temperaturach źródło i obieg mieszany wymagają skoordynowanych charakterystyk pogodowych.</p></div></details>
        <details><summary>Co się stanie, gdy termostaty zamkną wszystkie obiegi?</summary><div class="rk-mixed-faq-answer"><p>Przepływ przez pompę może spaść poniżej wartości wymaganej przez urządzenie. Projekt musi przewidywać działanie stref, przepływ minimalny oraz dostępny zład także przy częściowym obciążeniu.</p></div></details>
        <details><summary>Czy odszranianie może podać 55°C na podłogówkę?</summary><div class="rk-mixed-faq-answer"><p>Sam cykl odszraniania nie oznacza automatycznego wysłania takiej temperatury do podłogi. Istotne jest, jak producent realizuje defrost, skąd pobierana jest energia i jak zaprojektowano przepływ, zawory oraz automatykę instalacji.</p></div></details>
        <details><summary>Jakie obliczenia trzeba wykonać przed wyborem schematu?</summary><div class="rk-mixed-faq-answer"><p>Potrzebne są: OZC pomieszczeń, moc grzejników i podłogi przy przyjętych temperaturach, wymagane przepływy, straty ciśnienia dróg krytycznych, zład instalacji oraz sprawdzenie minimalnych warunków pracy pompy ciepła.</p></div></details>
      </div>
    </section>

    <section class="rk-mixed-author" id="rk-mixed-author">
      <span class="rk-mixed-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
      <h2 class="rk-mixed-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-mixed-author-layout">
        <aside class="rk-mixed-author-side">
          <div class="rk-mixed-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-mixed-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-mixed-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-mixed-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-mixed-author-main">
          <div class="rk-mixed-author-quote">„Moim zdaniem największym błędem nie jest samo połączenie grzejników z podłogówką, lecz założenie, że dwa rodzaje odbiorników automatycznie wymagają dwóch temperatur. Najpierw trzeba sprawdzić, czy cały dom da się zaprojektować dla jednego niskiego parametru.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia strat ciepła i hydrauliki instalacji oraz materiały edukacyjne dla inwestorów i wykonawców. Analizuje instalację jako całość: od obciążenia każdego pomieszczenia, przez moc odbiorników i temperatury, po przepływy, opory oraz sterowanie źródłem.</p>
          <p>W tym poradniku zweryfikował rozdzielenie pojęć: temperatura odbiorników, różnica zasilanie–powrót, sezonowa efektywność pompy, minimalny przepływ, zład oraz rozdzielenie hydrauliczne. Kalkulator nie zastępuje kart technicznych, a analizator nie narzuca bufora bez rozpoznania jego funkcji.</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-mixed-author-facts">
            <div class="rk-mixed-author-fact"><strong>Praktyka projektowa</strong>OZC, podłogówka, grzejniki i hydraulika instalacji niskotemperaturowych</div>
            <div class="rk-mixed-author-fact"><strong>Metoda</strong>pomieszczenie po pomieszczeniu, jawne założenia i dokumentacja urządzeń</div>
            <div class="rk-mixed-author-fact"><strong>Zakres aktualizacji</strong>temperatury, korekta mocy grzejników, bufor, przepływ, sterowanie i FAQ</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "pompy ciepła",
        "ogrzewanie podłogowe",
        "grzejniki niskotemperaturowe",
        "projektowe obciążenie cieplne",
        "hydraulika instalacji grzewczych",
        "sterowanie pogodowe"
      ],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-b8b906199/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Pompa-ciepla-podlogowka-i-grzejniki.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/07/Infografika-Pompa-ciepla-podlogowka-i-grzejniki.webp",
      "caption": "Pompa ciepła, podłogówka i grzejniki — porównanie architektury instalacji"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Poradniki", "item": "https://projekt-ogrzewania.pl/blog/" },
        { "@type": "ListItem", "position": 3, "name": "Pompa ciepła, podłogówka i grzejniki", "item": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webpage",
      "url": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/",
      "name": "Pompa ciepła, podłogówka i grzejniki — jak połączyć układ mieszany?",
      "description": "Sprawdź, czy pompa ciepła może zasilać podłogówkę i grzejniki. Oblicz moc grzejnika przy niskiej temperaturze i wybierz właściwy układ.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#primaryimage" },
      "datePublished": "2026-07-04T08:00:00+02:00",
      "dateModified": "2026-09-16T10:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#webpage" },
      "headline": "Pompa ciepła, podłogówka i grzejniki — jak połączyć układ mieszany?",
      "description": "Techniczny poradnik łączenia pompy ciepła z ogrzewaniem podłogowym i grzejnikami, z kalkulatorem mocy grzejnika, wykresem oraz analizatorem architektury.",
      "image": { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2026-07-04T08:00:00+02:00",
      "dateModified": "2026-09-16T10:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": [
        "pompa ciepła",
        "ogrzewanie podłogowe",
        "grzejniki niskotemperaturowe",
        "bufor ciepła",
        "sprzęgło hydrauliczne",
        "projektowe obciążenie cieplne"
      ],
      "keywords": "pompa ciepła podłogówka i grzejniki, moc grzejnika przy 45/35, bufor przy pompie ciepła, wspólny obieg niskotemperaturowy, zawór mieszający, OZC",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#radiator-calculator" },
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#system-analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#faq-schema" }
      ],
      "mentions": { "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service" },
      "citation": [
        "https://heatloadcalculator.mcscertified.com/docs/getting-started/introduction",
        "https://www.iso.org/standard/74683.html",
        "https://www.vdi.de/mitgliedschaft/vdi-richtlinien/unsere-richtlinien-highlights/vdi-4650",
        "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX%3A02013R0813-20170109"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#radiator-calculator",
      "name": "Kalkulator mocy grzejnika przy niskiej temperaturze",
      "url": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#rk-mixed-calculator-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Kalkulator korygujący katalogową moc grzejnika do temperatury zasilania, powrotu i pomieszczenia oraz porównujący wynik z OZC pokoju."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#system-analyzer",
      "name": "Analizator architektury instalacji z pompą ciepła",
      "url": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#rk-mixed-analyzer-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie edukacyjne wskazujące, czy sprawdzić wspólny niski parametr, dwa poziomy temperatury lub modernizację odbiorników."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#howto",
      "name": "Jak sprawdzić połączenie pompy ciepła z podłogówką i grzejnikami",
      "description": "Procedura weryfikacji obciążenia pomieszczeń, mocy odbiorników, temperatur, przepływów i warunków pracy pompy ciepła.",
      "totalTime": "PT35M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Policz obciążenie pomieszczeń", "text": "Wyznacz projektowe straty ciepła osobno dla każdego ogrzewanego pomieszczenia." },
        { "@type": "HowToStep", "position": 2, "name": "Zidentyfikuj grzejniki", "text": "Ustal typy, wymiary, moce referencyjne i warunki katalogowe istniejących lub planowanych grzejników." },
        { "@type": "HowToStep", "position": 3, "name": "Przelicz moc odbiorników", "text": "Sprawdź moc grzejników i podłogi przy planowanej temperaturze zasilania oraz powrotu." },
        { "@type": "HowToStep", "position": 4, "name": "Sprawdź wspólny parametr", "text": "Oceń, czy oba rodzaje odbiorników pokrywają obciążenie przy tej samej możliwie niskiej temperaturze." },
        { "@type": "HowToStep", "position": 5, "name": "Oblicz hydraulikę", "text": "Wyznacz przepływy, opory dróg krytycznych, nastawy i wymagania pomp obiegowych." },
        { "@type": "HowToStep", "position": 6, "name": "Zweryfikuj wymagania pompy", "text": "Sprawdź minimalny przepływ, zład, odszranianie i dopuszczone konfiguracje konkretnego urządzenia." },
        { "@type": "HowToStep", "position": 7, "name": "Wybierz architekturę", "text": "Dopiero na podstawie wyników wybierz wspólny obieg, dwa poziomy temperatury albo modernizację odbiorników." }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Czy pompa ciepła może jednocześnie zasilać podłogówkę i grzejniki?", "acceptedAnswer": { "@type": "Answer", "text": "Tak. Najpierw trzeba sprawdzić, czy oba rodzaje odbiorników pokrywają projektowe straty pomieszczeń przy wspólnej temperaturze. Jeżeli nie, potrzebna jest modernizacja odbiorników albo dwa poziomy temperatury." } },
        { "@type": "Question", "name": "Czy podłogówka i grzejniki mogą pracować na jednej temperaturze?", "acceptedAnswer": { "@type": "Answer", "text": "Tak, jeżeli grzejniki mają wystarczającą moc przy niskim parametrze, a podłoga nie przekracza ograniczeń temperatury powierzchni. Wspólna temperatura nie oznacza identycznych przepływów." } },
        { "@type": "Question", "name": "Czy stare grzejniki trzeba zawsze wymienić?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Każdy grzejnik należy zidentyfikować, przeliczyć jego moc do planowanych temperatur i porównać z OZC konkretnego pomieszczenia." } },
        { "@type": "Question", "name": "Jak przeliczyć moc grzejnika z ΔT50 na 45/35/20°C?", "acceptedAnswer": { "@type": "Answer", "text": "Wyznacza się średnią temperaturę wody, odejmuje temperaturę pomieszczenia i stosuje współczynnik korekcyjny z wykładnikiem charakterystyki odbiornika. Pierwszeństwo mają tabele producenta." } },
        { "@type": "Question", "name": "Czy większy grzejnik pozwala obniżyć temperaturę zasilania?", "acceptedAnswer": { "@type": "Answer", "text": "Zwykle tak, ponieważ większa powierzchnia może oddać wymaganą moc przy mniejszej różnicy temperatur. Trzeba także sprawdzić przepływ, podłączenie i warunki montażu." } },
        { "@type": "Question", "name": "Czy bufor jest zawsze potrzebny przy podłogówce i grzejnikach?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzeba bufora zależy od minimalnego zładu i przepływu pompy, sterowania, zamykanych stref, hydrauliki oraz wymagań konkretnego urządzenia." } },
        { "@type": "Question", "name": "Czym różni się bufor od sprzęgła hydraulicznego?", "acceptedAnswer": { "@type": "Answer", "text": "Bufor może magazynować energię i zwiększać objętość instalacji, a sprzęgło służy przede wszystkim do rozdzielenia hydraulicznego. Funkcje mogą się łączyć zależnie od konstrukcji i włączenia." } },
        { "@type": "Question", "name": "Czy podłogówka zawsze wymaga zaworu mieszającego?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Jeżeli źródło pracuje na temperaturze odpowiedniej dla podłogi i grzejników, dodatkowe mieszanie może być zbędne. Zawór jest potrzebny przy rzeczywiście różnych poziomach temperatury." } },
        { "@type": "Question", "name": "Jaka temperatura jest najlepsza dla pompy ciepła?", "acceptedAnswer": { "@type": "Answer", "text": "Najniższa temperatura, przy której wszystkie pomieszczenia osiągają wymagany komfort w warunkach projektowych. Nie istnieje jedna wartość dla każdego domu." } },
        { "@type": "Question", "name": "Czy wyższa temperatura zawsze zwiększa koszt ogrzewania?", "acceptedAnswer": { "@type": "Answer", "text": "Wyższa temperatura zazwyczaj pogarsza warunki pracy pompy, ale rzeczywisty wpływ zależy od modelu, klimatu, zapotrzebowania, taryfy i sterowania." } },
        { "@type": "Question", "name": "Czy potrzebne są osobne pompy obiegowe?", "acceptedAnswer": { "@type": "Answer", "text": "Tylko wtedy, gdy wynika to z architektury hydraulicznej i wymaganych przepływów. Przy obiegu mieszanym lub rozdzieleniu hydraulicznym mogą być potrzebne, lecz nie w każdym wspólnym obiegu." } },
        { "@type": "Question", "name": "Jak ustawić krzywą grzewczą dla podłogówki i grzejników?", "acceptedAnswer": { "@type": "Answer", "text": "Dla wspólnego parametru ustawia się możliwie niską krzywą zapewniającą komfort w najbardziej wymagającym pomieszczeniu. Przy dwóch temperaturach krzywe muszą być skoordynowane." } },
        { "@type": "Question", "name": "Co się stanie, gdy termostaty zamkną wszystkie obiegi?", "acceptedAnswer": { "@type": "Answer", "text": "Przepływ przez pompę może spaść poniżej wartości wymaganej przez urządzenie. Projekt musi przewidywać minimalny przepływ i dostępny zład również przy częściowym obciążeniu." } },
        { "@type": "Question", "name": "Czy odszranianie może podać 55°C na podłogówkę?", "acceptedAnswer": { "@type": "Answer", "text": "Sam cykl odszraniania nie oznacza automatycznego wysłania takiej temperatury do podłogi. Istotny jest sposób realizacji defrostu, przepływ, zawory i automatyka konkretnej instalacji." } },
        { "@type": "Question", "name": "Jakie obliczenia trzeba wykonać przed wyborem schematu?", "acceptedAnswer": { "@type": "Answer", "text": "Potrzebne są OZC pomieszczeń, moc grzejników i podłogi, przepływy, straty ciśnienia dróg krytycznych, zład oraz minimalne warunki pracy pompy ciepła." } }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "serviceType": "Projekt ogrzewania podłogowego z obliczeniami cieplnymi i hydraulicznymi",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "audience": { "@type": "Audience", "audienceType": "Inwestorzy, wykonawcy i właściciele domów" }
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/#related-guides",
      "name": "Powiązane poradniki techniczne",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "url": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/", "name": "Projektowe obciążenie cieplne OZC" },
        { "@type": "ListItem", "position": 2, "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/", "name": "Projekt podłogówki z pompą ciepła" },
        { "@type": "ListItem", "position": 3, "url": "https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/", "name": "Bufor ciepła" },
        { "@type": "ListItem", "position": 4, "url": "https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/", "name": "Sprzęgło hydrauliczne" },
        { "@type": "ListItem", "position": 5, "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/", "name": "Krzywa grzewcza" }
      ]
    }
  ]
}
</script>

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

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

  function numberValue(id) {
    var field = document.getElementById(id);
    if (!field) {
      return NaN;
    }
    return parseFloat(field.value);
  }

  function textValue(id) {
    var field = document.getElementById(id);
    if (!field) {
      return "unknown";
    }
    return field.value;
  }

  function setText(id, value) {
    var element = document.getElementById(id);
    if (element) {
      element.textContent = value;
    }
  }

  function formatNumber(value, digits) {
    return new Intl.NumberFormat("pl-PL", {
      minimumFractionDigits: 0,
      maximumFractionDigits: digits
    }).format(value);
  }

  function calculatorData() {
    return {
      load: numberValue("rk-rad-load"),
      nominal: numberValue("rk-rad-nominal"),
      nominalDelta: numberValue("rk-rad-nominal-delta"),
      flow: numberValue("rk-rad-flow"),
      returnTemp: numberValue("rk-rad-return"),
      room: numberValue("rk-rad-room"),
      exponent: numberValue("rk-rad-exponent")
    };
  }

  function dataAreValid(data) {
    var values = [data.load, data.nominal, data.nominalDelta, data.flow, data.returnTemp, data.room, data.exponent];
    var valid = true;
    values.forEach(function (value) {
      if (!isFinite(value)) {
        valid = false;
      }
    });
    if (data.load <= 0) { valid = false; }
    if (data.nominal <= 0) { valid = false; }
    if (data.nominalDelta <= 0) { valid = false; }
    if (data.flow <= data.returnTemp) { valid = false; }
    if (data.returnTemp <= data.room) { valid = false; }
    if (data.exponent <= 0) { valid = false; }
    return valid;
  }

  function radiatorOutput(data, flowTemperature) {
    var waterDrop = data.flow - data.returnTemp;
    var returnAtPoint = flowTemperature - waterDrop;
    var actualDelta = ((flowTemperature + returnAtPoint) / 2) - data.room;
    if (actualDelta <= 0) {
      return 0;
    }
    var factor = Math.pow(actualDelta / data.nominalDelta, data.exponent);
    return data.nominal * factor;
  }

  function drawRadiatorChart(data) {
    var canvas = document.getElementById("rk-rad-chart");
    if (!canvas) {
      return;
    }
    var context = canvas.getContext("2d");
    if (!context) {
      return;
    }
    var cssWidth = canvas.clientWidth;
    if (cssWidth < 280) {
      cssWidth = 280;
    }
    var cssHeight = canvas.clientHeight;
    if (cssHeight < 260) {
      cssHeight = 300;
    }
    var ratio = window.devicePixelRatio;
    if (!ratio) {
      ratio = 1;
    }
    canvas.width = Math.round(cssWidth * ratio);
    canvas.height = Math.round(cssHeight * ratio);
    context.setTransform(ratio, 0, 0, ratio, 0, 0);
    context.clearRect(0, 0, cssWidth, cssHeight);

    var marginLeft = 58;
    var marginRight = 18;
    var marginTop = 20;
    var marginBottom = 48;
    var plotWidth = cssWidth - marginLeft - marginRight;
    var plotHeight = cssHeight - marginTop - marginBottom;
    var xMin = 30;
    var xMax = 60;
    if (data.flow < 30) { xMin = Math.max(25, Math.floor(data.flow - 5)); }
    if (data.flow > 60) { xMax = Math.min(75, Math.ceil(data.flow + 5)); }
    var sample = [];
    var maxOutput = 0;
    var temperature;
    for (temperature = xMin; temperature <= xMax; temperature += 1) {
      var output = radiatorOutput(data, temperature);
      sample.push({ temperature: temperature, output: output });
      if (output > maxOutput) { maxOutput = output; }
    }
    var yMax = maxOutput * 1.15;
    if (data.load * 1.25 > yMax) { yMax = data.load * 1.25; }
    if (yMax < 500) { yMax = 500; }

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

    function yPosition(value) {
      return marginTop + plotHeight - (value / yMax) * plotHeight;
    }

    context.font = "12px Arial";
    context.lineWidth = 1;
    context.strokeStyle = "#d3e2e8";
    context.fillStyle = "#587082";
    var gridIndex;
    for (gridIndex = 0; gridIndex <= 5; gridIndex += 1) {
      var gridValue = (yMax / 5) * gridIndex;
      var gridY = yPosition(gridValue);
      context.beginPath();
      context.moveTo(marginLeft, gridY);
      context.lineTo(marginLeft + plotWidth, gridY);
      context.stroke();
      context.textAlign = "right";
      context.fillText(formatNumber(gridValue, 0), marginLeft - 8, gridY + 4);
    }

    var xStep = 5;
    for (temperature = xMin; temperature <= xMax; temperature += xStep) {
      var gridX = xPosition(temperature);
      context.beginPath();
      context.moveTo(gridX, marginTop);
      context.lineTo(gridX, marginTop + plotHeight);
      context.stroke();
      context.textAlign = "center";
      context.fillText(String(temperature) + "°C", gridX, marginTop + plotHeight + 22);
    }

    context.strokeStyle = "#ff6846";
    context.lineWidth = 2;
    context.setLineDash([7, 5]);
    context.beginPath();
    context.moveTo(marginLeft, yPosition(data.load));
    context.lineTo(marginLeft + plotWidth, yPosition(data.load));
    context.stroke();
    context.setLineDash([]);

    context.strokeStyle = "#078fb3";
    context.lineWidth = 3;
    context.beginPath();
    sample.forEach(function (point, index) {
      var x = xPosition(point.temperature);
      var y = yPosition(point.output);
      if (index === 0) {
        context.moveTo(x, y);
      } else {
        context.lineTo(x, y);
      }
    });
    context.stroke();

    if (data.flow >= xMin) {
      if (data.flow <= xMax) {
        var currentOutput = radiatorOutput(data, data.flow);
        context.fillStyle = "#10283a";
        context.beginPath();
        context.arc(xPosition(data.flow), yPosition(currentOutput), 5, 0, Math.PI * 2);
        context.fill();
      }
    }

    context.fillStyle = "#10283a";
    context.textAlign = "center";
    context.font = "bold 12px Arial";
    context.fillText("Temperatura zasilania", marginLeft + plotWidth / 2, cssHeight - 8);
    context.save();
    context.translate(15, marginTop + plotHeight / 2);
    context.rotate(-Math.PI / 2);
    context.fillText("Moc [W]", 0, 0);
    context.restore();
  }

  function calculateRadiator() {
    var data = calculatorData();
    var result = document.getElementById("rk-rad-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");

    if (!dataAreValid(data)) {
      result.classList.add("is-stop");
      setText("rk-rad-status", "Sprawdź dane wejściowe");
      setText("rk-rad-intro", "Zasilanie musi być wyższe od powrotu, powrót wyższy od temperatury pomieszczenia, a pozostałe wartości muszą być dodatnie.");
      ["rk-rad-actual-delta", "rk-rad-factor", "rk-rad-output", "rk-rad-balance", "rk-rad-required", "rk-rad-required-flow"].forEach(function (id) {
        setText(id, "—");
      });
      return;
    }

    var meanWater = (data.flow + data.returnTemp) / 2;
    var actualDelta = meanWater - data.room;
    var factor = Math.pow(actualDelta / data.nominalDelta, data.exponent);
    var output = data.nominal * factor;
    var balance = output - data.load;
    var balancePercent = (balance / data.load) * 100;
    var requiredNominal = data.load / factor;
    var waterDrop = data.flow - data.returnTemp;
    var requiredDelta = data.nominalDelta * Math.pow(data.load / data.nominal, 1 / data.exponent);
    var requiredMeanWater = data.room + requiredDelta;
    var requiredFlow = requiredMeanWater + waterDrop / 2;

    setText("rk-rad-actual-delta", formatNumber(actualDelta, 1) + " K");
    setText("rk-rad-factor", formatNumber(factor, 3));
    setText("rk-rad-output", formatNumber(output, 0) + " W");
    var balancePrefix = "";
    if (balance > 0) { balancePrefix = "+"; }
    setText("rk-rad-balance", balancePrefix + formatNumber(balance, 0) + " W (" + balancePrefix + formatNumber(balancePercent, 1) + "%)");
    setText("rk-rad-required", formatNumber(requiredNominal, 0) + " W przy ΔT" + formatNumber(data.nominalDelta, 0));
    setText("rk-rad-required-flow", formatNumber(requiredFlow, 1) + "°C przy spadku " + formatNumber(waterDrop, 1) + " K");

    if (output >= data.load * 1.1) {
      result.classList.add("is-good");
      setText("rk-rad-status", "Grzejnik ma orientacyjną rezerwę mocy");
      setText("rk-rad-intro", "Przy podanych temperaturach obliczeniowa moc przewyższa OZC pomieszczenia o co najmniej 10%. Potwierdź wynik w dokumentacji odbiornika i sprawdź przepływ.");
    } else {
      if (output >= data.load) {
        setText("rk-rad-status", "Grzejnik orientacyjnie pokrywa obciążenie");
        setText("rk-rad-intro", "Rezerwa jest niewielka. Zweryfikuj dokładne dane producenta, sposób podłączenia, przepływ i warunki zabudowy.");
      } else {
        if (output >= data.load * 0.9) {
          setText("rk-rad-status", "Wynik graniczny — potrzebna dokładna weryfikacja");
          setText("rk-rad-intro", "Niedobór jest mniejszy niż 10%, ale nie wolno zakładać jego pokrycia bez tabel producenta i pełnego projektu pomieszczenia.");
        } else {
          result.classList.add("is-stop");
          setText("rk-rad-status", "Grzejnik nie pokrywa projektowego obciążenia");
          setText("rk-rad-intro", "Przy podanych temperaturach trzeba zwiększyć powierzchnię odbiornika, ograniczyć straty pomieszczenia albo rozważyć wyższy parametr i jego konsekwencje dla całego układu.");
        }
      }
    }
    drawRadiatorChart(data);
  }

  var calculatorFields = guide.querySelectorAll("#rk-radiator-calculator input, #rk-radiator-calculator select");
  calculatorFields.forEach(function (field) {
    field.addEventListener("input", calculateRadiator);
    field.addEventListener("change", calculateRadiator);
  });

  var presetButtons = guide.querySelectorAll(".rk-mixed-preset");
  presetButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      document.getElementById("rk-rad-flow").value = button.getAttribute("data-rk-flow");
      document.getElementById("rk-rad-return").value = button.getAttribute("data-rk-return");
      document.getElementById("rk-rad-room").value = "20";
      presetButtons.forEach(function (otherButton) {
        otherButton.setAttribute("aria-pressed", "false");
      });
      button.setAttribute("aria-pressed", "true");
      calculateRadiator();
    });
  });

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

  function clearPaths() {
    ["rk-path-common", "rk-path-split", "rk-path-retrofit"].forEach(function (id) {
      document.getElementById(id).classList.remove("is-active");
    });
  }

  function analyzeSystem() {
    var ozc = textValue("rk-an-ozc");
    var radiators = textValue("rk-an-radiators");
    var floor = textValue("rk-an-floor");
    var commonTemp = textValue("rk-an-common-temp");
    var hydraulics = textValue("rk-an-hydraulics");
    var minFlow = textValue("rk-an-min-flow");
    var volume = textValue("rk-an-volume");
    var zones = textValue("rk-an-zones");
    var ok = [];
    var check = [];
    var path = "unknown";
    var result = document.getElementById("rk-an-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");
    clearPaths();

    if (ozc === "rooms") {
      ok.push("OZC jest dostępne dla każdego pomieszczenia.");
    } else {
      if (ozc === "building") {
        check.push("Rozdziel wynik całego budynku na poszczególne pomieszczenia.");
      } else {
        check.push("Wykonaj projektowe obciążenie cieplne pomieszczeń.");
      }
    }

    if (radiators === "yes") {
      ok.push("Grzejniki pokrywają obciążenie przy docelowym parametrze.");
    } else {
      if (radiators === "no") {
        check.push("Zwiększ moc grzejników albo ogranicz straty pomieszczeń.");
        path = "retrofit";
      } else {
        check.push("Przelicz moc każdego grzejnika do planowanej temperatury.");
      }
    }

    if (floor === "yes") {
      ok.push("Moc podłogi i ograniczenia temperatury powierzchni są sprawdzone.");
    } else {
      if (floor === "no") {
        check.push("Podłoga wymaga osobnego parametru lub korekty projektu.");
        if (path !== "retrofit") { path = "split"; }
      } else {
        check.push("Sprawdź moc podłogi, powierzchnię czynną i opór okładziny.");
      }
    }

    if (commonTemp === "yes") {
      ok.push("Wspólna temperatura została potwierdzona dla obu rodzajów odbiorników.");
      if (path === "unknown") {
        if (radiators === "yes") {
          if (floor === "yes") { path = "common"; }
        }
      }
    } else {
      if (commonTemp === "no") {
        check.push("Instalacja wymaga analizy dwóch poziomów temperatury.");
        if (path !== "retrofit") { path = "split"; }
      } else {
        check.push("Ustal najniższą wspólną temperaturę na podstawie mocy odbiorników.");
      }
    }

    if (hydraulics === "yes") {
      ok.push("Przepływy i opory dróg krytycznych są policzone.");
    } else {
      if (hydraulics === "no") {
        check.push("Nie dobieraj pomp i nastaw bez obliczenia przepływów oraz oporów.");
      } else {
        check.push("Oblicz przepływy, drogi krytyczne i wymagane nastawy.");
      }
    }

    if (minFlow === "yes") {
      ok.push("Minimalny przepływ pompy jest zapewniony w każdym stanie pracy.");
    } else {
      if (minFlow === "no") {
        check.push("Zapewnij minimalny przepływ przed zatwierdzeniem schematu.");
      } else {
        check.push("Odczytaj minimalny przepływ z dokumentacji konkretnej pompy.");
      }
    }

    if (volume === "yes") {
      ok.push("Zład i warunki odszraniania są potwierdzone dla urządzenia.");
    } else {
      if (volume === "no") {
        check.push("Uzupełnij zład lub zmień architekturę zgodnie z wymaganiami pompy.");
      } else {
        check.push("Sprawdź minimalny zład i wymagania defrostu konkretnego modelu.");
      }
    }

    if (zones === "safe") {
      ok.push("Sterowanie strefami nie odcina wymaganego przepływu.");
    } else {
      if (zones === "risk") {
        check.push("Zamykanie odbiorników może odciąć przepływ — potrzebna strategia zabezpieczająca.");
      } else {
        check.push("Przeanalizuj stan pracy po zamknięciu głowic i siłowników.");
      }
    }

    if (path === "retrofit") {
      result.classList.add("is-stop");
      document.getElementById("rk-path-retrofit").classList.add("is-active");
      setText("rk-an-status", "Najpierw modernizacja odbiorników lub ograniczenie strat");
      setText("rk-an-intro", "Co najmniej jeden wynik wskazuje, że docelowa temperatura nie pokrywa obciążenia. Schemat hydrauliczny nie naprawi brakującej mocy grzewczej.");
    } else {
      if (path === "split") {
        document.getElementById("rk-path-split").classList.add("is-active");
        setText("rk-an-status", "Najbardziej prawdopodobne: dwa poziomy temperatury");
        setText("rk-an-intro", "Zaprojektuj obieg bezpośredni i mieszany, a potrzebę rozdzielenia hydraulicznego oceń z przepływów, zładu, stref i wymagań pompy.");
      } else {
        if (path === "common") {
          document.getElementById("rk-path-common").classList.add("is-active");
          if (check.length === 0) {
            result.classList.add("is-good");
            setText("rk-an-status", "Wspólny niski parametr został wstępnie potwierdzony");
            setText("rk-an-intro", "Warunki formularza są kompletne. Ostateczny schemat musi jeszcze odpowiadać dokumentacji konkretnej pompy i pełnym obliczeniom hydraulicznym.");
          } else {
            setText("rk-an-status", "Wspólny niski parametr jest możliwy — uzupełnij warunki");
            setText("rk-an-intro", "Moc odbiorników pozwala rozważyć prosty układ, ale lista kontroli zawiera dane wymagane przed zatwierdzeniem schematu.");
          }
        } else {
          setText("rk-an-status", "Za mało danych, aby wybrać architekturę");
          setText("rk-an-intro", "Najpierw potwierdź OZC i moc obu rodzajów odbiorników przy tej samej temperaturze.");
        }
      }
    }

    renderList("rk-an-ok", ok, "Brak potwierdzonych warunków.");
    renderList("rk-an-check", check, "Nie wskazano dodatkowych braków.");
  }

  document.getElementById("rk-an-run").addEventListener("click", analyzeSystem);
  document.getElementById("rk-an-reset").addEventListener("click", function () {
    var fields = guide.querySelectorAll("#rk-system-analyzer select");
    fields.forEach(function (field) {
      field.selectedIndex = 0;
    });
    var result = document.getElementById("rk-an-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");
    clearPaths();
    setText("rk-an-status", "Uzupełnij dane całej instalacji");
    setText("rk-an-intro", "Wynik wskaże najbardziej prawdopodobny kierunek i brakujące warunki.");
    renderList("rk-an-ok", [], "Jeszcze brak ocenionych danych.");
    renderList("rk-an-check", [], "Uzupełnij formularz na podstawie projektu i dokumentacji urządzenia.");
  });

  var resizeTimer;
  window.addEventListener("resize", function () {
    window.clearTimeout(resizeTimer);
    resizeTimer = window.setTimeout(function () {
      var data = calculatorData();
      if (dataAreValid(data)) {
        drawRadiatorChart(data);
      }
    }, 120);
  });

  calculateRadiator();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">Pompa ciepła, podłogówka i grzejniki – jak połączyć układ mieszany?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe w płycie fundamentowej – projekt i montaż.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 28 Jun 2026 16:13:31 +0000</pubDate>
				<category><![CDATA[Budowa stanu zero]]></category>
		<category><![CDATA[HVAC]]></category>
		<category><![CDATA[Ogrzewanie płaszczyznowe]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Płyta fundamentowa]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[budownictwo energooszczędne]]></category>
		<category><![CDATA[energooszczędny dom]]></category>
		<category><![CDATA[fundament grzewczy]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[nowoczesne fundamenty]]></category>
		<category><![CDATA[ogrzewanie płaszczyznowe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[ogrzewanie podłogowe w płycie fundamentowej]]></category>
		<category><![CDATA[ogrzewanie podłogowe z pompą ciepła]]></category>
		<category><![CDATA[płyta fundamentowa]]></category>
		<category><![CDATA[płyta fundamentowa z ogrzewaniem]]></category>
		<category><![CDATA[płyta grzewcza]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[termiczna płyta fundamentowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=6375</guid>

					<description><![CDATA[<p>Planowanie posadowienia budynku na etapie stanu zero to moment, w którym podejmujesz decyzje rzutujące na koszty eksploatacji domu przez najbliższe kilkadziesiąt lat. Tradycyjne ławy i ściany fundamentowe powoli ustępują miejsca nowoczesnym rozwiązaniom monolitycznym. Inwestorzy coraz częściej dostrzegają, że ogrzewanie podłogowe w płycie fundamentowej gwarantuje niespotykaną stabilność termiczną i eliminuje liniowe mostki termiczne przy gruncie. W tym artykule brutalnie rozprawiamy się z mitami wykonawczymi, analizujemy realne koszty inwestycji na bazie autentycznego Case Study z Pomorza oraz udostępniamy interaktywne kalkulatory, które pozwolą Ci samodzielnie obliczyć opłacalność oraz parametry hydrauliczne całego systemu pod Twoją pompę ciepła.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/">Ogrzewanie podłogowe w płycie fundamentowej – projekt i montaż.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-slab-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-slab-guide,
  #rk-slab-guide * {
    box-sizing: border-box;
    min-width: 0;
  }

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

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

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

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

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

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

  #rk-slab-guide .rk-slab-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-slab-guide .rk-slab-kicker {
    color: #6ce5ef;
    display: block;
    font-size: 0.77rem;
    font-weight: 900;
    letter-spacing: 0.13em;
    margin: 0 0 19px 28px;
    text-transform: uppercase;
  }

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

  #rk-slab-guide .rk-slab-hero-title {
    font-size: clamp(2.35rem, 5.7vw, 5.15rem);
    margin: 0;
    max-width: 1180px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-slab-guide .rk-slab-section-dark .rk-slab-eyebrow,
  #rk-slab-guide .rk-slab-author-head .rk-slab-eyebrow {
    color: #68e6ef;
  }

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

  #rk-slab-guide .rk-slab-section-dark .rk-slab-section-title,
  #rk-slab-guide .rk-slab-author-head .rk-slab-author-title {
    color: #ffffff;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-slab-guide .rk-slab-section-dark .rk-slab-card {
    background: #17394b;
    border-color: #376177;
  }

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

  #rk-slab-guide .rk-slab-section-dark .rk-slab-card-number,
  #rk-slab-guide .rk-slab-section-dark .rk-slab-icon {
    background: var(--rk-cyan);
    color: #082c3c;
  }

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

  #rk-slab-guide .rk-slab-section-dark .rk-slab-card h3,
  #rk-slab-guide .rk-slab-section-dark .rk-slab-card h4 {
    color: #ffffff;
  }

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

  #rk-slab-guide .rk-slab-section-dark .rk-slab-card p,
  #rk-slab-guide .rk-slab-section-dark .rk-slab-card li {
    color: #c8dce3;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-slab-guide .rk-slab-flow {
    display: grid;
    gap: 12px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: 30px;
  }

  #rk-slab-guide .rk-slab-flow-step {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-top: 5px solid var(--rk-cyan);
    border-radius: 14px;
    padding: 19px;
    position: relative;
  }

  #rk-slab-guide .rk-slab-flow-step strong {
    color: var(--rk-ink);
    display: block;
    margin-bottom: 6px;
  }

  #rk-slab-guide .rk-slab-flow-step span {
    color: var(--rk-copy);
    display: block;
    font-size: 0.88rem;
  }

  #rk-slab-guide .rk-slab-modules {
    background: var(--rk-navy);
    border-radius: 22px;
    margin-top: 32px;
    padding: 28px;
  }

  #rk-slab-guide .rk-slab-module-intro {
    color: #c8dce3;
    margin: 0 0 20px;
  }

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

  #rk-slab-guide .rk-slab-module-button {
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 14px;
    color: #ffffff;
    cursor: pointer;
    font-weight: 900;
    line-height: 1.35;
    min-height: 92px;
    padding: 15px;
    text-align: left;
  }

  #rk-slab-guide .rk-slab-module-button span {
    color: #71e6ef;
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.08em;
    margin-bottom: 5px;
    text-transform: uppercase;
  }

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

  #rk-slab-guide .rk-slab-module-button[aria-selected="true"] span {
    color: #094f62;
  }

  #rk-slab-guide .rk-slab-module-panel {
    background: #ffffff;
    border-radius: 17px;
    margin-top: 18px;
    padding: 26px;
  }

  #rk-slab-guide .rk-slab-module-panel h3 {
    color: var(--rk-ink);
    font-size: clamp(1.35rem, 2.8vw, 2rem);
    line-height: 1.25;
    margin: 0;
  }

  #rk-slab-guide .rk-slab-module-panel > p {
    color: var(--rk-copy);
    margin: 10px 0 0;
  }

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

  #rk-slab-guide .rk-slab-module-fact {
    background: #f3f8fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

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

  #rk-slab-guide .rk-slab-module-fact span {
    color: var(--rk-copy);
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-slab-guide .rk-slab-result-count {
    background: #f3f8fa;
    border: 1px solid var(--rk-line);
    border-radius: 12px;
    padding: 13px;
    text-align: center;
  }

  #rk-slab-guide .rk-slab-result-count strong {
    color: var(--rk-ink);
    display: block;
    font-size: 1.45rem;
  }

  #rk-slab-guide .rk-slab-result-count span {
    color: var(--rk-muted);
    display: block;
    font-size: 0.74rem;
    font-weight: 800;
    text-transform: uppercase;
  }

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

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

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

  #rk-slab-guide .rk-slab-result-column.is-ok h4 {
    color: var(--rk-green-dark);
  }

  #rk-slab-guide .rk-slab-result-column.is-check h4 {
    color: #88600e;
  }

  #rk-slab-guide .rk-slab-result-column.is-stop h4 {
    color: #a83d2d;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-slab-guide .rk-slab-author-card {
    border-radius: 24px;
    box-shadow: 0 18px 45px rgba(11, 37, 54, 0.12);
    overflow: hidden;
  }

  #rk-slab-guide .rk-slab-author-head {
    align-items: end;
    background: linear-gradient(125deg, #0b2536 0%, #153e51 62%, #164e61 100%);
    color: #ffffff;
    display: grid;
    gap: 24px;
    grid-template-columns: minmax(0, 1fr) auto;
    padding: 38px 46px;
  }

  #rk-slab-guide .rk-slab-author-head p {
    color: #d4e5ea;
    font-size: 1.08rem;
    margin: 15px 0 0;
    max-width: 900px;
  }

  #rk-slab-guide .rk-slab-author-update {
    border: 1px solid #487286;
    border-radius: 999px;
    color: #ffffff;
    font-size: 0.78rem;
    font-weight: 900;
    padding: 11px 16px;
    white-space: nowrap;
  }

  #rk-slab-guide .rk-slab-author-layout {
    background: #ffffff;
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
  }

  #rk-slab-guide .rk-slab-author-side {
    align-items: center;
    background: #12384b;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    padding: 43px 28px;
    text-align: center;
  }

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

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

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

  #rk-slab-guide .rk-slab-author-social-label {
    color: #6de5ef;
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    margin-top: 22px;
    text-transform: uppercase;
  }

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

  #rk-slab-guide .rk-slab-author-social a {
    align-items: center;
    background: #234d61;
    border-radius: 50%;
    color: #ffffff;
    display: inline-flex;
    font-weight: 900;
    height: 44px;
    justify-content: center;
    text-decoration: none;
    width: 44px;
  }

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

  #rk-slab-guide .rk-slab-author-main {
    padding: 40px;
  }

  #rk-slab-guide .rk-slab-author-quote {
    color: var(--rk-ink);
    font-size: 1.08rem;
    font-style: italic;
    font-weight: 800;
    line-height: 1.72;
    margin: 0;
    padding-left: 58px;
    position: relative;
  }

  #rk-slab-guide .rk-slab-author-quote::before {
    color: var(--rk-cyan);
    content: "“";
    font-family: Georgia, serif;
    font-size: 4.8rem;
    left: 0;
    line-height: 1;
    position: absolute;
    top: -10px;
  }

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

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

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

  #rk-slab-guide .rk-slab-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-slab-guide .rk-slab-author-portals {
    margin-top: 22px;
  }

  #rk-slab-guide .rk-slab-author-portals strong {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    margin-bottom: 10px;
    text-transform: uppercase;
  }

  #rk-slab-guide .rk-slab-author-portals a {
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    display: inline-block;
    font-size: 0.78rem;
    font-weight: 900;
    margin: 0 7px 7px 0;
    padding: 8px 12px;
    text-decoration: none;
  }

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

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

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

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

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

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

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

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

    #rk-slab-guide .rk-slab-author-update {
      justify-self: start;
    }
  }

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

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

    #rk-slab-guide .rk-slab-grid-2,
    #rk-slab-guide .rk-slab-grid-3,
    #rk-slab-guide .rk-slab-grid-4,
    #rk-slab-guide .rk-slab-fields,
    #rk-slab-guide .rk-slab-source-grid,
    #rk-slab-guide .rk-slab-author-facts,
    #rk-slab-guide .rk-slab-module-grid,
    #rk-slab-guide .rk-slab-result-counts,
    #rk-slab-guide .rk-slab-flow {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-slab-guide .rk-slab-modules,
    #rk-slab-guide .rk-slab-analyzer,
    #rk-slab-guide .rk-slab-cta {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-slab-guide .rk-slab-module-panel,
    #rk-slab-guide .rk-slab-analyzer-stage,
    #rk-slab-guide .rk-slab-result {
      padding: 18px;
    }

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

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

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

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

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

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

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

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

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

    #rk-slab-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-slab-guide .rk-slab-author-head {
      padding: 29px 22px;
    }

    #rk-slab-guide .rk-slab-author-main {
      padding: 28px 21px;
    }

    #rk-slab-guide .rk-slab-author-quote {
      padding-left: 43px;
    }
  }

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

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

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

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

    #rk-slab-guide .rk-slab-shortcuts-label {
      flex: 1 0 100%;
    }

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

    #rk-slab-guide .rk-slab-section-title,
    #rk-slab-guide .rk-slab-author-title {
      font-size: 1.9rem;
    }
  }

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

<article id="rk-slab-guide" aria-labelledby="rk-slab-visual-title">
  <div class="rk-slab-shell">
    <header class="rk-slab-hero">
      <span class="rk-slab-kicker">Płyta grzewcza · projekt i odbiór 2026</span>
      <div class="rk-slab-hero-title" id="rk-slab-visual-title">Ogrzewanie podłogowe w płycie fundamentowej: <span>zabetonuj obliczenia, nie założenia</span></div>
      <p class="rk-slab-hero-lead">Rury umieszczone w nośnej płycie mogą stworzyć trwały, niskotemperaturowy system grzewczy. Warunkiem jest zamknięcie przed betonowaniem decyzji cieplnych, hydraulicznych, konstrukcyjnych i wykonawczych — bo późniejsza korekta rozstawu, pętli albo kolizji nie będzie już możliwa.</p>
      <div class="rk-slab-hero-tags" aria-label="Zakres poradnika">
        <span>OZC pomieszczeń</span>
        <span>koordynacja konstrukcji</span>
        <span>pętle i hydraulika</span>
        <span>izolacja od gruntu</span>
        <span>próba i betonowanie</span>
      </div>
      <div class="rk-slab-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 29 minut</strong></span>
        <span>Aktualizacja techniczna: <strong>16 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-slab-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-slab-shortcuts-label">Na skróty</span>
      <a href="#rk-slab-answer">Szybka odpowiedź</a>
      <a href="#rk-slab-systems">Trzy rozwiązania</a>
      <a href="#rk-slab-tradeoffs">Zalety i ograniczenia</a>
      <a href="#rk-slab-responsibility">Odpowiedzialność</a>
      <a href="#rk-slab-input">Dane wejściowe</a>
      <a href="#rk-slab-analyzer-section">Analizator</a>
      <a href="#rk-slab-coordination">6 obszarów</a>
      <a href="#rk-slab-ground">Grunt i izolacja</a>
      <a href="#rk-slab-structure">Położenie rur</a>
      <a href="#rk-slab-layout">Aktywne pola</a>
      <a href="#rk-slab-hydraulics">Pętle i przepływy</a>
      <a href="#rk-slab-pipes">Rury i system</a>
      <a href="#rk-slab-pour">Próba i beton</a>
      <a href="#rk-slab-documentation">Dokumentacja</a>
      <a href="#rk-slab-control">Bezwładność</a>
      <a href="#rk-slab-coverings">Okładziny</a>
      <a href="#rk-slab-failure">Awaria</a>
      <a href="#rk-slab-errors">Błędy</a>
      <a href="#rk-slab-checklist">Checklista</a>
      <a href="#rk-slab-final">Projekt</a>
      <a href="#rk-slab-sources">Źródła</a>
      <a href="#rk-slab-faq">FAQ</a>
      <a href="#rk-slab-author">Autor</a>
    </nav>

    <section class="rk-slab-section" id="rk-slab-answer">
      <span class="rk-slab-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-slab-section-title">Czy warto umieścić ogrzewanie podłogowe w płycie fundamentowej?</h2>
      <p class="rk-slab-lead"><strong>Tak, jeżeli instalacja i płyta powstają jako jeden skoordynowany projekt.</strong> Nie jest to jednak zwykła podłogówka przeniesiona z jastrychu do grubszego betonu. Nośna płyta, izolacja od gruntu, położenie rur, hydraulika i technologia betonowania wzajemnie na siebie wpływają.</p>
      <div class="rk-slab-answer">
        <strong>Najważniejsze pytanie nie brzmi „czy zastosować rozstaw 10 czy 15 cm?”, lecz „czy przed betonowaniem zostały zamknięte wszystkie decyzje, których później nie da się bezpiecznie zmienić?”.</strong>
        <p>Rozstaw, temperatura zasilania i długość pętli nie są stałymi wartościami dla każdej płyty. Wynikają z obciążenia cieplnego pomieszczeń, aktywnej powierzchni, układu warstw, położenia rur, okładziny, przepływów i parametrów źródła ciepła.</p>
      </div>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-icon">1</span><h3>Najpierw budynek</h3><p>OZC pomieszczenie po pomieszczeniu określa, ile mocy ma oddać konkretna część podłogi w warunkach projektowych.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">2</span><h3>Potem koordynacja</h3><p>Trasy rur, zbrojenie, przepusty, odpływy, ściany i strefy późniejszego wiercenia muszą zostać uzgodnione przed montażem.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">3</span><h3>Na końcu beton</h3><p>Betonowanie rozpoczyna się po sprawdzeniu dokumentów, próbie, opisaniu pętli i przygotowaniu planu kontroli podczas prac.</p></article>
      </div>
      <p class="rk-slab-copy">Jeżeli chcesz zacząć od podstaw, przeczytaj, czym jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a> oraz jak działa <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">wodne ogrzewanie podłogowe</a>. Ten poradnik skupia się wyłącznie na dodatkowych wymaganiach wynikających z umieszczenia rur w elemencie związanym z posadowieniem budynku.</p>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-systems">
      <span class="rk-slab-eyebrow">Najpierw nazwij właściwy układ</span>
      <h2 class="rk-slab-section-title">Płyta grzewcza, jastrych nad płytą czy system producenta?</h2>
      <p class="rk-slab-lead">Pod wspólną nazwą „podłogówka w płycie” funkcjonują różne rozwiązania. Nie można bez sprawdzenia przenosić między nimi położenia rur, dylatacji, sposobu mocowania ani procedury rozruchu.</p>
      <div class="rk-slab-table-wrap">
        <table>
          <thead><tr><th>Rozwiązanie</th><th>Gdzie znajdują się rury?</th><th>Co jest kluczowe?</th><th>Czego nie zakładać?</th></tr></thead>
          <tbody>
            <tr><td data-label="Rozwiązanie"><strong>Rury w nośnej płycie</strong></td><td data-label="Położenie">W przekroju elementu konstrukcyjnego, na poziomie wskazanym w uzgodnionej dokumentacji.</td><td data-label="Kluczowe">Koordynacja z konstruktorem, zbrojeniem, otuliną, przepustami i technologią betonowania.</td><td data-label="Nie zakładaj">Że detal znany z jastrychu można skopiować bez zmian.</td></tr>
            <tr><td data-label="Rozwiązanie"><strong>Jastrych nad płytą</strong></td><td data-label="Położenie">W oddzielnej warstwie podłogowej wykonanej nad konstrukcją i jej izolacjami.</td><td data-label="Kluczowe">Układ podłogi, dylatacje jastrychu, izolacja, rozruch i okładzina.</td><td data-label="Nie zakładaj">Że płyta nośna automatycznie staje się powierzchnią grzewczą.</td></tr>
            <tr><td data-label="Rozwiązanie"><strong>Kompletny system płytowy</strong></td><td data-label="Położenie">Zgodnie z dokumentacją konkretnego systemu i projektem dla budynku.</td><td data-label="Kluczowe">Zakres odpowiedzialności dostawcy, dokumentacja, detale i ograniczenia rozwiązania.</td><td data-label="Nie zakładaj">Że każda „płyta termiczna” ma identyczny układ warstw.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-slab-note"><p><strong>Granica poradnika:</strong> omawiam projekt instalacji grzewczej i jej koordynację. Nie określam klasy betonu, zbrojenia, grubości płyty ani nośności — te parametry należą do projektu konstrukcyjnego i geotechnicznego.</p></div>
    </section>

    <section class="rk-slab-section" id="rk-slab-tradeoffs">
      <span class="rk-slab-eyebrow">Bez zachwytu i bez straszenia</span>
      <h2 class="rk-slab-section-title">Rzeczywiste zalety i ograniczenia ogrzewanej płyty</h2>
      <p class="rk-slab-lead">Masa betonu może stabilizować temperaturę i współpracować z niskotemperaturowym źródłem, ale nie gwarantuje automatycznie niskich rachunków. O wyniku decyduje cały budynek oraz sposób sterowania energią zgromadzoną w konstrukcji.</p>
      <div class="rk-slab-grid-2">
        <article class="rk-slab-card"><span class="rk-slab-card-number">KORZYŚCI</span><h3>Co może działać na plus</h3><ul class="rk-slab-bullets"><li>duża powierzchnia oddawania ciepła,</li><li>możliwość pracy przy niskiej temperaturze zasilania,</li><li>stabilna temperatura powierzchni i powietrza,</li><li>brak grzejników zajmujących ściany,</li><li>akumulacja ograniczająca krótkie wahania.</li></ul></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">OGRANICZENIA</span><h3>Co trzeba zaakceptować</h3><ul class="rk-slab-bullets"><li>bardzo małą możliwość korekty po betonowaniu,</li><li>dłuższą reakcję na zmianę nastawy i zyski słoneczne,</li><li>konieczność koordynacji wielu branż,</li><li>większą wagę dokumentacji powykonawczej,</li><li>naprawę zależną od zgody i oceny konstrukcyjnej.</li></ul></article>
      </div>
      <p class="rk-slab-copy">Opłacalność należy porównywać na podstawie dwóch kompletnych ofert o tym samym zakresie. Cena płyty z instalacją nie może być zestawiana wyłącznie z ceną samych ław, a następnie automatycznie uznawana za tańszą albo droższą.</p>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-responsibility">
      <span class="rk-slab-eyebrow">Jedna płyta, kilka odpowiedzialności</span>
      <h2 class="rk-slab-section-title">Kto projektuje ogrzewanie, a kto zatwierdza jego miejsce w konstrukcji?</h2>
      <p class="rk-slab-lead">Instalator nie powinien samodzielnie wybierać położenia rur w nośnej płycie, a projektant instalacji nie zastępuje konstruktora. Bezpieczna realizacja wymaga jednoznacznego podziału zakresów.</p>
      <div class="rk-slab-grid-4">
        <article class="rk-slab-card"><span class="rk-slab-card-number">01</span><h3>Geotechnika i posadowienie</h3><p>Warunki gruntu, wody, przygotowania podłoża i założenia dotyczące fundamentu.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">02</span><h3>Konstruktor</h3><p>Geometria płyty, zbrojenie, otulina, nośność, przerwy robocze, przepusty i dopuszczone sposoby prowadzenia instalacji.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">03</span><h3>Projektant instalacji</h3><p>OZC, moc powierzchni, rozstawy, pętle, przepływy, opory, rozdzielacz, parametry wody i źródła.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">04</span><h3>Wykonawca i kierownik</h3><p>Zgodność wykonania, ochrona instalacji, próba, kontrola betonowania, protokoły i dokumentacja powykonawcza.</p></article>
      </div>
      <div class="rk-slab-note rk-slab-note-bad"><p><strong>Sygnał ostrzegawczy:</strong> jeżeli nikt nie potrafi wskazać dokumentu określającego położenie i mocowanie rur względem zbrojenia, instalacja nie jest gotowa do montażu w elemencie konstrukcyjnym.</p></div>
    </section>

    <section class="rk-slab-section" id="rk-slab-input">
      <span class="rk-slab-eyebrow">Dane przed pierwszym metrem rury</span>
      <h2 class="rk-slab-section-title">Co trzeba policzyć i uzgodnić przed rozpoczęciem montażu?</h2>
      <p class="rk-slab-lead">Powierzchnia domu nie wystarcza do rozmieszczenia pętli. Dwa pomieszczenia o identycznym metrażu mogą mieć inne straty, inne pola wyłączone i inną dostępną powierzchnię oddawania ciepła.</p>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-icon">Q</span><h3>Obciążenie każdego pomieszczenia</h3><p>Obliczenia dla temperatury projektowej, przegród, wentylacji i rzeczywistej lokalizacji budynku.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">A</span><h3>Powierzchnia aktywna</h3><p>Pola dostępne po odjęciu stałej zabudowy, przepustów, odpływów i stref wyłączonych przez projekt.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">R</span><h3>Opór podłogi</h3><p>Warstwy nad rurami, planowana okładzina i podkład wpływają na potrzebną temperaturę czynnika.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">T</span><h3>Temperatury pracy</h3><p>Zasilanie i powrót wynikają z wymaganej mocy oraz charakterystyki konkretnego układu.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">V̇</span><h3>Przepływy i opory</h3><p>Każda pętla wymaga przepływu odpowiadającego mocy i sprawdzenia drogi hydraulicznej.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">K</span><h3>Koordynacja konstrukcyjna</h3><p>Rury, mocowanie, przejścia i strefy bez instalacji muszą być zgodne z projektem płyty.</p></article>
      </div>
      <p class="rk-slab-copy">Punkt wyjścia stanowią <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczenia strat cieplnych budynku</a>, poprawna <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/">temperatura projektowa dla lokalizacji</a> oraz rzut z kompletną konstrukcją i instalacjami.</p>
    </section>

    <section class="rk-slab-section rk-slab-section-dark" id="rk-slab-analyzer-section">
      <span class="rk-slab-eyebrow">Główne narzędzie artykułu</span>
      <h2 class="rk-slab-section-title">Analizator: czy instalacja jest gotowa do betonowania?</h2>
      <p class="rk-slab-lead">Odpowiedz na podstawie dokumentów i protokołów, a nie ustnych deklaracji. Wynik nie zatwierdza konstrukcji — pokazuje braki, które trzeba zamknąć przed rozpoczęciem nieodwracalnego etapu.</p>
      <div class="rk-slab-analyzer" id="rk-slab-analyzer">
        <div class="rk-slab-analyzer-head">
          <h3>Kontrola czterech obszarów przed zamówieniem betonu</h3>
          <p>Wybierz „potwierdzone” tylko wtedy, gdy możesz wskazać obliczenie, rysunek, uzgodnienie albo protokół.</p>
        </div>

        <div class="rk-slab-analyzer-stage">
          <div class="rk-slab-stage-head"><span class="rk-slab-stage-number">1</span><div><h4>Projekt cieplny i aktywna powierzchnia</h4><p>Czy wiadomo, ile ciepła ma oddać każde pomieszczenie i z jakiej powierzchni?</p></div></div>
          <div class="rk-slab-fields">
            <label class="rk-slab-field"><span>OZC wykonane osobno dla każdego pomieszczenia</span><select id="rk-slab-ozc"><option value="unknown">Brak danych / nie wiem</option><option value="yes">Potwierdzone w obliczeniach</option><option value="no">Nie wykonano</option></select></label>
            <label class="rk-slab-field"><span>Aktywne pola i wszystkie strefy wyłączone</span><select id="rk-slab-active"><option value="unknown">Nieustalone</option><option value="yes">Pokazane na skoordynowanym rzucie</option><option value="no">Rury mają być układane na budowie „na bieżąco”</option></select></label>
            <label class="rk-slab-field"><span>Moc powierzchni sprawdzona dla układu warstw</span><select id="rk-slab-output"><option value="unknown">Brak obliczenia</option><option value="yes">Sprawdzona dla konstrukcji i okładziny</option><option value="no">Przyjęto wyłącznie typową wartość W/m²</option></select></label>
            <label class="rk-slab-field"><span>Temperatura zasilania wynika z obliczeń</span><select id="rk-slab-temperature"><option value="unknown">Nieustalona</option><option value="yes">Powiązana z mocą i źródłem ciepła</option><option value="no">Przyjęta z góry bez sprawdzenia</option></select></label>
          </div>
        </div>

        <div class="rk-slab-analyzer-stage">
          <div class="rk-slab-stage-head"><span class="rk-slab-stage-number">2</span><div><h4>Konstrukcja i koordynacja międzybranżowa</h4><p>Projekt instalacji nie może samodzielnie rozstrzygać o zbrojeniu, otulinie i dopuszczonych przejściach.</p></div></div>
          <div class="rk-slab-fields">
            <label class="rk-slab-field"><span>Projekt konstrukcyjny płyty jest zakończony</span><select id="rk-slab-structural"><option value="unknown">Brak potwierdzenia</option><option value="yes">Dokumentacja jest dostępna</option><option value="no">Konstrukcja nadal jest zmieniana</option></select></label>
            <label class="rk-slab-field"><span>Położenie i mocowanie rur zaakceptowane konstrukcyjnie</span><select id="rk-slab-position"><option value="unknown">Nie ma pisemnego uzgodnienia</option><option value="yes">Pokazane lub zatwierdzone w dokumentacji</option><option value="no">Wybrał je samodzielnie wykonawca instalacji</option></select></label>
            <label class="rk-slab-field"><span>Przepusty, odpływy, kotwy, ściany i zbrojenie skoordynowane</span><select id="rk-slab-collisions"><option value="unknown">Koordynacja nie jest zakończona</option><option value="yes">Kolizje sprawdzono na wspólnym rzucie</option><option value="no">Branże korzystają z różnych, niespójnych rysunków</option></select></label>
            <label class="rk-slab-field"><span>Zakres odpowiedzialności uczestników jest ustalony</span><select id="rk-slab-roles"><option value="unknown">Nie jest jednoznaczny</option><option value="yes">Wiadomo, kto zatwierdza każdy etap</option><option value="no">Decyzje pozostawiono ekipom na dzień betonowania</option></select></label>
          </div>
        </div>

        <div class="rk-slab-analyzer-stage">
          <div class="rk-slab-stage-head"><span class="rk-slab-stage-number">3</span><div><h4>Hydraulika i konkretny system rur</h4><p>Długość pętli i przepływ muszą zostać ocenione razem, a nie przez jedną granicę metrażu.</p></div></div>
          <div class="rk-slab-fields">
            <label class="rk-slab-field"><span>Średnica, rozstaw i typ rury są określone</span><select id="rk-slab-pipe"><option value="unknown">Nieustalone</option><option value="yes">Wskazane w projekcie i dokumentacji systemu</option><option value="no">Produkt ma zostać wybrany po cenie na budowie</option></select></label>
            <label class="rk-slab-field"><span>Długości, przepływy i straty ciśnienia policzone dla pętli</span><select id="rk-slab-loops"><option value="unknown">Niepoliczone</option><option value="yes">Zestawione dla wszystkich obwodów</option><option value="no">Przyjęto tylko maksymalną długość w metrach</option></select></label>
            <label class="rk-slab-field"><span>Położenie rozdzielacza i dobiegi są na rzucie</span><select id="rk-slab-manifold"><option value="unknown">Nieustalone</option><option value="yes">Uwzględnione w długościach i koordynacji</option><option value="no">Miejsce zostanie wybrane po wykonaniu płyty</option></select></label>
            <label class="rk-slab-field"><span>Karta rury, złączki i wymagania montażowe są dostępne</span><select id="rk-slab-system"><option value="unknown">Brak dokumentów</option><option value="yes">Dokumentacja dotyczy konkretnego typu i wymiaru</option><option value="no">Jest tylko opis handlowy produktu</option></select></label>
          </div>
        </div>

        <div class="rk-slab-analyzer-stage">
          <div class="rk-slab-stage-head"><span class="rk-slab-stage-number">4</span><div><h4>Próba, betonowanie i zapis powykonawczy</h4><p>Kontrola nie kończy się w chwili zamocowania ostatniej pętli.</p></div></div>
          <div class="rk-slab-fields">
            <label class="rk-slab-field"><span>Procedura próby i kryteria odbioru są ustalone</span><select id="rk-slab-test-plan"><option value="unknown">Nieustalone</option><option value="yes">Opisane zgodnie z projektem i systemem</option><option value="no">Próba ma być wykonana bez przyjętej procedury</option></select></label>
            <label class="rk-slab-field"><span>Próba została wykonana i zaprotokołowana</span><select id="rk-slab-test"><option value="unknown">Jeszcze nie wykonano / brak protokołu</option><option value="yes">Wynik zaakceptowano przed betonowaniem</option><option value="no">Betonowanie planowane bez próby</option></select></label>
            <label class="rk-slab-field"><span>Ustalono kontrolę instalacji podczas betonowania</span><select id="rk-slab-monitor"><option value="unknown">Nie ma planu kontroli</option><option value="yes">Wyznaczono osoby, procedurę i reakcję na problem</option><option value="no">Instalacja nie będzie monitorowana</option></select></label>
            <label class="rk-slab-field"><span>Zdjęcia, oznaczenia pętli i rzut powykonawczy</span><select id="rk-slab-asbuilt"><option value="unknown">Nieprzygotowane</option><option value="yes">Zaplanowane lub wykonane przed zakryciem</option><option value="no">Nie będą sporządzane</option></select></label>
          </div>
        </div>

        <div class="rk-slab-analyzer-actions">
          <button class="rk-slab-analyze-button" id="rk-slab-run" type="button">Sprawdź gotowość do betonowania</button>
          <button class="rk-slab-reset-button" id="rk-slab-reset" type="button">Wyczyść odpowiedzi</button>
        </div>

        <div class="rk-slab-result" id="rk-slab-result" aria-live="polite">
          <p class="rk-slab-result-status" id="rk-slab-result-status">Uzupełnij cztery obszary kontroli</p>
          <p class="rk-slab-result-intro" id="rk-slab-result-intro">Wynik rozdzieli elementy potwierdzone, brakujące i krytyczne przed betonowaniem.</p>
          <div class="rk-slab-result-counts" aria-label="Podsumowanie liczby odpowiedzi">
            <div class="rk-slab-result-count"><strong id="rk-slab-ok-count">0</strong><span>potwierdzone</span></div>
            <div class="rk-slab-result-count"><strong id="rk-slab-check-count">0</strong><span>do uzupełnienia</span></div>
            <div class="rk-slab-result-count"><strong id="rk-slab-stop-count">0</strong><span>krytyczne</span></div>
          </div>
          <div class="rk-slab-result-grid">
            <div class="rk-slab-result-column is-ok"><h4>Potwierdzone</h4><ul id="rk-slab-ok-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-slab-result-column is-check"><h4>Do uzupełnienia</h4><ul id="rk-slab-check-list"><li>Uzupełnij formularz na podstawie dokumentów.</li></ul></div>
            <div class="rk-slab-result-column is-stop"><h4>Warunki krytyczne</h4><ul id="rk-slab-stop-list"><li>Brak oceny nie oznacza gotowości do betonowania.</li></ul></div>
          </div>
          <p class="rk-slab-disclaimer">Analizator nie ocenia nośności, zbrojenia, klasy betonu ani geotechniki. Nie zastępuje projektu konstrukcyjnego, projektu instalacji, instrukcji systemu, kierownika budowy ani odbioru robót.</p>
        </div>
      </div>

      <aside class="rk-slab-cta" aria-label="Projekt ogrzewania podłogowego w płycie fundamentowej">
        <div class="rk-slab-cta-title">Analizator może wykryć brakujące dane, ale nie policzy pętli dla konkretnej płyty</div>
        <p>Przed betonowaniem trzeba połączyć obciążenie cieplne każdego pomieszczenia z aktywną powierzchnią, rozstawem, długościami obwodów, przepływami, oporami i położeniem rozdzielacza. Następnie parametry instalacji muszą zostać skoordynowane z projektem konstrukcyjnym płyty.</p>
        <a class="rk-slab-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres projektu podłogówki do płyty</a>
        <small class="rk-slab-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora. Projekt instalacji nie zastępuje projektu konstrukcyjnego płyty fundamentowej.</small>
      </aside>
    </section>

    <section class="rk-slab-section" id="rk-slab-coordination">
      <span class="rk-slab-eyebrow">Modułowa grafika edukacyjna</span>
      <h2 class="rk-slab-section-title">Od gruntu do rozdzielacza — sześć obszarów jednej decyzji</h2>
      <p class="rk-slab-lead">Wybierz obszar, aby zobaczyć jego funkcję, osobę odpowiedzialną i błąd, którego nie wolno ukryć w betonie. Moduł celowo nie pokazuje jednej „wzorcowej” wysokości rury — prawidłowe położenie wynika z konkretnego projektu.</p>
      <div class="rk-slab-modules" aria-labelledby="rk-slab-module-title">
        <p class="rk-slab-module-intro" id="rk-slab-module-title"><strong>Sześć połączonych obszarów:</strong> żadnego nie można oceniać wyłącznie z perspektywy instalatora albo jednego rysunku.</p>
        <div class="rk-slab-module-grid" role="tablist" aria-label="Obszary koordynacji ogrzewanej płyty">
          <button class="rk-slab-module-button" type="button" role="tab" aria-selected="true" data-rk-slab-module="ground"><span>01 · Podłoże</span>Grunt i posadowienie</button>
          <button class="rk-slab-module-button" type="button" role="tab" aria-selected="false" data-rk-slab-module="insulation"><span>02 · Ochrona cieplna</span>Izolacja i krawędź płyty</button>
          <button class="rk-slab-module-button" type="button" role="tab" aria-selected="false" data-rk-slab-module="structure"><span>03 · Nośność</span>Konstrukcja i zbrojenie</button>
          <button class="rk-slab-module-button" type="button" role="tab" aria-selected="false" data-rk-slab-module="pipes"><span>04 · Emisja</span>Rury i aktywne pola</button>
          <button class="rk-slab-module-button" type="button" role="tab" aria-selected="false" data-rk-slab-module="hydraulics"><span>05 · Przepływ</span>Pętle i rozdzielacz</button>
          <button class="rk-slab-module-button" type="button" role="tab" aria-selected="false" data-rk-slab-module="pour"><span>06 · Zamknięcie</span>Próba i betonowanie</button>
        </div>
        <div class="rk-slab-module-panel" role="tabpanel" aria-live="polite">
          <h3 id="rk-slab-module-heading">Grunt i posadowienie</h3>
          <p id="rk-slab-module-summary">Warunki gruntu, wody i przygotowania podłoża wpływają na konstrukcję oraz sposób ograniczenia strat do gruntu.</p>
          <div class="rk-slab-module-facts">
            <div class="rk-slab-module-fact"><strong>Odpowiada</strong><span id="rk-slab-module-owner">projektant konstrukcji i geotechnik</span></div>
            <div class="rk-slab-module-fact"><strong>Dokument</strong><span id="rk-slab-module-document">opinia lub dokumentacja geotechniczna oraz projekt posadowienia</span></div>
            <div class="rk-slab-module-fact"><strong>Nie ukrywaj w betonie</strong><span id="rk-slab-module-risk">niezgodnego podłoża, zmian rzędnych i nieuzgodnionych przejść instalacyjnych</span></div>
          </div>
        </div>
      </div>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-ground">
      <span class="rk-slab-eyebrow">Ciepło nie płynie tylko do pomieszczenia</span>
      <h2 class="rk-slab-section-title">Straty do gruntu, izolacja dolna i krawędź płyty</h2>
      <p class="rk-slab-lead">Podłoga stykająca się z gruntem nie zachowuje się jak ściana zewnętrzna poddana jednej, stałej różnicy temperatur. Znaczenie mają geometria, obwód, zagłębienie, właściwości gruntu, izolacja dolna i obwodowa oraz warunki okresowe.</p>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-card-number">DÓŁ</span><h3>Izolacja pod płytą</h3><p>Jej grubość nie powinna wynikać z katalogowego „standardu systemu”, lecz z projektu cieplnego i konstrukcyjnego całej przegrody.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BRZEG</span><h3>Połączenie ze ścianą</h3><p>Krawędź płyty wymaga ciągłości ochrony cieplnej i rozwiązania detalu zgodnego z konstrukcją, hydroizolacją oraz elewacją.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">GRUNT</span><h3>Model obliczeniowy</h3><p>Strat do gruntu nie określamy przez proste pomnożenie powierzchni, U i różnicy temperatur jak dla ściany.</p></article>
      </div>
      <p class="rk-slab-copy">Wymagania cieplne trzeba powiązać z rozwiązaniem opisanym w projekcie płyty. Uzupełniająco zobacz poradnik o <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/">izolacji pod ogrzewanie podłogowe</a> oraz o <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacji brzegowej i dylatacjach</a>, pamiętając, że detale jastrychu nie są automatycznie detalami płyty nośnej.</p>
    </section>

    <section class="rk-slab-section" id="rk-slab-structure">
      <span class="rk-slab-eyebrow">Nie ma jednej bezpiecznej wysokości dla każdej płyty</span>
      <h2 class="rk-slab-section-title">Gdzie umieścić rury względem zbrojenia i powierzchni podłogi?</h2>
      <p class="rk-slab-lead">Głębokość rur wpływa na drogę przepływu ciepła, czas reakcji i temperaturę wody. Jednocześnie położenie instalacji nie może naruszać wymagań konstrukcyjnych, otuliny ani stref pracy zbrojenia.</p>
      <div class="rk-slab-grid-2">
        <article class="rk-slab-card"><span class="rk-slab-icon">↑</span><h3>Bliżej powierzchni</h3><p>Może skracać drogę przewodzenia do pomieszczenia, ale wymaga potwierdzenia otuliny, warstw wykończeniowych, ochrony rur i dopuszczalnego mocowania.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">↓</span><h3>Głębiej w przekroju</h3><p>Zwiększa masę aktywowaną cieplnie i może zmieniać dynamikę oraz wymagane parametry wody. Nie jest automatycznie bezpieczniejsze ani lepsze.</p></article>
      </div>
      <div class="rk-slab-note rk-slab-note-bad"><p><strong>Nie kopiuj przekroju z internetu.</strong> Rysunek bez informacji o konkretnej konstrukcji, zbrojeniu, obciążeniach i technologii płyty jest ilustracją, a nie detalem wykonawczym.</p></div>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-layout">
      <span class="rk-slab-eyebrow">Najpierw mapa wyłączeń, potem ślimak lub meander</span>
      <h2 class="rk-slab-section-title">Aktywne pola, rozstaw rur i kolizje instalacyjne</h2>
      <p class="rk-slab-lead">Rozstaw 10, 15 albo 20 cm jest wynikiem lokalnej wymaganej mocy i warunków przekazywania ciepła. Nie istnieje jeden „złoty standard” odpowiedni dla całej płyty i każdego pomieszczenia.</p>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-card-number">MOC</span><h3>Obciążenie cieplne</h3><p>Im większa wymagana moc z dostępnego pola, tym dokładniej trzeba sprawdzić rozstaw, temperaturę powierzchni i zasilania.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">POLE</span><h3>Powierzchnia czynna</h3><p>Stałe zabudowy, kominy, przepusty, odpływy, strefy konstrukcyjne i późniejsze mocowania zmniejszają dostępne pole.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">TRASA</span><h3>Geometria pętli</h3><p>Dobiegi, nawroty i przejścia wpływają na długość, rozkład temperatury i możliwość zachowania promienia gięcia.</p></article>
      </div>
      <p class="rk-slab-copy">Szczegółowe kryteria opisują poradniki: <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 czy 15 cm</a>, <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie prowadzić ogrzewania podłogowego</a> oraz <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak zaplanować rozmieszczenie pętli</a>. W płycie fundamentowej wszystkie te decyzje muszą dodatkowo przejść koordynację konstrukcyjną.</p>
    </section>

    <section class="rk-slab-section" id="rk-slab-hydraulics">
      <span class="rk-slab-eyebrow">Metry nie są jedyną granicą</span>
      <h2 class="rk-slab-section-title">Długość pętli, przepływ i opór hydrauliczny</h2>
      <p class="rk-slab-lead">Nie można wyznaczyć bezpiecznej długości pętli z samej średnicy zewnętrznej rury. Potrzebne są także jej rzeczywiste światło, wymagany przepływ, temperatura i rodzaj medium, opory miejscowe oraz dostępny napór dla drogi krytycznej.</p>
      <div class="rk-slab-flow" aria-label="Kolejność obliczeń hydraulicznych">
        <div class="rk-slab-flow-step"><strong>1. Moc pomieszczenia</strong><span>Wynika z OZC i dostępnej powierzchni grzewczej.</span></div>
        <div class="rk-slab-flow-step"><strong>2. Przepływ</strong><span>Wynika z mocy i przyjętej różnicy temperatur wody.</span></div>
        <div class="rk-slab-flow-step"><strong>3. Podział pętli</strong><span>Uwzględnia geometrię, dobiegi, średnicę i równoważenie.</span></div>
        <div class="rk-slab-flow-step"><strong>4. Droga krytyczna</strong><span>Decyduje o wymaganym sprężu pompy i nastawach.</span></div>
      </div>
      <div class="rk-slab-note"><p><strong>100 m nie jest magiczną liczbą z normy.</strong> Dla rury 16 × 2 mm może być użytecznym ograniczeniem projektowym w określonych warunkach, ale konkretna pętla może wymagać krótszego odcinka albo pozwalać na inny wynik po sprawdzeniu hydrauliki.</p></div>
      <p class="rk-slab-copy">Rozwinięcie tematu znajdziesz w poradnikach o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli</a>, skutkach <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">zbyt długiej pętli</a>, <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicach rur</a> oraz <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">doborze pompy obiegowej</a>.</p>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-pipes">
      <span class="rk-slab-eyebrow">Produkt ma być możliwy do zidentyfikowania po latach</span>
      <h2 class="rk-slab-section-title">Jaka rura może zostać zabetonowana w płycie?</h2>
      <p class="rk-slab-lead">Nie wybieramy wyłącznie pomiędzy hasłami PE-X, PE-RT i rurą wielowarstwową. Liczy się konkretny wyrób, jego wymiar, klasa zastosowania, konstrukcja bariery tlenowej, promień gięcia, zgodny system połączeń i instrukcja montażu.</p>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-card-number">DOKUMENT</span><h3>Karta dokładnego produktu</h3><p>Powinna identyfikować typ, wymiar, klasyfikację, warstwy, zakres pracy i zasady montażu.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">SYSTEM</span><h3>Zgodne elementy</h3><p>Rozdzielacz, przyłącza, ewentualne tuleje, narzędzia i procedury muszą pasować do wybranej konstrukcji rury.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">ŚLAD</span><h3>Partia i nadruk</h3><p>Przed zakryciem zapisz oznaczenia oraz partie kręgów przypisane do pętli i zachowaj zdjęcia etykiet.</p></article>
      </div>
      <ul class="rk-slab-bullets"><li>projektuj obwód z jednego odcinka bez planowanych połączeń w polu płyty,</li><li>chroń rurę przed zarysowaniem, załamaniem i kontaktem z ostrymi elementami,</li><li>nie naprawiaj załamania metodą spoza dokumentacji systemu,</li><li>nie zamieniaj produktu tylko dlatego, że ma taki sam zapis 16 × 2 mm.</li></ul>
      <p class="rk-slab-copy">Porównanie materiałów zawiera przewodnik <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rury do ogrzewania podłogowego</a>, a wymagania dotyczące ograniczania przenikania tlenu wyjaśnia artykuł o <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">barierze antydyfuzyjnej EVOH</a>.</p>
    </section>

    <section class="rk-slab-section rk-slab-section-dark" id="rk-slab-pour">
      <span class="rk-slab-eyebrow">Ostatnia kontrola przed nieodwracalnym etapem</span>
      <h2 class="rk-slab-section-title">Próba, ochrona rur i betonowanie płyty</h2>
      <p class="rk-slab-lead">Nie wpisujemy jednego ciśnienia i czasu właściwego dla każdej budowy. Procedura powinna wskazywać medium, ciśnienie, etapy, stabilizację, czas obserwacji, kryteria akceptacji i sposób monitorowania podczas betonowania.</p>
      <div class="rk-slab-grid-4">
        <article class="rk-slab-card"><span class="rk-slab-card-number">1</span><h3>Oględziny</h3><p>Sprawdzenie mocowań, promieni, osłon, opisów, uszkodzeń, kolizji i zgodności tras z rysunkiem.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">2</span><h3>Próba</h3><p>Wykonanie zgodnie z przyjętą procedurą i dokumentacją systemu, z uwzględnieniem temperatury otoczenia.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">3</span><h3>Protokół</h3><p>Zapis medium, ciśnień, czasu, temperatur, przyrządu, wyniku, daty i osób uczestniczących w odbiorze.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">4</span><h3>Nadzór</h3><p>Ustalenie sposobu kontroli pętli podczas betonowania oraz procedury zatrzymania prac przy podejrzeniu uszkodzenia.</p></article>
      </div>
      <div class="rk-slab-note"><p><strong>Woda i sprężone powietrze nie są zamienne bezwarunkowo.</strong> Dobór medium badania musi uwzględniać dokumentację, temperaturę, ryzyko zamarznięcia, bezpieczeństwo pracy i przyjętą procedurę.</p></div>
      <p class="rk-slab-copy">Pełny temat odbioru instalacji przed zakryciem omawia 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-slab-section" id="rk-slab-documentation">
      <span class="rk-slab-eyebrow">Po związaniu betonu najważniejszy jest zapis</span>
      <h2 class="rk-slab-section-title">Dokumentacja powykonawcza i bezpieczne wiercenie</h2>
      <p class="rk-slab-lead">Zdjęcie bez skali nie wystarcza. Dokumentacja powinna pozwalać odtworzyć trasę, przypisać ją do rozdzielacza, zidentyfikować produkt i ocenić bezpieczne miejsca przyszłych mocowań.</p>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-icon">R</span><h3>Rzut powykonawczy</h3><p>Trasy pętli, osie odniesienia, dobiegi, strefy wyłączone, przepusty i oznaczenia obwodów.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">F</span><h3>Fotografie z odniesieniem</h3><p>Zdjęcia pionowe i sytuacyjne wykonane przed betonowaniem, z rozpoznawalnymi punktami i skalą.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-icon">P</span><h3>Protokoły i identyfikacja</h3><p>Próba, partie rur, etykiety, odstępstwa, naprawy, odbiory i osoby odpowiedzialne.</p></article>
      </div>
      <div class="rk-slab-note rk-slab-note-good"><p><strong>Dobra dokumentacja pracuje przez cały okres życia budynku.</strong> Jest potrzebna nie tylko przy awarii, lecz także podczas montażu ścian, schodów, wyspy kuchennej, instalacji sanitarnych i innych elementów kotwionych do podłogi.</p></div>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-control">
      <span class="rk-slab-eyebrow">Duża masa zmienia sposób sterowania</span>
      <h2 class="rk-slab-section-title">Bezwładność, automatyka i współpraca ze źródłem ciepła</h2>
      <p class="rk-slab-lead">Ogrzewana płyta zwykle reaguje wolniej niż lekki system podłogowy. Nie oznacza to, że termostaty są zawsze bezużyteczne, lecz że gwałtowne dobowe obniżenia i agresywne sterowanie włącz–wyłącz mogą być nieskuteczne.</p>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-card-number">POGODA</span><h3>Wyprzedzająca regulacja</h3><p>Krzywa grzewcza dostosowuje temperaturę wody do warunków zewnętrznych zamiast czekać na duży błąd temperatury w pokoju.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">STREFY</span><h3>Ostrożne zamykanie pętli</h3><p>Automatyka musi być skoordynowana z minimalnym przepływem źródła i działaniem pompy, a nie dodana bez analizy.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">ZYSKI</span><h3>Słońce i użytkownicy</h3><p>Duża masa ogranicza szybkie wahania, ale nie usuwa ryzyka przegrzewania pomieszczeń z dużymi przeszkleniami.</p></article>
      </div>
      <p class="rk-slab-copy">Szerzej opisują to poradniki o <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej podłogówki</a>, <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowaniu pogodowym</a> i <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie ogrzewania podłogowego z pompą ciepła</a>.</p>
    </section>

    <section class="rk-slab-section" id="rk-slab-coverings">
      <span class="rk-slab-eyebrow">Wykończenie jest częścią modelu cieplnego</span>
      <h2 class="rk-slab-section-title">Płytki, panele i drewno na ogrzewanej płycie</h2>
      <p class="rk-slab-lead">Ta sama instalacja oddaje inną moc pod gresem i inną pod podłogą drewnianą z podkładem. Okładzinę trzeba określić przed obliczeniem temperatur pracy, a nie dopiero po zabetonowaniu rur.</p>
      <div class="rk-slab-table-wrap">
        <table>
          <thead><tr><th>Wykończenie</th><th>Co sprawdzić?</th><th>Wpływ na projekt</th><th>Ryzyko uproszczenia</th></tr></thead>
          <tbody>
            <tr><td data-label="Wykończenie"><strong>Płytki lub gres</strong></td><td data-label="Sprawdź">Klej, warstwy, dylatacje i dopuszczenie do układu.</td><td data-label="Wpływ">Zwykle stosunkowo mały opór cieplny.</td><td data-label="Ryzyko">Nie rozwiązuje błędnej mocy lub hydrauliki.</td></tr>
            <tr><td data-label="Wykończenie"><strong>Panele</strong></td><td data-label="Sprawdź">Opór panelu i podkładu, limit temperatury oraz instrukcję montażu.</td><td data-label="Wpływ">Może podnieść wymaganą temperaturę wody.</td><td data-label="Ryzyko">Hasło „do podłogówki” bez liczbowych danych produktu.</td></tr>
            <tr><td data-label="Wykończenie"><strong>Drewno</strong></td><td data-label="Sprawdź">Gatunek, grubość, konstrukcję, wilgotność i sposób mocowania.</td><td data-label="Wpływ">Wymaga oceny mocy i warunków materiału.</td><td data-label="Ryzyko">Zmiana wykończenia po wykonaniu obliczeń bez ponownego sprawdzenia.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-slab-copy">Przed wyborem materiału zobacz, jak <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">okładzina wpływa na wydajność ogrzewania</a> oraz jak dobierać <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">drewno do podłogówki</a>.</p>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-failure">
      <span class="rk-slab-eyebrow">Ryzyko można ograniczyć, ale nie wyzerować</span>
      <h2 class="rk-slab-section-title">Co zrobić przy podejrzeniu uszkodzenia rury w płycie?</h2>
      <p class="rk-slab-lead">Spadek ciśnienia nie oznacza automatycznie konieczności rozbierania całej płyty, ale lokalizacja i naprawa w elemencie nośnym nie mogą być prowadzone jak zwykłe kucie jastrychu.</p>
      <div class="rk-slab-flow" aria-label="Postępowanie po wykryciu nieszczelności">
        <div class="rk-slab-flow-step"><strong>1. Zatrzymaj prace</strong><span>Nie zalewaj ani nie kontynuuj użytkowania do czasu ustalenia przyczyny.</span></div>
        <div class="rk-slab-flow-step"><strong>2. Potwierdź obwód</strong><span>Oddziel wpływ armatury, rozdzielacza, temperatury i przyrządu pomiarowego.</span></div>
        <div class="rk-slab-flow-step"><strong>3. Zlokalizuj</strong><span>Dobierz metodę diagnostyczną do stanu budynku i rodzaju wycieku.</span></div>
        <div class="rk-slab-flow-step"><strong>4. Uzgodnij naprawę</strong><span>Zakres odkrycia i przywrócenia konstrukcji zatwierdź przed ingerencją.</span></div>
      </div>
      <div class="rk-slab-note rk-slab-note-bad"><p><strong>Kamera termowizyjna nie daje bezbłędnej lokalizacji w każdych warunkach.</strong> Skuteczność zależy od temperatury, stanu pracy instalacji, głębokości rury, wilgoci, czasu i konstrukcji. Metodę trzeba dobrać do konkretnej sytuacji.</p></div>
    </section>

    <section class="rk-slab-section" id="rk-slab-errors">
      <span class="rk-slab-eyebrow">Błędy, których beton nie naprawi</span>
      <h2 class="rk-slab-section-title">Najczęstsze błędy projektowe i wykonawcze</h2>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 1</span><h3>Jedna wartość W/m² dla całego domu</h3><p>Pomija różne straty pomieszczeń, przeszklenia, wentylację i dostępną powierzchnię czynną.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 2</span><h3>Rozstaw 15 cm wszędzie</h3><p>Może być odpowiedni w części stref, ale nie jest wynikiem bez obliczeń mocy i temperatur.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 3</span><h3>100 m zamiast hydrauliki</h3><p>Limit długości nie zastępuje przepływu, średnicy wewnętrznej, medium i strat ciśnienia.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 4</span><h3>Brak wspólnego rzutu branż</h3><p>Rury kolidują z odpływami, przepustami, kotwami, ścianami albo strefami zbrojenia.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 5</span><h3>Nieuzgodnione mocowanie</h3><p>Sposób „wygodny dla instalatora” nie musi być zgodny z projektem konstrukcyjnym i technologią prac.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 6</span><h3>Zakup rury bez dokumentacji</h3><p>Nazwa materiału i wymiar na etykiecie nie potwierdzają całego zakresu zastosowania.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 7</span><h3>Próba bez procedury</h3><p>Sam odczyt manometru nie stanowi pełnego odbioru, jeżeli nie wiadomo, jak i w jakich warunkach wykonano badanie.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 8</span><h3>Brak nadzoru podczas betonowania</h3><p>Odebrana wcześniej instalacja nadal może zostać uszkodzona przez kolejne prace.</p></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">BŁĄD 9</span><h3>Brak planu powykonawczego</h3><p>Po zakryciu nie wiadomo, gdzie można bezpiecznie wiercić i jak odtworzyć trasę obwodu.</p></article>
      </div>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-checklist">
      <span class="rk-slab-eyebrow">Do podpisania przed przyjazdem gruszki</span>
      <h2 class="rk-slab-section-title">Checklista odbioru ogrzewania w płycie fundamentowej</h2>
      <p class="rk-slab-lead">Poniższa lista nie zastępuje dokumentacji budowy. Pomaga sprawdzić, czy kluczowe decyzje mają właściciela, dokument oraz potwierdzenie wykonania.</p>
      <div class="rk-slab-grid-3">
        <article class="rk-slab-card"><span class="rk-slab-card-number">PROJEKT</span><h3>Przed montażem</h3><ul class="rk-slab-bullets"><li>OZC każdego pomieszczenia,</li><li>aktywne pola i wyłączenia,</li><li>rozstawy oraz podział pętli,</li><li>przepływy i straty ciśnienia,</li><li>uzgodnione położenie rur.</li></ul></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">WYKONANIE</span><h3>Po ułożeniu rur</h3><ul class="rk-slab-bullets"><li>zgodność z rzutem,</li><li>promienie i mocowania,</li><li>osłony oraz przejścia,</li><li>opisy pętli i partie rur,</li><li>brak nieuzgodnionych połączeń.</li></ul></article>
        <article class="rk-slab-card"><span class="rk-slab-card-number">ODBIÓR</span><h3>Przed betonowaniem</h3><ul class="rk-slab-bullets"><li>próba i protokół,</li><li>zdjęcia oraz rzut powykonawczy,</li><li>plan nadzoru podczas prac,</li><li>ustalona reakcja na uszkodzenie,</li><li>akceptacja osób odpowiedzialnych.</li></ul></article>
      </div>
      <div class="rk-slab-note rk-slab-note-good"><p><strong>Praktyczna zasada:</strong> jeżeli odpowiedź na krytyczne pytanie brzmi „ustalimy podczas betonowania”, decyzja jest podejmowana o jeden etap za późno.</p></div>
    </section>

    <section class="rk-slab-section rk-slab-final" id="rk-slab-final">
      <span class="rk-slab-eyebrow">Końcowy krok przed realizacją</span>
      <h2 class="rk-slab-section-title">Projekt instalacji musi być gotowy przed płytą, nie po niej</h2>
      <p class="rk-slab-lead">Dobrze zaprojektowana instalacja określa moc pomieszczeń, aktywne pola, rozstawy, pętle, przepływy, opory i położenie rozdzielacza. Konstruktor może wtedy skoordynować rzeczywiste trasy z płytą, zamiast akceptować instalację rozłożoną intuicyjnie na gotowym zbrojeniu.</p>
      <div class="rk-slab-cta">
        <div class="rk-slab-cta-title">Zanim beton zamknie instalację, zamknij wszystkie decyzje na rysunku</div>
        <p>Indywidualny projekt podłogówki daje wykonawcy jednoznaczny podział pętli, rozstawy, długości, przepływy i nastawy. W przypadku płyty fundamentowej dokumentacja instalacyjna musi zostać przekazana konstruktorowi oraz skoordynowana z technologią wykonania.</p>
        <a class="rk-slab-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-slab-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika. Zakres konstrukcji płyty wymaga odrębnej dokumentacji branżowej.</small>
      </div>
    </section>

    <section class="rk-slab-section" id="rk-slab-sources">
      <span class="rk-slab-eyebrow">Podstawa techniczna</span>
      <h2 class="rk-slab-section-title">Źródła oficjalne i zakres odpowiedzialności</h2>
      <p class="rk-slab-lead">Seria ISO 11855 rozdziela określanie wydajności, projektowanie, analizę dynamiczną, montaż i sterowanie. Obliczenia wymiany ciepła z gruntem wymagają odrębnej metody, a wymagania budowlane należy zawsze sprawdzać w aktualnym oficjalnym tekście przepisów.</p>
      <div class="rk-slab-source-grid">
        <article class="rk-slab-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wydajność systemów płaszczyznowych</a><p>Oficjalna karta metod określania strumienia ciepła oraz temperatur powierzchni dla wodnych systemów wbudowanych.</p></article>
        <article class="rk-slab-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a><p>Oficjalna karta metody projektowania i wymiarowania systemów ogrzewania oraz chłodzenia płaszczyznowego.</p></article>
        <article class="rk-slab-source-card"><a href="https://www.iso.org/standard/74686.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-4:2021 — dynamiczna praca systemów TABS</a><p>Oficjalna karta obliczeń dynamicznej mocy systemów aktywujących cieplnie konstrukcję budynku.</p></article>
        <article class="rk-slab-source-card"><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-5:2021 — wymagania instalacyjne</a><p>Oficjalna karta wymagań dotyczących instalowania wodnych systemów ogrzewania i chłodzenia wbudowanych w przegrody.</p></article>
        <article class="rk-slab-source-card"><a href="https://www.iso.org/standard/64999.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-6:2018 — sterowanie</a><p>Oficjalna karta części dotyczącej kontroli i automatyki systemów ogrzewania oraz chłodzenia płaszczyznowego.</p></article>
        <article class="rk-slab-source-card"><a href="https://www.iso.org/standard/65716.html" target="_blank" rel="nofollow noopener noreferrer">ISO 13370:2017 — wymiana ciepła z gruntem</a><p>Oficjalna karta metod obliczania współczynników i strumieni ciepła dla przegród stykających się z gruntem.</p></article>
        <article class="rk-slab-source-card"><a href="https://eli.gov.pl/eli/DU/2022/1225/ogl" target="_blank" rel="nofollow noopener noreferrer">Warunki Techniczne — oficjalny tekst w ELI</a><p>Oficjalna karta tekstu jednolitego wraz z informacją o późniejszych aktach zmieniających.</p></article>
        <article class="rk-slab-source-card"><a href="https://www.iso.org/cms/live/live/en/sites/isoorg/contents/data/committee/05/47/54740/x/catalogue/" target="_blank" rel="nofollow noopener noreferrer">ISO/TC 205 — katalog aktualnych dokumentów</a><p>Oficjalny katalog serii ISO 11855 i dokumentów związanych z projektowaniem środowiska wewnętrznego budynków.</p></article>
      </div>
      <div class="rk-slab-responsibility"><p><strong>Zakres poradnika:</strong> treść pomaga inwestorowi rozpoznać dane, uzgodnienia i odbiory potrzebne przed betonowaniem. Nie jest projektem konstrukcji, opinią geotechniczną, projektem instalacji dla konkretnego budynku, instrukcją systemu, specyfikacją betonu ani zgodą na rozpoczęcie robót.</p></div>
    </section>

    <section class="rk-slab-section rk-slab-section-soft" id="rk-slab-faq">
      <span class="rk-slab-eyebrow">Pytania inwestorów, projektantów i wykonawców</span>
      <h2 class="rk-slab-section-title">FAQ — ogrzewanie podłogowe w płycie fundamentowej</h2>
      <div class="rk-slab-faq">
        <details><summary>Czym ogrzewanie w płycie fundamentowej różni się od podłogówki w jastrychu?</summary><div class="rk-slab-faq-answer"><p>W pierwszym rozwiązaniu rury współpracują z masą elementu konstrukcyjnego albo z układem bezpośrednio z nim związanym. W tradycyjnym systemie znajdują się w oddzielnej warstwie podłogowej nad konstrukcją. Zmienia to koordynację, dynamikę cieplną, naprawę i zakres odpowiedzialności.</p></div></details>
        <details><summary>Czy wolno umieścić rury grzewcze w nośnej płycie fundamentowej?</summary><div class="rk-slab-faq-answer"><p>Takie rozwiązanie jest możliwe, jeżeli zostało przewidziane i skoordynowane w dokumentacji. Projektant instalacji określa parametry cieplne i hydrauliczne, a konstruktor musi zaakceptować położenie, mocowanie, przejścia oraz wpływ instalacji na detal płyty.</p></div></details>
        <details><summary>Na jakiej głębokości powinny znajdować się rury?</summary><div class="rk-slab-faq-answer"><p>Nie ma jednej prawidłowej głębokości dla każdej płyty. Położenie wpływa na drogę przewodzenia ciepła i bezwładność, a równocześnie musi spełniać wymagania konstrukcyjne, otuliny i technologii wykonania. Powinno być pokazane lub zatwierdzone w dokumentacji konkretnego budynku.</p></div></details>
        <details><summary>Czy rury można mocować bezpośrednio do zbrojenia?</summary><div class="rk-slab-faq-answer"><p>Sposób mocowania musi być zaakceptowany dla konkretnej konstrukcji i systemu rury. Nie należy przyjmować, że rozwiązanie wygodne wykonawczo jest automatycznie dopuszczone przez projektanta konstrukcji.</p></div></details>
        <details><summary>Jaki rozstaw rur zastosować: 10, 15 czy 20 cm?</summary><div class="rk-slab-faq-answer"><p>Rozstaw wynika z wymaganej mocy pomieszczenia, aktywnej powierzchni, położenia rur, okładziny i temperatury wody. Żadna z tych wartości nie jest uniwersalnym standardem dla całego budynku.</p></div></details>
        <details><summary>Czy pętla rury 16 × 2 mm może mieć dokładnie 100 m?</summary><div class="rk-slab-faq-answer"><p>Około 100 m bywa przyjmowane jako ograniczenie robocze, ale nie zastępuje obliczenia. Dopuszczalna długość zależy od rzeczywistego światła rury, przepływu, medium, oporów miejscowych, różnicy temperatur i dostępnego naporu pompy.</p></div></details>
        <details><summary>Czy gęstszy rozstaw zawsze zwiększa opory hydrauliczne?</summary><div class="rk-slab-faq-answer"><p>Sam rozstaw nie jest oporem pętli. Gęstsze ułożenie zwiększa ilość rury potrzebnej na metr kwadratowy, lecz projektant może podzielić powierzchnię na większą liczbę krótszych obwodów. O wyniku decyduje kompletna geometria, przepływy i średnice.</p></div></details>
        <details><summary>Jaka rura jest najlepsza do płyty fundamentowej?</summary><div class="rk-slab-faq-answer"><p>Nie da się wskazać najlepszego materiału wyłącznie po nazwie PE-X, PE-RT lub rura wielowarstwowa. Trzeba zweryfikować konkretny wyrób: wymiar, klasę zastosowania, barierę tlenową, promień gięcia, dokumentację i zgodność z systemem połączeń.</p></div></details>
        <details><summary>Czy wszystkie pętle trzeba wykonać bez połączeń?</summary><div class="rk-slab-faq-answer"><p>Pętle należy projektować z jednego odcinka bez planowanych połączeń w polu płyty. Jeżeli dojdzie do uszkodzenia, sposób ewentualnej naprawy musi wynikać z dokumentacji systemu i zostać uzgodniony przed zakryciem.</p></div></details>
        <details><summary>Jakie ciśnienie zastosować podczas próby?</summary><div class="rk-slab-faq-answer"><p>Nie należy przyjmować jednej wartości dla każdej instalacji. Ciśnienie, medium, czas, stabilizacja i kryteria odbioru muszą wynikać z projektu, dokumentacji systemu, warunków budowy i przyjętej procedury.</p></div></details>
        <details><summary>Czy próbę wykonywać wodą czy sprężonym powietrzem?</summary><div class="rk-slab-faq-answer"><p>Wybór zależy od procedury, dokumentacji, temperatury i bezpieczeństwa. Próba gazem wymaga szczególnej ostrożności ze względu na energię zgromadzoną w sprężonym medium. Woda może być niewłaściwa, jeżeli instalacji grozi zamarznięcie przed uruchomieniem.</p></div></details>
        <details><summary>Czy rury powinny pozostawać pod ciśnieniem podczas betonowania?</summary><div class="rk-slab-faq-answer"><p>Sposób monitorowania podczas betonowania należy ustalić w procedurze wykonawczej i dokumentacji systemu. Istotne jest nie tylko ciśnienie, lecz także dostępny manometr, odpowiedzialna osoba i zdefiniowana reakcja na zmianę wskazania.</p></div></details>
        <details><summary>Ile czasu nagrzewa się ogrzewana płyta?</summary><div class="rk-slab-faq-answer"><p>Nie ma jednego czasu 24 lub 48 godzin dla każdej konstrukcji. Zależy on od masy aktywowanej cieplnie, położenia rur, mocy źródła, temperatury początkowej, izolacji i warstw wykończeniowych. Duża płyta reaguje wolniej niż lekki system, ale dokładny czas wymaga modelu lub pomiaru.</p></div></details>
        <details><summary>Czy przy tak dużej bezwładności termostaty są niepotrzebne?</summary><div class="rk-slab-faq-answer"><p>Nie można tego stwierdzić kategorycznie. Bezwładność ogranicza skuteczność szybkich zmian i głębokich obniżeń dobowych, lecz czujniki, ograniczenia temperatur, regulacja strefowa i sterowanie pogodowe nadal mogą pełnić określone funkcje.</p></div></details>
        <details><summary>Czy ogrzewana płyta dobrze współpracuje z pompą ciepła?</summary><div class="rk-slab-faq-answer"><p>Może tworzyć korzystny układ niskotemperaturowy, jeżeli powierzchnia pokrywa obciążenie budynku przy rozsądnej temperaturze wody, a przepływy i sterowanie są zgodne z wymaganiami pompy ciepła. Sama masa płyty nie gwarantuje wysokiego SCOP.</p></div></details>
        <details><summary>Czy na ogrzewanej płycie można ułożyć panele albo drewno?</summary><div class="rk-slab-faq-answer"><p>Tak, jeżeli konkretna okładzina i podkład są dopuszczone do ogrzewania podłogowego, a ich opór i ograniczenia temperaturowe zostały uwzględnione w obliczeniu mocy. Zmiana okładziny po wykonaniu projektu wymaga ponownego sprawdzenia.</p></div></details>
        <details><summary>Jak bezpiecznie wiercić w podłodze po zakończeniu budowy?</summary><div class="rk-slab-faq-answer"><p>Podstawą jest rzut powykonawczy uzupełniony zdjęciami z odniesieniem do trwałych punktów budynku. Przed ingerencją trzeba uwzględnić nie tylko rury grzewcze, ale także zbrojenie, inne instalacje i wymagania konstrukcyjne.</p></div></details>
        <details><summary>Czy uszkodzoną rurę w płycie można naprawić?</summary><div class="rk-slab-faq-answer"><p>Może być możliwa naprawa punktowa, ale jej zakres zależy od lokalizacji, systemu rury i konstrukcji. Przed kuciem należy potwierdzić miejsce uszkodzenia, uzgodnić dopuszczalną ingerencję z konstruktorem i zastosować rozwiązanie przewidziane przez dokumentację systemu.</p></div></details>
      </div>
    </section>

    <section class="rk-slab-author" id="rk-slab-author">
      <div class="rk-slab-author-card">
        <div class="rk-slab-author-head">
          <div>
            <span class="rk-slab-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
            <h2 class="rk-slab-author-title">Autor i weryfikacja merytoryczna</h2>
            <p>Treść przygotowana z perspektywy obciążeń cieplnych, hydrauliki instalacji, parametrów źródła oraz ryzyka decyzji zamykanych w elemencie konstrukcyjnym.</p>
          </div>
          <div class="rk-slab-author-update">Aktualizacja: 16.09.2026</div>
        </div>
        <div class="rk-slab-author-layout">
          <aside class="rk-slab-author-side">
            <div class="rk-slab-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i autor poradnika" width="400" height="400" loading="lazy" decoding="async"></div>
            <div class="rk-slab-author-name">Robert Kucharski</div>
            <p class="rk-slab-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
            <span class="rk-slab-author-social-label">Profile branżowe</span>
            <div class="rk-slab-author-social" aria-label="Profile autora">
              <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
            </div>
          </aside>
          <div class="rk-slab-author-main">
            <blockquote class="rk-slab-author-quote">Moim zdaniem ogrzewanie w płycie fundamentowej nie jest trudne dlatego, że wymaga innej rury. Jest trudne dlatego, że wszystkie decyzje cieplne, hydrauliczne i konstrukcyjne trzeba zamknąć przed pierwszym betonowaniem.</blockquote>
            <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W poradnikach rozdziela wartości orientacyjne od parametrów, które muszą zostać policzone dla konkretnego budynku.</p>
            <p>Przy aktualizacji materiału usunięto uniwersalne limity rozstawu, długości, temperatury, ciśnienia i zwrotu z inwestycji. Zastąpiono je procedurą kontroli dokumentacji, koordynacji branżowej i odbioru przed betonowaniem.</p>
            <p><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-slab-author-facts">
              <div class="rk-slab-author-fact"><strong>Praktyka projektowa</strong>OZC, podział pętli, przepływy, opory i współpraca podłogówki ze źródłem ciepła</div>
              <div class="rk-slab-author-fact"><strong>Metoda</strong>jawne założenia, dokumentacja wyrobu, koordynacja i kontrola przed zakryciem</div>
              <div class="rk-slab-author-fact"><strong>Zakres aktualizacji</strong>moc, hydraulika, instalacja w elemencie nośnym, odbiór i ograniczenia poradnika</div>
            </div>
            <div class="rk-slab-author-portals"><strong>Portale autora</strong><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>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": ["https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": ["ogrzewanie podłogowe", "płyty fundamentowe z ogrzewaniem", "projektowe obciążenie cieplne", "hydraulika instalacji grzewczych", "pompy ciepła", "równoważenie hydrauliczne"],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": ["https://www.linkedin.com/in/robert-kucharski-b8b906199/", "https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Ogrzewanie-podlogowe-w-plycie-fundamentowej.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Ogrzewanie-podlogowe-w-plycie-fundamentowej.webp",
      "width": 1200,
      "height": 1200,
      "caption": "Ogrzewanie podłogowe w płycie fundamentowej"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Poradniki", "item": "https://projekt-ogrzewania.pl/blog/" },
        { "@type": "ListItem", "position": 3, "name": "Ogrzewanie podłogowe w płycie fundamentowej", "item": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#webpage",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/",
      "name": "Ogrzewanie podłogowe w płycie fundamentowej – projekt i montaż",
      "description": "Techniczny poradnik projektowania ogrzewania w płycie fundamentowej: OZC, położenie rur, pętle, izolacja, próba i betonowanie.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#primaryimage" },
      "datePublished": "2026-06-28T16:13:31+00:00",
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#webpage" },
      "headline": "Ogrzewanie podłogowe w płycie fundamentowej – projekt i montaż",
      "description": "Kompletny poradnik koordynacji cieplnej, hydraulicznej, konstrukcyjnej i wykonawczej ogrzewania podłogowego zatopionego w płycie fundamentowej.",
      "image": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2026-06-28T16:13:31+00:00",
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": ["ogrzewanie podłogowe w płycie fundamentowej", "płyta grzewcza", "OZC", "hydraulika pętli", "izolacja od gruntu", "próba ciśnieniowa", "betonowanie płyty"],
      "keywords": "ogrzewanie podłogowe w płycie fundamentowej, płyta fundamentowa z ogrzewaniem, rury w płycie, rozstaw rur, próba ciśnieniowa, projekt płyty grzewczej",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#coordination-list" },
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#analyzer",
      "name": "Analizator gotowości ogrzewania w płycie do betonowania",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#rk-slab-analyzer-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie edukacyjne sprawdzające kompletność danych cieplnych, konstrukcyjnych, hydraulicznych i odbiorowych przed betonowaniem płyty fundamentowej."
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#coordination-list",
      "name": "Sześć obszarów koordynacji ogrzewanej płyty fundamentowej",
      "numberOfItems": 6,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Grunt i posadowienie" },
        { "@type": "ListItem", "position": 2, "name": "Izolacja i krawędź płyty" },
        { "@type": "ListItem", "position": 3, "name": "Konstrukcja i zbrojenie" },
        { "@type": "ListItem", "position": 4, "name": "Rury i aktywne pola" },
        { "@type": "ListItem", "position": 5, "name": "Pętle i rozdzielacz" },
        { "@type": "ListItem", "position": 6, "name": "Próba i betonowanie" }
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#howto",
      "name": "Jak przygotować ogrzewanie w płycie fundamentowej do betonowania",
      "description": "Procedura kontroli projektu, wykonania, próby i dokumentacji przed zabetonowaniem pętli grzewczych.",
      "totalTime": "P30D",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Oblicz obciążenie cieplne", "text": "Określ projektowe straty ciepła osobno dla każdego pomieszczenia." },
        { "@type": "HowToStep", "position": 2, "name": "Wyznacz aktywne pola", "text": "Ustal powierzchnie dostępne po uwzględnieniu kolizji i stref wyłączonych." },
        { "@type": "HowToStep", "position": 3, "name": "Dobierz parametry cieplne", "text": "Sprawdź rozstaw, moc powierzchni i temperatury dla konstrukcji oraz okładziny." },
        { "@type": "HowToStep", "position": 4, "name": "Policz hydraulikę", "text": "Wyznacz pętle, długości, przepływy, straty ciśnienia i drogę krytyczną." },
        { "@type": "HowToStep", "position": 5, "name": "Skoordynuj konstrukcję", "text": "Uzgodnij położenie rur, mocowanie, zbrojenie, przepusty i strefy kolizji." },
        { "@type": "HowToStep", "position": 6, "name": "Zweryfikuj system rury", "text": "Sprawdź kartę, wymiar, barierę, promień gięcia i zgodne elementy systemu." },
        { "@type": "HowToStep", "position": 7, "name": "Odbierz wykonanie", "text": "Porównaj trasy, mocowania, oznaczenia i ochronę rur z dokumentacją." },
        { "@type": "HowToStep", "position": 8, "name": "Wykonaj próbę", "text": "Przeprowadź badanie według ustalonej procedury i sporządź protokół." },
        { "@type": "HowToStep", "position": 9, "name": "Udokumentuj pętle", "text": "Wykonaj rzut powykonawczy, zdjęcia i zapisz partie materiału." },
        { "@type": "HowToStep", "position": 10, "name": "Kontroluj betonowanie", "text": "Monitoruj instalację i stosuj uzgodnioną procedurę reakcji na uszkodzenie." }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projekt ogrzewania podłogowego",
      "description": "Projekt instalacji obejmujący obciążenia cieplne, rozstawy, podział pętli, długości, przepływy, opory i nastawy."
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Czym ogrzewanie w płycie fundamentowej różni się od podłogówki w jastrychu?", "acceptedAnswer": { "@type": "Answer", "text": "W pierwszym rozwiązaniu rury współpracują z masą elementu konstrukcyjnego albo z układem bezpośrednio z nim związanym. W tradycyjnym systemie znajdują się w oddzielnej warstwie podłogowej nad konstrukcją. Zmienia to koordynację, dynamikę cieplną, naprawę i zakres odpowiedzialności." } },
        { "@type": "Question", "name": "Czy wolno umieścić rury grzewcze w nośnej płycie fundamentowej?", "acceptedAnswer": { "@type": "Answer", "text": "Takie rozwiązanie jest możliwe, jeżeli zostało przewidziane i skoordynowane w dokumentacji. Konstruktor musi zaakceptować położenie, mocowanie i przejścia, a projektant instalacji określa parametry cieplne oraz hydrauliczne." } },
        { "@type": "Question", "name": "Na jakiej głębokości powinny znajdować się rury?", "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednej prawidłowej głębokości dla każdej płyty. Położenie wpływa na przewodzenie i bezwładność, a równocześnie musi spełniać wymagania konstrukcyjne, otuliny i technologii wykonania." } },
        { "@type": "Question", "name": "Czy rury można mocować bezpośrednio do zbrojenia?", "acceptedAnswer": { "@type": "Answer", "text": "Sposób mocowania musi być zaakceptowany dla konkretnej konstrukcji i systemu rury. Rozwiązanie wygodne wykonawczo nie jest automatycznie dopuszczone przez projektanta konstrukcji." } },
        { "@type": "Question", "name": "Jaki rozstaw rur zastosować: 10, 15 czy 20 cm?", "acceptedAnswer": { "@type": "Answer", "text": "Rozstaw wynika z wymaganej mocy pomieszczenia, aktywnej powierzchni, położenia rur, okładziny i temperatury wody. Żadna wartość nie jest uniwersalnym standardem dla całego budynku." } },
        { "@type": "Question", "name": "Czy pętla rury 16 × 2 mm może mieć dokładnie 100 m?", "acceptedAnswer": { "@type": "Answer", "text": "Około 100 m bywa ograniczeniem roboczym, ale nie zastępuje obliczenia. Dopuszczalna długość zależy od światła rury, przepływu, medium, oporów i dostępnego naporu pompy." } },
        { "@type": "Question", "name": "Czy gęstszy rozstaw zawsze zwiększa opory hydrauliczne?", "acceptedAnswer": { "@type": "Answer", "text": "Sam rozstaw nie jest oporem pętli. Gęstsze ułożenie zwiększa ilość rury na metr kwadratowy, ale powierzchnię można podzielić na większą liczbę krótszych obwodów. Decyduje kompletna geometria, przepływy i średnice." } },
        { "@type": "Question", "name": "Jaka rura jest najlepsza do płyty fundamentowej?", "acceptedAnswer": { "@type": "Answer", "text": "Nie da się wskazać najlepszego materiału wyłącznie po nazwie PE-X, PE-RT lub rura wielowarstwowa. Trzeba sprawdzić konkretny wyrób, wymiar, klasę, barierę tlenową, promień gięcia i dokumentację." } },
        { "@type": "Question", "name": "Czy wszystkie pętle trzeba wykonać bez połączeń?", "acceptedAnswer": { "@type": "Answer", "text": "Pętle należy projektować z jednego odcinka bez planowanych połączeń w polu płyty. Sposób ewentualnej naprawy musi wynikać z dokumentacji systemu i zostać uzgodniony przed zakryciem." } },
        { "@type": "Question", "name": "Jakie ciśnienie zastosować podczas próby?", "acceptedAnswer": { "@type": "Answer", "text": "Nie należy przyjmować jednej wartości dla każdej instalacji. Ciśnienie, medium, czas i kryteria odbioru muszą wynikać z projektu, dokumentacji systemu, warunków budowy i procedury." } },
        { "@type": "Question", "name": "Czy próbę wykonywać wodą czy sprężonym powietrzem?", "acceptedAnswer": { "@type": "Answer", "text": "Wybór zależy od procedury, dokumentacji, temperatury i bezpieczeństwa. Próba gazem wymaga szczególnej ostrożności, a woda może być niewłaściwa przy ryzyku zamarznięcia." } },
        { "@type": "Question", "name": "Czy rury powinny pozostawać pod ciśnieniem podczas betonowania?", "acceptedAnswer": { "@type": "Answer", "text": "Sposób monitorowania należy ustalić w procedurze wykonawczej i dokumentacji systemu. Potrzebne są przyrząd, osoba odpowiedzialna i zdefiniowana reakcja na zmianę wskazania." } },
        { "@type": "Question", "name": "Ile czasu nagrzewa się ogrzewana płyta?", "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednego czasu dla każdej konstrukcji. Zależy on od masy, położenia rur, mocy źródła, temperatury początkowej, izolacji i wykończenia." } },
        { "@type": "Question", "name": "Czy przy dużej bezwładności termostaty są niepotrzebne?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można tego stwierdzić kategorycznie. Bezwładność ogranicza skuteczność szybkich zmian, ale czujniki, ograniczenia, regulacja strefowa i sterowanie pogodowe nadal mogą pełnić określone funkcje." } },
        { "@type": "Question", "name": "Czy ogrzewana płyta dobrze współpracuje z pompą ciepła?", "acceptedAnswer": { "@type": "Answer", "text": "Może tworzyć korzystny układ niskotemperaturowy, jeżeli powierzchnia pokrywa obciążenie przy rozsądnej temperaturze wody, a przepływy i sterowanie są zgodne z wymaganiami pompy." } },
        { "@type": "Question", "name": "Czy na ogrzewanej płycie można ułożyć panele albo drewno?", "acceptedAnswer": { "@type": "Answer", "text": "Tak, jeżeli okładzina i podkład są dopuszczone do ogrzewania podłogowego, a ich opór i ograniczenia temperaturowe uwzględniono w obliczeniu mocy." } },
        { "@type": "Question", "name": "Jak bezpiecznie wiercić w podłodze po zakończeniu budowy?", "acceptedAnswer": { "@type": "Answer", "text": "Podstawą jest rzut powykonawczy i zdjęcia odniesione do trwałych punktów. Przed ingerencją trzeba uwzględnić rury, zbrojenie, inne instalacje i wymagania konstrukcyjne." } },
        { "@type": "Question", "name": "Czy uszkodzoną rurę w płycie można naprawić?", "acceptedAnswer": { "@type": "Answer", "text": "Naprawa punktowa może być możliwa, ale zakres zależy od lokalizacji, systemu rury i konstrukcji. Przed kuciem trzeba zlokalizować uszkodzenie, uzgodnić ingerencję z konstruktorem i zastosować rozwiązanie systemowe." } }
      ]
    }
  ]
}
</script>

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

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

  var modules = {
    ground: {
      title: "Grunt i posadowienie",
      summary: "Warunki gruntu, wody i przygotowania podłoża wpływają na konstrukcję oraz sposób ograniczenia strat do gruntu.",
      owner: "projektant konstrukcji i geotechnik",
      document: "opinia lub dokumentacja geotechniczna oraz projekt posadowienia",
      risk: "niezgodnego podłoża, zmian rzędnych i nieuzgodnionych przejść instalacyjnych"
    },
    insulation: {
      title: "Izolacja i krawędź płyty",
      summary: "Ochrona dolna i obwodowa ogranicza straty, ale musi być spójna z geometrią, hydroizolacją oraz obciążeniami konstrukcji.",
      owner: "projektant konstrukcji i osoba wykonująca obliczenia cieplne",
      document: "detale warstw, krawędzi, ciągłości izolacji i przenikania ciepła do gruntu",
      risk: "przerw izolacji, przypadkowych zamian materiału i mostków na obwodzie płyty"
    },
    structure: {
      title: "Konstrukcja i zbrojenie",
      summary: "Położenie rur nie może kolidować ze zbrojeniem, otuliną, kotwami, strefami obciążeń ani technologią wykonywania płyty.",
      owner: "projektant konstrukcji oraz kierownik budowy",
      document: "projekt płyty i pisemne uzgodnienie sposobu prowadzenia oraz mocowania instalacji",
      risk: "samodzielnych zmian zbrojenia, otuliny, przejść i wysokości prowadzenia rur"
    },
    pipes: {
      title: "Rury i aktywne pola",
      summary: "Trasy wynikają z mocy pomieszczeń, powierzchni czynnej, kolizji i warunków montażu konkretnego systemu rury.",
      owner: "projektant instalacji, konstruktor i wykonawca",
      document: "rzut pętli, zestawienie rozstawów oraz karta techniczna wybranego wyrobu",
      risk: "układania na oko, zbyt małych promieni, uszkodzeń warstw i nieuzgodnionych połączeń"
    },
    hydraulics: {
      title: "Pętle i rozdzielacz",
      summary: "Każdy obwód potrzebuje obliczonego przepływu, straty ciśnienia i rzeczywistej długości razem z dobiegiem.",
      owner: "projektant instalacji grzewczej",
      document: "zestawienie pętli, przepływów, oporów, nastaw oraz punktu pracy pompy",
      risk: "jednego limitu metrów zamiast obliczeń i rozdzielacza wybieranego po wykonaniu płyty"
    },
    pour: {
      title: "Próba i betonowanie",
      summary: "Odbiór przed zakryciem oraz nadzór podczas prac ograniczają ryzyko pozostawienia niewykrytego uszkodzenia w gotowej płycie.",
      owner: "wykonawca, kierownik budowy i osoby wskazane w procedurze odbioru",
      document: "procedura próby, protokół, rzut powykonawczy, zdjęcia i plan kontroli betonowania",
      risk: "betonowania bez odbioru, bez obserwacji instalacji i bez reakcji na zmianę ciśnienia"
    }
  };

  var moduleButtons = guide.querySelectorAll("[data-rk-slab-module]");
  var moduleHeading = document.getElementById("rk-slab-module-heading");
  var moduleSummary = document.getElementById("rk-slab-module-summary");
  var moduleOwner = document.getElementById("rk-slab-module-owner");
  var moduleDocument = document.getElementById("rk-slab-module-document");
  var moduleRisk = document.getElementById("rk-slab-module-risk");

  function showModule(key) {
    var data = modules[key];
    if (!data) {
      return;
    }
    moduleHeading.textContent = data.title;
    moduleSummary.textContent = data.summary;
    moduleOwner.textContent = data.owner;
    moduleDocument.textContent = data.document;
    moduleRisk.textContent = data.risk;
    moduleButtons.forEach(function (button) {
      var active = button.getAttribute("data-rk-slab-module") === key;
      button.setAttribute("aria-selected", active ? "true" : "false");
    });
  }

  moduleButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      showModule(button.getAttribute("data-rk-slab-module"));
    });
  });

  var checks = [
    { id: "rk-slab-ozc", yes: "OZC pomieszczeń jest udokumentowane.", unknown: "Uzupełnij obciążenie cieplne każdego pomieszczenia.", no: "Brak OZC — nie ma podstawy do doboru mocy i rozstawu.", critical: true },
    { id: "rk-slab-active", yes: "Aktywne pola i wyłączenia są pokazane na rzucie.", unknown: "Wyznacz aktywne pola i wszystkie strefy wyłączone.", no: "Trasy mają powstać bez skoordynowanego rzutu aktywnych pól.", critical: true },
    { id: "rk-slab-output", yes: "Moc powierzchni sprawdzono dla warstw podłogi.", unknown: "Sprawdź moc powierzchni dla konstrukcji i okładziny.", no: "Typowa wartość W/m² zastępuje obliczenie rzeczywistego układu.", critical: true },
    { id: "rk-slab-temperature", yes: "Temperatura zasilania jest powiązana z mocą i źródłem.", unknown: "Wyznacz temperatury pracy z obliczeń.", no: "Temperaturę zasilania przyjęto bez sprawdzenia wymaganej mocy.", critical: false },
    { id: "rk-slab-structural", yes: "Projekt konstrukcyjny płyty jest dostępny.", unknown: "Potwierdź zakończenie projektu konstrukcyjnego.", no: "Konstrukcja nadal się zmienia — instalacji nie należy zamykać w betonie.", critical: true },
    { id: "rk-slab-position", yes: "Położenie i mocowanie rur uzgodniono konstrukcyjnie.", unknown: "Uzyskaj jednoznaczne uzgodnienie położenia oraz mocowania rur.", no: "Położenie rur wybrano bez akceptacji konstrukcyjnej.", critical: true },
    { id: "rk-slab-collisions", yes: "Kolizje międzybranżowe zostały sprawdzone.", unknown: "Zakończ koordynację przepustów, odpływów, kotew, ścian i zbrojenia.", no: "Niespójne rysunki branż tworzą wysokie ryzyko kolizji w płycie.", critical: true },
    { id: "rk-slab-roles", yes: "Zakres odpowiedzialności jest jednoznaczny.", unknown: "Wskaż osoby zatwierdzające instalację, konstrukcję, próbę i betonowanie.", no: "Krytyczne decyzje pozostawiono ekipom na dzień betonowania.", critical: true },
    { id: "rk-slab-pipe", yes: "Rura, średnica i rozstaw są określone w dokumentacji.", unknown: "Wskaż konkretny typ, wymiar i rozstaw rur.", no: "Produkt ma być dobrany na budowie bez odniesienia do projektu.", critical: true },
    { id: "rk-slab-loops", yes: "Długości, przepływy i opory wszystkich pętli są policzone.", unknown: "Oblicz hydraulikę wszystkich obwodów.", no: "Sam limit długości zastępuje obliczenia przepływów i oporów.", critical: true },
    { id: "rk-slab-manifold", yes: "Rozdzielacz i dobiegi są uwzględnione na rzucie.", unknown: "Ustal rozdzielacz i rzeczywiste długości dobiegów.", no: "Miejsce rozdzielacza ma zostać wybrane po wykonaniu płyty.", critical: true },
    { id: "rk-slab-system", yes: "Dostępna jest dokumentacja konkretnej rury i systemu.", unknown: "Pozyskaj kartę, instrukcję i listę zgodnych elementów.", no: "Opis handlowy zastępuje dokumentację techniczną produktu.", critical: true },
    { id: "rk-slab-test-plan", yes: "Procedura próby i kryteria odbioru są określone.", unknown: "Ustal medium, ciśnienie, czas, temperaturę i kryteria próby.", no: "Próba ma być wykonana bez zdefiniowanej procedury.", critical: true },
    { id: "rk-slab-test", yes: "Próba została wykonana i zaprotokołowana.", unknown: "Wykonaj próbę i odbiór przed betonowaniem.", no: "Betonowanie bez próby jest warunkiem krytycznym.", critical: true },
    { id: "rk-slab-monitor", yes: "Kontrola instalacji podczas betonowania jest zaplanowana.", unknown: "Wyznacz kontrolę i reakcję na podejrzenie uszkodzenia.", no: "Instalacja ma zostać zabetonowana bez monitorowania.", critical: true },
    { id: "rk-slab-asbuilt", yes: "Dokumentacja powykonawcza jest przygotowana.", unknown: "Przygotuj zdjęcia, rzut, oznaczenia i zapis partii rur.", no: "Po zakryciu nie będzie wiarygodnego zapisu tras i materiałów.", critical: false }
  ];

  function valueOf(id) {
    var field = document.getElementById(id);
    if (!field) {
      return "unknown";
    }
    return field.value;
  }

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

  function analyzeReadiness() {
    var ok = [];
    var check = [];
    var stop = [];

    checks.forEach(function (item) {
      var value = valueOf(item.id);
      if (value === "yes") {
        ok.push(item.yes);
      } else {
        if (value === "no") {
          if (item.critical) {
            stop.push(item.no);
          } else {
            check.push(item.no);
          }
        } else {
          check.push(item.unknown);
        }
      }
    });

    var result = document.getElementById("rk-slab-result");
    var status = document.getElementById("rk-slab-result-status");
    var intro = document.getElementById("rk-slab-result-intro");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");

    if (stop.length > 0) {
      result.classList.add("is-stop");
      status.textContent = "STOP — nie rozpoczynaj betonowania";
      intro.textContent = "Wykryto co najmniej jeden brak albo konflikt, którego nie należy zamykać w płycie.";
    } else {
      if (check.length > 0) {
        status.textContent = "Warunkowo gotowe — uzupełnij dokumenty i potwierdzenia";
        intro.textContent = "Nie wskazano jawnego konfliktu krytycznego, ale kontrola nie jest jeszcze kompletna.";
      } else {
        result.classList.add("is-good");
        status.textContent = "Dane przygotowane do formalnego odbioru";
        intro.textContent = "Formularz nie wykazał braków. Ostateczną zgodę wydają osoby odpowiedzialne za konstrukcję, instalację i prowadzenie robót.";
      }
    }

    document.getElementById("rk-slab-ok-count").textContent = String(ok.length);
    document.getElementById("rk-slab-check-count").textContent = String(check.length);
    document.getElementById("rk-slab-stop-count").textContent = String(stop.length);
    renderList("rk-slab-ok-list", ok, "Brak potwierdzonych elementów.");
    renderList("rk-slab-check-list", check, "Nie wskazano dodatkowych braków.");
    renderList("rk-slab-stop-list", stop, "Nie wykryto warunku krytycznego.");
  }

  var runButton = document.getElementById("rk-slab-run");
  var resetButton = document.getElementById("rk-slab-reset");

  runButton.addEventListener("click", analyzeReadiness);
  resetButton.addEventListener("click", function () {
    var fields = guide.querySelectorAll(".rk-slab-analyzer select");
    fields.forEach(function (field) {
      field.selectedIndex = 0;
    });
    var result = document.getElementById("rk-slab-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");
    document.getElementById("rk-slab-result-status").textContent = "Uzupełnij cztery obszary kontroli";
    document.getElementById("rk-slab-result-intro").textContent = "Wynik rozdzieli elementy potwierdzone, brakujące i krytyczne przed betonowaniem.";
    document.getElementById("rk-slab-ok-count").textContent = "0";
    document.getElementById("rk-slab-check-count").textContent = "0";
    document.getElementById("rk-slab-stop-count").textContent = "0";
    renderList("rk-slab-ok-list", [], "Jeszcze brak ocenionych danych.");
    renderList("rk-slab-check-list", [], "Uzupełnij formularz na podstawie dokumentów.");
    renderList("rk-slab-stop-list", [], "Brak oceny nie oznacza gotowości do betonowania.");
  });

  showModule("ground");
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/">Ogrzewanie podłogowe w płycie fundamentowej – projekt i montaż.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Podłoga jako magazyn ciepła – ile energii naprawdę może zgromadzić?</title>
		<link>https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 13 Jun 2026 07:16:00 +0000</pubDate>
				<category><![CDATA[Fotowoltaika]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[OZE]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Taryfy dynamiczne]]></category>
		<category><![CDATA[akumulatory lifepo4 opinie]]></category>
		<category><![CDATA[bezwładność cieplna budynku]]></category>
		<category><![CDATA[bufor ciepła do pompy ciepła]]></category>
		<category><![CDATA[instalacja hvac optymalizacja]]></category>
		<category><![CDATA[kalkulator strat ciepła budynku]]></category>
		<category><![CDATA[koszt magazynu energii]]></category>
		<category><![CDATA[koszty ogrzewania domu 2026]]></category>
		<category><![CDATA[kryzys 15 roku fotowoltaiki]]></category>
		<category><![CDATA[ogrzewanie podłogowe jako magazyn energii]]></category>
		<category><![CDATA[opłacalność taryf dynamicznych]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego ozc]]></category>
		<category><![CDATA[rynkowa cena energii elektrycznej rce]]></category>
		<category><![CDATA[standardy montażu hvac]]></category>
		<category><![CDATA[wylewka betonowa podłogówka]]></category>
		<category><![CDATA[zarabianie na taryfach dynamicznych]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=5634</guid>

					<description><![CDATA[<p>Agresywny marketing OZE i HVAC wmawia dziś inwestorom, że jedyną drogą do obniżenia rachunków za prąd jest zakup drogich akumulatorów chemicznych. Zanim jednak ulegniesz presji sprzedawców i wydasz kilkadziesiąt tysięcy złotych na technologię, która zimą stoi bezużyteczna, musisz poznać twarde fakty. Prawda jest taka, że największy magazyn energii w Twoim domu już istnieje i prawdopodobnie po nim chodzisz – to bezwładność cieplna betonowej wylewki podłogowej połączona z odpowiednio dobranym buforem wody grzewczej. Na podstawie analizy ponad 1000 projektów instalacyjnych udowadniam, dlaczego wykorzystanie fizyki budynku w erze taryf dynamicznych jest nawet 10-krotnie tańsze i bardziej opłacalne niż ścienne baterie. W dalszej części artykułu znajdziesz interaktywne kalkulatory, wykresy oraz szczegółowe zestawienia kosztów, które pozwolą Ci samodzielnie przeliczyć zyski.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/">Podłoga jako magazyn ciepła – ile energii naprawdę może zgromadzić?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-thermal-store {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fafd;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff0ea;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #b47600;
    --rk-yellow-soft: #fff8df;
    --rk-red: #c7443a;
    --rk-red-soft: #fff0ee;
    --rk-purple: #6659c7;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1c2d38;
    --rk-text: #465d6c;
    --rk-muted: #687f8d;
    --rk-line: #d6e5eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 17px;
    line-height: 1.72;
  }

  #rk-thermal-store,
  #rk-thermal-store *,
  #rk-thermal-store *::before,
  #rk-thermal-store *::after { box-sizing: border-box; }
  #rk-thermal-store [hidden] { display: none !important; }
  #rk-thermal-store img,
  #rk-thermal-store svg { display: block; max-width: 100%; }
  #rk-thermal-store button,
  #rk-thermal-store input,
  #rk-thermal-store select,
  #rk-thermal-store summary { font: inherit; }
  #rk-thermal-store button { cursor: pointer; -webkit-tap-highlight-color: transparent; }
  #rk-thermal-store a {
    color: #007fae;
    font-weight: 760;
    text-decoration-thickness: 1.4px;
    text-underline-offset: 3px;
  }
  #rk-thermal-store a:hover { color: #005d82; }
  #rk-thermal-store a:focus-visible,
  #rk-thermal-store button:focus-visible,
  #rk-thermal-store input:focus-visible,
  #rk-thermal-store select:focus-visible,
  #rk-thermal-store summary:focus-visible {
    outline: 3px solid rgba(37, 199, 216, .5);
    outline-offset: 3px;
  }
  #rk-thermal-store h2,
  #rk-thermal-store h3,
  #rk-thermal-store h4,
  #rk-thermal-store p,
  #rk-thermal-store ul,
  #rk-thermal-store ol,
  #rk-thermal-store blockquote { margin-top: 0; }
  #rk-thermal-store h2,
  #rk-thermal-store h3,
  #rk-thermal-store h4 { color: var(--rk-dark); line-height: 1.18; }
  #rk-thermal-store h2 {
    margin-bottom: 18px;
    font-size: clamp(1.7rem, 3.6vw, 2.55rem);
    font-weight: 920;
    letter-spacing: -.035em;
  }
  #rk-thermal-store h3 {
    margin: 28px 0 12px;
    font-size: clamp(1.16rem, 2.2vw, 1.46rem);
    font-weight: 880;
    letter-spacing: -.02em;
  }
  #rk-thermal-store h4 { margin: 21px 0 8px; font-size: 1.04rem; }
  #rk-thermal-store p { margin-bottom: 18px; color: var(--rk-text); }
  #rk-thermal-store strong { color: var(--rk-ink); }
  #rk-thermal-store ul,
  #rk-thermal-store ol { margin-bottom: 22px; padding-left: 1.3em; color: var(--rk-text); }
  #rk-thermal-store li { margin-bottom: 8px; }
  #rk-thermal-store section[id] { scroll-margin-top: 24px; }

  #rk-thermal-store .rk-ts-shell {
    width: min(100%, 1280px);
    margin: 0 auto;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 22px 70px rgba(16, 37, 54, .09);
  }

  #rk-thermal-store .rk-ts-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(36px, 6vw, 76px) clamp(24px, 6vw, 74px) clamp(30px, 5vw, 58px);
    background:
      radial-gradient(circle at 8% 118%, rgba(255, 106, 61, .22), transparent 38%),
      linear-gradient(128deg, #102536 0%, #123d51 55%, #0c6971 100%);
  }
  #rk-thermal-store .rk-ts-hero::before,
  #rk-thermal-store .rk-ts-hero::after {
    position: absolute;
    z-index: -1;
    border: clamp(22px, 4vw, 48px) solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
    pointer-events: none;
  }
  #rk-thermal-store .rk-ts-hero::before { right: -115px; bottom: -185px; width: 390px; height: 390px; }
  #rk-thermal-store .rk-ts-hero::after { right: 125px; bottom: -238px; width: 290px; height: 290px; }
  #rk-thermal-store .rk-ts-kicker,
  #rk-thermal-store .rk-ts-eyebrow {
    display: block;
    margin-bottom: 13px;
    color: var(--rk-orange);
    font-size: .76rem;
    font-weight: 900;
    letter-spacing: .13em;
    line-height: 1.35;
    text-transform: uppercase;
  }
  #rk-thermal-store .rk-ts-hero-title {
    max-width: 1100px;
    margin: 0 0 20px;
    color: #ffffff !important;
    font-size: clamp(2.05rem, 5.1vw, 4.4rem);
    font-weight: 950;
    line-height: .99;
    letter-spacing: -.06em;
  }
  #rk-thermal-store .rk-ts-hero-title span { color: #63e5f2 !important; }
  #rk-thermal-store .rk-ts-lead {
    max-width: 1050px;
    margin-bottom: 24px;
    color: #dceef2;
    font-size: clamp(1.03rem, 2vw, 1.31rem);
    line-height: 1.62;
  }
  #rk-thermal-store .rk-ts-hero-tags,
  #rk-thermal-store .rk-ts-byline { display: flex; flex-wrap: wrap; gap: 10px 12px; }
  #rk-thermal-store .rk-ts-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 6px 15px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    background: rgba(255, 255, 255, .07);
    color: #ffffff !important;
    font-size: .78rem;
    font-weight: 850;
  }
  #rk-thermal-store .rk-ts-byline {
    margin-top: 23px;
    color: #e2f1f4 !important;
    font-size: .82rem;
    font-weight: 760;
  }
  #rk-thermal-store .rk-ts-byline span,
  #rk-thermal-store .rk-ts-byline strong { color: #ffffff !important; }
  #rk-thermal-store .rk-ts-hero-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-top: 34px;
  }
  #rk-thermal-store .rk-ts-hero-metric {
    min-width: 0;
    padding: 22px;
    border: 1px solid rgba(255, 255, 255, .19);
    border-radius: 19px;
    background: rgba(255, 255, 255, .075);
    backdrop-filter: blur(3px);
  }
  #rk-thermal-store .rk-ts-hero-metric b {
    display: block;
    margin-bottom: 7px;
    color: #ffffff !important;
    font-size: 1rem;
    line-height: 1.35;
  }
  #rk-thermal-store .rk-ts-hero-metric span {
    display: block;
    color: #dceef2 !important;
    font-size: .91rem;
    line-height: 1.55;
  }

  #rk-thermal-store .rk-ts-nav {
    padding: 22px clamp(18px, 4vw, 48px) 24px;
    border-bottom: 1px solid var(--rk-line);
    background: #f4fafc;
  }
  #rk-thermal-store .rk-ts-nav-label {
    display: block;
    margin-bottom: 11px;
    color: var(--rk-dark);
    font-size: .74rem;
    font-weight: 950;
    letter-spacing: .12em;
    text-transform: uppercase;
  }
  #rk-thermal-store .rk-ts-nav-track { display: flex; flex-wrap: wrap; gap: 8px; }
  #rk-thermal-store .rk-ts-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 6px 11px;
    border: 1px solid #c9e0e8;
    border-radius: 999px;
    background: #ffffff;
    color: #345264;
    font-size: .76rem;
    font-weight: 820;
    line-height: 1.25;
    text-decoration: none;
  }
  #rk-thermal-store .rk-ts-nav a:hover { border-color: var(--rk-blue); color: var(--rk-blue); }

  #rk-thermal-store .rk-ts-section {
    padding: clamp(42px, 6vw, 76px) clamp(22px, 6vw, 74px);
    border-bottom: 1px solid var(--rk-line);
  }
  #rk-thermal-store .rk-ts-section:last-child { border-bottom: 0; }
  #rk-thermal-store .rk-ts-section-soft { background: var(--rk-soft); }
  #rk-thermal-store .rk-ts-section-dark {
    background: linear-gradient(135deg, #102536, #17485b);
  }
  #rk-thermal-store .rk-ts-section-dark h2,
  #rk-thermal-store .rk-ts-section-dark h3,
  #rk-thermal-store .rk-ts-section-dark h4,
  #rk-thermal-store .rk-ts-section-dark strong { color: #ffffff; }
  #rk-thermal-store .rk-ts-section-dark p,
  #rk-thermal-store .rk-ts-section-dark li { color: #dceef2; }
  #rk-thermal-store .rk-ts-section-dark a { color: #72e4f0; }
  #rk-thermal-store .rk-ts-section-dark .rk-ts-eyebrow { color: #ff8b67; }
  #rk-thermal-store .rk-ts-section-dark .rk-ts-card h3,
  #rk-thermal-store .rk-ts-section-dark .rk-ts-card h4,
  #rk-thermal-store .rk-ts-section-dark .rk-ts-card strong { color: var(--rk-dark); }
  #rk-thermal-store .rk-ts-section-dark .rk-ts-card p,
  #rk-thermal-store .rk-ts-section-dark .rk-ts-card li { color: var(--rk-text); }
  #rk-thermal-store .rk-ts-section-title { max-width: 1060px; }
  #rk-thermal-store .rk-ts-section-lead {
    max-width: 1030px;
    color: #526b79;
    font-size: 1.08rem;
    line-height: 1.7;
  }

  #rk-thermal-store .rk-ts-grid-2,
  #rk-thermal-store .rk-ts-grid-3,
  #rk-thermal-store .rk-ts-grid-4 { display: grid; gap: 18px; }
  #rk-thermal-store .rk-ts-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-thermal-store .rk-ts-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-thermal-store .rk-ts-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-thermal-store .rk-ts-card {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: #ffffff;
    box-shadow: 0 9px 27px rgba(16, 37, 54, .045);
  }
  #rk-thermal-store .rk-ts-card h3 { margin-top: 0; }
  #rk-thermal-store .rk-ts-card p:last-child,
  #rk-thermal-store .rk-ts-card ul:last-child { margin-bottom: 0; }
  #rk-thermal-store .rk-ts-card-label {
    display: inline-flex;
    margin-bottom: 12px;
    padding: 5px 10px;
    border-radius: 999px;
    background: var(--rk-cyan-soft);
    color: #057596;
    font-size: .69rem;
    font-weight: 900;
    line-height: 1.25;
    text-transform: uppercase;
  }
  #rk-thermal-store .rk-ts-card-label.is-orange { background: var(--rk-orange-soft); color: #b64625; }
  #rk-thermal-store .rk-ts-card-label.is-green { background: var(--rk-green-soft); color: var(--rk-green); }

  #rk-thermal-store .rk-ts-answer {
    margin: 24px 0;
    padding: 25px 28px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 8px 20px 20px 8px;
    background: linear-gradient(120deg, #e8fafd, #f7fcfd);
  }
  #rk-thermal-store .rk-ts-answer-label {
    display: block;
    margin-bottom: 8px;
    color: #057596;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .11em;
    text-transform: uppercase;
  }
  #rk-thermal-store .rk-ts-answer p:last-child { margin-bottom: 0; }
  #rk-thermal-store .rk-ts-callout,
  #rk-thermal-store .rk-ts-warning,
  #rk-thermal-store .rk-ts-note {
    margin: 24px 0;
    padding: 20px 23px;
    border-radius: 16px;
  }
  #rk-thermal-store .rk-ts-callout { border: 1px solid #bde7ed; background: var(--rk-cyan-soft); color: #294c5d; }
  #rk-thermal-store .rk-ts-warning { border: 1px solid #efd7a1; background: var(--rk-yellow-soft); color: #634d1d; }
  #rk-thermal-store .rk-ts-note { border: 1px solid #d6d0f6; background: var(--rk-purple-soft); color: #494477; }
  #rk-thermal-store .rk-ts-callout p:last-child,
  #rk-thermal-store .rk-ts-warning p:last-child,
  #rk-thermal-store .rk-ts-note p:last-child { margin-bottom: 0; }

  #rk-thermal-store .rk-ts-table {
    overflow: hidden;
    margin: 25px 0;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: #ffffff;
  }
  #rk-thermal-store .rk-ts-table table { width: 100%; border-collapse: collapse; table-layout: fixed; }
  #rk-thermal-store .rk-ts-table th,
  #rk-thermal-store .rk-ts-table td {
    padding: 16px 18px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-text);
    vertical-align: top;
    overflow-wrap: anywhere;
  }
  #rk-thermal-store .rk-ts-table th:last-child,
  #rk-thermal-store .rk-ts-table td:last-child { border-right: 0; }
  #rk-thermal-store .rk-ts-table tr:last-child td { border-bottom: 0; }
  #rk-thermal-store .rk-ts-table thead th {
    background: #15384d;
    color: #ffffff;
    font-size: .79rem;
    font-weight: 900;
    letter-spacing: .02em;
    text-align: left;
  }
  #rk-thermal-store .rk-ts-table tbody th {
    background: #f6fafb;
    color: var(--rk-dark);
    font-weight: 850;
    text-align: left;
  }
  #rk-thermal-store .rk-ts-table td strong { display: block; margin-bottom: 3px; }

  #rk-thermal-store .rk-ts-equation {
    margin: 25px 0;
    padding: 25px;
    border: 1px solid #bfdde7;
    border-radius: 19px;
    background: linear-gradient(135deg, #f2fbfd, #ffffff);
  }
  #rk-thermal-store .rk-ts-equation-label {
    display: block;
    margin-bottom: 8px;
    color: #057596;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
  }
  #rk-thermal-store .rk-ts-equation-main {
    color: var(--rk-dark);
    font-size: clamp(1.05rem, 2.2vw, 1.35rem);
    font-weight: 900;
    line-height: 1.5;
    overflow-wrap: anywhere;
  }
  #rk-thermal-store .rk-ts-equation p { margin: 10px 0 0; font-size: .91rem; }

  #rk-thermal-store .rk-ts-source-switch {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 22px;
  }
  #rk-thermal-store .rk-ts-source-switch button,
  #rk-thermal-store .rk-ts-mode-switch button,
  #rk-thermal-store .rk-ts-chart-tabs button {
    min-height: 44px;
    padding: 9px 15px;
    border: 1px solid #bcd6df;
    border-radius: 12px;
    background: #ffffff;
    color: #294b5d;
    font-weight: 850;
    line-height: 1.25;
  }
  #rk-thermal-store .rk-ts-source-switch button[aria-pressed="true"],
  #rk-thermal-store .rk-ts-mode-switch button[aria-pressed="true"],
  #rk-thermal-store .rk-ts-chart-tabs button[aria-pressed="true"] {
    border-color: var(--rk-blue);
    background: var(--rk-blue);
    color: #ffffff;
  }
  #rk-thermal-store .rk-ts-system-map {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
  }
  #rk-thermal-store .rk-ts-flow-card {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: #ffffff;
  }
  #rk-thermal-store .rk-ts-flow-card.is-electric { border-top: 5px solid var(--rk-orange); }
  #rk-thermal-store .rk-ts-flow-card.is-water { border-top: 5px solid var(--rk-cyan); }
  #rk-thermal-store .rk-ts-flow-title { margin: 0 0 17px; color: var(--rk-dark); font-weight: 900; }
  #rk-thermal-store .rk-ts-flow {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: stretch;
    gap: 8px;
    margin-bottom: 18px;
  }
  #rk-thermal-store .rk-ts-flow.is-five { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  #rk-thermal-store .rk-ts-flow-node {
    display: grid;
    place-items: center;
    min-width: 0;
    min-height: 78px;
    padding: 10px 7px;
    border: 1px solid #cfe0e6;
    border-radius: 13px;
    background: #f7fbfc;
    color: #294b5d;
    font-size: .75rem;
    font-weight: 850;
    line-height: 1.28;
    text-align: center;
    overflow-wrap: anywhere;
  }
  #rk-thermal-store .rk-ts-flow-node + .rk-ts-flow-node { position: relative; }
  #rk-thermal-store .rk-ts-flow-node + .rk-ts-flow-node::before {
    position: absolute;
    left: -9px;
    top: 50%;
    width: 9px;
    height: 2px;
    background: #8db8c6;
    content: "";
  }
  #rk-thermal-store .rk-ts-flow-formula {
    padding: 15px 17px;
    border-radius: 13px;
    background: var(--rk-soft);
    color: #355669;
    font-size: .84rem;
    line-height: 1.55;
  }

  #rk-thermal-store .rk-ts-tool {
    overflow: hidden;
    margin-top: 27px;
    border: 1px solid #bfd9e3;
    border-radius: 24px;
    background: #ffffff;
    box-shadow: 0 18px 44px rgba(16, 37, 54, .09);
  }
  #rk-thermal-store .rk-ts-tool-head {
    padding: 27px clamp(20px, 4vw, 38px);
    background: linear-gradient(125deg, #102536, #13566b);
  }
  #rk-thermal-store .rk-ts-tool-head h3 { margin: 0 0 8px; color: #ffffff; }
  #rk-thermal-store .rk-ts-tool-head p { margin: 0; color: #dceef2; }
  #rk-thermal-store .rk-ts-tool-head .rk-ts-eyebrow { color: #ff8b67; }
  #rk-thermal-store .rk-ts-tool-body { padding: clamp(20px, 4vw, 38px); }
  #rk-thermal-store .rk-ts-section-dark .rk-ts-tool-body p { color: #526b79; }
  #rk-thermal-store .rk-ts-section-dark .rk-ts-tool-body h4,
  #rk-thermal-store .rk-ts-section-dark .rk-ts-tool-body strong { color: var(--rk-dark); }
  #rk-thermal-store .rk-ts-tool-intro {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 18px;
    margin-bottom: 24px;
  }
  #rk-thermal-store .rk-ts-tool-intro p { margin: 0; }
  #rk-thermal-store .rk-ts-reset {
    min-height: 42px;
    padding: 8px 14px;
    border: 1px solid #bdd4dd;
    border-radius: 11px;
    background: #ffffff;
    color: #345264;
    font-weight: 820;
  }
  #rk-thermal-store .rk-ts-mode-switch {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 17px;
  }
  #rk-thermal-store .rk-ts-field-grid {
    display: grid;
    gap: 14px;
    margin-bottom: 18px;
  }
  #rk-thermal-store .rk-ts-field-grid.is-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-thermal-store .rk-ts-field-grid.is-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-thermal-store .rk-ts-field-grid.is-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-thermal-store .rk-ts-field {
    min-width: 0;
    padding: 16px;
    border: 1px solid #d1e1e7;
    border-radius: 15px;
    background: #fafdfe;
  }
  #rk-thermal-store .rk-ts-field label,
  #rk-thermal-store .rk-ts-field-title {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: .84rem;
    font-weight: 880;
    line-height: 1.35;
  }
  #rk-thermal-store .rk-ts-field input,
  #rk-thermal-store .rk-ts-field select {
    width: 100%;
    min-height: 46px;
    padding: 9px 11px;
    border: 1px solid #adc8d2;
    border-radius: 10px;
    background: #ffffff;
    color: var(--rk-dark);
    font-weight: 780;
  }
  #rk-thermal-store .rk-ts-field-help {
    display: block;
    margin-top: 7px;
    color: #657d8b;
    font-size: .72rem;
    line-height: 1.42;
  }
  #rk-thermal-store .rk-ts-advanced {
    margin: 18px 0 25px;
    border: 1px solid #d2e2e8;
    border-radius: 16px;
    background: #f8fbfc;
  }
  #rk-thermal-store .rk-ts-advanced summary {
    position: relative;
    padding: 17px 48px 17px 18px;
    color: var(--rk-dark);
    font-weight: 880;
    list-style: none;
    cursor: pointer;
  }
  #rk-thermal-store .rk-ts-advanced summary::-webkit-details-marker { display: none; }
  #rk-thermal-store .rk-ts-advanced summary::after {
    position: absolute;
    right: 18px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-blue);
    font-size: 1.35rem;
    content: "+";
  }
  #rk-thermal-store .rk-ts-advanced[open] summary::after { content: "−"; }
  #rk-thermal-store .rk-ts-advanced-content { padding: 0 18px 18px; }
  #rk-thermal-store .rk-ts-validation {
    min-height: 25px;
    margin: -2px 0 18px;
    color: var(--rk-red);
    font-size: .78rem;
    font-weight: 780;
  }

  #rk-thermal-store .rk-ts-results {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-top: 25px;
  }
  #rk-thermal-store .rk-ts-result-system {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: #ffffff;
  }
  #rk-thermal-store .rk-ts-result-system.is-direct { border-top: 5px solid var(--rk-orange); }
  #rk-thermal-store .rk-ts-result-system.is-pump { border-top: 5px solid var(--rk-cyan); }
  #rk-thermal-store .rk-ts-result-system h4 { margin-top: 0; }
  #rk-thermal-store .rk-ts-result-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  #rk-thermal-store .rk-ts-result-item {
    min-width: 0;
    padding: 14px;
    border-radius: 12px;
    background: var(--rk-soft);
  }
  #rk-thermal-store .rk-ts-result-item span,
  #rk-thermal-store .rk-ts-result-item strong { display: block; }
  #rk-thermal-store .rk-ts-result-item span { color: #617987; font-size: .69rem; font-weight: 830; line-height: 1.35; }
  #rk-thermal-store .rk-ts-result-item strong { margin-top: 5px; color: var(--rk-dark); font-size: 1rem; line-height: 1.3; overflow-wrap: anywhere; }
  #rk-thermal-store .rk-ts-verdict {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0 0;
    padding: 19px;
    border: 1px solid #bde2e7;
    border-radius: 17px;
    background: linear-gradient(120deg, #eafafd, #f8fdfd);
  }
  #rk-thermal-store .rk-ts-verdict > div { min-width: 0; }
  #rk-thermal-store .rk-ts-verdict span,
  #rk-thermal-store .rk-ts-verdict strong { display: block; }
  #rk-thermal-store .rk-ts-verdict span { color: #55717e; font-size: .71rem; font-weight: 820; }
  #rk-thermal-store .rk-ts-verdict strong { margin-top: 5px; color: var(--rk-dark); line-height: 1.35; overflow-wrap: anywhere; }

  #rk-thermal-store .rk-ts-chart-panel {
    margin-top: 22px;
    padding: 21px;
    border: 1px solid #c8dce3;
    border-radius: 19px;
    background: #ffffff;
  }
  #rk-thermal-store .rk-ts-chart-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 15px;
  }
  #rk-thermal-store .rk-ts-chart-head h4 { margin: 0; }
  #rk-thermal-store .rk-ts-chart-tabs { display: flex; flex-wrap: wrap; gap: 7px; }
  #rk-thermal-store .rk-ts-chart-tabs button { min-height: 39px; padding: 7px 11px; font-size: .73rem; }
  #rk-thermal-store .rk-ts-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 18px;
    margin: 16px 0 7px;
    color: #556f7d;
    font-size: .76rem;
    font-weight: 820;
  }
  #rk-thermal-store .rk-ts-chart-legend span { display: inline-flex; align-items: center; gap: 7px; }
  #rk-thermal-store .rk-ts-chart-legend i { display: inline-block; width: 22px; height: 7px; border-radius: 999px; }
  #rk-thermal-store .rk-ts-chart-legend .is-direct { background: var(--rk-orange); }
  #rk-thermal-store .rk-ts-chart-legend .is-pump { background: var(--rk-blue); }
  #rk-thermal-store .rk-ts-chart-wrap { width: 100%; overflow: hidden; }
  #rk-thermal-store .rk-ts-chart-wrap svg { width: 100%; height: auto; min-height: 290px; font-family: inherit; }
  #rk-thermal-store .rk-ts-chart-reading {
    display: block;
    width: 100%;
    max-width: none;
    margin: 13px 0 0;
    padding: 15px 17px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 6px 13px 13px 6px;
    background: #edf8fa;
    color: #294b5d;
    font-size: .81rem;
    line-height: 1.55;
  }
  #rk-thermal-store .rk-ts-axis { stroke: #9ab2bd; stroke-width: 1.2; }
  #rk-thermal-store .rk-ts-gridline { stroke: #dce8ec; stroke-width: 1; }
  #rk-thermal-store .rk-ts-gridtext { fill: #627987; font-size: 11px; font-weight: 750; }
  #rk-thermal-store .rk-ts-path-direct { fill: none; stroke: var(--rk-orange); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
  #rk-thermal-store .rk-ts-path-pump { fill: none; stroke: var(--rk-blue); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
  #rk-thermal-store .rk-ts-payback-line { stroke: var(--rk-green); stroke-width: 2; stroke-dasharray: 6 5; }
  #rk-thermal-store .rk-ts-payback-label { fill: var(--rk-green); font-size: 11px; font-weight: 900; }

  #rk-thermal-store .rk-ts-scenarios {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 13px;
    margin-top: 22px;
  }
  #rk-thermal-store .rk-ts-scenario {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: #f9fcfd;
  }
  #rk-thermal-store .rk-ts-scenario b,
  #rk-thermal-store .rk-ts-scenario span,
  #rk-thermal-store .rk-ts-scenario strong { display: block; }
  #rk-thermal-store .rk-ts-scenario b { color: var(--rk-dark); }
  #rk-thermal-store .rk-ts-scenario span { margin: 3px 0 9px; color: #687f8d; font-size: .72rem; }
  #rk-thermal-store .rk-ts-scenario strong { color: #0c7697; font-size: .91rem; }

  #rk-thermal-store .rk-ts-step-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
  #rk-thermal-store .rk-ts-step {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr);
    align-items: start;
    gap: 15px;
    min-width: 0;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: #ffffff;
  }
  #rk-thermal-store .rk-ts-step-no {
    position: static;
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    min-width: 52px;
    min-height: 52px;
    margin: 0;
    padding: 0;
    border-radius: 50%;
    background: #d9f4f7;
    color: #0d708d;
    font-size: 1rem;
    font-weight: 950;
    line-height: 1;
    text-align: center;
  }
  #rk-thermal-store .rk-ts-step h3 { margin: 2px 0 7px; font-size: 1.04rem; }
  #rk-thermal-store .rk-ts-step p { margin: 0; font-size: .9rem; }

  #rk-thermal-store .rk-ts-cta {
    position: relative;
    overflow: hidden;
    margin: 31px 0 0;
    padding: clamp(25px, 5vw, 42px);
    border-radius: 22px;
    background: linear-gradient(128deg, #102536, #125268);
    color: #ffffff;
  }
  #rk-thermal-store .rk-ts-cta::after {
    position: absolute;
    right: -70px;
    bottom: -100px;
    width: 240px;
    height: 240px;
    border: 32px solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
    pointer-events: none;
  }
  #rk-thermal-store .rk-ts-cta > * { position: relative; z-index: 1; }
  #rk-thermal-store .rk-ts-cta .rk-ts-eyebrow { color: #ff8b67; }
  #rk-thermal-store .rk-ts-cta-title {
    max-width: 850px;
    margin-bottom: 12px;
    color: #ffffff;
    font-size: clamp(1.45rem, 3vw, 2.2rem);
    font-weight: 920;
    line-height: 1.14;
    letter-spacing: -.035em;
  }
  #rk-thermal-store .rk-ts-cta p { max-width: 920px; margin-bottom: 19px; color: #dceef2; }
  #rk-thermal-store .rk-ts-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 12px 20px;
    border-radius: 12px;
    background: var(--rk-orange);
    color: #ffffff !important;
    font-weight: 900;
    line-height: 1.3;
    text-align: center;
    text-decoration: none;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .16);
  }
  #rk-thermal-store .rk-ts-cta-button:hover { background: #e8572f; color: #ffffff !important; }
  #rk-thermal-store .rk-ts-disclosure { display: block; margin-top: 10px; color: #bcd5dc; font-size: .68rem; }

  #rk-thermal-store .rk-ts-faq { display: grid; gap: 10px; }
  #rk-thermal-store .rk-ts-faq details {
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: #ffffff;
  }
  #rk-thermal-store .rk-ts-faq summary {
    position: relative;
    padding: 18px 52px 18px 20px;
    color: var(--rk-dark);
    font-weight: 870;
    line-height: 1.4;
    list-style: none;
    cursor: pointer;
  }
  #rk-thermal-store .rk-ts-faq summary::-webkit-details-marker { display: none; }
  #rk-thermal-store .rk-ts-faq summary::after {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-blue);
    font-size: 1.38rem;
    content: "+";
  }
  #rk-thermal-store .rk-ts-faq details[open] summary::after { content: "−"; }
  #rk-thermal-store .rk-ts-faq-answer { padding: 0 20px 18px; }
  #rk-thermal-store .rk-ts-faq-answer p:last-child { margin-bottom: 0; }

  #rk-thermal-store .rk-ts-sources { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
  #rk-thermal-store .rk-ts-sources li {
    margin: 0;
    padding: 17px 19px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: #ffffff;
  }
  #rk-thermal-store .rk-ts-responsibility {
    margin-top: 24px;
    padding: 21px;
    border: 1px solid #d6e3e8;
    border-radius: 16px;
    background: #f7fafb;
  }
  #rk-thermal-store .rk-ts-responsibility p { margin-bottom: 9px; font-size: .78rem; line-height: 1.58; }
  #rk-thermal-store .rk-ts-responsibility p:last-child { margin-bottom: 0; }

  #rk-thermal-store .rk-ts-author {
    overflow: hidden;
    border-radius: 24px;
    color: #ffffff;
    background: linear-gradient(135deg, #102536, #174b5b);
  }
  #rk-thermal-store .rk-ts-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-thermal-store .rk-ts-author-head h2 { margin-bottom: 6px; color: #ffffff; }
  #rk-thermal-store .rk-ts-author-head p { margin-bottom: 0; color: #dcecf0; }
  #rk-thermal-store .rk-ts-author-head .rk-ts-eyebrow { color: #7cecf7; }
  #rk-thermal-store .rk-ts-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-thermal-store .rk-ts-author-layout { display: grid; grid-template-columns: 245px minmax(0, 1fr); }
  #rk-thermal-store .rk-ts-author-side {
    padding: 30px 25px;
    border-right: 1px solid rgba(255, 255, 255, .12);
    text-align: center;
  }
  #rk-thermal-store .rk-ts-author-photo {
    width: 132px;
    height: 132px;
    margin: 0 auto 16px;
    overflow: hidden;
    border: 5px solid rgba(255, 255, 255, .15);
    border-radius: 50%;
  }
  #rk-thermal-store .rk-ts-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-thermal-store .rk-ts-author-name { margin-bottom: 5px; font-size: 1.12rem; font-weight: 900; }
  #rk-thermal-store .rk-ts-author-name a { color: #ffffff; text-decoration: none; }
  #rk-thermal-store .rk-ts-author-role { margin: 0; color: #cfe4e9; font-size: .7rem; line-height: 1.55; }
  #rk-thermal-store .rk-ts-author-social-label {
    margin-top: 20px;
    color: #8beff7;
    font-size: .58rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  #rk-thermal-store .rk-ts-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 9px; }
  #rk-thermal-store .rk-ts-author-social a {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    color: #ffffff;
    background: rgba(255, 255, 255, .1);
    text-decoration: none;
  }
  #rk-thermal-store .rk-ts-author-social svg { width: 18px; height: 18px; fill: currentColor; }
  #rk-thermal-store .rk-ts-author-main { min-width: 0; padding: 32px clamp(23px, 5vw, 42px); }
  #rk-thermal-store .rk-ts-author-quote { position: relative; margin: 0 0 24px; padding: 4px 0 4px 58px; border: 0; }
  #rk-thermal-store .rk-ts-author-quote::before {
    position: absolute;
    top: -11px;
    left: 0;
    color: #6ee9f5;
    content: "“";
    font-family: Georgia, serif;
    font-size: 4.4rem;
    line-height: 1;
  }
  #rk-thermal-store .rk-ts-author-quote p { margin-bottom: 0; color: #ffffff; font-size: 1.02rem; font-weight: 740; }
  #rk-thermal-store .rk-ts-author-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
  #rk-thermal-store .rk-ts-author-card { min-width: 0; padding: 16px; border-radius: 14px; background: rgba(255, 255, 255, .075); }
  #rk-thermal-store .rk-ts-author-card b { display: block; margin-bottom: 5px; color: #8beff7; font-size: .69rem; }
  #rk-thermal-store .rk-ts-author-card p { margin-bottom: 0; color: #d8e9ed; font-size: .68rem; line-height: 1.55; }
  #rk-thermal-store .rk-ts-author-mini-label {
    margin-top: 22px;
    color: #8beff7;
    font-size: .58rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  #rk-thermal-store .rk-ts-portals { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
  #rk-thermal-store .rk-ts-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-thermal-store .rk-ts-grid-4,
    #rk-thermal-store .rk-ts-field-grid.is-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-thermal-store .rk-ts-system-map { grid-template-columns: 1fr; }
    #rk-thermal-store .rk-ts-flow.is-five { grid-template-columns: repeat(5, minmax(82px, 1fr)); overflow-x: auto; padding-bottom: 5px; }
  }
  @media (max-width: 820px) {
    #rk-thermal-store { font-size: 16px; }
    #rk-thermal-store .rk-ts-shell { border-radius: 20px; }
    #rk-thermal-store .rk-ts-hero-metrics,
    #rk-thermal-store .rk-ts-grid-3,
    #rk-thermal-store .rk-ts-results,
    #rk-thermal-store .rk-ts-scenarios,
    #rk-thermal-store .rk-ts-author-cards { grid-template-columns: 1fr; }
    #rk-thermal-store .rk-ts-step-grid { grid-template-columns: 1fr; }
    #rk-thermal-store .rk-ts-author-layout { grid-template-columns: 1fr; }
    #rk-thermal-store .rk-ts-author-side { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .12); }
  }
  @media (max-width: 680px) {
    #rk-thermal-store .rk-ts-section { padding: 38px 18px; }
    #rk-thermal-store .rk-ts-hero { padding: 38px 20px 34px; }
    #rk-thermal-store .rk-ts-hero-title { font-size: clamp(2rem, 11vw, 3.2rem); }
    #rk-thermal-store .rk-ts-nav { padding: 18px; }
    #rk-thermal-store .rk-ts-author-head { display: block; }
    #rk-thermal-store .rk-ts-author-mark { display: inline-block; margin-top: 14px; }
    #rk-thermal-store .rk-ts-grid-2,
    #rk-thermal-store .rk-ts-grid-4,
    #rk-thermal-store .rk-ts-field-grid.is-2,
    #rk-thermal-store .rk-ts-field-grid.is-3,
    #rk-thermal-store .rk-ts-field-grid.is-4,
    #rk-thermal-store .rk-ts-result-grid,
    #rk-thermal-store .rk-ts-verdict { grid-template-columns: 1fr; }
    #rk-thermal-store .rk-ts-mode-switch { grid-template-columns: 1fr; }
    #rk-thermal-store .rk-ts-tool-intro { grid-template-columns: 1fr; }
    #rk-thermal-store .rk-ts-chart-panel { padding: 14px; }
    #rk-thermal-store .rk-ts-chart-wrap svg { min-height: 250px; }
    #rk-thermal-store .rk-ts-flow,
    #rk-thermal-store .rk-ts-flow.is-five { grid-template-columns: 1fr; overflow: visible; padding-bottom: 0; }
    #rk-thermal-store .rk-ts-flow-node + .rk-ts-flow-node::before {
      left: 50%;
      top: -9px;
      width: 2px;
      height: 9px;
      transform: translateX(-50%);
    }
    #rk-thermal-store .rk-ts-table { overflow: visible; border: 0; background: transparent; }
    #rk-thermal-store .rk-ts-table table,
    #rk-thermal-store .rk-ts-table tbody { display: block; width: 100%; }
    #rk-thermal-store .rk-ts-table thead { display: none; }
    #rk-thermal-store .rk-ts-table tr {
      display: block;
      margin-bottom: 13px;
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 15px;
      background: #ffffff;
    }
    #rk-thermal-store .rk-ts-table tbody th,
    #rk-thermal-store .rk-ts-table td {
      display: grid;
      grid-template-columns: minmax(105px, 40%) minmax(0, 1fr);
      gap: 12px;
      width: 100%;
      padding: 13px 15px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      text-align: left;
    }
    #rk-thermal-store .rk-ts-table tbody th::before,
    #rk-thermal-store .rk-ts-table td::before {
      color: #617987;
      font-size: .71rem;
      font-weight: 900;
      line-height: 1.35;
      content: attr(data-label);
    }
    #rk-thermal-store .rk-ts-table tr > :last-child { border-bottom: 0; }
    #rk-thermal-store .rk-ts-step { grid-template-columns: 52px minmax(0, 1fr); padding: 17px; }
    #rk-thermal-store .rk-ts-cta-button { width: 100%; }
  }
  @media (max-width: 430px) {
    #rk-thermal-store .rk-ts-nav-track { gap: 6px; }
    #rk-thermal-store .rk-ts-nav a { width: 100%; justify-content: flex-start; }
    #rk-thermal-store .rk-ts-step { grid-template-columns: 46px minmax(0, 1fr); gap: 12px; }
    #rk-thermal-store .rk-ts-step-no { width: 44px; height: 44px; min-width: 44px; min-height: 44px; }
    #rk-thermal-store .rk-ts-author-main { padding-left: 18px; padding-right: 18px; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-thermal-store * { scroll-behavior: auto !important; transition: none !important; }
  }
</style>

<style>
  #rk-thermal-store .rk-ts-module-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 13px;
    margin-top: 28px;
  }
  #rk-thermal-store .rk-ts-module-button {
    min-height: 146px;
    padding: 20px;
    border: 1px solid #cbdfe6;
    border-radius: 18px;
    background: #ffffff;
    color: var(--rk-dark);
    text-align: left;
  }
  #rk-thermal-store .rk-ts-module-button:hover {
    border-color: var(--rk-cyan);
    transform: translateY(-1px);
  }
  #rk-thermal-store .rk-ts-module-button[aria-selected="true"] {
    border-color: var(--rk-cyan);
    background: var(--rk-cyan-soft);
    box-shadow: inset 0 0 0 2px rgba(37, 199, 216, .17);
  }
  #rk-thermal-store .rk-ts-module-no {
    display: grid;
    place-items: center;
    width: 38px;
    height: 38px;
    margin-bottom: 13px;
    border-radius: 11px;
    background: #dff6f8;
    color: #087896;
    font-size: .82rem;
    font-weight: 950;
  }
  #rk-thermal-store .rk-ts-module-button strong,
  #rk-thermal-store .rk-ts-module-button small { display: block; }
  #rk-thermal-store .rk-ts-module-button strong { margin-bottom: 6px; font-size: 1rem; line-height: 1.3; }
  #rk-thermal-store .rk-ts-module-button small { color: #607988; font-size: .76rem; line-height: 1.45; }
  #rk-thermal-store .rk-ts-module-detail {
    margin-top: 15px;
    padding: 25px;
    border: 1px solid #315c70;
    border-radius: 19px;
    background: linear-gradient(135deg, #102536, #17485b);
    color: #ffffff;
  }
  #rk-thermal-store .rk-ts-module-detail h3 { margin: 0 0 8px; color: #ffffff; }
  #rk-thermal-store .rk-ts-module-detail > p { color: #d5e8ed; }
  #rk-thermal-store .rk-ts-module-facts {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-top: 18px;
  }
  #rk-thermal-store .rk-ts-module-fact {
    min-width: 0;
    padding: 14px;
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 13px;
    background: rgba(255, 255, 255, .065);
  }
  #rk-thermal-store .rk-ts-module-fact b,
  #rk-thermal-store .rk-ts-module-fact span { display: block; }
  #rk-thermal-store .rk-ts-module-fact b { margin-bottom: 5px; color: #72e4f0; font-size: .68rem; letter-spacing: .06em; text-transform: uppercase; }
  #rk-thermal-store .rk-ts-module-fact span { color: #ffffff; font-size: .78rem; line-height: 1.45; }
  #rk-thermal-store .rk-ts-tool-stage {
    margin-top: 24px;
    padding-top: 24px;
    border-top: 1px solid var(--rk-line);
  }
  #rk-thermal-store .rk-ts-tool-stage:first-of-type { margin-top: 0; padding-top: 0; border-top: 0; }
  #rk-thermal-store .rk-ts-tool-stage-title {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 17px;
  }
  #rk-thermal-store .rk-ts-tool-stage-no {
    display: grid;
    place-items: center;
    flex: 0 0 40px;
    width: 40px;
    height: 40px;
    border-radius: 11px;
    background: var(--rk-cyan);
    color: #0b3343;
    font-weight: 950;
  }
  #rk-thermal-store .rk-ts-tool-stage-title h4 { margin: 0 0 3px; }
  #rk-thermal-store .rk-ts-tool-stage-title p { margin: 0; font-size: .8rem; }
  #rk-thermal-store .rk-ts-result-system.is-floor { border-top: 5px solid var(--rk-cyan); }
  #rk-thermal-store .rk-ts-result-system.is-cost { border-top: 5px solid var(--rk-orange); }
  #rk-thermal-store .rk-ts-status {
    margin-top: 18px;
    padding: 18px 20px;
    border-left: 6px solid var(--rk-yellow);
    border-radius: 7px 15px 15px 7px;
    background: var(--rk-yellow-soft);
  }
  #rk-thermal-store .rk-ts-status.is-good { border-left-color: var(--rk-green); background: var(--rk-green-soft); }
  #rk-thermal-store .rk-ts-status.is-stop { border-left-color: var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-thermal-store .rk-ts-status strong,
  #rk-thermal-store .rk-ts-status span { display: block; }
  #rk-thermal-store .rk-ts-status span { margin-top: 5px; color: #4f6674; font-size: .82rem; }
  #rk-thermal-store .rk-ts-formula-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 14px;
  }
  #rk-thermal-store .rk-ts-formula-tag {
    padding: 6px 10px;
    border-radius: 999px;
    background: #e6f6f8;
    color: #136f85;
    font-family: Consolas, Monaco, monospace;
    font-size: .72rem;
    font-weight: 800;
  }
  #rk-thermal-store .rk-ts-chart-dot-floor { fill: var(--rk-orange); }
  #rk-thermal-store .rk-ts-chart-dot-electric { fill: var(--rk-blue); }
  #rk-thermal-store .rk-ts-source-note { margin-top: 8px; color: #647d8b; font-size: .8rem; }
  #rk-thermal-store .rk-ts-inline-metric {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 4px 9px;
    border-radius: 999px;
    background: var(--rk-cyan-soft);
    color: #087794;
    font-weight: 850;
    white-space: nowrap;
  }
  @media (max-width: 960px) {
    #rk-thermal-store .rk-ts-module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-thermal-store .rk-ts-module-facts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 620px) {
    #rk-thermal-store .rk-ts-module-grid,
    #rk-thermal-store .rk-ts-module-facts { grid-template-columns: minmax(0, 1fr); }
    #rk-thermal-store .rk-ts-module-button { min-height: 0; }
    #rk-thermal-store .rk-ts-module-detail { padding: 19px; }
    #rk-thermal-store .rk-ts-tool-stage-title { align-items: center; }
  }
</style>

<!--
  PROJEKT-OGRZEWANIA.PL — pełny kod do bloku „Własny HTML”.
  Wklej kod POD natywnym tytułem H1 generowanym przez WordPress.

  USTAWIENIA WORDPRESS / YOAST:
  H1: Podłoga jako magazyn ciepła – ile energii naprawdę może zgromadzić?
  Fraza główna: ogrzewanie podłogowe jako magazyn energii
  SEO title: Podłoga jako magazyn ciepła – kalkulator pojemności
  Meta description: Oblicz pojemność cieplną wylewki i bufora. Sprawdź, ile ciepła oraz energii elektrycznej można przesunąć dzięki pompie ciepła.
  Slug: pozostaw bez zmian.
-->

<div id="rk-thermal-store">
  <article class="rk-ts-shell" aria-label="Poradnik i kalkulator pojemności cieplnej podłogi oraz bufora">
    <header class="rk-ts-hero">
      <span class="rk-ts-kicker">Bezwładność cieplna bez marketingowych skrótów</span>
      <div class="rk-ts-hero-title">Największy magazyn energii w domu? <span>Podłoga magazynuje ciepło, nie prąd</span></div>
      <p class="rk-ts-lead">Masa wylewki może przesunąć część pracy pompy ciepła na korzystniejsze godziny. Jej pojemność nie jest jednak równoważna pojemności akumulatora, a wynik zależy od masy aktywnej, dopuszczalnej zmiany temperatury, strat budynku, COP, mocy źródła i sposobu sterowania.</p>
      <div class="rk-ts-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-ts-hero-tag">kWh cieplne i elektryczne</span>
        <span class="rk-ts-hero-tag">wylewka i bufor</span>
        <span class="rk-ts-hero-tag">pompa ciepła</span>
        <span class="rk-ts-hero-tag">taryfy dynamiczne</span>
        <span class="rk-ts-hero-tag">kalkulator i wykres</span>
      </div>
      <div class="rk-ts-byline">
        <span><strong>Autor:</strong> Robert Kucharski</span>
        <span><strong>Czas czytania:</strong> około 26 minut</span>
        <span><strong>Aktualizacja techniczna:</strong> 16 września 2026 r.</span>
      </div>
      <div class="rk-ts-hero-metrics">
        <div class="rk-ts-hero-metric"><b>Podłoga magazynuje ciepło</b><span>Wynik podajemy w kWh<sub>th</sub>. Nie jest to energia elektryczna dostępna dla oświetlenia, sprzętów ani awaryjnego zasilania.</span></div>
        <div class="rk-ts-hero-metric"><b>Pojemność to nie moc</b><span>Duża liczba kWh nie mówi jeszcze, czy źródło zdąży naładować masę ani jak szybko budynek ją rozładuje.</span></div>
        <div class="rk-ts-hero-metric"><b>Oszczędność jest scenariuszem</b><span>Liczymy wyłącznie energię rzeczywiście przesuniętą oraz ceny wynikające z konkretnej umowy użytkownika.</span></div>
      </div>
    </header>

    <nav class="rk-ts-nav" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-ts-nav-label">Na skróty — wszystkie H2</span>
      <div class="rk-ts-nav-track">
        <a href="#rk-ts-answer">Szybka odpowiedź</a>
        <a href="#rk-ts-units">kW i kWh</a>
        <a href="#rk-ts-map">Mapa magazynów</a>
        <a href="#rk-ts-physics">Fizyka wylewki</a>
        <a href="#rk-ts-calculator">Kalkulator</a>
        <a href="#rk-ts-reading">Interpretacja</a>
        <a href="#rk-ts-power">Pojemność a moc</a>
        <a href="#rk-ts-comparison">Uczciwe porównanie</a>
        <a href="#rk-ts-tariffs">Taryfy dynamiczne</a>
        <a href="#rk-ts-heat-pump">Pompa i PV</a>
        <a href="#rk-ts-control">Sterowanie</a>
        <a href="#rk-ts-buffer">Czy potrzebny bufor?</a>
        <a href="#rk-ts-example">Przykład 150 m²</a>
        <a href="#rk-ts-errors">Najczęstsze błędy</a>
        <a href="#rk-ts-data">Dane projektowe</a>
        <a href="#rk-ts-summary">Wnioski</a>
        <a href="#rk-ts-sources">Źródła</a>
        <a href="#rk-ts-faq">FAQ</a>
        <a href="#rk-ts-author">Autor</a>
      </div>
    </nav>

    <section class="rk-ts-section" id="rk-ts-answer">
      <span class="rk-ts-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-ts-section-title">Czy ogrzewanie podłogowe może być magazynem energii?</h2>
      <p class="rk-ts-section-lead"><strong>Tak, ale jest magazynem ciepła o ograniczonej sterowalności.</strong> Wylewka i pozostałe masywne warstwy podłogi pochłaniają energię podczas podnoszenia swojej temperatury, a następnie oddają ją do pomieszczenia. Pozwala to czasowo przesunąć produkcję ciepła bez natychmiastowego wyłączenia ogrzewania.</p>
      <div class="rk-ts-answer">
        <span class="rk-ts-answer-label">Najważniejsze rozróżnienie</span>
        <p><strong>Podłoga nie przechowuje prądu i nie zastępuje domowego akumulatora.</strong> Może ograniczyć pobór energii elektrycznej przez pompę ciepła w wybranych godzinach, ale nie zasili lodówki, oświetlenia ani domu podczas zaniku napięcia.</p>
      </div>
      <div class="rk-ts-grid-3">
        <article class="rk-ts-card"><span class="rk-ts-card-label">Może</span><h3>Przesunąć część ogrzewania</h3><p>Jeżeli budynek ma zapotrzebowanie na ciepło, źródło dysponuje zapasem mocy, a temperatura podłogi pozostaje w granicach komfortu.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Nie może</span><h3>Magazynować energii bez kosztu</h3><p>Ciepło trzeba wcześniej wytworzyć. Korzyść może wynikać z czasu poboru, autokonsumpcji PV albo korzystniejszych warunków pracy źródła.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-green">Wymaga</span><h3>Bilansu i sterowania</h3><p>Potrzebne są straty pomieszczeń, parametry podłogi, przepływy, moc pompy, prognoza oraz ograniczenia okładzin i użytkowników.</p></article>
      </div>
      <p>Jeżeli chcesz najpierw uporządkować samo zjawisko, przeczytaj także poradnik o <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej ogrzewania podłogowego</a>. Bezwładność może pomagać w przesuwaniu poboru, ale może też utrudniać szybką korektę temperatury.</p>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-units">
      <span class="rk-ts-eyebrow">Jedna litera zmienia znaczenie wyniku</span>
      <h2 class="rk-ts-section-title">kW, kWh<sub>th</sub> i kWh<sub>el</sub> — czego nie wolno mieszać?</h2>
      <p class="rk-ts-section-lead">Do uczciwego porównania potrzebne są trzy różne wielkości. Dopiero ich rozdzielenie pozwala powiedzieć, ile podłoga może zgromadzić, jak długo odda ciepło oraz ile prądu można przesunąć.</p>
      <div class="rk-ts-table">
        <table>
          <thead><tr><th>Wielkość</th><th>Co opisuje?</th><th>Przykładowe zastosowanie</th><th>Najczęstszy błąd</th></tr></thead>
          <tbody>
            <tr><th data-label="Wielkość">kW — moc</th><td data-label="Co opisuje?">Tempo wytwarzania, oddawania albo utraty energii.</td><td data-label="Zastosowanie">Moc pompy ciepła i projektowe obciążenie cieplne.</td><td data-label="Błąd">Traktowanie 6 kW jak energii zużywanej przez sezon.</td></tr>
            <tr><th data-label="Wielkość">kWh<sub>th</sub> — ciepło</th><td data-label="Co opisuje?">Ilość energii cieplnej zgromadzonej lub dostarczonej do budynku.</td><td data-label="Zastosowanie">Pojemność cieplna wylewki i bufora.</td><td data-label="Błąd">Porównanie 1:1 z pojemnością akumulatora.</td></tr>
            <tr><th data-label="Wielkość">kWh<sub>el</sub> — prąd</th><td data-label="Co opisuje?">Energię elektryczną pobraną z sieci, PV albo baterii.</td><td data-label="Zastosowanie">Koszt pracy pompy ciepła oraz pojemność baterii.</td><td data-label="Błąd">Pominięcie COP podczas przeliczania na ciepło.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-ts-equation">
        <span class="rk-ts-equation-label">Most między prądem a ciepłem</span>
        <div class="rk-ts-equation-main">energia elektryczna pompy ≈ dostarczone ciepło ÷ COP</div>
        <p>Jeżeli pompa dostarcza 18 kWh<sub>th</sub> przy COP równym 3, potrzebuje orientacyjnie 6 kWh<sub>el</sub>. Dlatego 18 kWh ciepła w podłodze nie jest odpowiednikiem baterii 18 kWh.</p>
      </div>
      <p>Odrębne znaczenie mocy i energii wyjaśnia również poradnik o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a>. Moc mówi, jak szybko budynek traci ciepło w danych warunkach, natomiast pojemność określa, przez jaki czas określona ilość energii może te straty pokrywać.</p>
    </section>

    <section class="rk-ts-section" id="rk-ts-map">
      <span class="rk-ts-eyebrow">Moduł edukacyjny 3 × 2</span>
      <h2 class="rk-ts-section-title">Sześć elementów, których nie wolno wrzucać do jednego wyniku</h2>
      <p class="rk-ts-section-lead">Wybierz kafel. Pod modułem zobaczysz, co dany element magazynuje, do czego służy, co ogranicza jego użyteczność i z czym nie powinien być sumowany bez dodatkowego modelu.</p>
      <div class="rk-ts-module-grid" role="tablist" aria-label="Elementy magazynowania i wykorzystania energii">
        <button class="rk-ts-module-button" type="button" role="tab" aria-selected="true" data-rk-store="floor"><span class="rk-ts-module-no">01</span><strong>Wylewka i podłoga</strong><small>Ciepło dla ogrzewanych pomieszczeń, ograniczone komfortem i dynamiką.</small></button>
        <button class="rk-ts-module-button" type="button" role="tab" aria-selected="false" data-rk-store="buffer"><span class="rk-ts-module-no">02</span><strong>Bufor instalacyjny</strong><small>Ciepło w wodzie obiegowej, zależne od pojemności i użytecznego ΔT.</small></button>
        <button class="rk-ts-module-button" type="button" role="tab" aria-selected="false" data-rk-store="dhw"><span class="rk-ts-module-no">03</span><strong>Zasobnik CWU</strong><small>Energia przeznaczona na ciepłą wodę użytkową, nie na autonomię pomieszczeń.</small></button>
        <button class="rk-ts-module-button" type="button" role="tab" aria-selected="false" data-rk-store="battery"><span class="rk-ts-module-no">04</span><strong>Akumulator elektryczny</strong><small>Prąd dla wielu odbiorników; inna funkcja, sprawność, moc i wartość użytkowa.</small></button>
        <button class="rk-ts-module-button" type="button" role="tab" aria-selected="false" data-rk-store="cop"><span class="rk-ts-module-no">05</span><strong>COP pompy ciepła</strong><small>Przelicznik pomiędzy pobraną energią elektryczną a oddanym ciepłem.</small></button>
        <button class="rk-ts-module-button" type="button" role="tab" aria-selected="false" data-rk-store="loss"><span class="rk-ts-module-no">06</span><strong>Straty budynku</strong><small>Moc rozładowania magazynu zależna od pogody, wentylacji i temperatury.</small></button>
      </div>
      <div class="rk-ts-module-detail" role="tabpanel" aria-live="polite">
        <h3 id="rk-ts-store-title">Wylewka i podłoga</h3>
        <p id="rk-ts-store-summary">Masywne warstwy ogrzewanej podłogi przechowują ciepło jawne. Im większa masa i zmiana średniej temperatury, tym większy teoretyczny zapas.</p>
        <div class="rk-ts-module-facts">
          <div class="rk-ts-module-fact"><b>Magazynuje</b><span id="rk-ts-store-energy">ciepło w masie materiału</span></div>
          <div class="rk-ts-module-fact"><b>Zasila</b><span id="rk-ts-store-use">wyłącznie potrzeby cieplne pomieszczeń</span></div>
          <div class="rk-ts-module-fact"><b>Ogranicza</b><span id="rk-ts-store-limit">komfort, okładzina, moc i czas reakcji</span></div>
          <div class="rk-ts-module-fact"><b>Nie oznacza</b><span id="rk-ts-store-warning">takiej samej pojemności baterii elektrycznej</span></div>
        </div>
      </div>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-physics">
      <span class="rk-ts-eyebrow">Od masy materiału do kWh ciepła</span>
      <h2 class="rk-ts-section-title">Jak oblicza się pojemność cieplną wylewki?</h2>
      <p class="rk-ts-section-lead">Uproszczone obliczenie zaczyna się od objętości aktywnej warstwy. Następnie objętość mnoży się przez gęstość, ciepło właściwe i rozpatrywaną zmianę średniej temperatury.</p>
      <div class="rk-ts-equation">
        <span class="rk-ts-equation-label">Pojemność cieplna warstwy</span>
        <div class="rk-ts-equation-main">Q<sub>th</sub> = A × d × ρ × c × ΔT</div>
        <div class="rk-ts-formula-row">
          <span class="rk-ts-formula-tag">A — powierzchnia [m²]</span>
          <span class="rk-ts-formula-tag">d — efektywna grubość [m]</span>
          <span class="rk-ts-formula-tag">ρ — gęstość [kg/m³]</span>
          <span class="rk-ts-formula-tag">c — ciepło właściwe [Wh/(kg·K)]</span>
          <span class="rk-ts-formula-tag">ΔT — zmiana temperatury [K]</span>
        </div>
      </div>
      <div class="rk-ts-grid-3">
        <article class="rk-ts-card"><span class="rk-ts-card-label">Masa</span><h3>Nie zawsze pracuje cała płyta</h3><p>W krótkim oknie cenowym nie każda warstwa osiąga równomiernie tę samą temperaturę. Dlatego kalkulator pyta o efektywną grubość uczestniczącą w analizowanym cyklu.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">Temperatura</span><h3>ΔT jest założeniem, nie limitem normowym</h3><p>Zmiana średniej temperatury masy nie jest tym samym co temperatura powierzchni. Trzeba kontrolować komfort, okładzinę i temperaturę w pomieszczeniu.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">Czas</span><h3>Wynik statyczny ma granice</h3><p>Równanie podaje pojemność dla zadanego stanu. Nie opisuje szybkości przepływu ciepła przez warstwy ani rzeczywistej odpowiedzi sterowania.</p></article>
      </div>
      <div class="rk-ts-warning"><p><strong>Pojemność teoretyczna nie jest gwarantowaną pojemnością użytkową.</strong> Kalkulator pozwala jawnie określić udział użyteczny w jednym cyklu. To założenie scenariusza, a nie uniwersalna stała materiałowa.</p></div>
      <p>Znaczenie grubości, materiału i położenia rur rozwija poradnik o <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewce na ogrzewanie podłogowe</a>. W przypadku ogrzewania zatopionego w płycie fundamentowej konieczna jest osobna analiza dynamiki całej konstrukcji.</p>
    </section>

    <section class="rk-ts-section rk-ts-section-dark" id="rk-ts-calculator">
      <span class="rk-ts-eyebrow">Narzędzie główne</span>
      <h2 class="rk-ts-section-title">Kalkulator pojemności podłogi, bufora i przesuwania kosztu</h2>
      <p class="rk-ts-section-lead">Najpierw policz ciepło możliwe do zgromadzenia. Potem sprawdź, ile prądu odpowiada tej ilości przy wpisanym COP oraz czy różnica cen może pokryć dodatkowy koszt automatyki lub bufora.</p>
      <div class="rk-ts-tool" id="rk-ts-tool">
        <div class="rk-ts-tool-head">
          <span class="rk-ts-eyebrow">Dwa etapy, jeden wspólny model</span>
          <h3>Ile ciepła można przesunąć i ile może to być warte?</h3>
          <p>Wartości startowe są przykładem edytowalnym. Kalkulator nie pobiera bieżących cen i nie zakłada, że cała masa jest dostępna każdego dnia.</p>
        </div>
        <div class="rk-ts-tool-body">
          <div class="rk-ts-tool-intro">
            <p>Wpisz dane budynku oraz własnej umowy. Wyniki aktualizują się automatycznie.</p>
            <button class="rk-ts-reset" id="rk-ts-reset" type="button">Przywróć przykład</button>
          </div>

          <div class="rk-ts-tool-stage">
            <div class="rk-ts-tool-stage-title"><span class="rk-ts-tool-stage-no">1</span><div><h4>Pojemność cieplna podłogi i opcjonalnego bufora</h4><p>Bufor ma domyślnie 0 litrów, więc nie jest automatycznie dopisywany do podłogi.</p></div></div>
            <div class="rk-ts-field-grid is-4">
              <div class="rk-ts-field"><label for="rk-ts-area">Aktywna powierzchnia [m²]</label><input id="rk-ts-area" type="number" min="1" max="1000" step="1" value="150" inputmode="decimal"><span class="rk-ts-field-help">Powierzchnia faktycznie objęta ogrzewaniem.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-thickness">Efektywna grubość [cm]</label><input id="rk-ts-thickness" type="number" min="0.5" max="40" step="0.1" value="6.5" inputmode="decimal"><span class="rk-ts-field-help">Warstwa uczestnicząca w rozpatrywanym cyklu.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-density">Gęstość [kg/m³]</label><input id="rk-ts-density" type="number" min="500" max="3500" step="10" value="2400" inputmode="decimal"><span class="rk-ts-field-help">Przykład dla ciężkiej wylewki cementowej.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-specific">Ciepło właściwe [Wh/(kg·K)]</label><input id="rk-ts-specific" type="number" min="0.05" max="1" step="0.001" value="0.277" inputmode="decimal"><span class="rk-ts-field-help">Zastąp wartością dla rzeczywistego materiału.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-delta">Zmiana średniej temperatury [K]</label><input id="rk-ts-delta" type="number" min="0.1" max="5" step="0.1" value="1" inputmode="decimal"><span class="rk-ts-field-help">Nie jest równa automatycznie zmianie temperatury powierzchni.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-buffer-liters">Pojemność bufora [l]</label><input id="rk-ts-buffer-liters" type="number" min="0" max="10000" step="10" value="0" inputmode="decimal"><span class="rk-ts-field-help">Wpisz 0, jeżeli instalacja nie ma magazynu wodnego.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-buffer-delta">Użyteczne ΔT bufora [K]</label><input id="rk-ts-buffer-delta" type="number" min="0" max="60" step="0.5" value="5" inputmode="decimal"><span class="rk-ts-field-help">Zakres faktycznie możliwy do użycia przez instalację.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-usable">Użyteczna część pojemności [%]</label><input id="rk-ts-usable" type="number" min="5" max="100" step="1" value="60" inputmode="decimal"><span class="rk-ts-field-help">Jawne założenie scenariusza dla jednego cyklu.</span></div>
            </div>
          </div>

          <div class="rk-ts-tool-stage">
            <div class="rk-ts-tool-stage-title"><span class="rk-ts-tool-stage-no">2</span><div><h4>Moc, COP i koszt przesunięcia</h4><p>Porównujemy wyłącznie energię objętą jednym cyklem, a nie całe roczne zużycie pompy.</p></div></div>
            <div class="rk-ts-field-grid is-4">
              <div class="rk-ts-field"><label for="rk-ts-loss">Aktualne straty budynku [kW]</label><input id="rk-ts-loss" type="number" min="0.1" max="100" step="0.1" value="5" inputmode="decimal"><span class="rk-ts-field-help">Moc potrzebna przy analizowanej pogodzie.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-pump-power">Dostępna moc cieplna pompy [kW]</label><input id="rk-ts-pump-power" type="number" min="0.5" max="100" step="0.1" value="8" inputmode="decimal"><span class="rk-ts-field-help">Moc w warunkach ładowania, nie nazwa modelu.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-window">Tanie okno [h]</label><input id="rk-ts-window" type="number" min="0.25" max="24" step="0.25" value="4" inputmode="decimal"><span class="rk-ts-field-help">Czas przeznaczony na ładowanie ponad bieżące straty.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-cycle-loss">Dodatkowe straty cyklu [%]</label><input id="rk-ts-cycle-loss" type="number" min="0" max="50" step="1" value="5" inputmode="decimal"><span class="rk-ts-field-help">Uproszczony narzut na przesył i przegrzanie.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-cop-reference">COP w unikanych godzinach</label><input id="rk-ts-cop-reference" type="number" min="1" max="8" step="0.1" value="3.2" inputmode="decimal"><span class="rk-ts-field-help">Warunki wariantu bez przesunięcia.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-cop-charge">COP podczas ładowania</label><input id="rk-ts-cop-charge" type="number" min="1" max="8" step="0.1" value="3" inputmode="decimal"><span class="rk-ts-field-help">Może być inny z powodu pogody i temperatury wody.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-price-high">Cena unikana [zł/kWh]</label><input id="rk-ts-price-high" type="number" min="0" max="10" step="0.01" value="1.10" inputmode="decimal"><span class="rk-ts-field-help">Zmienny koszt energii i dystrybucji z własnej umowy.</span></div>
              <div class="rk-ts-field"><label for="rk-ts-price-low">Cena ładowania [zł/kWh]</label><input id="rk-ts-price-low" type="number" min="-5" max="10" step="0.01" value="0.65" inputmode="decimal"><span class="rk-ts-field-help">Uwzględnij formułę, marżę i zmienne opłaty.</span></div>
            </div>
            <details class="rk-ts-advanced">
              <summary>Założenia sezonowe i inwestycyjne</summary>
              <div class="rk-ts-advanced-content">
                <div class="rk-ts-field-grid is-3">
                  <div class="rk-ts-field"><label for="rk-ts-days">Liczba cykli w roku</label><input id="rk-ts-days" type="number" min="0" max="366" step="1" value="180" inputmode="numeric"><span class="rk-ts-field-help">Nie każdy dzień sezonu zapewnia potrzebę i korzystną różnicę cen.</span></div>
                  <div class="rk-ts-field"><label for="rk-ts-investment">Dodatkowy koszt [zł]</label><input id="rk-ts-investment" type="number" min="0" max="1000000" step="100" value="1500" inputmode="decimal"><span class="rk-ts-field-help">Tylko koszt ponoszony dla tej funkcji: sterowanie, bufor lub montaż.</span></div>
                  <div class="rk-ts-field"><label for="rk-ts-years">Horyzont porównania [lat]</label><input id="rk-ts-years" type="number" min="1" max="40" step="1" value="15" inputmode="numeric"><span class="rk-ts-field-help">Bez prognozowania wzrostu cen i wartości pieniądza.</span></div>
                </div>
              </div>
            </details>
          </div>

          <div class="rk-ts-validation" id="rk-ts-validation" role="alert"></div>
          <div class="rk-ts-results" aria-live="polite">
            <section class="rk-ts-result-system is-floor">
              <h4>Pojemność i czas pracy</h4>
              <div class="rk-ts-result-grid">
                <div class="rk-ts-result-item"><span>Podłoga — teoretycznie</span><strong id="rk-ts-floor-result">6,48 kWh_th</strong></div>
                <div class="rk-ts-result-item"><span>Bufor — teoretycznie</span><strong id="rk-ts-buffer-result">0,00 kWh_th</strong></div>
                <div class="rk-ts-result-item"><span>Użyteczne ciepło w cyklu</span><strong id="rk-ts-useful-result">3,89 kWh_th</strong></div>
                <div class="rk-ts-result-item"><span>Pokrycie podanych strat</span><strong id="rk-ts-runtime-result">0,78 h</strong></div>
                <div class="rk-ts-result-item"><span>Wymagana moc ładowania</span><strong id="rk-ts-required-power">6,02 kW_th</strong></div>
                <div class="rk-ts-result-item"><span>Udział mocy pompy</span><strong id="rk-ts-power-share">75%</strong></div>
              </div>
            </section>
            <section class="rk-ts-result-system is-cost">
              <h4>Prąd i wynik finansowy</h4>
              <div class="rk-ts-result-grid">
                <div class="rk-ts-result-item"><span>Prąd bez przesunięcia</span><strong id="rk-ts-electric-reference">1,22 kWh_el</strong></div>
                <div class="rk-ts-result-item"><span>Prąd podczas ładowania</span><strong id="rk-ts-electric-charge">1,36 kWh_el</strong></div>
                <div class="rk-ts-result-item"><span>Oszczędność jednego cyklu</span><strong id="rk-ts-cycle-saving">0,45 zł</strong></div>
                <div class="rk-ts-result-item"><span>Oszczędność roczna</span><strong id="rk-ts-annual-saving">81 zł/rok</strong></div>
                <div class="rk-ts-result-item"><span>Prosty okres zwrotu</span><strong id="rk-ts-payback-result">18,5 roku</strong></div>
                <div class="rk-ts-result-item"><span>Bilans po horyzoncie</span><strong id="rk-ts-horizon-result">−285 zł</strong></div>
              </div>
            </section>
          </div>
          <div class="rk-ts-status" id="rk-ts-status">
            <strong id="rk-ts-status-title">Wynik wymaga interpretacji</strong>
            <span id="rk-ts-status-text">Pojemność istnieje, ale przy podanych cenach dodatkowa automatyka zwraca się dopiero w długim okresie.</span>
          </div>

          <div class="rk-ts-chart-panel">
            <div class="rk-ts-chart-head"><h4>Wpływ zmiany temperatury na pojemność podłogi</h4></div>
            <div class="rk-ts-chart-legend"><span><i class="is-direct"></i>ciepło w podłodze [kWh_th]</span><span><i class="is-pump"></i>odpowiednik prądu przy COP ładowania [kWh_el]</span></div>
            <div class="rk-ts-chart-wrap">
              <svg id="rk-ts-chart" viewBox="0 0 760 330" role="img" aria-labelledby="rk-ts-chart-title rk-ts-chart-desc">
                <title id="rk-ts-chart-title">Pojemność podłogi w zależności od zmiany średniej temperatury</title>
                <desc id="rk-ts-chart-desc">Dwie linie pokazują kWh ciepła w podłodze oraz orientacyjny odpowiednik energii elektrycznej przy zadanym COP.</desc>
                <g id="rk-ts-chart-grid"></g>
                <line class="rk-ts-axis" x1="64" y1="280" x2="728" y2="280"></line>
                <line class="rk-ts-axis" x1="64" y1="28" x2="64" y2="280"></line>
                <path class="rk-ts-path-direct" id="rk-ts-chart-floor-path" d=""></path>
                <path class="rk-ts-path-pump" id="rk-ts-chart-electric-path" d=""></path>
                <g id="rk-ts-chart-dots"></g>
              </svg>
            </div>
            <span class="rk-ts-chart-reading" id="rk-ts-chart-reading">Wykres pokazuje pojemność statyczną. Nie potwierdza, że cała masa zdąży osiągnąć wybraną temperaturę w podanym oknie.</span>
          </div>
          <p class="rk-ts-disclosure">Narzędzie ma charakter edukacyjny. Nie zastępuje dynamicznej symulacji budynku, OZC, projektu instalacji, danych materiałowych, instrukcji źródła ani analizy konkretnej umowy sprzedaży energii.</p>
        </div>
      </div>

      <aside class="rk-ts-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <span class="rk-ts-eyebrow">Od pojemności do działającej instalacji</span>
        <div class="rk-ts-cta-title">Policzyłeś, ile ciepła może przyjąć podłoga. Teraz trzeba sprawdzić, czy instalacja dostarczy je bez przegrzewania i pogorszenia pracy pompy</div>
        <p>Sama liczba kWh nie wyznacza rozstawu rur, długości pętli, przepływów, temperatury zasilania ani mocy potrzebnej do ładowania w tanim oknie. Projekt łączy straty każdego pomieszczenia, opór okładzin, hydraulikę oraz wymagania źródła ciepła.</p>
        <a class="rk-ts-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        <small class="rk-ts-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-ts-section" id="rk-ts-reading">
      <span class="rk-ts-eyebrow">Cztery wyniki, cztery pytania</span>
      <h2 class="rk-ts-section-title">Jak interpretować wynik kalkulatora?</h2>
      <p class="rk-ts-section-lead">Największa liczba nie musi być najważniejsza. Pojemność teoretyczna opisuje stan końcowy, a decyzję projektową ograniczają również czas, moc, komfort i możliwość rzeczywistego przesunięcia poboru.</p>
      <div class="rk-ts-grid-4">
        <article class="rk-ts-card"><span class="rk-ts-card-label">1</span><h3>Pojemność podłogi</h3><p>Pokazuje energię związaną z wpisaną masą i zmianą temperatury. Nie uwzględnia nierównomiernego rozkładu temperatury.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">2</span><h3>Użyteczne ciepło</h3><p>To część pojemności przyjęta do konkretnego cyklu. Pole procentowe zastępuje nieznany wynik modelu dynamicznego jawnym założeniem.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">3</span><h3>Czas pokrycia strat</h3><p>Powstaje przez podzielenie użytecznego ciepła przez aktualną moc strat. Przy mrozie będzie krótszy niż w łagodny dzień.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">4</span><h3>Oszczędność</h3><p>Dotyczy wyłącznie wpisanej liczby cykli oraz różnicy kosztu prądu po uwzględnieniu COP i strat.</p></article>
      </div>
      <div class="rk-ts-callout"><p><strong>Wynik „brak zwrotu” jest prawidłowym wynikiem.</strong> Istniejąca masa podłogi może pomagać bez dodatkowego kosztu, lecz zakup dużego bufora wyłącznie dla arbitrażu cenowego nie musi być opłacalny.</p></div>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-power">
      <span class="rk-ts-eyebrow">Energia bez czasu nie opisuje działania</span>
      <h2 class="rk-ts-section-title">Pojemność cieplna a moc ładowania i rozładowania</h2>
      <p class="rk-ts-section-lead">Magazyn o pojemności 10 kWh nie zostanie automatycznie naładowany w dwie godziny. Źródło musi jednocześnie pokryć bieżące straty budynku i dostarczyć nadwyżkę do masy podłogi.</p>
      <div class="rk-ts-system-map">
        <article class="rk-ts-flow-card is-water">
          <div class="rk-ts-flow-title">Ładowanie podłogi</div>
          <div class="rk-ts-flow is-five">
            <div class="rk-ts-flow-node">prąd lub paliwo</div><div class="rk-ts-flow-node">źródło ciepła</div><div class="rk-ts-flow-node">woda grzewcza</div><div class="rk-ts-flow-node">warstwy podłogi</div><div class="rk-ts-flow-node">wzrost temperatury</div>
          </div>
          <div class="rk-ts-flow-formula">Wymagana moc źródła ≈ bieżące straty budynku + energia ładowania ÷ czas taniego okna.</div>
        </article>
        <article class="rk-ts-flow-card is-electric">
          <div class="rk-ts-flow-title">Rozładowanie podłogi</div>
          <div class="rk-ts-flow is-five">
            <div class="rk-ts-flow-node">ciepło w masie</div><div class="rk-ts-flow-node">powierzchnia podłogi</div><div class="rk-ts-flow-node">pomieszczenie</div><div class="rk-ts-flow-node">przegrody i wentylacja</div><div class="rk-ts-flow-node">otoczenie</div>
          </div>
          <div class="rk-ts-flow-formula">Orientacyjny czas pokrycia = użyteczna energia cieplna ÷ aktualne straty cieplne budynku.</div>
        </article>
      </div>
      <p>Jeżeli dom traci chwilowo 5 kW, zapas 10 kWh<sub>th</sub> odpowiada około dwóm godzinom pokrycia tej straty. Przy stracie 2 kW ten sam zapas wystarcza orientacyjnie na pięć godzin. Z tego powodu jeden wynik „na ile godzin wystarczy podłoga” nie istnieje bez określenia warunków zewnętrznych.</p>
      <p>Moc strat powinna wynikać z <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansu cieplnego budynku</a>, a rozdział mocy pomiędzy pomieszczenia z obliczeń wykonywanych dla każdej strefy.</p>
    </section>

    <section class="rk-ts-section" id="rk-ts-comparison">
      <span class="rk-ts-eyebrow">Porównanie funkcji, nie samych liczb</span>
      <h2 class="rk-ts-section-title">Podłoga, bufor, CWU i bateria — czym naprawdę się różnią?</h2>
      <p class="rk-ts-section-lead">Koszt za jedną znamionową kWh nie jest uczciwą miarą, jeżeli urządzenia dostarczają inne usługi. Podłoga może przesuwać ogrzewanie, a bateria zasila odbiorniki elektryczne i może pełnić funkcję awaryjną, jeżeli system został do tego przystosowany.</p>
      <div class="rk-ts-table">
        <table>
          <thead><tr><th>Element</th><th>Postać energii</th><th>Główne zadanie</th><th>Najważniejsze ograniczenie</th></tr></thead>
          <tbody>
            <tr><th data-label="Element">Podłoga</th><td data-label="Postać energii">Ciepło w masie przegród.</td><td data-label="Główne zadanie">Krótkookresowe przesunięcie ogrzewania i stabilizacja temperatury.</td><td data-label="Ograniczenie">Komfort, dynamika, straty budynku i brak zasilania innych urządzeń.</td></tr>
            <tr><th data-label="Element">Bufor CO</th><td data-label="Postać energii">Ciepło w wodzie instalacyjnej.</td><td data-label="Główne zadanie">Hydraulika, wydłużenie cyklu albo świadome magazynowanie.</td><td data-label="Ograniczenie">Miejsce, koszt, straty postojowe i użyteczny zakres temperatur.</td></tr>
            <tr><th data-label="Element">Zasobnik CWU</th><td data-label="Postać energii">Ciepło w wodzie użytkowej.</td><td data-label="Główne zadanie">Pokrycie rozbiorów ciepłej wody.</td><td data-label="Ograniczenie">Nie zwiększa bezpośrednio czasu ogrzewania pomieszczeń.</td></tr>
            <tr><th data-label="Element">Bateria</th><td data-label="Postać energii">Energia elektryczna.</td><td data-label="Główne zadanie">Zasilanie różnych odbiorników, autokonsumpcja i opcjonalny backup.</td><td data-label="Ograniczenie">Moc, użyteczna pojemność, sprawność systemu, cykle i koszt.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-ts-note"><p><strong>Uczciwa granica porównania:</strong> jeżeli pytanie dotyczy wyłącznie przesunięcia ogrzewania, można porównać koszt dostarczenia tej samej ilości ciepła w tym samym czasie. Nie wolno jednak z tego wyciągać wniosku, że podłoga zastępuje wszystkie funkcje baterii.</p></div>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-tariffs">
      <span class="rk-ts-eyebrow">Cena z rynku to nie cały rachunek</span>
      <h2 class="rk-ts-section-title">Taryfy dynamiczne: kiedy przesunięcie poboru może obniżyć koszt?</h2>
      <p class="rk-ts-section-lead">Korzyść pojawia się wtedy, gdy różnica zmiennego kosztu energii jest większa od skutku gorszego COP, dodatkowych strat oraz kosztu sterowania. Potrzebna jest również realna możliwość ograniczenia pracy w drogim okresie.</p>
      <div class="rk-ts-step-grid">
        <article class="rk-ts-step"><span class="rk-ts-step-no">1</span><div><h3>Sprawdź własną umowę</h3><p>Formuła sprzedawcy może obejmować marżę, opłatę handlową, ograniczenia cen i zasady inne niż proste odwzorowanie notowania giełdowego.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">2</span><div><h3>Policz koszt zmienny</h3><p>Do każdej przesuwanej kWh przypisz energię oraz zmienne składniki dystrybucji. Opłaty stałe nie znikają po zmianie godziny poboru.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">3</span><div><h3>Porównaj COP</h3><p>Tania godzina może wystąpić przy niższej temperaturze zewnętrznej albo wymagać wyższej temperatury wody, co zmienia zużycie prądu.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">4</span><div><h3>Ogranicz liczbę cykli</h3><p>Nie każdy dzień ma wystarczające zapotrzebowanie na ciepło i korzystną różnicę cen. Latem podłoga nie tworzy popytu na ogrzewanie.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">5</span><div><h3>Zachowaj komfort</h3><p>Ładowanie kończy się wcześniej, jeżeli rośnie temperatura pomieszczeń, podłogi lub wrażliwej okładziny.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">6</span><div><h3>Policz koszt dodatkowy</h3><p>Istniejąca masa może nie wymagać zakupu, ale automatyka, integracja albo duży bufor są osobnym nakładem inwestycyjnym.</p></div></article>
      </div>
      <div class="rk-ts-warning"><p><strong>RCE nie jest synonimem ceny zakupu w umowie dynamicznej.</strong> Rynkowa cena energii używana w net-billingu prosumenckim i cena poboru wynikająca z oferty sprzedawcy to odrębne mechanizmy.</p></div>
      <p>W praktyce podłogówka może także współpracować z taryfą wielostrefową. Niezależnie od nazwy oferty należy policzyć faktyczny udział poboru w poszczególnych godzinach, a nie mnożyć całego rocznego zużycia przez najniższą stawkę.</p>
    </section>

    <section class="rk-ts-section" id="rk-ts-heat-pump">
      <span class="rk-ts-eyebrow">Źródło, pogoda i autokonsumpcja</span>
      <h2 class="rk-ts-section-title">Pompa ciepła i fotowoltaika — kiedy podłoga pomaga?</h2>
      <p class="rk-ts-section-lead">Podłoga może przyjąć część ciepła wytworzonego wtedy, gdy energia elektryczna jest tańsza lub pochodzi z bieżącej produkcji PV. Nie oznacza to jednak, że produkcja letnia ogrzeje dom zimą ani że każdy nadmiar PV da się zamienić na użyteczne ciepło.</p>
      <div class="rk-ts-grid-3">
        <article class="rk-ts-card"><span class="rk-ts-card-label is-green">Dobra sytuacja</span><h3>Jest popyt na ciepło</h3><p>Chłodny, słoneczny dzień może łączyć produkcję PV z możliwością niewielkiego podniesienia temperatury masy bez przegrzewania wnętrza.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">Warunek</span><h3>Źródło ma zapas mocy</h3><p>Pompa musi pokryć aktualne straty i jednocześnie dostarczyć nadwyżkę. Sam duży magazyn nie zwiększa wydajności sprężarki.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Ryzyko</span><h3>Wyższy parametr obniża COP</h3><p>Jeżeli ładowanie wymaga znaczącego podniesienia temperatury zasilania, koszt dodatkowego prądu może skonsumować część różnicy cen.</p></article>
      </div>
      <p>Projekt <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">ogrzewania podłogowego z pompą ciepła</a> powinien sprawdzić moc powierzchniową, temperaturę wody, przepływy i dostępny zakres regulacji. Samo ustawienie stałego zasilania 35°C nie gwarantuje ani wymaganej mocy, ani dobrej efektywności sezonowej.</p>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-control">
      <span class="rk-ts-eyebrow">Algorytm ma chronić komfort i źródło</span>
      <h2 class="rk-ts-section-title">Jak sterować ładowaniem podłogi?</h2>
      <p class="rk-ts-section-lead">Sterowanie nie powinno polegać na bezwarunkowym podniesieniu temperatury zasilania w najtańszej godzinie. Potrzebne są ograniczenia, prognoza oraz zasady minimalnego czasu pracy i przepływu źródła.</p>
      <div class="rk-ts-grid-4">
        <article class="rk-ts-card"><span class="rk-ts-card-label">Pogoda</span><h3>Prognoza temperatury</h3><p>Decyduje, jak szybko budynek zużyje zapas i czy po tanim oknie nadal wystąpi zapotrzebowanie.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">Słońce</span><h3>Prognoza zysków</h3><p>Duże przeszklenia mogą po nocnym ładowaniu otrzymać dodatkowe zyski słoneczne i doprowadzić do przegrzewania.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">Źródło</span><h3>Minimalny przepływ</h3><p>Zamykanie wielu pętli nie może naruszać wymagań pompy ciepła ani powodować niestabilnej pracy hydraulicznej.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">Komfort</span><h3>Limity stref</h3><p>Sypialnia, łazienka i salon mogą wymagać innych ograniczeń, ale nie każda instalacja dobrze znosi agresywne sterowanie strefowe.</p></article>
      </div>
      <p><a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">Sterowanie pogodowe podłogówką</a> pozostaje podstawą dostosowania temperatury wody do obciążenia. Sygnał ceny może być dodatkowym wejściem, lecz nie powinien omijać krzywej grzewczej, zabezpieczeń i logiki producenta źródła.</p>
      <div class="rk-ts-note"><p><strong>SG Ready albo Modbus nie są jedynymi możliwymi drogami integracji.</strong> Istotna jest udokumentowana kompatybilność konkretnego urządzenia, dopuszczone wejścia, interfejsy, minimalne czasy pracy oraz sposób reakcji na sygnał zewnętrzny.</p></div>
    </section>

    <section class="rk-ts-section" id="rk-ts-buffer">
      <span class="rk-ts-eyebrow">Hydraulika czy magazynowanie?</span>
      <h2 class="rk-ts-section-title">Czy pompa ciepła potrzebuje dużego bufora?</h2>
      <p class="rk-ts-section-lead">Pojemność bufora musi wynikać z jego funkcji. Mały zbiornik może zwiększać zład albo stabilizować przepływ, natomiast magazynowanie ciepła przez kilka godzin wymaga osobnego obliczenia energii, temperatur i miejsca.</p>
      <div class="rk-ts-table">
        <table>
          <thead><tr><th>Cel</th><th>Co trzeba policzyć?</th><th>Dlaczego sama liczba litrów nie wystarcza?</th></tr></thead>
          <tbody>
            <tr><th data-label="Cel">Minimalny zład źródła</th><td data-label="Co policzyć?">Wymagania urządzenia, objętość instalacji i sposób odszraniania.</td><td data-label="Dlaczego?">Potrzebna pojemność zależy od konstrukcji i sterowania konkretnej pompy.</td></tr>
            <tr><th data-label="Cel">Rozdzielenie hydrauliczne</th><td data-label="Co policzyć?">Przepływy źródła i odbiorników, pompy, opory i temperatury.</td><td data-label="Dlaczego?">Zbiornik może zmieniać temperaturę powrotu i efektywność układu.</td></tr>
            <tr><th data-label="Cel">Magazynowanie taryfowe</th><td data-label="Co policzyć?">Potrzebne kWh, użyteczne ΔT, straty, moc ładowania i temperaturę użyteczną dla podłogi.</td><td data-label="Dlaczego?">1000 litrów przy ΔT 5 K przechowuje około 5,8 kWh, a nie 34,8 kWh.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-ts-equation">
        <span class="rk-ts-equation-label">Uproszczona pojemność wody</span>
        <div class="rk-ts-equation-main">Q<sub>th</sub> ≈ objętość [l] × 1,163 Wh/(l·K) × użyteczne ΔT [K]</div>
        <p>Duże ΔT jest użyteczne tylko wtedy, gdy cały jego zakres pozostaje dostępny dla źródła i odbiorników. W niskotemperaturowej podłogówce nie należy automatycznie przyjmować 30 K.</p>
      </div>
      <p>Różnicę między funkcjami zbiornika rozwija poradnik o <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">buforze ciepła w ogrzewaniu podłogowym</a>. Dobór nie powinien zaczynać się od stwierdzenia, że 100, 500 albo 1000 litrów zawsze jest wartością właściwą.</p>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-example">
      <span class="rk-ts-eyebrow">Scenariusz, nie case study</span>
      <h2 class="rk-ts-section-title">Dom 150 m² — co naprawdę wynika z przykładu?</h2>
      <p class="rk-ts-section-lead">Przyjmijmy 150 m² aktywnej podłogi, efektywną warstwę 6,5 cm, gęstość 2400 kg/m³, ciepło właściwe 0,277 Wh/(kg·K) i zmianę średniej temperatury masy o 3 K.</p>
      <div class="rk-ts-table">
        <table>
          <thead><tr><th>Element</th><th>Założenie</th><th>Wynik</th><th>Jak go czytać?</th></tr></thead>
          <tbody>
            <tr><th data-label="Element">Wylewka</th><td data-label="Założenie">150 m² × 6,5 cm × 2400 kg/m³ × 0,277 Wh/(kg·K) × 3 K</td><td data-label="Wynik"><strong>około 19,45 kWh_th</strong></td><td data-label="Interpretacja">Teoretyczna pojemność wpisanej masy, nie gwarantowany zapas użytkowy.</td></tr>
            <tr><th data-label="Element">Bufor 1000 l</th><td data-label="Założenie">Użyteczne ΔT = 5 K</td><td data-label="Wynik"><strong>około 5,82 kWh_th</strong></td><td data-label="Interpretacja">Wynik zależy liniowo od rzeczywiście dostępnej różnicy temperatur.</td></tr>
            <tr><th data-label="Element">Ten sam bufor</th><td data-label="Założenie">ΔT = 30 K</td><td data-label="Wynik"><strong>około 34,89 kWh_th</strong></td><td data-label="Interpretacja">Wartość matematyczna nie potwierdza użyteczności całego zakresu dla podłogówki.</td></tr>
            <tr><th data-label="Element">CWU 300 l</th><td data-label="Założenie">Podgrzanie o 45 K</td><td data-label="Wynik"><strong>około 15,70 kWh_th</strong></td><td data-label="Interpretacja">Energia do ciepłej wody, nie czas ogrzewania pomieszczeń.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-ts-callout"><p><strong>Najważniejsza korekta:</strong> nie sumujemy automatycznie 19,45 + 34,89 + 15,70 kWh i nie nazywamy wyniku pojemnością podłogi. Są to trzy zasoby o różnych temperaturach, funkcjach i ograniczeniach.</p></div>
      <p>Przy COP równym 3 teoretyczne 19,45 kWh<sub>th</sub> w podłodze odpowiada około 6,48 kWh<sub>el</sub> pobranej przez pompę. To nadal nie oznacza pełnej równoważności z baterią 6,48 kWh, ponieważ różnią się moc, sprawność, sterowalność i zakres odbiorników.</p>
    </section>

    <section class="rk-ts-section" id="rk-ts-errors">
      <span class="rk-ts-eyebrow">Błędy, które zmieniają wniosek</span>
      <h2 class="rk-ts-section-title">Najczęstsze błędy przy traktowaniu podłogi jak magazynu</h2>
      <div class="rk-ts-grid-3">
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 1</span><h3>Sumowanie podłogi, bufora i CWU</h3><p>Matematyczna suma nie oznacza jednej dostępnej pojemności dla ogrzewania pomieszczeń.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 2</span><h3>Porównanie kWh bez COP</h3><p>Ciepło w betonie i prąd w baterii wymagają przeliczenia przez źródło oraz uwzględnienia funkcji końcowej.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 3</span><h3>Całe zużycie w taniej godzinie</h3><p>Przesunąć można tylko część poboru ograniczoną pojemnością, mocą, pogodą i komfortem.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 4</span><h3>Stałe COP przez całą dobę</h3><p>Warunki zewnętrzne i wymagany parametr wody mogą sprawić, że ładowanie będzie energetycznie droższe.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 5</span><h3>ΔT bufora bez temperatur</h3><p>Różnica 30 K nic nie daje, jeżeli dolna część zakresu nie ogrzeje podłogi albo górna pogarsza pracę źródła.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 6</span><h3>Brak zapasu mocy</h3><p>Źródło dobrane blisko obciążenia projektowego może nie naładować magazynu w krótkim oknie mrozowym.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 7</span><h3>Ignorowanie zysków słonecznych</h3><p>Nocne ładowanie przed słonecznym dniem może prowadzić do wzrostu temperatury ponad oczekiwanie.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 8</span><h3>Obietnica stałego zwrotu</h3><p>Ceny, liczba korzystnych godzin, pogoda i zachowanie użytkowników są zmienne.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Błąd 9</span><h3>Automatyka bez hydrauliki</h3><p>Zamykanie pętli i zmiana temperatury muszą respektować przepływ minimalny, pompę i równoważenie.</p></article>
      </div>
      <p>Jeżeli przepływy nie odpowiadają projektowi, najpierw trzeba zweryfikować rozdzielacz, nastawy i <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">pracę rotametrów</a>. Algorytm cenowy nie naprawi zapowietrzonych, zbyt długich ani źle zrównoważonych pętli.</p>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-data">
      <span class="rk-ts-eyebrow">Dane przed zakupem automatyki lub zbiornika</span>
      <h2 class="rk-ts-section-title">Co trzeba znać, aby policzyć magazynowanie odpowiedzialnie?</h2>
      <p class="rk-ts-section-lead">Rzetelny model zaczyna się od budynku i instalacji, a nie od ceny bufora albo najniższej godziny na wykresie rynku energii.</p>
      <div class="rk-ts-step-grid">
        <article class="rk-ts-step"><span class="rk-ts-step-no">1</span><div><h3>Straty każdego pomieszczenia</h3><p>Określają potrzebną moc, szybkość rozładowania i ryzyko niedogrzania po zatrzymaniu źródła.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">2</span><div><h3>Warstwy i powierzchnia czynna</h3><p>Potrzebne są grubości, materiały, izolacja, rozmieszczenie rur, strefy wyłączone i okładziny.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">3</span><div><h3>Moc i charakterystyka źródła</h3><p>Sprawdź wydajność dla analizowanej temperatury zewnętrznej i zasilania, modulację oraz wymagany przepływ.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">4</span><div><h3>Przepływy i opory</h3><p>Ładowanie wymaga dostarczenia dodatkowej mocy do konkretnych stref bez przekroczenia możliwości pompy obiegowej.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">5</span><div><h3>Temperatury graniczne</h3><p>Uwzględnij komfort, pomieszczenie, okładzinę, wymagania materiałów i dopuszczony zakres źródła.</p></div></article>
        <article class="rk-ts-step"><span class="rk-ts-step-no">6</span><div><h3>Rzeczywista formuła cenowa</h3><p>Potrzebne są zasady konkretnego sprzedawcy, koszty zmienne, licznik oraz dostępność danych i sterowania.</p></div></article>
      </div>
      <p>Podstawą jest <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalny projekt ogrzewania podłogowego</a>, w którym rozstaw, długość pętli, przepływ i temperatura wynikają z obliczeń, a nie z jednego ustawienia dla całego domu.</p>
    </section>

    <section class="rk-ts-section" id="rk-ts-summary">
      <span class="rk-ts-eyebrow">Wniosek bez wojny technologii</span>
      <h2 class="rk-ts-section-title">Podłoga jest wartościową masą akumulacyjną, ale nie darmową baterią</h2>
      <p class="rk-ts-section-lead">Największą korzyścią jest możliwość przesunięcia części pracy ogrzewania bez kupowania osobnego magazynu elektrycznego. Skala tej korzyści musi jednak wynikać z użytecznej pojemności, strat budynku, mocy źródła, COP, komfortu i rzeczywistych cen.</p>
      <div class="rk-ts-grid-3">
        <article class="rk-ts-card"><span class="rk-ts-card-label is-green">Warto wykorzystać</span><h3>Istniejącą bezwładność</h3><p>Łagodne, prognozowane przesunięcie pracy może wspierać taryfę wielostrefową, dynamiczną lub autokonsumpcję PV.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label">Trzeba policzyć</span><h3>Energię, moc i czas</h3><p>Jedna liczba kWh nie odpowiada na pytanie o możliwość ładowania, czas pokrycia strat i temperaturę pomieszczeń.</p></article>
        <article class="rk-ts-card"><span class="rk-ts-card-label is-orange">Nie należy obiecywać</span><h3>Stałych oszczędności</h3><p>Różnice cen, pogoda, COP i liczba użytecznych cykli zmieniają się; dlatego wynik pozostaje scenariuszem.</p></article>
      </div>
      <div class="rk-ts-cta">
        <span class="rk-ts-eyebrow">Końcowy krok projektowy</span>
        <div class="rk-ts-cta-title">Zaprojektuj podłogówkę jako instalację grzewczą — jej zdolność do przesuwania ciepła będzie wtedy dodatkową korzyścią</div>
        <p>Otrzymasz rozstaw i przebieg rur, podział na pętle, długości, przepływy, nastawy oraz parametry potrzebne do współpracy ze źródłem. Najpierw zapewniamy moc i komfort, a później budujemy bezpieczną strategię sterowania.</p>
        <a class="rk-ts-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-ts-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-ts-section rk-ts-section-soft" id="rk-ts-sources">
      <span class="rk-ts-eyebrow">Dokumenty oficjalne</span>
      <h2 class="rk-ts-section-title">Źródła techniczne i zakres obliczeń</h2>
      <p class="rk-ts-section-lead">Linki zewnętrzne znajdują się wyłącznie w tej sekcji. Prowadzą do regulatora rynku, operatora systemu oraz oficjalnych kart norm.</p>
      <ul class="rk-ts-sources">
        <li><a href="https://www.ure.gov.pl/pl/urzad/informacje-ogolne/aktualnosci/12134,Rachunki-za-energie-elektryczna-od-24-sierpnia-2024-r-gospodarstwa-domowe-moga-z.html" target="_blank" rel="nofollow noopener noreferrer">Urząd Regulacji Energetyki — umowy z ceną dynamiczną</a><span>Warunki korzystania, licznik zdalnego odczytu, formuła sprzedawcy, ryzyko, opłaty i różnica między zakupem energii a rozliczeniem prosumenta.</span></li>
        <li><a href="https://www.pse.pl/oire/rce-rynkowa-cena-energii-elektrycznej" target="_blank" rel="nofollow noopener noreferrer">Polskie Sieci Elektroenergetyczne — Rynkowa Cena Energii</a><span>Oficjalna publikacja danych RCE. Dane te nie zastępują formuły ceny zakupu zawartej w umowie odbiorcy.</span></li>
        <li><a href="https://www.iso.org/standard/74686.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-4:2021 — dynamiczna moc systemów aktywowanych cieplnie</a><span>Oficjalna karta normy dotyczącej obliczeń w warunkach nieustalonych.</span></li>
        <li><a href="https://www.iso.org/standard/65696.html" target="_blank" rel="nofollow noopener noreferrer">ISO 52016-1:2017 — energia, temperatury wewnętrzne i obciążenia</a><span>Oficjalna karta metod godzinowych i miesięcznych dla potrzeb ogrzewania, chłodzenia i temperatur wewnętrznych.</span></li>
        <li><a href="https://www.iso.org/standard/64999.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-6:2018 — sterowanie systemami płaszczyznowymi</a><span>Oficjalna karta części normy poświęconej sterowaniu wbudowanymi systemami ogrzewania i chłodzenia.</span></li>
        <li><a href="https://build-up.ec.europa.eu/en/resources-and-tools/tools/tool-epb-standard-en-iso-52016-12017-calculations" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska BUILD UP — narzędzie do EN ISO 52016-1</a><span>Materiał instytucjonalny pokazujący zastosowanie obliczeń godzinowych temperatur i obciążeń budynku.</span></li>
      </ul>
      <div class="rk-ts-responsibility"><p><strong>Zakres odpowiedzialności:</strong> kalkulator wykonuje uproszczony bilans pojemności cieplnej i scenariusz kosztowy. Nie modeluje warstw w czasie, zysków słonecznych, temperatury powierzchni, sprzężeń regulacji, odszraniania ani pełnej formuły rachunku. Dane konkretnego budynku i urządzeń mają pierwszeństwo.</p></div>
    </section>

    <section class="rk-ts-section" id="rk-ts-faq">
      <span class="rk-ts-eyebrow">Rozbudowane pytania i odpowiedzi</span>
      <h2 class="rk-ts-section-title">FAQ — ogrzewanie podłogowe jako magazyn energii</h2>
      <div class="rk-ts-faq">
        <details><summary>Czy podłoga jest magazynem energii?</summary><div class="rk-ts-faq-answer"><p>Tak, masywna podłoga może magazynować energię w postaci ciepła jawnego. Nie magazynuje jednak prądu i nie zasila odbiorników elektrycznych. Jej użyteczność ograniczają komfort, temperatura, dynamika warstw, straty budynku oraz możliwość sterowania źródłem.</p></div></details>
        <details><summary>Ile kWh może zgromadzić podłoga o powierzchni 150 m²?</summary><div class="rk-ts-faq-answer"><p>Wynik zależy od efektywnej grubości, gęstości, ciepła właściwego i zmiany średniej temperatury. Dla 150 m², 6,5 cm, 2400 kg/m³, 0,277 Wh/(kg·K) i 1 K jest to około 6,48 kWh ciepła; dla 3 K około 19,45 kWh. Są to wartości teoretyczne dla przyjętej masy.</p></div></details>
        <details><summary>Czy 20 kWh ciepła w podłodze odpowiada baterii 20 kWh?</summary><div class="rk-ts-faq-answer"><p>Nie. Podłoga przechowuje ciepło, a bateria energię elektryczną. Przy COP pompy równym 3 dostarczenie 20 kWh ciepła wymaga orientacyjnie około 6,7 kWh prądu. Bateria może ponadto zasilać wiele innych odbiorników, czego podłoga nie potrafi.</p></div></details>
        <details><summary>Czy energię z zasobnika CWU można dodać do pojemności podłogi?</summary><div class="rk-ts-faq-answer"><p>Można ją policzyć jako osobny zasób ciepła, ale nie należy dodawać jej do autonomii ogrzewania pomieszczeń. Zasobnik CWU realizuje potrzeby ciepłej wody użytkowej i zwykle nie oddaje energii do pętli podłogowych.</p></div></details>
        <details><summary>Czy podniesienie temperatury wylewki o 3 K jest zawsze bezpieczne?</summary><div class="rk-ts-faq-answer"><p>Nie. Zależy to od temperatury wyjściowej, konstrukcji podłogi, okładziny, temperatury powierzchni, pomieszczenia, zysków słonecznych i oczekiwań użytkownika. Kalkulator pozwala wpisać 3 K, ale nie stanowi to potwierdzenia dopuszczalności takiego cyklu.</p></div></details>
        <details><summary>Jak długo podłoga będzie oddawać zgromadzone ciepło?</summary><div class="rk-ts-faq-answer"><p>Orientacyjnie czas można oszacować, dzieląc użyteczne kWh ciepła przez aktualne straty budynku w kW. Rzeczywisty przebieg nie jest liniowy i zależy od temperatur warstw, powietrza, pogody, wentylacji oraz zysków wewnętrznych i słonecznych.</p></div></details>
        <details><summary>Czy duży bufor zawsze zwiększa oszczędności pompy ciepła?</summary><div class="rk-ts-faq-answer"><p>Nie. Może zwiększyć pojemność, ale zajmuje miejsce, kosztuje, ma straty postojowe i może wymagać wyższych temperatur. Jeżeli pogarsza COP albo różnica cen jest mała, zwrot z zakupu wyłącznie dla magazynowania może nie wystąpić.</p></div></details>
        <details><summary>Ile energii przechowuje bufor 1000 litrów?</summary><div class="rk-ts-faq-answer"><p>Przy użytecznej różnicy temperatur 5 K jest to około 5,8 kWh ciepła. Przy 10 K około 11,6 kWh, a przy 30 K około 34,9 kWh. Najważniejsze pytanie brzmi jednak, jaki zakres temperatur jest rzeczywiście użyteczny dla źródła i podłogówki.</p></div></details>
        <details><summary>Czy taryfa dynamiczna zawsze obniża koszt ogrzewania?</summary><div class="rk-ts-faq-answer"><p>Nie. Wymaga aktywnego zarządzania poborem i wiąże się z ryzykiem drogich okresów. Trzeba uwzględnić formułę sprzedawcy, opłaty, licznik, różnicę COP, liczbę cykli, komfort i możliwość realnego ograniczenia pracy w drogich godzinach.</p></div></details>
        <details><summary>Czy RCE jest ceną prądu w taryfie dynamicznej?</summary><div class="rk-ts-faq-answer"><p>Nie automatycznie. RCE jest wykorzystywana m.in. w rozliczeniach energii wprowadzanej przez prosumentów. Cena energii pobieranej w umowie dynamicznej wynika z formuły konkretnego sprzedawcy i może opierać się na innych notowaniach oraz zawierać dodatkowe składniki.</p></div></details>
        <details><summary>Czy lepiej ładować podłogę nocą czy w dzień?</summary><div class="rk-ts-faq-answer"><p>Nie ma jednej odpowiedzi. Noc może mieć niższą cenę, ale także niższą temperaturę zewnętrzną i gorszy COP. W dzień mogą wystąpić produkcja PV, wyższy COP oraz zyski słoneczne zwiększające ryzyko przegrzania. Potrzebna jest prognoza i model konkretnego budynku.</p></div></details>
        <details><summary>Czy potrzebny jest protokół SG Ready lub Modbus?</summary><div class="rk-ts-faq-answer"><p>Nie są to jedyne możliwe sposoby integracji. Najważniejsze jest, aby producent dopuszczał wybrany sygnał i sposób sterowania, a algorytm respektował temperatury, minimalne czasy pracy, przepływy i zabezpieczenia. Kompatybilność trzeba sprawdzić dla konkretnego urządzenia.</p></div></details>
        <details><summary>Czy sterowanie strefowe pomaga w magazynowaniu ciepła?</summary><div class="rk-ts-faq-answer"><p>Może ograniczyć ładowanie wybranych pomieszczeń, ale zamykanie pętli zmienia przepływy i warunki pracy źródła. Nie powinno naruszać minimalnego przepływu ani powodować taktowania. Decyzja zależy od hydrauliki i sposobu regulacji instalacji.</p></div></details>
        <details><summary>Czy kalkulator zastępuje OZC i projekt podłogówki?</summary><div class="rk-ts-faq-answer"><p>Nie. Kalkulator szacuje pojemność oraz koszt dla jawnych założeń. OZC określa obciążenia pomieszczeń, a projekt sprawdza moc powierzchniową, rozstaw, długości pętli, temperatury, przepływy, opory i współpracę ze źródłem ciepła.</p></div></details>
      </div>
    </section>

    <section class="rk-ts-section" id="rk-ts-author" aria-labelledby="rk-ts-author-heading">
      <div class="rk-ts-author">
        <div class="rk-ts-author-head">
          <div>
            <span class="rk-ts-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
            <h2 id="rk-ts-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Treść przygotowana z perspektywy bilansu cieplnego, hydrauliki podłogówki, dynamiki budynku i kosztu energii.</p>
          </div>
          <span class="rk-ts-author-mark">Aktualizacja: 16.09.2026</span>
        </div>
        <div class="rk-ts-author-layout">
          <aside class="rk-ts-author-side">
            <div class="rk-ts-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji grzewczych" width="400" height="400" loading="lazy" decoding="async"></div>
            <div class="rk-ts-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
            <p class="rk-ts-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
            <div class="rk-ts-author-social-label">Profile branżowe</div>
            <div class="rk-ts-author-social" aria-label="Profile branżowe Roberta Kucharskiego">
              <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6.5 8.2H3.2V21h3.3V8.2ZM4.85 3A1.92 1.92 0 1 0 4.9 6.84 1.92 1.92 0 0 0 4.85 3ZM21 13.66c0-3.86-2.06-5.66-4.81-5.66a4.14 4.14 0 0 0-3.75 2.06V8.2H9.12V21h3.32v-6.34c0-1.67.32-3.29 2.39-3.29 2.04 0 2.07 1.91 2.07 3.4V21H21v-7.34Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14 8.5V7c0-.74.5-.92.85-.92H17V3.13L14.05 3C11.13 3 10.47 5.16 10.47 6.55V8.5H8v3.36h2.47V21H14v-9.14h2.7l.44-3.36H14Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" 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"></path></svg></a>
            </div>
          </aside>
          <div class="rk-ts-author-main">
            <blockquote class="rk-ts-author-quote"><p>Moim zdaniem największym błędem nie jest niedoszacowanie samej masy podłogi, lecz porównywanie kWh ciepła z kWh prądu bez COP, czasu, mocy i celu wykorzystania. Dobrze zaprojektowana podłogówka może przesuwać pobór, ale najpierw musi prawidłowo ogrzewać każde pomieszczenie.</p></blockquote>
            <div class="rk-ts-author-cards">
              <div class="rk-ts-author-card"><b>Praktyka projektowa</b><p>OZC, rozstawy, pętle, temperatury, przepływy, opory oraz współpraca ogrzewania podłogowego z pompą ciepła.</p></div>
              <div class="rk-ts-author-card"><b>Metoda</b><p>Oddzielenie pojemności cieplnej od mocy, prądu, CWU i finansów oraz ujawnienie każdego założenia kalkulatora.</p></div>
              <div class="rk-ts-author-card"><b>Zakres aktualizacji</b><p>Nowy kalkulator, wykres, sześciomodułowa grafika, uczciwa analiza taryf i rozbudowane FAQ.</p></div>
            </div>
            <div class="rk-ts-author-mini-label">Portale autora</div>
            <div class="rk-ts-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>
  </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",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image" },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "pojemność cieplna budynków",
        "obliczenia OZC",
        "hydraulika instalacji grzewczych",
        "sterowanie ogrzewaniem"
      ],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-b8b906199/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#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",
      "width": 400,
      "height": 400,
      "caption": "Robert Kucharski — projektant instalacji sanitarnych"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Poradniki",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Podłoga jako magazyn ciepła",
          "item": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#webpage",
      "url": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/",
      "name": "Podłoga jako magazyn ciepła – ile energii naprawdę może zgromadzić?",
      "description": "Kalkulator pojemności cieplnej podłogi i bufora: kWh ciepła, energia elektryczna pompy ciepła, moc ładowania, taryfy i koszt przesuwania poboru.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#breadcrumb" },
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#webpage" },
      "headline": "Podłoga jako magazyn ciepła – ile energii naprawdę może zgromadzić?",
      "description": "Techniczny poradnik o pojemności cieplnej wylewki, bufora, pracy pompy ciepła i ekonomice przesuwania poboru energii.",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": [
        "ogrzewanie podłogowe jako magazyn energii",
        "pojemność cieplna wylewki",
        "bufor ciepła",
        "pompa ciepła",
        "taryfa dynamiczna",
        "bezwładność cieplna"
      ],
      "keywords": "podłoga jako magazyn ciepła, magazyn energii w podłodze, pojemność cieplna wylewki, bufor ciepła, pompa ciepła, kalkulator kWh ciepła",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#calculator" },
        { "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#elements" },
        { "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#calculator",
      "name": "Kalkulator pojemności cieplnej podłogi, bufora i kosztu przesuwania poboru",
      "url": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#rk-ts-calculator",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie edukacyjne obliczające teoretyczną i użyteczną pojemność cieplną, czas pokrycia strat, wymaganą moc ładowania, zużycie prądu oraz prosty wynik finansowy."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#howto",
      "name": "Jak ocenić możliwość wykorzystania podłogi jako magazynu ciepła",
      "description": "Sześć kroków od danych warstw podłogi do sprawdzenia mocy, komfortu i ekonomiki przesuwania poboru energii.",
      "totalTime": "PT20M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Ustal aktywną masę podłogi", "text": "Określ aktywną powierzchnię, efektywną grubość, gęstość i ciepło właściwe warstwy uczestniczącej w cyklu." },
        { "@type": "HowToStep", "position": 2, "name": "Przyjmij dopuszczalną zmianę temperatury", "text": "Wybierz zmianę średniej temperatury z uwzględnieniem komfortu, okładziny i sterowania." },
        { "@type": "HowToStep", "position": 3, "name": "Oblicz pojemność cieplną", "text": "Pomnóż powierzchnię, grubość, gęstość, ciepło właściwe i zmianę temperatury, zachowując właściwe jednostki." },
        { "@type": "HowToStep", "position": 4, "name": "Oddziel ciepło od energii elektrycznej", "text": "Przelicz wymagane ciepło na pobór prądu z użyciem COP właściwego dla warunków ładowania." },
        { "@type": "HowToStep", "position": 5, "name": "Sprawdź moc i czas", "text": "Porównaj moc potrzebną do bieżącego pokrycia strat i ładowania z dostępną mocą źródła oraz długością okna." },
        { "@type": "HowToStep", "position": 6, "name": "Oceń koszt i ograniczenia", "text": "Użyj cen z własnej umowy, uwzględnij dodatkowe straty, liczbę realnych cykli i koszt rozwiązania." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#elements",
      "name": "Elementy, których nie należy łączyć w jeden wynik magazynowania energii",
      "numberOfItems": 6,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Wylewka i podłoga" },
        { "@type": "ListItem", "position": 2, "name": "Bufor instalacyjny" },
        { "@type": "ListItem", "position": 3, "name": "Zasobnik ciepłej wody użytkowej" },
        { "@type": "ListItem", "position": 4, "name": "Akumulator elektryczny" },
        { "@type": "ListItem", "position": 5, "name": "COP pompy ciepła" },
        { "@type": "ListItem", "position": 6, "name": "Straty cieplne budynku" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/#faq-schema",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy podłoga jest magazynem energii?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, masywna podłoga może magazynować energię w postaci ciepła jawnego. Nie magazynuje jednak prądu i nie zasila odbiorników elektrycznych. Jej użyteczność ograniczają komfort, temperatura, dynamika warstw, straty budynku oraz możliwość sterowania źródłem." }
        },
        {
          "@type": "Question",
          "name": "Ile kWh może zgromadzić podłoga o powierzchni 150 m²?",
          "acceptedAnswer": { "@type": "Answer", "text": "Wynik zależy od efektywnej grubości, gęstości, ciepła właściwego i zmiany średniej temperatury. Dla 150 m², 6,5 cm, 2400 kg/m³, 0,277 Wh/(kg·K) i 1 K jest to około 6,48 kWh ciepła; dla 3 K około 19,45 kWh. Są to wartości teoretyczne dla przyjętej masy." }
        },
        {
          "@type": "Question",
          "name": "Czy 20 kWh ciepła w podłodze odpowiada baterii 20 kWh?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Podłoga przechowuje ciepło, a bateria energię elektryczną. Przy COP pompy równym 3 dostarczenie 20 kWh ciepła wymaga orientacyjnie około 6,7 kWh prądu. Bateria może ponadto zasilać wiele innych odbiorników, czego podłoga nie potrafi." }
        },
        {
          "@type": "Question",
          "name": "Czy energię z zasobnika CWU można dodać do pojemności podłogi?",
          "acceptedAnswer": { "@type": "Answer", "text": "Można ją policzyć jako osobny zasób ciepła, ale nie należy dodawać jej do autonomii ogrzewania pomieszczeń. Zasobnik CWU realizuje potrzeby ciepłej wody użytkowej i zwykle nie oddaje energii do pętli podłogowych." }
        },
        {
          "@type": "Question",
          "name": "Czy podniesienie temperatury wylewki o 3 K jest zawsze bezpieczne?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Zależy to od temperatury wyjściowej, konstrukcji podłogi, okładziny, temperatury powierzchni, pomieszczenia, zysków słonecznych i oczekiwań użytkownika. Kalkulator pozwala wpisać 3 K, ale nie stanowi to potwierdzenia dopuszczalności takiego cyklu." }
        },
        {
          "@type": "Question",
          "name": "Jak długo podłoga będzie oddawać zgromadzone ciepło?",
          "acceptedAnswer": { "@type": "Answer", "text": "Orientacyjnie czas można oszacować, dzieląc użyteczne kWh ciepła przez aktualne straty budynku w kW. Rzeczywisty przebieg nie jest liniowy i zależy od temperatur warstw, powietrza, pogody, wentylacji oraz zysków wewnętrznych i słonecznych." }
        },
        {
          "@type": "Question",
          "name": "Czy duży bufor zawsze zwiększa oszczędności pompy ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Może zwiększyć pojemność, ale zajmuje miejsce, kosztuje, ma straty postojowe i może wymagać wyższych temperatur. Jeżeli pogarsza COP albo różnica cen jest mała, zwrot z zakupu wyłącznie dla magazynowania może nie wystąpić." }
        },
        {
          "@type": "Question",
          "name": "Ile energii przechowuje bufor 1000 litrów?",
          "acceptedAnswer": { "@type": "Answer", "text": "Przy użytecznej różnicy temperatur 5 K jest to około 5,8 kWh ciepła. Przy 10 K około 11,6 kWh, a przy 30 K około 34,9 kWh. Najważniejsze pytanie brzmi jednak, jaki zakres temperatur jest rzeczywiście użyteczny dla źródła i podłogówki." }
        },
        {
          "@type": "Question",
          "name": "Czy taryfa dynamiczna zawsze obniża koszt ogrzewania?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Wymaga aktywnego zarządzania poborem i wiąże się z ryzykiem drogich okresów. Trzeba uwzględnić formułę sprzedawcy, opłaty, licznik, różnicę COP, liczbę cykli, komfort i możliwość realnego ograniczenia pracy w drogich godzinach." }
        },
        {
          "@type": "Question",
          "name": "Czy RCE jest ceną prądu w taryfie dynamicznej?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie automatycznie. RCE jest wykorzystywana m.in. w rozliczeniach energii wprowadzanej przez prosumentów. Cena energii pobieranej w umowie dynamicznej wynika z formuły konkretnego sprzedawcy i może opierać się na innych notowaniach oraz zawierać dodatkowe składniki." }
        },
        {
          "@type": "Question",
          "name": "Czy lepiej ładować podłogę nocą czy w dzień?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednej odpowiedzi. Noc może mieć niższą cenę, ale także niższą temperaturę zewnętrzną i gorszy COP. W dzień mogą wystąpić produkcja PV, wyższy COP oraz zyski słoneczne zwiększające ryzyko przegrzania. Potrzebna jest prognoza i model konkretnego budynku." }
        },
        {
          "@type": "Question",
          "name": "Czy potrzebny jest protokół SG Ready lub Modbus?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie są to jedyne możliwe sposoby integracji. Najważniejsze jest, aby producent dopuszczał wybrany sygnał i sposób sterowania, a algorytm respektował temperatury, minimalne czasy pracy, przepływy i zabezpieczenia. Kompatybilność trzeba sprawdzić dla konkretnego urządzenia." }
        },
        {
          "@type": "Question",
          "name": "Czy sterowanie strefowe pomaga w magazynowaniu ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Może ograniczyć ładowanie wybranych pomieszczeń, ale zamykanie pętli zmienia przepływy i warunki pracy źródła. Nie powinno naruszać minimalnego przepływu ani powodować taktowania. Decyzja zależy od hydrauliki i sposobu regulacji instalacji." }
        },
        {
          "@type": "Question",
          "name": "Czy kalkulator zastępuje OZC i projekt podłogówki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Kalkulator szacuje pojemność oraz koszt dla jawnych założeń. OZC określa obciążenia pomieszczeń, a projekt sprawdza moc powierzchniową, rozstaw, długości pętli, temperatury, przepływy, opory i współpracę ze źródłem ciepła." }
        }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "serviceType": "Projekt ogrzewania podłogowego z obliczeniami cieplnymi i hydraulicznymi",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "inLanguage": "pl-PL"
    }
  ]
}
</script>

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

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

  var storeData = {
    floor: {
      title: "Wylewka i podłoga",
      summary: "Masywne warstwy ogrzewanej podłogi przechowują ciepło jawne. Im większa aktywna masa i zmiana jej średniej temperatury, tym większy teoretyczny zapas.",
      energy: "ciepło w masie materiału",
      use: "potrzeby cieplne pomieszczeń",
      limit: "komfort, okładzina, moc i czas reakcji",
      warning: "takiej samej pojemności baterii elektrycznej"
    },
    buffer: {
      title: "Bufor instalacyjny",
      summary: "Woda w buforze przechowuje ciepło zależnie od objętości i użytecznej różnicy temperatur. Duży zakres katalogowy nie zawsze jest dostępny dla niskotemperaturowej podłogówki.",
      energy: "ciepło w wodzie instalacyjnej",
      use: "obieg grzewczy zgodnie ze schematem hydraulicznym",
      limit: "użyteczne ΔT, straty postojowe i temperatury pracy",
      warning: "automatycznej poprawy sprawności pompy ciepła"
    },
    dhw: {
      title: "Zasobnik ciepłej wody użytkowej",
      summary: "Zasobnik CWU może przesuwać czas przygotowania ciepłej wody, ale jego energia realizuje inny cel niż pokrywanie strat cieplnych pomieszczeń.",
      energy: "ciepło przeznaczone na wodę użytkową",
      use: "kąpiele, mycie i pozostałe rozbiory CWU",
      limit: "higiena, komfort, straty postojowe i harmonogram poboru",
      warning: "autonomii ogrzewania budynku"
    },
    battery: {
      title: "Akumulator elektryczny",
      summary: "Bateria przechowuje energię elektryczną i może zasilać wiele odbiorników. Jej pojemność, moc, sprawność i wartość użytkowa są inne niż w magazynie cieplnym.",
      energy: "energię elektryczną",
      use: "pompę ciepła i inne odbiorniki w granicach mocy",
      limit: "pojemność użyteczna, moc, sprawność i degradacja",
      warning: "bezpośrednio porównywalnego magazynu ciepła"
    },
    cop: {
      title: "COP pompy ciepła",
      summary: "COP łączy energię elektryczną pobraną przez pompę z ciepłem oddanym do instalacji. Zmienia się wraz z temperaturą zewnętrzną, zasilaniem i trybem pracy.",
      energy: "nie magazynuje energii — jest współczynnikiem",
      use: "przeliczenie kWh_el na kWh_th w danych warunkach",
      limit: "pogoda, temperatura wody, odszranianie i modulacja",
      warning: "stałej wartości sezonowej dla każdej godziny"
    },
    loss: {
      title: "Straty cieplne budynku",
      summary: "Straty określają tempo rozładowywania magazynu. Ten sam zapas ciepła wystarczy na inny czas przy temperaturze +5°C i inny podczas mrozu.",
      energy: "nie magazynuje — opisuje odpływ ciepła",
      use: "wyznaczenie czasu pokrycia potrzeb budynku",
      limit: "pogoda, wentylacja, szczelność i temperatura wewnętrzna",
      warning: "stałego czasu autonomii przez cały sezon"
    }
  };

  var storeButtons = root.querySelectorAll("[data-rk-store]");

  function setText(id, value) {
    var element = document.getElementById(id);
    if (!element) {
      return;
    }
    element.textContent = value;
  }

  function showStore(key) {
    var data = storeData[key];
    if (!data) {
      return;
    }
    setText("rk-ts-store-title", data.title);
    setText("rk-ts-store-summary", data.summary);
    setText("rk-ts-store-energy", data.energy);
    setText("rk-ts-store-use", data.use);
    setText("rk-ts-store-limit", data.limit);
    setText("rk-ts-store-warning", data.warning);
    storeButtons.forEach(function (button) {
      var selected = button.getAttribute("data-rk-store") === key;
      button.setAttribute("aria-selected", selected ? "true" : "false");
    });
  }

  storeButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      showStore(button.getAttribute("data-rk-store"));
    });
  });

  var defaults = {
    "rk-ts-area": "150",
    "rk-ts-thickness": "6.5",
    "rk-ts-density": "2400",
    "rk-ts-specific": "0.277",
    "rk-ts-delta": "1",
    "rk-ts-buffer-liters": "0",
    "rk-ts-buffer-delta": "5",
    "rk-ts-usable": "60",
    "rk-ts-loss": "5",
    "rk-ts-pump-power": "8",
    "rk-ts-window": "4",
    "rk-ts-cycle-loss": "5",
    "rk-ts-cop-reference": "3.2",
    "rk-ts-cop-charge": "3",
    "rk-ts-price-high": "1.10",
    "rk-ts-price-low": "0.65",
    "rk-ts-days": "180",
    "rk-ts-investment": "1500",
    "rk-ts-years": "15"
  };

  function numberFrom(id, fallback) {
    var input = document.getElementById(id);
    if (!input) {
      return fallback;
    }
    var value = parseFloat(String(input.value).replace(",", "."));
    if (!Number.isFinite(value)) {
      return fallback;
    }
    return value;
  }

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

  function formatNumber(value, digits) {
    if (!Number.isFinite(value)) {
      return "—";
    }
    return new Intl.NumberFormat("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    }).format(value);
  }

  function formatCurrency(value, digits) {
    if (!Number.isFinite(value)) {
      return "—";
    }
    return new Intl.NumberFormat("pl-PL", {
      style: "currency",
      currency: "PLN",
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    }).format(value);
  }

  function validateInputs() {
    var issues = [];
    var inputs = root.querySelectorAll("#rk-ts-tool input[type='number']");
    inputs.forEach(function (input) {
      var value = parseFloat(String(input.value).replace(",", "."));
      var minimum = parseFloat(input.getAttribute("min"));
      var maximum = parseFloat(input.getAttribute("max"));
      if (!Number.isFinite(value)) {
        issues.push("Uzupełnij wszystkie pola liczbowe.");
        return;
      }
      if (Number.isFinite(minimum)) {
        if (value < minimum) {
          issues.push("Jedna z wartości jest niższa od zakresu pola.");
        }
      }
      if (Number.isFinite(maximum)) {
        if (value > maximum) {
          issues.push("Jedna z wartości przekracza zakres pola.");
        }
      }
    });
    var validation = document.getElementById("rk-ts-validation");
    if (!validation) {
      return issues;
    }
    if (issues.length > 0) {
      validation.textContent = issues[0] + " Popraw dane, aby wynik był miarodajny.";
      validation.style.display = "block";
    } else {
      validation.textContent = "";
      validation.style.display = "none";
    }
    return issues;
  }

  function drawChart(area, thickness, density, specific, copCharge, selectedDelta) {
    var grid = document.getElementById("rk-ts-chart-grid");
    var dots = document.getElementById("rk-ts-chart-dots");
    var floorPath = document.getElementById("rk-ts-chart-floor-path");
    var electricPath = document.getElementById("rk-ts-chart-electric-path");
    if (!grid) {
      return;
    }
    if (!dots) {
      return;
    }
    if (!floorPath) {
      return;
    }
    if (!electricPath) {
      return;
    }

    var ns = "http://www.w3.org/2000/svg";
    var deltas = [0.5, 1, 1.5, 2, 2.5, 3];
    var floorValues = deltas.map(function (deltaValue) {
      return area * (thickness / 100) * density * specific * deltaValue / 1000;
    });
    var safeCop = Math.max(copCharge, 1);
    var electricValues = floorValues.map(function (heatValue) {
      return heatValue / safeCop;
    });
    var rawMaximum = Math.max.apply(null, floorValues);
    var yMaximum = Math.max(1, Math.ceil(rawMaximum / 5) * 5);
    var xLeft = 64;
    var xRight = 728;
    var yTop = 28;
    var yBottom = 280;
    var chartWidth = xRight - xLeft;
    var chartHeight = yBottom - yTop;

    function pointX(index) {
      return xLeft + (chartWidth * index / (deltas.length - 1));
    }

    function pointY(value) {
      return yBottom - (value / yMaximum * chartHeight);
    }

    function addText(x, y, value, anchor) {
      var label = document.createElementNS(ns, "text");
      label.setAttribute("class", "rk-ts-axis-label");
      label.setAttribute("x", String(x));
      label.setAttribute("y", String(y));
      label.setAttribute("text-anchor", anchor);
      label.textContent = value;
      grid.appendChild(label);
    }

    grid.textContent = "";
    dots.textContent = "";

    var ySteps = 4;
    var stepIndex;
    for (stepIndex = 0; stepIndex <= ySteps; stepIndex += 1) {
      var ratio = stepIndex / ySteps;
      var y = yBottom - ratio * chartHeight;
      var line = document.createElementNS(ns, "line");
      line.setAttribute("class", "rk-ts-grid-line");
      line.setAttribute("x1", String(xLeft));
      line.setAttribute("x2", String(xRight));
      line.setAttribute("y1", String(y));
      line.setAttribute("y2", String(y));
      grid.appendChild(line);
      addText(xLeft - 9, y + 4, formatNumber(yMaximum * ratio, 0), "end");
    }

    deltas.forEach(function (deltaValue, index) {
      addText(pointX(index), yBottom + 25, formatNumber(deltaValue, 1) + " K", "middle");
    });
    addText(19, 156, "kWh", "middle");

    var floorPoints = [];
    var electricPoints = [];
    floorValues.forEach(function (value, index) {
      floorPoints.push((index === 0 ? "M " : "L ") + pointX(index) + " " + pointY(value));
      electricPoints.push((index === 0 ? "M " : "L ") + pointX(index) + " " + pointY(electricValues[index]));

      var floorDot = document.createElementNS(ns, "circle");
      floorDot.setAttribute("class", "rk-ts-chart-dot-floor");
      floorDot.setAttribute("cx", String(pointX(index)));
      floorDot.setAttribute("cy", String(pointY(value)));
      floorDot.setAttribute("r", "5");
      dots.appendChild(floorDot);

      var electricDot = document.createElementNS(ns, "circle");
      electricDot.setAttribute("class", "rk-ts-chart-dot-electric");
      electricDot.setAttribute("cx", String(pointX(index)));
      electricDot.setAttribute("cy", String(pointY(electricValues[index])));
      electricDot.setAttribute("r", "4");
      dots.appendChild(electricDot);
    });
    floorPath.setAttribute("d", floorPoints.join(" "));
    electricPath.setAttribute("d", electricPoints.join(" "));

    var selectedHeat = area * (thickness / 100) * density * specific * selectedDelta / 1000;
    var reading = "Przy ΔT " + formatNumber(selectedDelta, 1) + " K podłoga ma teoretycznie " + formatNumber(selectedHeat, 2) + " kWh_th. Przy COP " + formatNumber(safeCop, 1) + " odpowiada to około " + formatNumber(selectedHeat / safeCop, 2) + " kWh_el, przed stratami cyklu.";
    setText("rk-ts-chart-reading", reading);
  }

  function updateStatus(data) {
    var status = document.getElementById("rk-ts-status");
    if (!status) {
      return;
    }
    status.classList.remove("is-good");
    status.classList.remove("is-stop");

    if (data.invalid) {
      status.classList.add("is-stop");
      setText("rk-ts-status-title", "Najpierw popraw dane wejściowe");
      setText("rk-ts-status-text", "Co najmniej jedna wartość jest poza zakresem. Wyniki poniżej mają wyłącznie charakter roboczy.");
      return;
    }
    if (data.lowPrice >= data.highPrice) {
      status.classList.add("is-stop");
      setText("rk-ts-status-title", "Podane ceny nie tworzą korzyści z przesunięcia");
      setText("rk-ts-status-text", "Cena ładowania jest równa lub wyższa od ceny unikanej. Uwzględnij rzeczywistą formułę umowy, opłaty zmienne i COP w obu okresach.");
      return;
    }
    if (data.requiredPower > data.pumpPower) {
      status.classList.add("is-stop");
      setText("rk-ts-status-title", "Źródło nie ma wystarczającej mocy w podanym oknie");
      setText("rk-ts-status-text", "Pompa musi jednocześnie pokrywać bieżące straty i ładować masę. Wydłuż okno, zmniejsz porcję energii albo zweryfikuj moc w rzeczywistych warunkach pracy.");
      return;
    }
    if (data.delta > 2) {
      setText("rk-ts-status-title", "Duże ΔT wymaga kontroli komfortu i okładziny");
      setText("rk-ts-status-text", "Wysoka teoretyczna pojemność może wymagać temperatur, które pogorszą COP lub spowodują przegrzewanie. Sprawdź rozkład temperatur i warunki użytkowe.");
      return;
    }
    if (data.bufferLiters > 0) {
      if (data.bufferDelta > 15) {
        setText("rk-ts-status-title", "Zakres temperatur bufora może być zbyt szeroki dla podłogówki");
        setText("rk-ts-status-text", "Zweryfikuj, jaka część podanego ΔT pozostaje faktycznie dostępna przy wymaganej temperaturze zasilania i sposobie wpięcia bufora.");
        return;
      }
    }
    if (data.annualSaving <= 0) {
      status.classList.add("is-stop");
      setText("rk-ts-status-title", "Przesunięcie zwiększa koszt w tym scenariuszu");
      setText("rk-ts-status-text", "Różnica cen nie kompensuje zmiany COP i dodatkowych strat cyklu. Funkcja może mieć sens techniczny, lecz nie daje tu oszczędności energii.");
      return;
    }
    if (data.payback > data.years) {
      setText("rk-ts-status-title", "Oszczędność istnieje, ale nie pokrywa kosztu w podanym horyzoncie");
      setText("rk-ts-status-text", "Sprawdź koszt dodatkowego wyposażenia, realną liczbę korzystnych cykli i wrażliwość na ceny. Istniejąca masa podłogi może być używana bez ponoszenia pełnego kosztu nowego magazynu.");
      return;
    }
    status.classList.add("is-good");
    setText("rk-ts-status-title", "Scenariusz jest technicznie możliwy i dodatni finansowo");
    setText("rk-ts-status-text", "Wynik nadal wymaga sprawdzenia komfortu, hydrauliki, sterowania oraz cen z rzeczywistej umowy. Kalkulator nie prognozuje pogody ani zmian cen.");
  }

  function calculate() {
    var issues = validateInputs();
    var area = clamp(numberFrom("rk-ts-area", 150), 1, 1000);
    var thickness = clamp(numberFrom("rk-ts-thickness", 6.5), 0.5, 40);
    var density = clamp(numberFrom("rk-ts-density", 2400), 500, 3500);
    var specific = clamp(numberFrom("rk-ts-specific", 0.277), 0.05, 1);
    var delta = clamp(numberFrom("rk-ts-delta", 1), 0.1, 5);
    var bufferLiters = clamp(numberFrom("rk-ts-buffer-liters", 0), 0, 10000);
    var bufferDelta = clamp(numberFrom("rk-ts-buffer-delta", 5), 0, 60);
    var usablePercent = clamp(numberFrom("rk-ts-usable", 60), 5, 100);
    var heatLoss = clamp(numberFrom("rk-ts-loss", 5), 0.1, 100);
    var pumpPower = clamp(numberFrom("rk-ts-pump-power", 8), 0.5, 100);
    var windowHours = clamp(numberFrom("rk-ts-window", 4), 0.25, 24);
    var cycleLossPercent = clamp(numberFrom("rk-ts-cycle-loss", 5), 0, 50);
    var copReference = clamp(numberFrom("rk-ts-cop-reference", 3.2), 1, 8);
    var copCharge = clamp(numberFrom("rk-ts-cop-charge", 3), 1, 8);
    var highPrice = clamp(numberFrom("rk-ts-price-high", 1.10), 0, 10);
    var lowPrice = clamp(numberFrom("rk-ts-price-low", 0.65), -5, 10);
    var days = clamp(numberFrom("rk-ts-days", 180), 0, 366);
    var investment = clamp(numberFrom("rk-ts-investment", 1500), 0, 1000000);
    var years = clamp(numberFrom("rk-ts-years", 15), 1, 40);

    var mass = area * (thickness / 100) * density;
    var floorHeat = mass * specific * delta / 1000;
    var bufferHeat = bufferLiters * 1.163 * bufferDelta / 1000;
    var totalHeat = floorHeat + bufferHeat;
    var usefulHeat = totalHeat * usablePercent / 100;
    var cycleEfficiency = 1 - cycleLossPercent / 100;
    cycleEfficiency = Math.max(cycleEfficiency, 0.01);
    var heatToCharge = usefulHeat / cycleEfficiency;
    var runtime = usefulHeat / heatLoss;
    var additionalChargePower = heatToCharge / windowHours;
    var requiredPower = heatLoss + additionalChargePower;
    var powerShare = requiredPower / pumpPower * 100;
    var electricReference = usefulHeat / copReference;
    var electricCharge = heatToCharge / copCharge;
    var costReference = electricReference * highPrice;
    var costCharge = electricCharge * lowPrice;
    var cycleSaving = costReference - costCharge;
    var annualSaving = cycleSaving * days;
    var payback = Infinity;
    if (annualSaving > 0) {
      if (investment === 0) {
        payback = 0;
      } else {
        payback = investment / annualSaving;
      }
    }
    var horizonBalance = annualSaving * years - investment;

    setText("rk-ts-floor-result", formatNumber(floorHeat, 2) + " kWh_th");
    setText("rk-ts-buffer-result", formatNumber(bufferHeat, 2) + " kWh_th");
    setText("rk-ts-useful-result", formatNumber(usefulHeat, 2) + " kWh_th");
    setText("rk-ts-runtime-result", formatNumber(runtime, 2) + " h");
    setText("rk-ts-required-power", formatNumber(requiredPower, 2) + " kW_th");
    setText("rk-ts-power-share", formatNumber(powerShare, 0) + "%");
    setText("rk-ts-electric-reference", formatNumber(electricReference, 2) + " kWh_el");
    setText("rk-ts-electric-charge", formatNumber(electricCharge, 2) + " kWh_el");
    setText("rk-ts-cycle-saving", formatCurrency(cycleSaving, 2));
    setText("rk-ts-annual-saving", formatCurrency(annualSaving, 0) + "/rok");
    if (Number.isFinite(payback)) {
      setText("rk-ts-payback-result", formatNumber(payback, 1) + " roku");
    } else {
      setText("rk-ts-payback-result", "brak zwrotu");
    }
    setText("rk-ts-horizon-result", formatCurrency(horizonBalance, 0));

    updateStatus({
      invalid: issues.length > 0,
      lowPrice: lowPrice,
      highPrice: highPrice,
      requiredPower: requiredPower,
      pumpPower: pumpPower,
      delta: delta,
      bufferLiters: bufferLiters,
      bufferDelta: bufferDelta,
      annualSaving: annualSaving,
      payback: payback,
      years: years
    });
    drawChart(area, thickness, density, specific, copCharge, delta);
  }

  var calculatorInputs = root.querySelectorAll("#rk-ts-tool input");
  calculatorInputs.forEach(function (input) {
    input.addEventListener("input", calculate);
    input.addEventListener("change", calculate);
  });

  var resetButton = document.getElementById("rk-ts-reset");
  if (resetButton) {
    resetButton.addEventListener("click", function () {
      Object.keys(defaults).forEach(function (id) {
        var input = document.getElementById(id);
        if (input) {
          input.value = defaults[id];
        }
      });
      calculate();
    });
  }

  showStore("floor");
  calculate();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/">Podłoga jako magazyn ciepła – ile energii naprawdę może zgromadzić?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 31 May 2026 18:20:19 +0000</pubDate>
				<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie elektryczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Optymalizacja kosztów]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[kalkulator kosztów eksploatacji]]></category>
		<category><![CDATA[koszty folii grzewczych]]></category>
		<category><![CDATA[obliczenia ozc dla domu]]></category>
		<category><![CDATA[ogrzewanie elektryczne vs wodna podłogówka]]></category>
		<category><![CDATA[opłacalność pompy ciepła]]></category>
		<category><![CDATA[opór cieplny paneli]]></category>
		<category><![CDATA[projekt instalacji ogrzewania podłogowego]]></category>
		<category><![CDATA[rachunki za prąd zimą]]></category>
		<category><![CDATA[tco ogrzewania]]></category>
		<category><![CDATA[wylewka pod ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=5374</guid>

					<description><![CDATA[<p>Wielu inwestorów na etapie stanu surowego szuka natychmiastowych oszczędności, co często prowadzi do kosztownych pomyłek przy wyborze instalacji grzewczej. Zamiast ulegać marketingowym zapewnieniom o niskich kosztach montażu mat czy folii, warto przeprowadzić chłodną kalkulację inżynierską. Artykuł Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji na przestrzeni 20 lat w brutalny sposób weryfikuje opłacalność obu systemów. Poznaj realne dane o zimowej luce energetycznej, wpływie automatyki na COP pompy ciepła oraz dowiedz się, dlaczego otwarta infrastruktura hydrauliczna chroni Twój domowy budżet przed wieloletnim, drogim abonamentem.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-energy-choice {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fafd;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff0ea;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #b47600;
    --rk-yellow-soft: #fff8df;
    --rk-red: #c7443a;
    --rk-red-soft: #fff0ee;
    --rk-purple: #6659c7;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1c2d38;
    --rk-text: #465d6c;
    --rk-muted: #687f8d;
    --rk-line: #d6e5eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 17px;
    line-height: 1.72;
  }

  #rk-energy-choice,
  #rk-energy-choice *,
  #rk-energy-choice *::before,
  #rk-energy-choice *::after { box-sizing: border-box; }
  #rk-energy-choice [hidden] { display: none !important; }
  #rk-energy-choice img,
  #rk-energy-choice svg { display: block; max-width: 100%; }
  #rk-energy-choice button,
  #rk-energy-choice input,
  #rk-energy-choice select,
  #rk-energy-choice summary { font: inherit; }
  #rk-energy-choice button { cursor: pointer; -webkit-tap-highlight-color: transparent; }
  #rk-energy-choice a {
    color: #007fae;
    font-weight: 760;
    text-decoration-thickness: 1.4px;
    text-underline-offset: 3px;
  }
  #rk-energy-choice a:hover { color: #005d82; }
  #rk-energy-choice a:focus-visible,
  #rk-energy-choice button:focus-visible,
  #rk-energy-choice input:focus-visible,
  #rk-energy-choice select:focus-visible,
  #rk-energy-choice summary:focus-visible {
    outline: 3px solid rgba(37, 199, 216, .5);
    outline-offset: 3px;
  }
  #rk-energy-choice h2,
  #rk-energy-choice h3,
  #rk-energy-choice h4,
  #rk-energy-choice p,
  #rk-energy-choice ul,
  #rk-energy-choice ol,
  #rk-energy-choice blockquote { margin-top: 0; }
  #rk-energy-choice h2,
  #rk-energy-choice h3,
  #rk-energy-choice h4 { color: var(--rk-dark); line-height: 1.18; }
  #rk-energy-choice h2 {
    margin-bottom: 18px;
    font-size: clamp(1.7rem, 3.6vw, 2.55rem);
    font-weight: 920;
    letter-spacing: -.035em;
  }
  #rk-energy-choice h3 {
    margin: 28px 0 12px;
    font-size: clamp(1.16rem, 2.2vw, 1.46rem);
    font-weight: 880;
    letter-spacing: -.02em;
  }
  #rk-energy-choice h4 { margin: 21px 0 8px; font-size: 1.04rem; }
  #rk-energy-choice p { margin-bottom: 18px; color: var(--rk-text); }
  #rk-energy-choice strong { color: var(--rk-ink); }
  #rk-energy-choice ul,
  #rk-energy-choice ol { margin-bottom: 22px; padding-left: 1.3em; color: var(--rk-text); }
  #rk-energy-choice li { margin-bottom: 8px; }
  #rk-energy-choice section[id] { scroll-margin-top: 24px; }

  #rk-energy-choice .rk-ec-shell {
    width: min(100%, 1280px);
    margin: 0 auto;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 22px 70px rgba(16, 37, 54, .09);
  }

  #rk-energy-choice .rk-ec-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(36px, 6vw, 76px) clamp(24px, 6vw, 74px) clamp(30px, 5vw, 58px);
    background:
      radial-gradient(circle at 8% 118%, rgba(255, 106, 61, .22), transparent 38%),
      linear-gradient(128deg, #102536 0%, #123d51 55%, #0c6971 100%);
  }
  #rk-energy-choice .rk-ec-hero::before,
  #rk-energy-choice .rk-ec-hero::after {
    position: absolute;
    z-index: -1;
    border: clamp(22px, 4vw, 48px) solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
    pointer-events: none;
  }
  #rk-energy-choice .rk-ec-hero::before { right: -115px; bottom: -185px; width: 390px; height: 390px; }
  #rk-energy-choice .rk-ec-hero::after { right: 125px; bottom: -238px; width: 290px; height: 290px; }
  #rk-energy-choice .rk-ec-kicker,
  #rk-energy-choice .rk-ec-eyebrow {
    display: block;
    margin-bottom: 13px;
    color: var(--rk-orange);
    font-size: .76rem;
    font-weight: 900;
    letter-spacing: .13em;
    line-height: 1.35;
    text-transform: uppercase;
  }
  #rk-energy-choice .rk-ec-hero-title {
    max-width: 1100px;
    margin: 0 0 20px;
    color: #ffffff !important;
    font-size: clamp(2.05rem, 5.1vw, 4.4rem);
    font-weight: 950;
    line-height: .99;
    letter-spacing: -.06em;
  }
  #rk-energy-choice .rk-ec-hero-title span { color: #63e5f2 !important; }
  #rk-energy-choice .rk-ec-lead {
    max-width: 1050px;
    margin-bottom: 24px;
    color: #dceef2;
    font-size: clamp(1.03rem, 2vw, 1.31rem);
    line-height: 1.62;
  }
  #rk-energy-choice .rk-ec-hero-tags,
  #rk-energy-choice .rk-ec-byline { display: flex; flex-wrap: wrap; gap: 10px 12px; }
  #rk-energy-choice .rk-ec-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 6px 15px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    background: rgba(255, 255, 255, .07);
    color: #ffffff !important;
    font-size: .78rem;
    font-weight: 850;
  }
  #rk-energy-choice .rk-ec-byline {
    margin-top: 23px;
    color: #e2f1f4 !important;
    font-size: .82rem;
    font-weight: 760;
  }
  #rk-energy-choice .rk-ec-byline span,
  #rk-energy-choice .rk-ec-byline strong { color: #ffffff !important; }
  #rk-energy-choice .rk-ec-hero-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-top: 34px;
  }
  #rk-energy-choice .rk-ec-hero-metric {
    min-width: 0;
    padding: 22px;
    border: 1px solid rgba(255, 255, 255, .19);
    border-radius: 19px;
    background: rgba(255, 255, 255, .075);
    backdrop-filter: blur(3px);
  }
  #rk-energy-choice .rk-ec-hero-metric b {
    display: block;
    margin-bottom: 7px;
    color: #ffffff !important;
    font-size: 1rem;
    line-height: 1.35;
  }
  #rk-energy-choice .rk-ec-hero-metric span {
    display: block;
    color: #dceef2 !important;
    font-size: .91rem;
    line-height: 1.55;
  }

  #rk-energy-choice .rk-ec-nav {
    padding: 22px clamp(18px, 4vw, 48px) 24px;
    border-bottom: 1px solid var(--rk-line);
    background: #f4fafc;
  }
  #rk-energy-choice .rk-ec-nav-label {
    display: block;
    margin-bottom: 11px;
    color: var(--rk-dark);
    font-size: .74rem;
    font-weight: 950;
    letter-spacing: .12em;
    text-transform: uppercase;
  }
  #rk-energy-choice .rk-ec-nav-track { display: flex; flex-wrap: wrap; gap: 8px; }
  #rk-energy-choice .rk-ec-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 34px;
    padding: 6px 11px;
    border: 1px solid #c9e0e8;
    border-radius: 999px;
    background: #ffffff;
    color: #345264;
    font-size: .76rem;
    font-weight: 820;
    line-height: 1.25;
    text-decoration: none;
  }
  #rk-energy-choice .rk-ec-nav a:hover { border-color: var(--rk-blue); color: var(--rk-blue); }

  #rk-energy-choice .rk-ec-section {
    padding: clamp(42px, 6vw, 76px) clamp(22px, 6vw, 74px);
    border-bottom: 1px solid var(--rk-line);
  }
  #rk-energy-choice .rk-ec-section:last-child { border-bottom: 0; }
  #rk-energy-choice .rk-ec-section-soft { background: var(--rk-soft); }
  #rk-energy-choice .rk-ec-section-dark {
    background: linear-gradient(135deg, #102536, #17485b);
  }
  #rk-energy-choice .rk-ec-section-dark h2,
  #rk-energy-choice .rk-ec-section-dark h3,
  #rk-energy-choice .rk-ec-section-dark h4,
  #rk-energy-choice .rk-ec-section-dark strong { color: #ffffff; }
  #rk-energy-choice .rk-ec-section-dark p,
  #rk-energy-choice .rk-ec-section-dark li { color: #dceef2; }
  #rk-energy-choice .rk-ec-section-dark a { color: #72e4f0; }
  #rk-energy-choice .rk-ec-section-dark .rk-ec-eyebrow { color: #ff8b67; }
  #rk-energy-choice .rk-ec-section-dark .rk-ec-card h3,
  #rk-energy-choice .rk-ec-section-dark .rk-ec-card h4,
  #rk-energy-choice .rk-ec-section-dark .rk-ec-card strong { color: var(--rk-dark); }
  #rk-energy-choice .rk-ec-section-dark .rk-ec-card p,
  #rk-energy-choice .rk-ec-section-dark .rk-ec-card li { color: var(--rk-text); }
  #rk-energy-choice .rk-ec-section-title { max-width: 1060px; }
  #rk-energy-choice .rk-ec-section-lead {
    max-width: 1030px;
    color: #526b79;
    font-size: 1.08rem;
    line-height: 1.7;
  }

  #rk-energy-choice .rk-ec-grid-2,
  #rk-energy-choice .rk-ec-grid-3,
  #rk-energy-choice .rk-ec-grid-4 { display: grid; gap: 18px; }
  #rk-energy-choice .rk-ec-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-energy-choice .rk-ec-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-energy-choice .rk-ec-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-energy-choice .rk-ec-card {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: #ffffff;
    box-shadow: 0 9px 27px rgba(16, 37, 54, .045);
  }
  #rk-energy-choice .rk-ec-card h3 { margin-top: 0; }
  #rk-energy-choice .rk-ec-card p:last-child,
  #rk-energy-choice .rk-ec-card ul:last-child { margin-bottom: 0; }
  #rk-energy-choice .rk-ec-card-label {
    display: inline-flex;
    margin-bottom: 12px;
    padding: 5px 10px;
    border-radius: 999px;
    background: var(--rk-cyan-soft);
    color: #057596;
    font-size: .69rem;
    font-weight: 900;
    line-height: 1.25;
    text-transform: uppercase;
  }
  #rk-energy-choice .rk-ec-card-label.is-orange { background: var(--rk-orange-soft); color: #b64625; }
  #rk-energy-choice .rk-ec-card-label.is-green { background: var(--rk-green-soft); color: var(--rk-green); }

  #rk-energy-choice .rk-ec-answer {
    margin: 24px 0;
    padding: 25px 28px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 8px 20px 20px 8px;
    background: linear-gradient(120deg, #e8fafd, #f7fcfd);
  }
  #rk-energy-choice .rk-ec-answer-label {
    display: block;
    margin-bottom: 8px;
    color: #057596;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .11em;
    text-transform: uppercase;
  }
  #rk-energy-choice .rk-ec-answer p:last-child { margin-bottom: 0; }
  #rk-energy-choice .rk-ec-callout,
  #rk-energy-choice .rk-ec-warning,
  #rk-energy-choice .rk-ec-note {
    margin: 24px 0;
    padding: 20px 23px;
    border-radius: 16px;
  }
  #rk-energy-choice .rk-ec-callout { border: 1px solid #bde7ed; background: var(--rk-cyan-soft); color: #294c5d; }
  #rk-energy-choice .rk-ec-warning { border: 1px solid #efd7a1; background: var(--rk-yellow-soft); color: #634d1d; }
  #rk-energy-choice .rk-ec-note { border: 1px solid #d6d0f6; background: var(--rk-purple-soft); color: #494477; }
  #rk-energy-choice .rk-ec-callout p:last-child,
  #rk-energy-choice .rk-ec-warning p:last-child,
  #rk-energy-choice .rk-ec-note p:last-child { margin-bottom: 0; }

  #rk-energy-choice .rk-ec-table {
    overflow: hidden;
    margin: 25px 0;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: #ffffff;
  }
  #rk-energy-choice .rk-ec-table table { width: 100%; border-collapse: collapse; table-layout: fixed; }
  #rk-energy-choice .rk-ec-table th,
  #rk-energy-choice .rk-ec-table td {
    padding: 16px 18px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-text);
    vertical-align: top;
    overflow-wrap: anywhere;
  }
  #rk-energy-choice .rk-ec-table th:last-child,
  #rk-energy-choice .rk-ec-table td:last-child { border-right: 0; }
  #rk-energy-choice .rk-ec-table tr:last-child td { border-bottom: 0; }
  #rk-energy-choice .rk-ec-table thead th {
    background: #15384d;
    color: #ffffff;
    font-size: .79rem;
    font-weight: 900;
    letter-spacing: .02em;
    text-align: left;
  }
  #rk-energy-choice .rk-ec-table tbody th {
    background: #f6fafb;
    color: var(--rk-dark);
    font-weight: 850;
    text-align: left;
  }
  #rk-energy-choice .rk-ec-table td strong { display: block; margin-bottom: 3px; }

  #rk-energy-choice .rk-ec-equation {
    margin: 25px 0;
    padding: 25px;
    border: 1px solid #bfdde7;
    border-radius: 19px;
    background: linear-gradient(135deg, #f2fbfd, #ffffff);
  }
  #rk-energy-choice .rk-ec-equation-label {
    display: block;
    margin-bottom: 8px;
    color: #057596;
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .1em;
    text-transform: uppercase;
  }
  #rk-energy-choice .rk-ec-equation-main {
    color: var(--rk-dark);
    font-size: clamp(1.05rem, 2.2vw, 1.35rem);
    font-weight: 900;
    line-height: 1.5;
    overflow-wrap: anywhere;
  }
  #rk-energy-choice .rk-ec-equation p { margin: 10px 0 0; font-size: .91rem; }

  #rk-energy-choice .rk-ec-source-switch {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 0 0 22px;
  }
  #rk-energy-choice .rk-ec-source-switch button,
  #rk-energy-choice .rk-ec-mode-switch button,
  #rk-energy-choice .rk-ec-chart-tabs button {
    min-height: 44px;
    padding: 9px 15px;
    border: 1px solid #bcd6df;
    border-radius: 12px;
    background: #ffffff;
    color: #294b5d;
    font-weight: 850;
    line-height: 1.25;
  }
  #rk-energy-choice .rk-ec-source-switch button[aria-pressed="true"],
  #rk-energy-choice .rk-ec-mode-switch button[aria-pressed="true"],
  #rk-energy-choice .rk-ec-chart-tabs button[aria-pressed="true"] {
    border-color: var(--rk-blue);
    background: var(--rk-blue);
    color: #ffffff;
  }
  #rk-energy-choice .rk-ec-system-map {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
  }
  #rk-energy-choice .rk-ec-flow-card {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: #ffffff;
  }
  #rk-energy-choice .rk-ec-flow-card.is-electric { border-top: 5px solid var(--rk-orange); }
  #rk-energy-choice .rk-ec-flow-card.is-water { border-top: 5px solid var(--rk-cyan); }
  #rk-energy-choice .rk-ec-flow-title { margin: 0 0 17px; color: var(--rk-dark); font-weight: 900; }
  #rk-energy-choice .rk-ec-flow {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    align-items: stretch;
    gap: 8px;
    margin-bottom: 18px;
  }
  #rk-energy-choice .rk-ec-flow.is-five { grid-template-columns: repeat(5, minmax(0, 1fr)); }
  #rk-energy-choice .rk-ec-flow-node {
    display: grid;
    place-items: center;
    min-width: 0;
    min-height: 78px;
    padding: 10px 7px;
    border: 1px solid #cfe0e6;
    border-radius: 13px;
    background: #f7fbfc;
    color: #294b5d;
    font-size: .75rem;
    font-weight: 850;
    line-height: 1.28;
    text-align: center;
    overflow-wrap: anywhere;
  }
  #rk-energy-choice .rk-ec-flow-node + .rk-ec-flow-node { position: relative; }
  #rk-energy-choice .rk-ec-flow-node + .rk-ec-flow-node::before {
    position: absolute;
    left: -9px;
    top: 50%;
    width: 9px;
    height: 2px;
    background: #8db8c6;
    content: "";
  }
  #rk-energy-choice .rk-ec-flow-formula {
    padding: 15px 17px;
    border-radius: 13px;
    background: var(--rk-soft);
    color: #355669;
    font-size: .84rem;
    line-height: 1.55;
  }

  #rk-energy-choice .rk-ec-tool {
    overflow: hidden;
    margin-top: 27px;
    border: 1px solid #bfd9e3;
    border-radius: 24px;
    background: #ffffff;
    box-shadow: 0 18px 44px rgba(16, 37, 54, .09);
  }
  #rk-energy-choice .rk-ec-tool-head {
    padding: 27px clamp(20px, 4vw, 38px);
    background: linear-gradient(125deg, #102536, #13566b);
  }
  #rk-energy-choice .rk-ec-tool-head h3 { margin: 0 0 8px; color: #ffffff; }
  #rk-energy-choice .rk-ec-tool-head p { margin: 0; color: #dceef2; }
  #rk-energy-choice .rk-ec-tool-head .rk-ec-eyebrow { color: #ff8b67; }
  #rk-energy-choice .rk-ec-tool-body { padding: clamp(20px, 4vw, 38px); }
  #rk-energy-choice .rk-ec-tool-intro {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: 18px;
    margin-bottom: 24px;
  }
  #rk-energy-choice .rk-ec-tool-intro p { margin: 0; }
  #rk-energy-choice .rk-ec-reset {
    min-height: 42px;
    padding: 8px 14px;
    border: 1px solid #bdd4dd;
    border-radius: 11px;
    background: #ffffff;
    color: #345264;
    font-weight: 820;
  }
  #rk-energy-choice .rk-ec-mode-switch {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-bottom: 17px;
  }
  #rk-energy-choice .rk-ec-field-grid {
    display: grid;
    gap: 14px;
    margin-bottom: 18px;
  }
  #rk-energy-choice .rk-ec-field-grid.is-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-energy-choice .rk-ec-field-grid.is-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-energy-choice .rk-ec-field-grid.is-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-energy-choice .rk-ec-field {
    min-width: 0;
    padding: 16px;
    border: 1px solid #d1e1e7;
    border-radius: 15px;
    background: #fafdfe;
  }
  #rk-energy-choice .rk-ec-field label,
  #rk-energy-choice .rk-ec-field-title {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: .84rem;
    font-weight: 880;
    line-height: 1.35;
  }
  #rk-energy-choice .rk-ec-field input,
  #rk-energy-choice .rk-ec-field select {
    width: 100%;
    min-height: 46px;
    padding: 9px 11px;
    border: 1px solid #adc8d2;
    border-radius: 10px;
    background: #ffffff;
    color: var(--rk-dark);
    font-weight: 780;
  }
  #rk-energy-choice .rk-ec-field-help {
    display: block;
    margin-top: 7px;
    color: #657d8b;
    font-size: .72rem;
    line-height: 1.42;
  }
  #rk-energy-choice .rk-ec-advanced {
    margin: 18px 0 25px;
    border: 1px solid #d2e2e8;
    border-radius: 16px;
    background: #f8fbfc;
  }
  #rk-energy-choice .rk-ec-advanced summary {
    position: relative;
    padding: 17px 48px 17px 18px;
    color: var(--rk-dark);
    font-weight: 880;
    list-style: none;
    cursor: pointer;
  }
  #rk-energy-choice .rk-ec-advanced summary::-webkit-details-marker { display: none; }
  #rk-energy-choice .rk-ec-advanced summary::after {
    position: absolute;
    right: 18px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-blue);
    font-size: 1.35rem;
    content: "+";
  }
  #rk-energy-choice .rk-ec-advanced[open] summary::after { content: "−"; }
  #rk-energy-choice .rk-ec-advanced-content { padding: 0 18px 18px; }
  #rk-energy-choice .rk-ec-validation {
    min-height: 25px;
    margin: -2px 0 18px;
    color: var(--rk-red);
    font-size: .78rem;
    font-weight: 780;
  }

  #rk-energy-choice .rk-ec-results {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-top: 25px;
  }
  #rk-energy-choice .rk-ec-result-system {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: #ffffff;
  }
  #rk-energy-choice .rk-ec-result-system.is-direct { border-top: 5px solid var(--rk-orange); }
  #rk-energy-choice .rk-ec-result-system.is-pump { border-top: 5px solid var(--rk-cyan); }
  #rk-energy-choice .rk-ec-result-system h4 { margin-top: 0; }
  #rk-energy-choice .rk-ec-result-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  #rk-energy-choice .rk-ec-result-item {
    min-width: 0;
    padding: 14px;
    border-radius: 12px;
    background: var(--rk-soft);
  }
  #rk-energy-choice .rk-ec-result-item span,
  #rk-energy-choice .rk-ec-result-item strong { display: block; }
  #rk-energy-choice .rk-ec-result-item span { color: #617987; font-size: .69rem; font-weight: 830; line-height: 1.35; }
  #rk-energy-choice .rk-ec-result-item strong { margin-top: 5px; color: var(--rk-dark); font-size: 1rem; line-height: 1.3; overflow-wrap: anywhere; }
  #rk-energy-choice .rk-ec-verdict {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin: 18px 0 0;
    padding: 19px;
    border: 1px solid #bde2e7;
    border-radius: 17px;
    background: linear-gradient(120deg, #eafafd, #f8fdfd);
  }
  #rk-energy-choice .rk-ec-verdict > div { min-width: 0; }
  #rk-energy-choice .rk-ec-verdict span,
  #rk-energy-choice .rk-ec-verdict strong { display: block; }
  #rk-energy-choice .rk-ec-verdict span { color: #55717e; font-size: .71rem; font-weight: 820; }
  #rk-energy-choice .rk-ec-verdict strong { margin-top: 5px; color: var(--rk-dark); line-height: 1.35; overflow-wrap: anywhere; }

  #rk-energy-choice .rk-ec-chart-panel {
    margin-top: 22px;
    padding: 21px;
    border: 1px solid #c8dce3;
    border-radius: 19px;
    background: #ffffff;
  }
  #rk-energy-choice .rk-ec-chart-head {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 15px;
  }
  #rk-energy-choice .rk-ec-chart-head h4 { margin: 0; }
  #rk-energy-choice .rk-ec-chart-tabs { display: flex; flex-wrap: wrap; gap: 7px; }
  #rk-energy-choice .rk-ec-chart-tabs button { min-height: 39px; padding: 7px 11px; font-size: .73rem; }
  #rk-energy-choice .rk-ec-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 9px 18px;
    margin: 16px 0 7px;
    color: #556f7d;
    font-size: .76rem;
    font-weight: 820;
  }
  #rk-energy-choice .rk-ec-chart-legend span { display: inline-flex; align-items: center; gap: 7px; }
  #rk-energy-choice .rk-ec-chart-legend i { display: inline-block; width: 22px; height: 7px; border-radius: 999px; }
  #rk-energy-choice .rk-ec-chart-legend .is-direct { background: var(--rk-orange); }
  #rk-energy-choice .rk-ec-chart-legend .is-pump { background: var(--rk-blue); }
  #rk-energy-choice .rk-ec-chart-wrap { width: 100%; overflow: hidden; }
  #rk-energy-choice .rk-ec-chart-wrap svg { width: 100%; height: auto; min-height: 290px; font-family: inherit; }
  #rk-energy-choice .rk-ec-chart-reading {
    display: block;
    width: 100%;
    max-width: none;
    margin: 13px 0 0;
    padding: 15px 17px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 6px 13px 13px 6px;
    background: #edf8fa;
    color: #294b5d;
    font-size: .81rem;
    line-height: 1.55;
  }
  #rk-energy-choice .rk-ec-axis { stroke: #9ab2bd; stroke-width: 1.2; }
  #rk-energy-choice .rk-ec-gridline { stroke: #dce8ec; stroke-width: 1; }
  #rk-energy-choice .rk-ec-gridtext { fill: #627987; font-size: 11px; font-weight: 750; }
  #rk-energy-choice .rk-ec-path-direct { fill: none; stroke: var(--rk-orange); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
  #rk-energy-choice .rk-ec-path-pump { fill: none; stroke: var(--rk-blue); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }
  #rk-energy-choice .rk-ec-payback-line { stroke: var(--rk-green); stroke-width: 2; stroke-dasharray: 6 5; }
  #rk-energy-choice .rk-ec-payback-label { fill: var(--rk-green); font-size: 11px; font-weight: 900; }

  #rk-energy-choice .rk-ec-scenarios {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 13px;
    margin-top: 22px;
  }
  #rk-energy-choice .rk-ec-scenario {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: #f9fcfd;
  }
  #rk-energy-choice .rk-ec-scenario b,
  #rk-energy-choice .rk-ec-scenario span,
  #rk-energy-choice .rk-ec-scenario strong { display: block; }
  #rk-energy-choice .rk-ec-scenario b { color: var(--rk-dark); }
  #rk-energy-choice .rk-ec-scenario span { margin: 3px 0 9px; color: #687f8d; font-size: .72rem; }
  #rk-energy-choice .rk-ec-scenario strong { color: #0c7697; font-size: .91rem; }

  #rk-energy-choice .rk-ec-step-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
  #rk-energy-choice .rk-ec-step {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr);
    align-items: start;
    gap: 15px;
    min-width: 0;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: #ffffff;
  }
  #rk-energy-choice .rk-ec-step-no {
    position: static;
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    min-width: 52px;
    min-height: 52px;
    margin: 0;
    padding: 0;
    border-radius: 50%;
    background: #d9f4f7;
    color: #0d708d;
    font-size: 1rem;
    font-weight: 950;
    line-height: 1;
    text-align: center;
  }
  #rk-energy-choice .rk-ec-step h3 { margin: 2px 0 7px; font-size: 1.04rem; }
  #rk-energy-choice .rk-ec-step p { margin: 0; font-size: .9rem; }

  #rk-energy-choice .rk-ec-cta {
    position: relative;
    overflow: hidden;
    margin: 31px 0 0;
    padding: clamp(25px, 5vw, 42px);
    border-radius: 22px;
    background: linear-gradient(128deg, #102536, #125268);
    color: #ffffff;
  }
  #rk-energy-choice .rk-ec-cta::after {
    position: absolute;
    right: -70px;
    bottom: -100px;
    width: 240px;
    height: 240px;
    border: 32px solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
    pointer-events: none;
  }
  #rk-energy-choice .rk-ec-cta > * { position: relative; z-index: 1; }
  #rk-energy-choice .rk-ec-cta .rk-ec-eyebrow { color: #ff8b67; }
  #rk-energy-choice .rk-ec-cta-title {
    max-width: 850px;
    margin-bottom: 12px;
    color: #ffffff;
    font-size: clamp(1.45rem, 3vw, 2.2rem);
    font-weight: 920;
    line-height: 1.14;
    letter-spacing: -.035em;
  }
  #rk-energy-choice .rk-ec-cta p { max-width: 920px; margin-bottom: 19px; color: #dceef2; }
  #rk-energy-choice .rk-ec-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 12px 20px;
    border-radius: 12px;
    background: var(--rk-orange);
    color: #ffffff !important;
    font-weight: 900;
    line-height: 1.3;
    text-align: center;
    text-decoration: none;
    box-shadow: 0 10px 24px rgba(0, 0, 0, .16);
  }
  #rk-energy-choice .rk-ec-cta-button:hover { background: #e8572f; color: #ffffff !important; }
  #rk-energy-choice .rk-ec-disclosure { display: block; margin-top: 10px; color: #bcd5dc; font-size: .68rem; }

  #rk-energy-choice .rk-ec-faq { display: grid; gap: 10px; }
  #rk-energy-choice .rk-ec-faq details {
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: #ffffff;
  }
  #rk-energy-choice .rk-ec-faq summary {
    position: relative;
    padding: 18px 52px 18px 20px;
    color: var(--rk-dark);
    font-weight: 870;
    line-height: 1.4;
    list-style: none;
    cursor: pointer;
  }
  #rk-energy-choice .rk-ec-faq summary::-webkit-details-marker { display: none; }
  #rk-energy-choice .rk-ec-faq summary::after {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-blue);
    font-size: 1.38rem;
    content: "+";
  }
  #rk-energy-choice .rk-ec-faq details[open] summary::after { content: "−"; }
  #rk-energy-choice .rk-ec-faq-answer { padding: 0 20px 18px; }
  #rk-energy-choice .rk-ec-faq-answer p:last-child { margin-bottom: 0; }

  #rk-energy-choice .rk-ec-sources { display: grid; gap: 12px; margin: 0; padding: 0; list-style: none; }
  #rk-energy-choice .rk-ec-sources li {
    margin: 0;
    padding: 17px 19px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: #ffffff;
  }
  #rk-energy-choice .rk-ec-responsibility {
    margin-top: 24px;
    padding: 21px;
    border: 1px solid #d6e3e8;
    border-radius: 16px;
    background: #f7fafb;
  }
  #rk-energy-choice .rk-ec-responsibility p { margin-bottom: 9px; font-size: .78rem; line-height: 1.58; }
  #rk-energy-choice .rk-ec-responsibility p:last-child { margin-bottom: 0; }

  #rk-energy-choice .rk-ec-author {
    overflow: hidden;
    border-radius: 24px;
    color: #ffffff;
    background: linear-gradient(135deg, #102536, #174b5b);
  }
  #rk-energy-choice .rk-ec-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-energy-choice .rk-ec-author-head h2 { margin-bottom: 6px; color: #ffffff; }
  #rk-energy-choice .rk-ec-author-head p { margin-bottom: 0; color: #dcecf0; }
  #rk-energy-choice .rk-ec-author-head .rk-ec-eyebrow { color: #7cecf7; }
  #rk-energy-choice .rk-ec-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-energy-choice .rk-ec-author-layout { display: grid; grid-template-columns: 245px minmax(0, 1fr); }
  #rk-energy-choice .rk-ec-author-side {
    padding: 30px 25px;
    border-right: 1px solid rgba(255, 255, 255, .12);
    text-align: center;
  }
  #rk-energy-choice .rk-ec-author-photo {
    width: 132px;
    height: 132px;
    margin: 0 auto 16px;
    overflow: hidden;
    border: 5px solid rgba(255, 255, 255, .15);
    border-radius: 50%;
  }
  #rk-energy-choice .rk-ec-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-energy-choice .rk-ec-author-name { margin-bottom: 5px; font-size: 1.12rem; font-weight: 900; }
  #rk-energy-choice .rk-ec-author-name a { color: #ffffff; text-decoration: none; }
  #rk-energy-choice .rk-ec-author-role { margin: 0; color: #cfe4e9; font-size: .7rem; line-height: 1.55; }
  #rk-energy-choice .rk-ec-author-social-label {
    margin-top: 20px;
    color: #8beff7;
    font-size: .58rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  #rk-energy-choice .rk-ec-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 9px; }
  #rk-energy-choice .rk-ec-author-social a {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    color: #ffffff;
    background: rgba(255, 255, 255, .1);
    text-decoration: none;
  }
  #rk-energy-choice .rk-ec-author-social svg { width: 18px; height: 18px; fill: currentColor; }
  #rk-energy-choice .rk-ec-author-main { min-width: 0; padding: 32px clamp(23px, 5vw, 42px); }
  #rk-energy-choice .rk-ec-author-quote { position: relative; margin: 0 0 24px; padding: 4px 0 4px 58px; border: 0; }
  #rk-energy-choice .rk-ec-author-quote::before {
    position: absolute;
    top: -11px;
    left: 0;
    color: #6ee9f5;
    content: "“";
    font-family: Georgia, serif;
    font-size: 4.4rem;
    line-height: 1;
  }
  #rk-energy-choice .rk-ec-author-quote p { margin-bottom: 0; color: #ffffff; font-size: 1.02rem; font-weight: 740; }
  #rk-energy-choice .rk-ec-author-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; }
  #rk-energy-choice .rk-ec-author-card { min-width: 0; padding: 16px; border-radius: 14px; background: rgba(255, 255, 255, .075); }
  #rk-energy-choice .rk-ec-author-card b { display: block; margin-bottom: 5px; color: #8beff7; font-size: .69rem; }
  #rk-energy-choice .rk-ec-author-card p { margin-bottom: 0; color: #d8e9ed; font-size: .68rem; line-height: 1.55; }
  #rk-energy-choice .rk-ec-author-mini-label {
    margin-top: 22px;
    color: #8beff7;
    font-size: .58rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
  }
  #rk-energy-choice .rk-ec-portals { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
  #rk-energy-choice .rk-ec-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-energy-choice .rk-ec-grid-4,
    #rk-energy-choice .rk-ec-field-grid.is-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-energy-choice .rk-ec-system-map { grid-template-columns: 1fr; }
    #rk-energy-choice .rk-ec-flow.is-five { grid-template-columns: repeat(5, minmax(82px, 1fr)); overflow-x: auto; padding-bottom: 5px; }
  }
  @media (max-width: 820px) {
    #rk-energy-choice { font-size: 16px; }
    #rk-energy-choice .rk-ec-shell { border-radius: 20px; }
    #rk-energy-choice .rk-ec-hero-metrics,
    #rk-energy-choice .rk-ec-grid-3,
    #rk-energy-choice .rk-ec-results,
    #rk-energy-choice .rk-ec-scenarios,
    #rk-energy-choice .rk-ec-author-cards { grid-template-columns: 1fr; }
    #rk-energy-choice .rk-ec-step-grid { grid-template-columns: 1fr; }
    #rk-energy-choice .rk-ec-author-layout { grid-template-columns: 1fr; }
    #rk-energy-choice .rk-ec-author-side { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .12); }
  }
  @media (max-width: 680px) {
    #rk-energy-choice .rk-ec-section { padding: 38px 18px; }
    #rk-energy-choice .rk-ec-hero { padding: 38px 20px 34px; }
    #rk-energy-choice .rk-ec-hero-title { font-size: clamp(2rem, 11vw, 3.2rem); }
    #rk-energy-choice .rk-ec-nav { padding: 18px; }
    #rk-energy-choice .rk-ec-author-head { display: block; }
    #rk-energy-choice .rk-ec-author-mark { display: inline-block; margin-top: 14px; }
    #rk-energy-choice .rk-ec-grid-2,
    #rk-energy-choice .rk-ec-grid-4,
    #rk-energy-choice .rk-ec-field-grid.is-2,
    #rk-energy-choice .rk-ec-field-grid.is-3,
    #rk-energy-choice .rk-ec-field-grid.is-4,
    #rk-energy-choice .rk-ec-result-grid,
    #rk-energy-choice .rk-ec-verdict { grid-template-columns: 1fr; }
    #rk-energy-choice .rk-ec-mode-switch { grid-template-columns: 1fr; }
    #rk-energy-choice .rk-ec-tool-intro { grid-template-columns: 1fr; }
    #rk-energy-choice .rk-ec-chart-panel { padding: 14px; }
    #rk-energy-choice .rk-ec-chart-wrap svg { min-height: 250px; }
    #rk-energy-choice .rk-ec-flow,
    #rk-energy-choice .rk-ec-flow.is-five { grid-template-columns: 1fr; overflow: visible; padding-bottom: 0; }
    #rk-energy-choice .rk-ec-flow-node + .rk-ec-flow-node::before {
      left: 50%;
      top: -9px;
      width: 2px;
      height: 9px;
      transform: translateX(-50%);
    }
    #rk-energy-choice .rk-ec-table { overflow: visible; border: 0; background: transparent; }
    #rk-energy-choice .rk-ec-table table,
    #rk-energy-choice .rk-ec-table tbody { display: block; width: 100%; }
    #rk-energy-choice .rk-ec-table thead { display: none; }
    #rk-energy-choice .rk-ec-table tr {
      display: block;
      margin-bottom: 13px;
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 15px;
      background: #ffffff;
    }
    #rk-energy-choice .rk-ec-table tbody th,
    #rk-energy-choice .rk-ec-table td {
      display: grid;
      grid-template-columns: minmax(105px, 40%) minmax(0, 1fr);
      gap: 12px;
      width: 100%;
      padding: 13px 15px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      text-align: left;
    }
    #rk-energy-choice .rk-ec-table tbody th::before,
    #rk-energy-choice .rk-ec-table td::before {
      color: #617987;
      font-size: .71rem;
      font-weight: 900;
      line-height: 1.35;
      content: attr(data-label);
    }
    #rk-energy-choice .rk-ec-table tr > :last-child { border-bottom: 0; }
    #rk-energy-choice .rk-ec-step { grid-template-columns: 52px minmax(0, 1fr); padding: 17px; }
    #rk-energy-choice .rk-ec-cta-button { width: 100%; }
  }
  @media (max-width: 430px) {
    #rk-energy-choice .rk-ec-nav-track { gap: 6px; }
    #rk-energy-choice .rk-ec-nav a { width: 100%; justify-content: flex-start; }
    #rk-energy-choice .rk-ec-step { grid-template-columns: 46px minmax(0, 1fr); gap: 12px; }
    #rk-energy-choice .rk-ec-step-no { width: 44px; height: 44px; min-width: 44px; min-height: 44px; }
    #rk-energy-choice .rk-ec-author-main { padding-left: 18px; padding-right: 18px; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-energy-choice * { scroll-behavior: auto !important; transition: none !important; }
  }
</style>

<div id="rk-energy-choice">
  <article class="rk-ec-shell" aria-label="Poradnik i kalkulator kosztów ogrzewania elektrycznego oraz wodnej podłogówki z pompą ciepła">
    <header class="rk-ec-hero">
      <span class="rk-ec-kicker">Koszt zakupu to dopiero rok zero</span>
      <div class="rk-ec-hero-title">Elektryczna czy wodna podłogówka? <span>Policz pełny koszt, nie slogan</span></div>
      <p class="rk-ec-lead">Kable, maty i folie zwykle wymagają mniejszego nakładu początkowego. Wodna podłogówka z pompą ciepła może zużywać znacznie mniej kupowanej energii, ale wymaga droższej infrastruktury. Uczciwa odpowiedź powstaje dopiero po zestawieniu tego samego zapotrzebowania na ciepło, kompletnego CAPEX, rocznych kosztów oraz wymian w wybranym okresie.</p>
      <div class="rk-ec-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-ec-hero-tag">kable, maty i folie</span>
        <span class="rk-ec-hero-tag">wodna podłogówka + pompa ciepła</span>
        <span class="rk-ec-hero-tag">CAPEX, OPEX i TCO</span>
        <span class="rk-ec-hero-tag">SCOP i fotowoltaika</span>
        <span class="rk-ec-hero-tag">1–30 lat</span>
      </div>
      <div class="rk-ec-byline">
        <span><strong>Autor:</strong> Robert Kucharski</span>
        <span><strong>Czas czytania:</strong> około 27 minut</span>
        <span><strong>Aktualizacja techniczna:</strong> 13 września 2026 r.</span>
      </div>
      <div class="rk-ec-hero-metrics">
        <div class="rk-ec-hero-metric"><b>Porównujemy to samo ciepło</b><span>Oba warianty muszą pokryć identyczne użyteczne zapotrzebowanie budynku i zapewnić ten sam komfort.</span></div>
        <div class="rk-ec-hero-metric"><b>Emiter to nie źródło</b><span>Rura wodna, kabel albo mata oddają ciepło przez podłogę. O rachunku decyduje także sposób wytworzenia ciepła.</span></div>
        <div class="rk-ec-hero-metric"><b>Wynik ma zakres, nie wyrok</b><span>Kalkulator pokazuje skutek wpisanych cen, SCOP, serwisu, PV i wymiany urządzenia — nie gwarancję kosztu.</span></div>
      </div>
    </header>

    <nav class="rk-ec-nav" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-ec-nav-label">Na skróty — wszystkie H2</span>
      <div class="rk-ec-nav-track">
        <a href="#rk-ec-answer">Szybka odpowiedź</a>
        <a href="#rk-ec-comparison">Co porównujemy?</a>
        <a href="#rk-ec-map">Droga energii</a>
        <a href="#rk-ec-tco">CAPEX, OPEX i TCO</a>
        <a href="#rk-ec-calculator">Kalkulator kosztów</a>
        <a href="#rk-ec-reading">Jak czytać wynik?</a>
        <a href="#rk-ec-electric">Kiedy elektryczne?</a>
        <a href="#rk-ec-water">Kiedy wodne z pompą?</a>
        <a href="#rk-ec-pv">Fotowoltaika i taryfa</a>
        <a href="#rk-ec-lifecycle">Serwis i wymiany</a>
        <a href="#rk-ec-example">Przykład 120 m²</a>
        <a href="#rk-ec-errors">Błędy porównania</a>
        <a href="#rk-ec-method">Jak porównać?</a>
        <a href="#rk-ec-conclusion">Wnioski</a>
        <a href="#rk-ec-sources">Źródła</a>
        <a href="#rk-ec-faq">FAQ</a>
        <a href="#rk-ec-author">Autor</a>
      </div>
    </nav>

    <section class="rk-ec-section" id="rk-ec-answer">
      <span class="rk-ec-eyebrow">Odpowiedź w 30 sekund</span>
      <h2 class="rk-ec-section-title">Co jest tańsze: ogrzewanie elektryczne czy wodna podłogówka?</h2>
      <div class="rk-ec-answer">
        <span class="rk-ec-answer-label">Najkrótsza poprawna odpowiedź</span>
        <p><strong>Ogrzewanie elektryczne bezpośrednie zwykle wygrywa niskim kosztem startowym, a wodna podłogówka z dobrze pracującą pompą ciepła — niższym zakupem energii w sezonie. To, który wariant ma niższy koszt całkowity, zależy przede wszystkim od zapotrzebowania budynku, różnicy inwestycji, rzeczywistego SCOP, ceny energii i długości analizy. Nie ma technicznej podstawy do zdania, że jeden system zawsze wygrywa.</strong></p>
      </div>
      <div class="rk-ec-grid-3">
        <article class="rk-ec-card"><span class="rk-ec-card-label is-orange">Niski CAPEX</span><h3>Elektryka może mieć sens</h3><p>Przy bardzo małym zapotrzebowaniu, krótkim horyzoncie użytkowania, ograniczonym zakresie lub trudnym remoncie oszczędność na starcie może być ważniejsza niż przyszła różnica w rachunkach.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label">Niski OPEX</span><h3>Pompa może odzyskać różnicę</h3><p>Im więcej użytecznego ciepła potrzebuje dom i im wyższy sezonowy SCOP, tym szybciej niższe zużycie prądu może skompensować droższą instalację.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label is-green">Prawidłowy wybór</span><h3>Wynik może brzmieć „brak zwrotu”</h3><p>Jeżeli krzywe kosztów nie przetną się w badanym okresie, kalkulator pokaże to wprost. Brak zwrotu w 20 lat nie oznacza awarii obliczeń.</p></article>
      </div>
      <p>Ten wpis odpowiada na pytanie o <strong>rachunki, TCO i okres zwrotu</strong>. Szersze porównanie komfortu, montażu i zastosowań znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/jakie-ogrzewanie-podlogowe-wybrac-wodne-czy-elektryczne/">wodne czy elektryczne ogrzewanie podłogowe — co wybrać</a>. Dzięki temu oba artykuły nie konkurują o tę samą intencję wyszukiwania.</p>
    </section>

    <section class="rk-ec-section rk-ec-section-soft" id="rk-ec-comparison">
      <span class="rk-ec-eyebrow">Najpierw usuń błąd kategorii</span>
      <h2 class="rk-ec-section-title">Co właściwie porównujemy: emiter, źródło czy cały system?</h2>
      <p class="rk-ec-section-lead">„Elektryczna podłogówka kontra wodna podłogówka” brzmi prosto, ale miesza dwie warstwy instalacji. Kabel, mata, folia lub rura są elementami oddającymi ciepło. Pompa ciepła i kocioł elektryczny są źródłami, które przygotowują ciepło dla obiegu wodnego.</p>
      <div class="rk-ec-table">
        <table aria-label="Zakres porównania ogrzewania elektrycznego i wodnej podłogówki">
          <thead><tr><th>Warstwa</th><th>Ogrzewanie elektryczne bezpośrednie</th><th>Wodna podłogówka z pompą ciepła</th></tr></thead>
          <tbody>
            <tr><th data-label="Warstwa">Źródło / przemiana energii</th><td data-label="Elektryczne">Element oporowy zamienia energię elektryczną w ciepło ze sprawnością bliską 1.</td><td data-label="Wodne + pompa">Pompa przenosi ciepło z otoczenia; pobór prądu zależy od sezonowego SCOP całego układu.</td></tr>
            <tr><th data-label="Warstwa">Emiter</th><td data-label="Elektryczne">Kabel, mata albo folia współpracująca z warstwami podłogi.</td><td data-label="Wodne + pompa">Rury z wodą, jastrych lub system suchy oraz okładzina.</td></tr>
            <tr><th data-label="Warstwa">Energia kupowana</th><td data-label="Elektryczne">W przybliżeniu odpowiada użytecznemu ciepłu po uwzględnieniu sprawności.</td><td data-label="Wodne + pompa">Użyteczne ciepło podzielone przez SCOP, powiększone o energię pomocniczą.</td></tr>
            <tr><th data-label="Warstwa">Możliwość zmiany źródła</th><td data-label="Elektryczne">Element oporowy pozostaje konkretnym sposobem wytwarzania ciepła.</td><td data-label="Wodne + pompa">Rury są emiterem; w przyszłości można zmienić urządzenie zasilające, jeśli układ jest z nim zgodny.</td></tr>
            <tr><th data-label="Warstwa">Zakres kosztu</th><td data-label="Elektryczne">Elementy grzejne, sterowanie, obwody i ewentualne zwiększenie mocy przyłączeniowej.</td><td data-label="Wodne + pompa">Rury, rozdzielacze, automatyka, hydraulika, źródło, uruchomienie i ewentualny osprzęt.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-ec-warning"><strong>Ważne:</strong> wodna podłogówka z kotłem elektrycznym nie korzysta z „dźwigni” SCOP. W takim wariancie zakup energii będzie zbliżony do ogrzewania oporowego i dodatkowo pojawi się prąd pomp obiegowych. Zyskiem wodnego emitera pozostaje elastyczność źródła, a nie automatyczna oszczędność energii.</div>
      <p>Jeżeli chcesz zrozumieć sam emiter, zacznij od tekstu <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa ogrzewanie podłogowe</a>. Osobno omawiam również <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">zasadę działania i dobór pompy ciepła</a>.</p>
    </section>

    <section class="rk-ec-section" id="rk-ec-map">
      <span class="rk-ec-eyebrow">Modułowa grafika edukacyjna</span>
      <h2 class="rk-ec-section-title">Jak energia dociera do pomieszczenia w obu systemach?</h2>
      <p class="rk-ec-section-lead">Kliknij źródło dla obiegu wodnego. Zmienia się droga energii i wzór na energię kupowaną, ale sama podłoga nadal pozostaje emiterem. Moduł nie dubluje kalkulatora — porządkuje pojęcia przed wprowadzaniem liczb.</p>
      <div class="rk-ec-source-switch" role="group" aria-label="Źródło dla wodnej podłogówki">
        <button type="button" data-rk-ec-source="pump" aria-pressed="true">Pompa ciepła</button>
        <button type="button" data-rk-ec-source="boiler" aria-pressed="false">Kocioł elektryczny</button>
      </div>
      <div class="rk-ec-system-map">
        <article class="rk-ec-flow-card is-electric">
          <div class="rk-ec-flow-title">Ogrzewanie elektryczne bezpośrednie</div>
          <div class="rk-ec-flow" aria-label="Droga energii w elektrycznym ogrzewaniu podłogowym">
            <div class="rk-ec-flow-node">Prąd z sieci / PV</div>
            <div class="rk-ec-flow-node">Kabel, mata lub folia</div>
            <div class="rk-ec-flow-node">Warstwy podłogi</div>
            <div class="rk-ec-flow-node">Pomieszczenie</div>
          </div>
          <div class="rk-ec-flow-formula"><strong>Energia kupowana ≈ Q<sub>użyteczne</sub> ÷ η</strong><br>Sprawność przemiany jest bliska 1, lecz budynek nadal potrzebuje tyle ciepła, ile wynika z jego strat i użytkowania.</div>
        </article>
        <article class="rk-ec-flow-card is-water">
          <div class="rk-ec-flow-title">Wodna podłogówka + <span id="rk-ec-map-source-name">pompa ciepła</span></div>
          <div class="rk-ec-flow is-five" aria-label="Droga energii w wodnym ogrzewaniu podłogowym">
            <div class="rk-ec-flow-node">Prąd z sieci / PV</div>
            <div class="rk-ec-flow-node" id="rk-ec-map-source-node">Pompa ciepła</div>
            <div class="rk-ec-flow-node">Woda i hydraulika</div>
            <div class="rk-ec-flow-node">Rury + podłoga</div>
            <div class="rk-ec-flow-node">Pomieszczenie</div>
          </div>
          <div class="rk-ec-flow-formula" id="rk-ec-map-formula"><strong>Energia kupowana ≈ Q<sub>użyteczne</sub> ÷ SCOP + energia pomocnicza</strong><br>Niższa wymagana temperatura wody może sprzyjać sprawności pompy, ale SCOP trzeba przyjąć dla realnego układu i warunków.</div>
        </article>
      </div>
      <p>W kablach zatopionych w jastrychu również może występować <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplna podłogi</a>. Nieprawdziwe jest więc uproszczenie „elektryka nie akumuluje, woda akumuluje” — o odpowiedzi decyduje konstrukcja i masa warstw, nie sam rodzaj przewodu.</p>
    </section>

    <section class="rk-ec-section rk-ec-section-soft" id="rk-ec-tco">
      <span class="rk-ec-eyebrow">Trzy różne pytania finansowe</span>
      <h2 class="rk-ec-section-title">CAPEX, OPEX i TCO — co trzeba policzyć osobno?</h2>
      <div class="rk-ec-grid-3">
        <article class="rk-ec-card"><span class="rk-ec-card-label is-orange">CAPEX</span><h3>Ile płacisz na początku?</h3><p>Kompletny koszt zaprojektowania, zakupu, wykonania, zasilenia i uruchomienia systemu, pomniejszony o dotacje, które faktycznie otrzymasz.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label">OPEX</span><h3>Ile kosztuje rok pracy?</h3><p>Energia zależna od zużycia, energia pomocnicza oraz serwis. Identycznych opłat stałych nie należy sztucznie przypisywać tylko jednemu wariantowi.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label is-green">TCO</span><h3>Ile wydasz w całym okresie?</h3><p>CAPEX plus kolejne lata OPEX i zaplanowane wymiany. Horyzont 5, 10, 20 lub 30 lat może prowadzić do odmiennego wyboru.</p></article>
      </div>
      <div class="rk-ec-equation">
        <span class="rk-ec-equation-label">Model użyty w narzędziu</span>
        <div class="rk-ec-equation-main">TCO<sub>n</sub> = inwestycja + Σ koszt energii w roku + Σ serwis + koszt wymiany w wybranym roku</div>
        <p>Wzrost ceny prądu jest jawny i domyślnie wynosi 0%. Kalkulator nie ukrywa prognozy 3% lub 5% w gotowym wyniku. Nie uwzględnia dyskonta pieniądza, kredytu, podatków ani ogólnej inflacji.</p>
      </div>
      <p>Orientacyjne widełki rynkowe nie zastępują porównywalnych ofert. Sprawdź osobno <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">co powinna obejmować wycena wodnej podłogówki</a> oraz analizę <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">kosztów ogrzewania domu dla różnych źródeł</a>. Wrażliwość wyniku rozwijają też materiały o <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%C2%B2/">optymalizacji kosztów podłogówki</a> i <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">realnym zwrocie z inwestycji</a>.</p>
    </section>

    <section class="rk-ec-section" id="rk-ec-calculator">
      <span class="rk-ec-eyebrow">Jedno narzędzie — jeden wynik</span>
      <h2 class="rk-ec-section-title">Kalkulator kosztów ogrzewania elektrycznego i wodnej podłogówki z pompą ciepła</h2>
      <p class="rk-ec-section-lead">Wpisz własne dane z rachunku, ofert i obliczeń budynku. Wyniki roczne, TCO, rok przecięcia, trzy scenariusze SCOP, wykres oraz tabela są aktualizowane przez ten sam model. Domyślne wartości tworzą przykład edukacyjny dla domu 120 m² — nie są aktualnym cennikiem.</p>

      <div class="rk-ec-tool" id="rk-ec-calculator-tool">
        <div class="rk-ec-tool-head">
          <span class="rk-ec-eyebrow">Kalkulator TCO 1–30 lat</span>
          <h3>Porównaj ten sam budynek i ten sam komfort</h3>
          <p>Najpierw określ użyteczne ciepło, potem koszt zakupu energii. Moc urządzenia w kW nie jest rocznym zużyciem w kWh.</p>
        </div>
        <div class="rk-ec-tool-body">
          <div class="rk-ec-tool-intro">
            <p><strong>Wybierz sposób podania rocznego zapotrzebowania.</strong> Pola alternatywne nie są sumowane.</p>
            <button type="button" class="rk-ec-reset" id="rk-ec-reset">Przywróć przykład 120 m²</button>
          </div>

          <div class="rk-ec-mode-switch" role="group" aria-label="Sposób podania zapotrzebowania">
            <button type="button" data-rk-ec-mode="annual" aria-pressed="true">Mam roczne ciepło w kWh</button>
            <button type="button" data-rk-ec-mode="intensity" aria-pressed="false">Mam powierzchnię i kWh/m²/rok</button>
          </div>

          <div class="rk-ec-field-grid is-3">
            <div class="rk-ec-field" id="rk-ec-annual-field"><label for="rk-ec-demand">Roczne użyteczne ciepło</label><input id="rk-ec-demand" type="number" min="100" max="200000" step="100" value="8000" inputmode="decimal"><span class="rk-ec-field-help">Ogrzewanie pomieszczeń, kWh/rok. Najlepiej z obliczeń lub wiarygodnego bilansu.</span></div>
            <div class="rk-ec-field" id="rk-ec-intensity-field" hidden=""><label for="rk-ec-intensity">Energia użyteczna na 1 m²</label><input id="rk-ec-intensity" type="number" min="1" max="500" step="1" value="67" inputmode="decimal"><span class="rk-ec-field-help">kWh/(m²·rok), nie moc projektowa W/m².</span></div>
            <div class="rk-ec-field"><label for="rk-ec-area">Ogrzewana powierzchnia</label><input id="rk-ec-area" type="number" min="10" max="1000" step="1" value="120" inputmode="decimal"><span class="rk-ec-field-help">m²; służy też do wyliczenia kosztu rocznego na 1 m².</span></div>
            <div class="rk-ec-field"><label for="rk-ec-price">Pełna zmienna cena prądu</label><input id="rk-ec-price" type="number" min="0.01" max="10" step="0.01" value="1.20" inputmode="decimal"><span class="rk-ec-field-help">zł/kWh: energia i zmienne składniki dystrybucji z Twojego rachunku.</span></div>
          </div>

          <div class="rk-ec-field-grid is-3">
            <div class="rk-ec-field"><label for="rk-ec-capex-direct">Inwestycja — system elektryczny</label><input id="rk-ec-capex-direct" type="number" min="0" max="1000000" step="500" value="10000" inputmode="decimal"><span class="rk-ec-field-help">zł, kompletny zakres po realnych dotacjach.</span></div>
            <div class="rk-ec-field"><label for="rk-ec-capex-pump">Inwestycja — wodna + pompa</label><input id="rk-ec-capex-pump" type="number" min="0" max="1000000" step="500" value="40000" inputmode="decimal"><span class="rk-ec-field-help">zł, ten sam zakres funkcjonalny i stan cen.</span></div>
            <div class="rk-ec-field"><label for="rk-ec-scop">Sezonowy SCOP pompy ciepła</label><input id="rk-ec-scop" type="number" min="1.1" max="8" step="0.1" value="3.5" inputmode="decimal"><span class="rk-ec-field-help">Nie chwilowy COP z jednego punktu katalogowego.</span></div>
          </div>

          <div class="rk-ec-field-grid is-2">
            <div class="rk-ec-field"><label for="rk-ec-years">Okres analizy</label><input id="rk-ec-years" type="number" min="1" max="30" step="1" value="20" inputmode="numeric"><span class="rk-ec-field-help">Od 1 do 30 pełnych lat eksploatacji.</span></div>
            <div class="rk-ec-field"><label for="rk-ec-growth">Roczny wzrost zmiennej ceny prądu</label><input id="rk-ec-growth" type="number" min="-10" max="30" step="0.1" value="0" inputmode="decimal"><span class="rk-ec-field-help">%, jawne założenie; 0% oznacza stałą cenę w całej analizie.</span></div>
          </div>

          <details class="rk-ec-advanced">
            <summary>Ustawienia zaawansowane: serwis, PV, sprawność i wymiana pompy</summary>
            <div class="rk-ec-advanced-content">
              <div class="rk-ec-field-grid is-4">
                <div class="rk-ec-field"><label for="rk-ec-eta">Sprawność elektryczna η</label><input id="rk-ec-eta" type="number" min="0.80" max="1" step="0.01" value="0.99" inputmode="decimal"><span class="rk-ec-field-help">Wartość bliska 1; nie opisujemy jej jako SCOP.</span></div>
                <div class="rk-ec-field"><label for="rk-ec-aux">Prąd pomocniczy pompy i hydrauliki</label><input id="rk-ec-aux" type="number" min="0" max="10000" step="10" value="250" inputmode="decimal"><span class="rk-ec-field-help">kWh/rok poza energią wynikającą z Q/SCOP.</span></div>
                <div class="rk-ec-field"><label for="rk-ec-service-direct">Serwis systemu elektrycznego</label><input id="rk-ec-service-direct" type="number" min="0" max="50000" step="50" value="0" inputmode="decimal"><span class="rk-ec-field-help">zł/rok.</span></div>
                <div class="rk-ec-field"><label for="rk-ec-service-pump">Serwis pompy i wodnej instalacji</label><input id="rk-ec-service-pump" type="number" min="0" max="50000" step="50" value="400" inputmode="decimal"><span class="rk-ec-field-help">zł/rok.</span></div>
              </div>
              <div class="rk-ec-field-grid is-4">
                <div class="rk-ec-field"><label for="rk-ec-pv-direct">PV zużyte bezpośrednio na elektryczne</label><input id="rk-ec-pv-direct" type="number" min="0" max="200000" step="50" value="0" inputmode="decimal"><span class="rk-ec-field-help">kWh/rok rzeczywistej autokonsumpcji na ogrzewanie, nie cała produkcja PV.</span></div>
                <div class="rk-ec-field"><label for="rk-ec-pv-pump">PV zużyte bezpośrednio przez pompę</label><input id="rk-ec-pv-pump" type="number" min="0" max="200000" step="50" value="0" inputmode="decimal"><span class="rk-ec-field-help">kWh/rok potwierdzonego dopasowania produkcji i pracy systemu.</span></div>
                <div class="rk-ec-field"><label for="rk-ec-replacement-year">Rok wymiany pompy</label><input id="rk-ec-replacement-year" type="number" min="0" max="30" step="1" value="0" inputmode="numeric"><span class="rk-ec-field-help">0 = brak wymiany w analizie.</span></div>
                <div class="rk-ec-field"><label for="rk-ec-replacement-cost">Koszt wymiany pompy</label><input id="rk-ec-replacement-cost" type="number" min="0" max="500000" step="500" value="25000" inputmode="decimal"><span class="rk-ec-field-help">zł w wartości wpisanej dziś; doliczany tylko w wybranym roku.</span></div>
              </div>
            </div>
          </details>

          <div class="rk-ec-validation" id="rk-ec-validation" role="status" aria-live="polite"></div>

          <div class="rk-ec-results" aria-label="Wyniki porównania systemów">
            <article class="rk-ec-result-system is-direct">
              <h4>Elektryczne bezpośrednie</h4>
              <div class="rk-ec-result-grid">
                <div class="rk-ec-result-item"><span>Energia kupowana / rok</span><strong id="rk-ec-out-energy-direct">—</strong></div>
                <div class="rk-ec-result-item"><span>Koszt w 1. roku</span><strong id="rk-ec-out-year-direct">—</strong></div>
                <div class="rk-ec-result-item"><span>Koszt / m² w 1. roku</span><strong id="rk-ec-out-m2-direct">—</strong></div>
                <div class="rk-ec-result-item"><span>TCO po okresie</span><strong id="rk-ec-out-tco-direct">—</strong></div>
              </div>
            </article>
            <article class="rk-ec-result-system is-pump">
              <h4>Wodna podłogówka + pompa ciepła</h4>
              <div class="rk-ec-result-grid">
                <div class="rk-ec-result-item"><span>Energia kupowana / rok</span><strong id="rk-ec-out-energy-pump">—</strong></div>
                <div class="rk-ec-result-item"><span>Koszt w 1. roku</span><strong id="rk-ec-out-year-pump">—</strong></div>
                <div class="rk-ec-result-item"><span>Koszt / m² w 1. roku</span><strong id="rk-ec-out-m2-pump">—</strong></div>
                <div class="rk-ec-result-item"><span>TCO po okresie</span><strong id="rk-ec-out-tco-pump">—</strong></div>
              </div>
            </article>
          </div>

          <div class="rk-ec-verdict" aria-live="polite">
            <div><span>Użyteczne ciepło w modelu</span><strong id="rk-ec-out-demand">—</strong></div>
            <div><span>Pierwszy pełny rok przecięcia TCO</span><strong id="rk-ec-out-payback">—</strong></div>
            <div><span>Różnica TCO po okresie</span><strong id="rk-ec-out-delta">—</strong></div>
          </div>

          <div class="rk-ec-chart-panel">
            <div class="rk-ec-chart-head">
              <h4 id="rk-ec-chart-heading">Skumulowany koszt całkowity</h4>
              <div class="rk-ec-chart-tabs" role="group" aria-label="Widok wykresu">
                <button type="button" data-rk-ec-chart="cumulative" aria-pressed="true">TCO narastająco</button>
                <button type="button" data-rk-ec-chart="annual" aria-pressed="false">Koszt roczny</button>
                <button type="button" data-rk-ec-chart="energy" aria-pressed="false">Energia z sieci</button>
              </div>
            </div>
            <div class="rk-ec-chart-legend"><span><i class="is-direct"></i>Elektryczne bezpośrednie</span><span><i class="is-pump"></i>Wodna + pompa ciepła</span></div>
            <div class="rk-ec-chart-wrap"><svg id="rk-ec-chart" viewBox="0 0 760 390" role="img" aria-label="Porównanie kosztów ogrzewania. Wykres aktualizuje się po zmianie danych kalkulatora."></svg></div>
            <p class="rk-ec-chart-reading" id="rk-ec-chart-reading">Zmień dane, aby sprawdzić wrażliwość wyniku.</p>
          </div>

          <h4>Wrażliwość wyniku na SCOP — bez nadpisywania Twoich pól</h4>
          <p>Scenariusze zmieniają wyłącznie SCOP o 0,5 w dół lub w górę. Zapotrzebowanie, ceny, inwestycje, PV, serwis i wymiana pozostają identyczne.</p>
          <div class="rk-ec-scenarios">
            <div class="rk-ec-scenario"><b>Niższy SCOP</b><span id="rk-ec-scenario-low-assumption">—</span><strong id="rk-ec-scenario-low-result">—</strong></div>
            <div class="rk-ec-scenario"><b>SCOP wpisany</b><span id="rk-ec-scenario-base-assumption">—</span><strong id="rk-ec-scenario-base-result">—</strong></div>
            <div class="rk-ec-scenario"><b>Wyższy SCOP</b><span id="rk-ec-scenario-high-assumption">—</span><strong id="rk-ec-scenario-high-result">—</strong></div>
          </div>

          <div class="rk-ec-table" id="rk-ec-year-table">
            <table aria-label="Tabela kosztów w wybranych latach">
              <thead><tr><th>Rok</th><th>Elektryczne — TCO</th><th>Wodne + pompa — TCO</th><th>Różnica</th></tr></thead>
              <tbody id="rk-ec-year-table-body"></tbody>
            </table>
          </div>
          <div class="rk-ec-responsibility">
            <p><strong>Zakres wyniku:</strong> narzędzie liczy ogrzewanie pomieszczeń, bez CWU i chłodzenia. Zmienna cena prądu rośnie o wpisany procent, a koszty serwisu i wymiany pozostają w wartościach nominalnych wprowadzonych przez użytkownika.</p>
            <p><strong>PV:</strong> od zużycia odejmowana jest tylko wpisana energia rzeczywiście wykorzystana na pracę danego ogrzewania; wartość jest automatycznie ograniczana do zużycia systemu.</p>
            <p><strong>Ograniczenia:</strong> model nie symuluje pogody godzinowej, odszraniania, taryf dynamicznych, kredytu, ogólnej inflacji, wartości pieniądza w czasie, awarii ani zmian zachowania mieszkańców.</p>
          </div>
        </div>
      </div>

      <div class="rk-ec-cta">
        <span class="rk-ec-eyebrow">Kalkulator porównał koszty — projekt musi potwierdzić parametry</span>
        <div class="rk-ec-cta-title">Założony SCOP nie bierze się wyłącznie z katalogu pompy ciepła</div>
        <p>Rzeczywisty wynik zależy między innymi od wymaganej temperatury zasilania, rozstawu rur, długości pętli, przepływów, strat ciśnienia i nastaw. Projekt określa te parametry dla konkretnego budynku, aby ekonomiczny wariant z arkusza był również wykonalny technicznie.</p>
        <a class="rk-ec-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź projekt ogrzewania podłogowego</a>
        <small class="rk-ec-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-ec-section rk-ec-section-soft" id="rk-ec-reading">
      <span class="rk-ec-eyebrow">Wynik to relacja założeń</span>
      <h2 class="rk-ec-section-title">Jak czytać wynik kalkulatora, żeby nie wyciągnąć złego wniosku?</h2>
      <div class="rk-ec-grid-2">
        <article class="rk-ec-card"><h3>Najpierw energia, potem złotówki</h3><p>Jeżeli zakup energii dla pompy jest zaskakująco niski, sprawdź SCOP, energię pomocniczą i PV. Jeżeli rachunek elektryki jest wysoki, potwierdź, czy wpisałeś ciepło użyteczne, a nie energię pierwotną albo moc w watach.</p></article>
        <article class="rk-ec-card"><h3>Rok zwrotu nie jest gwarancją</h3><p>To pierwszy pełny rok, w którym skumulowany TCO pompy nie przewyższa TCO elektryki przy niezmienionych założeniach. Realna przyszłość może zmienić ceny, sprawność, serwis i zakres wymian.</p></article>
        <article class="rk-ec-card"><h3>Brak przecięcia też jest wynikiem</h3><p>Przy małym zapotrzebowaniu lub dużej różnicy inwestycji pompa może nie odzyskać nakładu w 20 czy 30 lat. To ważna informacja decyzyjna, a nie powód do ukrywania komunikatu.</p></article>
        <article class="rk-ec-card"><h3>Najważniejsza jest analiza wrażliwości</h3><p>Porównaj SCOP niższy i wyższy, cenę z rachunku, 0% oraz własny scenariusz wzrostu, a także wariant z wymianą urządzenia. Stabilny wybór powinien bronić się w kilku realistycznych wersjach.</p></article>
      </div>
      <p>SCOP jest skutkiem pracy całego układu w sezonie, a nie jedną stałą przypisaną każdej pompie. Zobacz, jak <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">temperatura zasilania wpływa na pompę ciepła</a> oraz dlaczego potrzebna jest prawidłowa <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza podłogówki</a>.</p>
    </section>

    <section class="rk-ec-section" id="rk-ec-electric">
      <span class="rk-ec-eyebrow">Nie tylko rachunek roczny</span>
      <h2 class="rk-ec-section-title">Kiedy elektryczne ogrzewanie podłogowe może być rozsądnym wyborem?</h2>
      <p class="rk-ec-section-lead">Niski koszt inwestycyjny ma największą wartość tam, gdzie roczna ilość potrzebnego ciepła jest mała albo system pracuje krótko. Nie oznacza to, że każdy mały dom automatycznie powinien mieć kable — potrzebny jest bilans mocy, energii i przyłącza.</p>
      <div class="rk-ec-grid-4">
        <article class="rk-ec-card"><span class="rk-ec-card-label is-orange">Małe zużycie</span><h3>Bardzo energooszczędny budynek</h3><p>Mała liczba kupowanych kWh ogranicza roczną korzyść z pompy, więc duży dodatkowy CAPEX może zwracać się długo.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label is-orange">Krótka praca</span><h3>Domek lub strefa okresowa</h3><p>Przy użytkowaniu weekendowym i niewielkiej powierzchni prosty system może wygrać kosztami i szybkością reakcji.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label is-orange">Remont</span><h3>Ograniczona wysokość podłogi</h3><p>Mata pod płytkami może być łatwiejsza do wykonania niż pełna hydraulika, ale trzeba sprawdzić konstrukcję, moc elektryczną i regulację.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label is-orange">Uzupełnienie</span><h3>Komfort poza sezonem</h3><p>Elektryczna mata w łazience może pracować niezależnie od głównego źródła, jeżeli użytkownik świadomie akceptuje jej koszt.</p></article>
      </div>
      <div class="rk-ec-warning"><strong>Sprawdź przyłącze:</strong> suma mocy kabli nie mówi jeszcze, ile zużyją w roku, ale wpływa na bilans mocy budynku, dobór obwodów, zabezpieczeń i sterowania. Te elementy muszą być ujęte w CAPEX.</div>
      <p>Kable i maty nie zawsze oznaczają identyczną konstrukcję. Grubość warstw, rodzaj okładziny oraz sterowanie zmieniają dynamikę pracy. Warto zestawić to z poradnikiem o <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">wpływie okładziny podłogowej na oddawanie ciepła</a>.</p>
    </section>

    <section class="rk-ec-section rk-ec-section-dark" id="rk-ec-water">
      <span class="rk-ec-eyebrow">Niższy pobór wymaga dobrego układu</span>
      <h2 class="rk-ec-section-title">Kiedy wodna podłogówka z pompą ciepła zyskuje przewagę?</h2>
      <p class="rk-ec-section-lead">Przewaga rośnie wraz z ilością dostarczanego ciepła, długością eksploatacji i sezonową sprawnością. Sama obecność rury w podłodze nie obniża zużycia — robi to źródło pracujące w korzystnych parametrach.</p>
      <div class="rk-ec-grid-3">
        <article class="rk-ec-card"><span class="rk-ec-card-label">Duże roczne Q</span><h3>Więcej energii do dostarczenia</h3><p>Każda kWh użytecznego ciepła powiększa różnicę pomiędzy η bliską 1 a SCOP większym od 1, dlatego wysoki popyt cieplny skraca prosty zwrot.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label">Niski parametr</span><h3>Podłoga pokrywa obciążenie</h3><p>Wymagana moc musi zostać osiągnięta przy temperaturze sprzyjającej pompie. Rozstawu nie wybiera się wyłącznie według jednego schematu dla całego domu.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label">Długi horyzont</span><h3>Infrastruktura zostaje w budynku</h3><p>Rury, rozdzielacze i poprawnie wykonane warstwy tworzą emiter, do którego można w przyszłości dobrać inne kompatybilne źródło.</p></article>
      </div>
      <p>Punkt wyjścia stanowi <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne pomieszczeń</a>. Dalej dobiera się <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a>, <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">długości pętli grzewczych</a>, przepływy i <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">parametry pompy obiegowej</a>. Dopiero po połączeniu tych danych można wiarygodnie oceniać przyszły SCOP; pełną zależność pokazuje poradnik o <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie ogrzewania podłogowego z pompą ciepła</a>.</p>
    </section>

    <section class="rk-ec-section" id="rk-ec-pv">
      <span class="rk-ec-eyebrow">Produkcja roczna to nie autokonsumpcja grzania</span>
      <h2 class="rk-ec-section-title">Czy fotowoltaika i tańsza taryfa zmieniają wynik?</h2>
      <p>Tak, ale tylko wtedy, gdy model opisuje rzeczywiste rozliczenie i zgodność w czasie. Nie wolno odjąć całej rocznej produkcji PV od energii ogrzewania tylko dlatego, że obie wielkości są zapisane w kWh. Największe zapotrzebowanie na ciepło przypada na okres o słabszej produkcji słonecznej, a sposób rozliczenia energii zależy od umowy i systemu.</p>
      <div class="rk-ec-grid-3">
        <article class="rk-ec-card"><h3>Autokonsumpcja</h3><p>Do kalkulatora wpisz wyłącznie energię wykorzystaną bezpośrednio przez dany system w czasie jego pracy. Dla kabli i pompy może być inna.</p></article>
        <article class="rk-ec-card"><h3>Energia oddana i odebrana</h3><p>Jej wartość zależy od zasad rozliczenia. Nie jest równoważna bezpośrednio zużytej kWh i nie powinna być odejmowana bez modelu finansowego.</p></article>
        <article class="rk-ec-card"><h3>Taryfa godzinowa</h3><p>Znaczenie ma udział pracy w poszczególnych strefach, nie sama nazwa taryfy. Bezwładna podłoga może przesuwać część poboru, ale ogranicza ją komfort i konstrukcja.</p></article>
      </div>
      <p>Do oszacowania produkcji w konkretnej lokalizacji można użyć oficjalnego narzędzia <a href="https://re.jrc.ec.europa.eu/pvg_tools/en/" target="_blank" rel="nofollow noopener noreferrer">PVGIS Komisji Europejskiej</a>. To nadal nie zastępuje danych o godzinowym dopasowaniu produkcji do ogrzewania. Aktualną ofertę i zmienne składniki energii sprawdzaj w swojej umowie oraz porównywarce <a href="https://maszwybor.ure.gov.pl/or/cenki" target="_blank" rel="nofollow noopener noreferrer">Urzędu Regulacji Energetyki</a>.</p>
    </section>

    <section class="rk-ec-section rk-ec-section-soft" id="rk-ec-lifecycle">
      <span class="rk-ec-eyebrow">Długi okres wymaga uczciwych wymian</span>
      <h2 class="rk-ec-section-title">Serwis, trwałość i wymiana urządzeń — czego nie pomijać w 20–30 latach?</h2>
      <div class="rk-ec-table">
        <table aria-label="Koszty cyklu życia obu systemów">
          <thead><tr><th>Element</th><th>Jak ująć w analizie?</th><th>Najczęstszy błąd</th></tr></thead>
          <tbody>
            <tr><th data-label="Element">Elementy w podłodze</th><td data-label="Jak liczyć">Porównaj deklaracje producenta, warunki gwarancji, temperatury pracy, dokumentację wykonania i możliwość naprawy.</td><td data-label="Błąd">Jedna uniwersalna liczba lat dla każdej rury, kabla, maty lub połączenia.</td></tr>
            <tr><th data-label="Element">Pompa ciepła</th><td data-label="Jak liczyć">Przetestuj wariant bez wymiany i wariant z wymianą w realistycznym roku oraz koszcie.</td><td data-label="Błąd">Założenie, że całe urządzenie na pewno wytrzyma 30 lat albo na pewno zepsuje się po 10.</td></tr>
            <tr><th data-label="Element">Serwis</th><td data-label="Jak liczyć">Wpisz rzeczywisty zakres z warunków gwarancji i ofert serwisowych.</td><td data-label="Błąd">Dodawanie wysokiego serwisu jednemu wariantowi i pomijanie wszystkich napraw drugiego bez uzasadnienia.</td></tr>
            <tr><th data-label="Element">Sterowanie</th><td data-label="Jak liczyć">Uwzględnij termostaty, listwy, siłowniki, automatykę źródła i ewentualne wymiany.</td><td data-label="Błąd">Traktowanie automatyki jako identycznej, mimo innego zakresu funkcji.</td></tr>
            <tr><th data-label="Element">Dotacje i finansowanie</th><td data-label="Jak liczyć">Wprowadź nakład po dotacji faktycznie dostępnej dla inwestycji; koszt kredytu analizuj osobno.</td><td data-label="Błąd">Jednoczesne użycie ceny przed dotacją i korzyści po dotacji albo nieuwzględnienie kosztu kapitału.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Warunki eksploatacji rur trzeba odczytywać z dokumentacji konkretnego systemu, a nie z hasła „50 lat”. Szczegóły omawia poradnik o <a href="https://projekt-ogrzewania.pl/wytrzymalosc-rur-do-ogrzewania-podlogowego-kompleksowy-przewodnik/">wytrzymałości rur ogrzewania podłogowego</a> i artykuł o <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rurze PEX do podłogówki</a>. Koszt automatyki oceniaj po funkcji, korzystając z analizy <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">czy sterowanie strefowe ma sens</a>.</p>
    </section>

    <section class="rk-ec-section" id="rk-ec-example">
      <span class="rk-ec-eyebrow">Przykład zsynchronizowany z narzędziem</span>
      <h2 class="rk-ec-section-title">Ile może kosztować ogrzewanie domu 120 m²?</h2>
      <p>Po przywróceniu wartości przykładowych model przyjmuje 8000 kWh użytecznego ciepła rocznie, cenę 1,20 zł/kWh, sprawność elektryczną 0,99, SCOP 3,5, 250 kWh energii pomocniczej, serwis pompy 400 zł/rok oraz inwestycje 10 000 i 40 000 zł. Wzrost ceny oraz PV wynoszą 0%, a wymiana pompy jest wyłączona.</p>
      <div class="rk-ec-grid-4">
        <article class="rk-ec-card"><span class="rk-ec-card-label is-orange">Elektryczne</span><h3 id="rk-ec-example-direct">około 9700 zł/rok</h3><p>Koszt pierwszego roku energii i serwisu dla aktualnych danych.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label">Pompa ciepła</span><h3 id="rk-ec-example-pump">około 3440 zł/rok</h3><p>Koszt pierwszego roku wraz z energią pomocniczą i serwisem.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label is-green">Przecięcie</span><h3 id="rk-ec-example-payback">5. rok</h3><p>Pierwszy pełny rok, w którym TCO wodnego wariantu nie jest wyższy.</p></article>
        <article class="rk-ec-card"><span class="rk-ec-card-label is-green">Po okresie</span><h3 id="rk-ec-example-delta">około 95 100 zł</h3><p>Różnica TCO przy aktualnie wpisanym horyzoncie i założeniach.</p></article>
      </div>
      <div class="rk-ec-note"><strong>To nie jest prognoza dla każdego domu 120 m².</strong> Dwa budynki o tej samej powierzchni mogą potrzebować zupełnie innej ilości energii z powodu izolacji, stolarki, wentylacji, bryły, lokalizacji i temperatury wewnętrznej. Najpierw sprawdź <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">jak oszacować zapotrzebowanie na ogrzewanie</a> oraz czym różni się ono od <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansu cieplnego budynku</a>.</div>
    </section>

    <section class="rk-ec-section rk-ec-section-soft" id="rk-ec-errors">
      <span class="rk-ec-eyebrow">Sześć sposobów na błędny wynik</span>
      <h2 class="rk-ec-section-title">Najczęstsze błędy w porównaniu kabli, folii i wodnej podłogówki</h2>
      <div class="rk-ec-grid-3">
        <article class="rk-ec-card"><h3>1. Inny zakres inwestycji</h3><p>Jedna cena obejmuje tylko kabel, a druga źródło, emiter, automatykę i uruchomienie. Najpierw wyrównaj zakres funkcjonalny obu ofert.</p></article>
        <article class="rk-ec-card"><h3>2. Powierzchnia zamiast energii</h3><p>„Dom 100 m²” nie określa rocznego rachunku. Potrzebne jest użyteczne ciepło w kWh/rok i założenia dotyczące komfortu.</p></article>
        <article class="rk-ec-card"><h3>3. Chwilowy COP jako SCOP</h3><p>Jedna wartość katalogowa dla łagodnych warunków nie opisuje sezonu, odszraniania ani temperatur wymaganych przez instalację.</p></article>
        <article class="rk-ec-card"><h3>4. Stała cena udająca aktualną taryfę</h3><p>1,20 zł/kWh w tym wpisie jest edytowalnym przykładem. Użytkownik powinien policzyć zmienny koszt z własnego rachunku.</p></article>
        <article class="rk-ec-card"><h3>5. Cała produkcja PV odjęta zimą</h3><p>Roczne 8000 kWh produkcji nie oznacza 8000 kWh bezpośrednio zużytych na ogrzewanie w czasie zapotrzebowania.</p></article>
        <article class="rk-ec-card"><h3>6. Obietnica pewnego zwrotu</h3><p>Zwrot jest wynikiem przyjętych danych. Uczciwy model musi również pokazać brak przecięcia w wybranym okresie.</p></article>
      </div>
      <p>Do kosztów wykonania trzeba dopisać ryzyka montażowe. Osobna checklista opisuje <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy przy montażu podłogówki</a>, w tym warstwy, próbę i dokumentację przed zakryciem instalacji. Uzupełnieniem są zasady doboru <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">grubości wylewki na ogrzewaniu podłogowym</a> oraz wykonania <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacji brzegowej i dylatacji</a>.</p>
    </section>

    <section class="rk-ec-section" id="rk-ec-method">
      <span class="rk-ec-eyebrow">Procedura od danych do decyzji</span>
      <h2 class="rk-ec-section-title">Jak uczciwie porównać ogrzewanie elektryczne i wodne krok po kroku?</h2>
      <div class="rk-ec-step-grid">
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">1</span><div><h3>Ustal ten sam komfort</h3><p>Zdefiniuj ogrzewane pomieszczenia, temperatury wewnętrzne, harmonogram i ten sam zakres CWU lub wyłącz CWU z obu wariantów.</p></div></article>
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">2</span><div><h3>Wyznacz użyteczne ciepło</h3><p>Przyjmij roczne kWh z obliczeń budynku albo świadomie oszacuj je z powierzchni i wskaźnika energii — bez mieszania z mocą W.</p></div></article>
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">3</span><div><h3>Wyrównaj zakres CAPEX</h3><p>Porównaj projekt, emiter, źródło, automatykę, elektrykę, hydraulikę, montaż, uruchomienie oraz koszty po faktycznych dotacjach.</p></div></article>
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">4</span><div><h3>Wpisz cenę z rachunku</h3><p>Dodaj cenę energii i zmienne składniki dystrybucji. Nie doliczaj opłaty stałej, jeśli występuje identycznie niezależnie od wyboru.</p></div></article>
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">5</span><div><h3>Przyjmij sezonową sprawność</h3><p>Dla elektryki użyj η bliskiej 1, a dla pompy realistycznego SCOP uwzględniającego klimat, temperaturę wody i działanie instalacji.</p></div></article>
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">6</span><div><h3>Dodaj serwis, PV i wymianę</h3><p>Wpisz koszty roczne, energię pomocniczą, udokumentowaną autokonsumpcję ogrzewania oraz wariant wymiany pompy.</p></div></article>
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">7</span><div><h3>Sprawdź kilka scenariuszy</h3><p>Zmień SCOP, cenę prądu, wzrost ceny, horyzont i koszt wymiany. Zwróć uwagę, czy wybór pozostaje stabilny.</p></div></article>
        <article class="rk-ec-step"><span class="rk-ec-step-no" aria-hidden="true">8</span><div><h3>Potwierdź wykonalność</h3><p>Zweryfikuj moce, rozstawy, temperatury, przepływy, opory, przyłącze i sterowanie. Kalkulacja finansowa nie zastępuje projektu.</p></div></article>
      </div>
      <div class="rk-ec-callout"><strong>Dokumenty, które warto mieć obok kalkulatora:</strong> OZC lub bilans energii, dwie kompletne oferty, rachunek za prąd, dane sezonowe urządzenia dla właściwego klimatu i temperatury wody, warunki gwarancji, plan serwisu oraz profil PV. Sam opis produktu nie wystarcza.</div>
    </section>

    <section class="rk-ec-section rk-ec-section-soft" id="rk-ec-conclusion">
      <span class="rk-ec-eyebrow">Wniosek bez marketingowego skrótu</span>
      <h2 class="rk-ec-section-title">Co wybrać: kable grzejne, folię czy wodną podłogówkę z pompą?</h2>
      <p><strong>Jeżeli kluczowy jest niski nakład, roczne zapotrzebowanie jest bardzo małe, a instalacja ma ograniczony zakres lub krótki czas pracy, ogrzewanie elektryczne może mieć niższy TCO w badanym horyzoncie.</strong> Jeżeli dom potrzebuje więcej ciepła, będzie długo użytkowany, a wodna podłoga pozwala pompie osiągnąć dobry SCOP, niższy pobór energii może zwrócić dodatkową inwestycję.</p>
      <p>Ostatecznej odpowiedzi nie daje sama powierzchnia 100 czy 120 m². Dają ją spójne dane: energia użyteczna, pełna cena kWh, kompletne nakłady, SCOP dla realnej temperatury zasilania, serwis, PV i wymiany. Porównując koszt po 10 i 20 latach, zawsze pokazuj również rok zero oraz scenariusz, w którym ceny albo sprawność układają się mniej korzystnie.</p>
      <div class="rk-ec-answer"><span class="rk-ec-answer-label">Jedno zdanie do zapamiętania</span><p><strong>Najtańszy element grzejny nie musi tworzyć najtańszego systemu, a najniższy rachunek roczny nie musi zwrócić najwyższej inwestycji — dlatego wybieramy po TCO i po sprawdzeniu technicznym.</strong></p></div>

      <div class="rk-ec-cta">
        <span class="rk-ec-eyebrow">Od symulacji do dokumentacji dla wykonawcy</span>
        <div class="rk-ec-cta-title">Zamień założony niski parametr na policzony układ podłogówki</div>
        <p>Projekt łączy obciążenia cieplne pomieszczeń z powierzchnią czynną, rozstawem, długością pętli, temperaturą wody, przepływami i stratami ciśnienia. Dzięki temu dobór źródła oraz analiza kosztów opierają się na instalacji, którą można prawidłowo wykonać i uruchomić.</p>
        <a class="rk-ec-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt podłogówki</a>
        <small class="rk-ec-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-ec-section" id="rk-ec-sources">
      <span class="rk-ec-eyebrow">Metodyka i materiały oficjalne</span>
      <h2 class="rk-ec-section-title">Źródła i podstawa techniczna</h2>
      <ul class="rk-ec-sources">
        <li><a href="https://www.iso.org/standard/74682.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-1:2021 — definicje i symbole dla wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego</a>.</li>
        <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wyznaczanie projektowej mocy grzewczej i chłodniczej</a>.</li>
        <li><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a>.</li>
        <li><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-5:2021 — instalacja systemów płaszczyznowych</a>.</li>
        <li><a href="https://maszwybor.ure.gov.pl/or/cenki" target="_blank" rel="nofollow noopener noreferrer">Urząd Regulacji Energetyki — oficjalna porównywarka ofert sprzedaży energii elektrycznej</a>.</li>
        <li><a href="https://re.jrc.ec.europa.eu/pvg_tools/en/" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska, Joint Research Centre — PVGIS do szacowania produkcji fotowoltaicznej</a>.</li>
        <li><a href="https://energy.ec.europa.eu/topics/energy-efficiency/energy-performance-buildings/energy-performance-buildings-directive_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — dyrektywa w sprawie charakterystyki energetycznej budynków (EPBD)</a>.</li>
      </ul>
      <div class="rk-ec-responsibility">
        <p><strong>Stan źródeł:</strong> odnośniki sprawdzono 13 września 2026 r. Karty ISO opisują zakres norm; dostęp do pełnej treści może być odpłatny.</p>
        <p><strong>Metodyka kalkulatora:</strong> elektryka = Q/η; pompa = Q/SCOP + energia pomocnicza. Od obu poborów odejmowana jest osobno wpisana autokonsumpcja PV, maksymalnie do poziomu zużycia. Koszt energii rośnie o jawny procent roczny.</p>
        <p><strong>Odpowiedzialność:</strong> treść i narzędzie mają charakter edukacyjny. Nie są projektem wykonawczym, audytem energetycznym, gwarancją oszczędności, ofertą urządzenia ani poradą finansową.</p>
      </div>
    </section>

    <section class="rk-ec-section rk-ec-section-soft" id="rk-ec-faq">
      <span class="rk-ec-eyebrow">Najczęstsze pytania inwestorów</span>
      <h2 class="rk-ec-section-title">FAQ: elektryczne czy wodne ogrzewanie podłogowe — koszty</h2>
      <div class="rk-ec-faq">
        <details><summary>Co jest tańsze: ogrzewanie elektryczne czy wodna podłogówka z pompą ciepła?</summary><div class="rk-ec-faq-answer"><p>Elektryczne bezpośrednie zwykle wymaga niższego nakładu, a pompa ciepła może mieć niższy koszt energii. O niższym TCO decydują zapotrzebowanie, pełny CAPEX, SCOP, cena prądu, serwis, wymiany i czas analizy.</p></div></details>
        <details><summary>Ile kosztuje ogrzewanie podłogowe elektryczne domu 100 m² rocznie?</summary><div class="rk-ec-faq-answer"><p>Nie da się tego określić z samej powierzchni. Roczny koszt to w przybliżeniu użyteczne ciepło podzielone przez sprawność, pomniejszone o rzeczywistą autokonsumpcję PV i pomnożone przez zmienną cenę kWh, plus serwis.</p></div></details>
        <details><summary>Jakie zapotrzebowanie wpisać do kalkulatora?</summary><div class="rk-ec-faq-answer"><p>Roczne użyteczne ciepło potrzebne do ogrzewania pomieszczeń, najlepiej z wiarygodnych obliczeń. Nie wpisuj mocy urządzenia w kW ani energii pierwotnej. Alternatywnie użyj powierzchni i świadomie przyjętego kWh/(m²·rok).</p></div></details>
        <details><summary>Czy COP 3,5 oznacza, że rachunek zawsze będzie 3,5 razy niższy?</summary><div class="rk-ec-faq-answer"><p>Nie. Do porównania rocznego potrzebny jest sezonowy SCOP, a ponadto trzeba doliczyć energię pomocniczą, serwis i nakład. Chwilowy COP zależy od konkretnego punktu pracy.</p></div></details>
        <details><summary>Czy wodna podłogówka z kotłem elektrycznym zużyje mniej prądu niż kable?</summary><div class="rk-ec-faq-answer"><p>Nie należy tego zakładać. Oba warianty wykorzystują oporowe wytwarzanie ciepła ze sprawnością bliską 1, a układ wodny ma dodatkową energię pomp. Jego zaletą może być możliwość późniejszej zmiany źródła.</p></div></details>
        <details><summary>Czy fotowoltaika zapewnia darmowe ogrzewanie elektryczne?</summary><div class="rk-ec-faq-answer"><p>Nie automatycznie. Trzeba rozliczyć zgodność produkcji i zużycia w czasie, zasady umowy oraz energię rzeczywiście wykorzystaną na ogrzewanie. Cała roczna produkcja PV nie jest autokonsumpcją zimowego grzania.</p></div></details>
        <details><summary>Po ilu latach zwraca się wodna podłogówka z pompą ciepła?</summary><div class="rk-ec-faq-answer"><p>Nie ma jednej liczby. Rok zwrotu jest pierwszym rokiem, gdy skumulowane oszczędności operacyjne pokrywają różnicę inwestycji i dodatkowe koszty. Przy części założeń zwrot nie nastąpi w badanym okresie.</p></div></details>
        <details><summary>Czy kable grzejne w wylewce nie mają bezwładności?</summary><div class="rk-ec-faq-answer"><p>Mogą mieć znaczną bezwładność, jeśli współpracują z masywnym jastrychem. Dynamikę wyznaczają warstwy, masa, izolacja, moc i sterowanie, a nie wyłącznie to, czy nośnikiem jest woda lub prąd.</p></div></details>
        <details><summary>Jakie koszty trzeba uwzględnić w porównaniu TCO?</summary><div class="rk-ec-faq-answer"><p>Kompletną inwestycję po realnych dotacjach, energię zmienną, energię pomocniczą, serwis, automatykę, planowane wymiany i ten sam zakres funkcji. Koszt finansowania oraz wartość pieniądza w czasie analizuje się osobno.</p></div></details>
        <details><summary>Czy kalkulator zastępuje OZC i projekt ogrzewania?</summary><div class="rk-ec-faq-answer"><p>Nie. Kalkulator pokazuje konsekwencje ekonomiczne założeń. OZC i projekt sprawdzają, ile mocy potrzebują pomieszczenia oraz czy instalacja osiągnie ją przy prawidłowych temperaturach, przepływach i oporach.</p></div></details>
      </div>
    </section>

    <section class="rk-ec-section" id="rk-ec-author" aria-labelledby="rk-ec-author-heading">
      <div class="rk-ec-author">
        <div class="rk-ec-author-head">
          <div>
            <span class="rk-ec-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
            <h2 id="rk-ec-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Treść przygotowana z perspektywy pełnych kosztów inwestycji i eksploatacji, bilansu cieplnego oraz rzeczywistej pracy źródła ciepła.</p>
          </div>
          <span class="rk-ec-author-mark">Aktualizacja: 13.09.2026</span>
        </div>
        <div class="rk-ec-author-layout">
          <aside class="rk-ec-author-side">
            <div class="rk-ec-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji grzewczych" width="132" height="132" loading="lazy" decoding="async"></div>
            <div class="rk-ec-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
            <p class="rk-ec-author-role">Projektant instalacji sanitarnych i specjalista HVAC</p>
            <div class="rk-ec-author-social-label">Profile branżowe</div>
            <div class="rk-ec-author-social" aria-label="Profile branżowe Roberta Kucharskiego">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6.5 8.2H3.2V21h3.3V8.2ZM4.85 3A1.92 1.92 0 1 0 4.9 6.84 1.92 1.92 0 0 0 4.85 3ZM21 13.66c0-3.86-2.06-5.66-4.81-5.66a4.14 4.14 0 0 0-3.75 2.06V8.2H9.12V21h3.32v-6.34c0-1.67.32-3.29 2.39-3.29 2.04 0 2.07 1.91 2.07 3.4V21H21v-7.34Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14 8.5V7c0-.74.5-.92.85-.92H17V3.13L14.05 3C11.13 3 10.47 5.16 10.47 6.55V8.5H8v3.36h2.47V21H14v-9.14h2.7l.44-3.36H14Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" 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"></path></svg></a>
            </div>
          </aside>
          <div class="rk-ec-author-main">
            <blockquote class="rk-ec-author-quote"><p>Nie porównuję ogrzewania elektrycznego z wodną podłogówką wyłącznie przez cenę montażu albo energii. Najpierw odnoszę oba warianty do tego samego zapotrzebowania na ciepło, a następnie liczę inwestycję, eksploatację, serwis i wymiany w jednym okresie.</p></blockquote>
            <div class="rk-ec-author-cards">
              <div class="rk-ec-author-card"><b>Praktyka projektowa</b><p>Analiza OZC, kosztów inwestycji i eksploatacji, temperatury zasilania, hydrauliki oraz współpracy podłogówki ze źródłem ciepła.</p></div>
              <div class="rk-ec-author-card"><b>Metoda</b><p>Ogrzewanie elektryczne i wodna podłogówka są porównywane dla tego samego budynku, zapotrzebowania na ciepło, okresu oraz jawnych cen energii.</p></div>
              <div class="rk-ec-author-card"><b>Zakres aktualizacji</b><p>Rozdzielono koszt emitera od źródła oraz dodano kalkulator TCO, scenariusze cen energii, serwis, wymiany i ograniczenia obliczeń.</p></div>
            </div>
            <div class="rk-ec-author-mini-label">Portale autora</div>
            <div class="rk-ec-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>
  </article>
</div>

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

  var root = document.getElementById("rk-energy-choice");
  if (!root) return;

  var state = {
    mode: "annual",
    chart: "cumulative",
    source: "pump"
  };

  var defaults = {
    "rk-ec-demand": 8000,
    "rk-ec-intensity": 67,
    "rk-ec-area": 120,
    "rk-ec-price": 1.20,
    "rk-ec-capex-direct": 10000,
    "rk-ec-capex-pump": 40000,
    "rk-ec-scop": 3.5,
    "rk-ec-years": 20,
    "rk-ec-growth": 0,
    "rk-ec-eta": 0.99,
    "rk-ec-aux": 250,
    "rk-ec-service-direct": 0,
    "rk-ec-service-pump": 400,
    "rk-ec-pv-direct": 0,
    "rk-ec-pv-pump": 0,
    "rk-ec-replacement-year": 0,
    "rk-ec-replacement-cost": 25000
  };

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

  function numberFrom(id, fallback) {
    var node = el(id);
    if (!node) return fallback;
    var parsed = parseFloat(String(node.value).replace(",", "."));
    if (!Number.isFinite(parsed)) return fallback;
    return parsed;
  }

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

  function textTo(id, value) {
    var node = el(id);
    if (node) node.textContent = value;
  }

  function money(value) {
    return new Intl.NumberFormat("pl-PL", {
      style: "currency",
      currency: "PLN",
      maximumFractionDigits: 0
    }).format(value);
  }

  function energy(value) {
    return new Intl.NumberFormat("pl-PL", {
      maximumFractionDigits: 0
    }).format(value) + " kWh";
  }

  function decimal(value, digits) {
    return new Intl.NumberFormat("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    }).format(value);
  }

  function readSettings() {
    var area = clamp(numberFrom("rk-ec-area", 120), 10, 1000);
    var directDemand = clamp(numberFrom("rk-ec-demand", 8000), 100, 200000);
    var intensity = clamp(numberFrom("rk-ec-intensity", 67), 1, 500);
    var demand = state.mode === "intensity" ? area * intensity : directDemand;
    var years = Math.round(clamp(numberFrom("rk-ec-years", 20), 1, 30));
    var replacementYear = Math.round(clamp(numberFrom("rk-ec-replacement-year", 0), 0, 30));

    return {
      area: area,
      demand: demand,
      price: clamp(numberFrom("rk-ec-price", 1.20), 0.01, 10),
      capexDirect: clamp(numberFrom("rk-ec-capex-direct", 10000), 0, 1000000),
      capexPump: clamp(numberFrom("rk-ec-capex-pump", 40000), 0, 1000000),
      scop: clamp(numberFrom("rk-ec-scop", 3.5), 1.1, 8),
      years: years,
      growth: clamp(numberFrom("rk-ec-growth", 0), -10, 30) / 100,
      eta: clamp(numberFrom("rk-ec-eta", 0.99), 0.80, 1),
      auxiliary: clamp(numberFrom("rk-ec-aux", 250), 0, 10000),
      serviceDirect: clamp(numberFrom("rk-ec-service-direct", 0), 0, 50000),
      servicePump: clamp(numberFrom("rk-ec-service-pump", 400), 0, 50000),
      pvDirect: clamp(numberFrom("rk-ec-pv-direct", 0), 0, 200000),
      pvPump: clamp(numberFrom("rk-ec-pv-pump", 0), 0, 200000),
      replacementYear: replacementYear,
      replacementCost: clamp(numberFrom("rk-ec-replacement-cost", 25000), 0, 500000)
    };
  }

  function calculate(settings) {
    var directGross = settings.demand / settings.eta;
    var pumpGross = settings.demand / settings.scop + settings.auxiliary;
    var directPv = Math.min(directGross, settings.pvDirect);
    var pumpPv = Math.min(pumpGross, settings.pvPump);
    var directPurchased = Math.max(0, directGross - directPv);
    var pumpPurchased = Math.max(0, pumpGross - pumpPv);
    var directCumulative = settings.capexDirect;
    var pumpCumulative = settings.capexPump;
    var rows = [{
      year: 0,
      price: settings.price,
      directEnergy: directPurchased,
      pumpEnergy: pumpPurchased,
      directAnnual: 0,
      pumpAnnual: 0,
      directCumulative: directCumulative,
      pumpCumulative: pumpCumulative,
      replacement: 0
    }];
    var payback = null;

    if (pumpCumulative <= directCumulative) payback = 0;

    for (var year = 1; year <= settings.years; year += 1) {
      var currentPrice = settings.price * Math.pow(1 + settings.growth, year - 1);
      var directAnnual = directPurchased * currentPrice + settings.serviceDirect;
      var pumpAnnual = pumpPurchased * currentPrice + settings.servicePump;
      var replacement = 0;
      if (settings.replacementYear > 0) {
        if (year === settings.replacementYear) replacement = settings.replacementCost;
      }
      directCumulative += directAnnual;
      pumpCumulative += pumpAnnual + replacement;
      if (payback === null) {
        if (pumpCumulative <= directCumulative) payback = year;
      }
      rows.push({
        year: year,
        price: currentPrice,
        directEnergy: directPurchased,
        pumpEnergy: pumpPurchased,
        directAnnual: directAnnual,
        pumpAnnual: pumpAnnual + replacement,
        pumpOperating: pumpAnnual,
        directCumulative: directCumulative,
        pumpCumulative: pumpCumulative,
        replacement: replacement
      });
    }

    return {
      settings: settings,
      directGross: directGross,
      pumpGross: pumpGross,
      directPurchased: directPurchased,
      pumpPurchased: pumpPurchased,
      directPv: directPv,
      pumpPv: pumpPv,
      rows: rows,
      payback: payback,
      directFinal: directCumulative,
      pumpFinal: pumpCumulative,
      delta: directCumulative - pumpCumulative,
      firstDirect: rows[1].directAnnual,
      firstPump: rows[1].pumpAnnual
    };
  }

  function paybackLabel(value, years) {
    if (value === null) return "brak w okresie " + years + " lat";
    if (value === 0) return "już w roku 0";
    return "w " + value + ". roku";
  }

  function deltaLabel(value) {
    if (Math.abs(value) < 1) return "praktycznie brak różnicy";
    if (value > 0) return money(value) + " mniej: wodna + pompa";
    return money(Math.abs(value)) + " mniej: elektryczne";
  }

  function compactValue(value, mode) {
    if (mode === "energy") {
      if (value >= 10000) return decimal(value / 1000, 0) + " tys.";
      if (value >= 1000) return decimal(value / 1000, 1) + " tys.";
      return decimal(value, 0);
    }
    if (value >= 1000000) return decimal(value / 1000000, 1) + " mln";
    if (value >= 10000) return decimal(value / 1000, 0) + " tys.";
    if (value >= 1000) return decimal(value / 1000, 1) + " tys.";
    return decimal(value, 0);
  }

  function setPressed(selector, key, active) {
    root.querySelectorAll(selector).forEach(function (button) {
      button.setAttribute("aria-pressed", button.getAttribute(key) === active ? "true" : "false");
    });
  }

  function updateModeUi() {
    setPressed("[data-rk-ec-mode]", "data-rk-ec-mode", state.mode);
    var annualField = el("rk-ec-annual-field");
    var intensityField = el("rk-ec-intensity-field");
    if (annualField) annualField.hidden = state.mode !== "annual";
    if (intensityField) intensityField.hidden = state.mode !== "intensity";
  }

  function updateMap() {
    setPressed("[data-rk-ec-source]", "data-rk-ec-source", state.source);
    if (state.source === "pump") {
      textTo("rk-ec-map-source-name", "pompa ciepła");
      textTo("rk-ec-map-source-node", "Pompa ciepła");
      el("rk-ec-map-formula").innerHTML = "<strong>Energia kupowana ≈ Q<sub>użyteczne</sub> ÷ SCOP + energia pomocnicza</strong><br>Niższa wymagana temperatura wody może sprzyjać sprawności pompy, ale SCOP trzeba przyjąć dla realnego układu i warunków.";
    } else {
      textTo("rk-ec-map-source-name", "kocioł elektryczny");
      textTo("rk-ec-map-source-node", "Kocioł elektryczny");
      el("rk-ec-map-formula").innerHTML = "<strong>Energia kupowana ≈ Q<sub>użyteczne</sub> ÷ η + energia pomocnicza</strong><br>Obieg wodny nie tworzy dodatkowej energii. Przy źródle oporowym jego pobór jest zbliżony do użytecznego ciepła, a pompy obiegowe zwiększają zużycie.";
    }
  }

  function updateValidation(settings, result) {
    var messages = [];
    if (settings.replacementYear > settings.years) messages.push("Rok wymiany leży poza wybranym okresem, więc koszt wymiany nie został doliczony.");
    if (settings.pvDirect > result.directGross) messages.push("PV dla elektrycznego ograniczono do rzeczywistego zużycia tego systemu.");
    if (settings.pvPump > result.pumpGross) messages.push("PV dla pompy ograniczono do rzeczywistego zużycia pompy i hydrauliki.");
    if (settings.capexPump === settings.capexDirect) messages.push("Oba warianty mają identyczny CAPEX — sprawdź, czy zakres ofert rzeczywiście jest taki sam.");
    textTo("rk-ec-validation", messages.join(" "));
  }

  function updateOutputs(result) {
    var settings = result.settings;
    textTo("rk-ec-out-energy-direct", energy(result.directPurchased) + "/rok");
    textTo("rk-ec-out-year-direct", money(result.firstDirect));
    textTo("rk-ec-out-m2-direct", money(result.firstDirect / settings.area) + "/m²");
    textTo("rk-ec-out-tco-direct", money(result.directFinal));
    textTo("rk-ec-out-energy-pump", energy(result.pumpPurchased) + "/rok");
    textTo("rk-ec-out-year-pump", money(result.firstPump));
    textTo("rk-ec-out-m2-pump", money(result.firstPump / settings.area) + "/m²");
    textTo("rk-ec-out-tco-pump", money(result.pumpFinal));
    textTo("rk-ec-out-demand", energy(settings.demand) + "/rok");
    textTo("rk-ec-out-payback", paybackLabel(result.payback, settings.years));
    textTo("rk-ec-out-delta", deltaLabel(result.delta));

    textTo("rk-ec-example-direct", money(result.firstDirect) + "/rok");
    textTo("rk-ec-example-pump", money(result.firstPump) + "/rok");
    textTo("rk-ec-example-payback", paybackLabel(result.payback, settings.years));
    textTo("rk-ec-example-delta", deltaLabel(result.delta));
  }

  function scenarioText(result) {
    return paybackLabel(result.payback, result.settings.years) + " · " + deltaLabel(result.delta);
  }

  function updateScenarios(settings) {
    var lowScop = clamp(settings.scop - 0.5, 1.1, 8);
    var highScop = clamp(settings.scop + 0.5, 1.1, 8);
    var lowSettings = Object.assign({}, settings, { scop: lowScop });
    var baseSettings = Object.assign({}, settings, { scop: settings.scop });
    var highSettings = Object.assign({}, settings, { scop: highScop });
    var low = calculate(lowSettings);
    var base = calculate(baseSettings);
    var high = calculate(highSettings);
    textTo("rk-ec-scenario-low-assumption", "SCOP " + decimal(lowScop, 1));
    textTo("rk-ec-scenario-base-assumption", "SCOP " + decimal(settings.scop, 1));
    textTo("rk-ec-scenario-high-assumption", "SCOP " + decimal(highScop, 1));
    textTo("rk-ec-scenario-low-result", scenarioText(low));
    textTo("rk-ec-scenario-base-result", scenarioText(base));
    textTo("rk-ec-scenario-high-result", scenarioText(high));
  }

  function milestones(years) {
    var source = [0, 1, 5, 10, 15, 20, 25, 30, years];
    var unique = [];
    source.forEach(function (value) {
      if (value <= years) {
        if (unique.indexOf(value) === -1) unique.push(value);
      }
    });
    unique.sort(function (a, b) { return a - b; });
    return unique;
  }

  function updateTable(result) {
    var body = el("rk-ec-year-table-body");
    if (!body) return;
    var html = "";
    milestones(result.settings.years).forEach(function (year) {
      var row = result.rows[year];
      var difference = row.directCumulative - row.pumpCumulative;
      var differenceText = Math.abs(difference) < 1 ? "brak" : (difference > 0 ? money(difference) + " mniej: pompa" : money(Math.abs(difference)) + " mniej: elektryczne");
      html += "<tr>";
      html += "<th data-label=\"Rok\">" + year + "</th>";
      html += "<td data-label=\"Elektryczne — TCO\">" + money(row.directCumulative) + "</td>";
      html += "<td data-label=\"Wodne + pompa — TCO\">" + money(row.pumpCumulative) + "</td>";
      html += "<td data-label=\"Różnica\">" + differenceText + "</td>";
      html += "</tr>";
    });
    body.innerHTML = html;
  }

  function seriesFor(result) {
    var data = [];
    var start = state.chart === "cumulative" ? 0 : 1;
    for (var year = start; year <= result.settings.years; year += 1) {
      var row = result.rows[year];
      var directValue;
      var pumpValue;
      if (state.chart === "cumulative") {
        directValue = row.directCumulative;
        pumpValue = row.pumpCumulative;
      } else if (state.chart === "annual") {
        directValue = row.directAnnual;
        pumpValue = row.pumpAnnual;
      } else {
        directValue = row.directEnergy;
        pumpValue = row.pumpEnergy;
      }
      data.push({ year: year, direct: directValue, pump: pumpValue });
    }
    return data;
  }

  function chartTitle() {
    if (state.chart === "annual") return "Koszt w kolejnych latach";
    if (state.chart === "energy") return "Roczna energia kupowana z sieci";
    return "Skumulowany koszt całkowity";
  }

  function drawChart(result) {
    var svg = el("rk-ec-chart");
    if (!svg) return;
    setPressed("[data-rk-ec-chart]", "data-rk-ec-chart", state.chart);
    textTo("rk-ec-chart-heading", chartTitle());

    var width = 760;
    var height = 390;
    var left = 74;
    var right = 24;
    var top = 26;
    var bottom = 54;
    var plotWidth = width - left - right;
    var plotHeight = height - top - bottom;
    var data = seriesFor(result);
    var xStart = state.chart === "cumulative" ? 0 : 1;
    var xEnd = result.settings.years;
    var xSpan = Math.max(1, xEnd - xStart);
    var maxValue = 1;

    data.forEach(function (point) {
      maxValue = Math.max(maxValue, point.direct, point.pump);
    });
    maxValue = maxValue * 1.12;

    function x(year) {
      return left + ((year - xStart) / xSpan) * plotWidth;
    }
    function y(value) {
      return top + plotHeight - (value / maxValue) * plotHeight;
    }

    var html = "";
    for (var tick = 0; tick <= 4; tick += 1) {
      var tickValue = maxValue * tick / 4;
      var tickY = y(tickValue);
      html += "<line class=\"rk-ec-gridline\" x1=\"" + left + "\" y1=\"" + tickY + "\" x2=\"" + (width - right) + "\" y2=\"" + tickY + "\"></line>";
      html += "<text class=\"rk-ec-gridtext\" x=\"" + (left - 10) + "\" y=\"" + (tickY + 4) + "\" text-anchor=\"end\">" + compactValue(tickValue, state.chart) + "</text>";
    }

    html += "<line class=\"rk-ec-axis\" x1=\"" + left + "\" y1=\"" + (top + plotHeight) + "\" x2=\"" + (width - right) + "\" y2=\"" + (top + plotHeight) + "\"></line>";
    html += "<line class=\"rk-ec-axis\" x1=\"" + left + "\" y1=\"" + top + "\" x2=\"" + left + "\" y2=\"" + (top + plotHeight) + "\"></line>";

    var tickStep = result.settings.years <= 10 ? 2 : 5;
    var xTicks = [xStart];
    for (var yearTick = tickStep; yearTick < xEnd; yearTick += tickStep) {
      if (yearTick >= xStart) xTicks.push(yearTick);
    }
    if (xTicks.indexOf(xEnd) === -1) xTicks.push(xEnd);
    xTicks.forEach(function (yearValue) {
      html += "<text class=\"rk-ec-gridtext\" x=\"" + x(yearValue) + "\" y=\"" + (height - 24) + "\" text-anchor=\"middle\">" + yearValue + "</text>";
    });
    html += "<text class=\"rk-ec-gridtext\" x=\"" + (left + plotWidth / 2) + "\" y=\"" + (height - 4) + "\" text-anchor=\"middle\">rok eksploatacji</text>";

    var directPoints = data.map(function (point) { return x(point.year) + "," + y(point.direct); }).join(" ");
    var pumpPoints = data.map(function (point) { return x(point.year) + "," + y(point.pump); }).join(" ");
    html += "<polyline class=\"rk-ec-path-direct\" points=\"" + directPoints + "\"></polyline>";
    html += "<polyline class=\"rk-ec-path-pump\" points=\"" + pumpPoints + "\"></polyline>";

    var firstPoint = data[0];
    var lastPoint = data[data.length - 1];
    html += "<circle cx=\"" + x(firstPoint.year) + "\" cy=\"" + y(firstPoint.direct) + "\" r=\"5\" fill=\"#ff6a3d\"></circle>";
    html += "<circle cx=\"" + x(firstPoint.year) + "\" cy=\"" + y(firstPoint.pump) + "\" r=\"5\" fill=\"#078fbe\"></circle>";
    html += "<circle cx=\"" + x(lastPoint.year) + "\" cy=\"" + y(lastPoint.direct) + "\" r=\"5\" fill=\"#ff6a3d\"></circle>";
    html += "<circle cx=\"" + x(lastPoint.year) + "\" cy=\"" + y(lastPoint.pump) + "\" r=\"5\" fill=\"#078fbe\"></circle>";

    if (state.chart === "cumulative") {
      if (result.payback !== null) {
        if (result.payback <= result.settings.years) {
          var markerX = x(result.payback);
          html += "<line class=\"rk-ec-payback-line\" x1=\"" + markerX + "\" y1=\"" + top + "\" x2=\"" + markerX + "\" y2=\"" + (top + plotHeight) + "\"></line>";
          html += "<text class=\"rk-ec-payback-label\" x=\"" + Math.min(width - right - 5, markerX + 7) + "\" y=\"" + (top + 14) + "\">przecięcie: rok " + result.payback + "</text>";
        }
      }
    }

    svg.innerHTML = html;

    var reading;
    if (state.chart === "cumulative") {
      if (result.payback === null) {
        reading = "W wybranym okresie krzywe TCO nie przecinają się. Po " + result.settings.years + " latach: " + deltaLabel(result.delta) + ".";
      } else {
        reading = "Pierwszy pełny rok, w którym TCO pompy nie przewyższa elektryki: " + result.payback + ". Po całym okresie: " + deltaLabel(result.delta) + ".";
      }
    } else if (state.chart === "annual") {
      var firstDifference = result.firstDirect - result.firstPump;
      reading = "W pierwszym roku różnica kosztu pracy wynosi " + money(Math.abs(firstDifference)) + "; niższy koszt ma " + (firstDifference >= 0 ? "wariant z pompą ciepła" : "wariant elektryczny") + ". Skok na niebieskiej linii może oznaczać wpisaną wymianę pompy.";
    } else {
      var energyDifference = result.directPurchased - result.pumpPurchased;
      reading = "Roczny zakup energii różni się o " + energy(Math.abs(energyDifference)) + ". Wykres uwzględnia osobne wartości autokonsumpcji PV oraz energię pomocniczą pompy.";
    }
    textTo("rk-ec-chart-reading", reading);
    svg.setAttribute("aria-label", chartTitle() + ". " + reading);
  }

  function update() {
    var settings = readSettings();
    var result = calculate(settings);
    updateModeUi();
    updateValidation(settings, result);
    updateOutputs(result);
    updateScenarios(settings);
    updateTable(result);
    drawChart(result);
  }

  function reset() {
    Object.keys(defaults).forEach(function (id) {
      var node = el(id);
      if (node) node.value = defaults[id];
    });
    state.mode = "annual";
    state.chart = "cumulative";
    state.source = "pump";
    updateMap();
    update();
  }

  root.addEventListener("click", function (event) {
    var modeButton = event.target.closest("[data-rk-ec-mode]");
    if (modeButton) {
      state.mode = modeButton.getAttribute("data-rk-ec-mode");
      update();
      return;
    }
    var chartButton = event.target.closest("[data-rk-ec-chart]");
    if (chartButton) {
      state.chart = chartButton.getAttribute("data-rk-ec-chart");
      update();
      return;
    }
    var sourceButton = event.target.closest("[data-rk-ec-source]");
    if (sourceButton) {
      state.source = sourceButton.getAttribute("data-rk-ec-source");
      updateMap();
      return;
    }
    var resetButton = event.target.closest("#rk-ec-reset");
    if (resetButton) reset();
  });

  root.addEventListener("input", function (event) {
    if (event.target.matches("input, select")) update();
  });
  root.addEventListener("change", function (event) {
    if (event.target.matches("input, select")) update();
  });

  root.querySelectorAll(".rk-ec-faq details").forEach(function (detail) {
    detail.addEventListener("toggle", function () {
      if (!detail.open) return;
      root.querySelectorAll(".rk-ec-faq details").forEach(function (other) {
        if (other !== detail) other.open = false;
      });
    });
  });

  updateMap();
  update();
})();
</script>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "description": "Projektowanie ogrzewania podłogowego, obliczenia OZC, hydraulika instalacji i poradniki techniczne HVAC.",
      "inLanguage": "pl-PL",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://projekt-ogrzewania.pl/?s={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": { "@id": "https://projekt-ogrzewania.pl/#logo" },
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#logo",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "width": 1024,
      "height": 1024,
      "caption": "Projekt Ogrzewania"
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Ogrzewanie-elektryczne-vs-wodna-podlogowka-Kalkulator-kosztow-eksploatacji.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Ogrzewanie-elektryczne-vs-wodna-podlogowka-Kalkulator-kosztow-eksploatacji.webp",
      "width": 900,
      "height": 900,
      "encodingFormat": "image/webp",
      "caption": "Ogrzewanie elektryczne czy wodna podłogówka z pompą ciepła — kalkulator kosztów eksploatacji"
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "affiliation": [
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "obliczenia OZC",
        "koszt cyklu życia TCO",
        "hydraulika instalacji",
        "temperatura zasilania",
        "efektywność sezonowa SCOP"
      ],
      "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/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#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": "Elektryczne czy wodna podłogówka — kalkulator kosztów",
          "item": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#webpage",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/",
      "name": "Ogrzewanie elektryczne czy wodna podłogówka z pompą ciepła? Kalkulator kosztów eksploatacji",
      "description": "Co jest tańsze: ogrzewanie elektryczne czy wodna podłogówka z pompą ciepła? Policz rachunki, koszt 20 lat i rzeczywisty rok zwrotu inwestycji.",
      "inLanguage": "pl-PL",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#primaryimage" },
      "datePublished": "2026-05-31T18:20:19+00:00",
      "dateModified": "2026-09-13T00:00:00+00:00",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "reviewedBy": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#article" },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": ["#rk-ec-answer", "#rk-ec-conclusion"]
      }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#article",
      "headline": "Ogrzewanie elektryczne czy wodna podłogówka z pompą ciepła? Kalkulator kosztów eksploatacji",
      "alternativeHeadline": "Elektryczne czy wodna podłogówka — co jest tańsze po 10, 20 i 30 latach?",
      "description": "Techniczne porównanie kosztu inwestycji, energii, serwisu i wymian wraz z kalkulatorem TCO, wykresem oraz analizą SCOP.",
      "image": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#primaryimage" },
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#webpage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2026-05-31T18:20:19+00:00",
      "dateModified": "2026-09-13T00:00:00+00:00",
      "inLanguage": "pl-PL",
      "articleSection": [
        "Koszty ogrzewania",
        "Ogrzewanie elektryczne",
        "Ogrzewanie podłogowe",
        "Pompy ciepła",
        "Kalkulatory"
      ],
      "keywords": [
        "ogrzewanie elektryczne czy wodna podłogówka",
        "ogrzewanie elektryczne czy wodne co tańsze",
        "koszt ogrzewania podłogowego elektrycznego 100 m²",
        "koszt wodnej podłogówki z pompą ciepła rocznie",
        "ogrzewanie elektryczne vs pompa ciepła kalkulator",
        "ile kosztuje ogrzewanie elektryczne domu 120 m²",
        "po ilu latach zwraca się pompa ciepła",
        "kable grzejne czy wodne ogrzewanie podłogowe",
        "koszt 1 kWh ciepła kabel grzejny vs pompa ciepła",
        "ogrzewanie podłogowe elektryczne z fotowoltaiką",
        "folia grzewcza czy wodna podłogówka",
        "koszt ogrzewania domu po 10 i 20 latach"
      ],
      "about": [
        { "@type": "Thing", "name": "Elektryczne ogrzewanie podłogowe" },
        { "@type": "Thing", "name": "Wodne ogrzewanie podłogowe" },
        { "@type": "Thing", "name": "Pompa ciepła" },
        { "@type": "Thing", "name": "Koszt cyklu życia" }
      ],
      "mentions": [
        { "@type": "DefinedTerm", "name": "CAPEX", "description": "Nakład inwestycyjny" },
        { "@type": "DefinedTerm", "name": "OPEX", "description": "Koszt eksploatacyjny" },
        { "@type": "DefinedTerm", "name": "TCO", "description": "Całkowity koszt posiadania" },
        { "@type": "DefinedTerm", "name": "SCOP", "description": "Sezonowy współczynnik efektywności pompy ciepła" }
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#tco-calculator" },
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#comparison-inputs" },
        { "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#faq-schema" }
      ],
      "citation": [
        "https://www.iso.org/standard/74682.html",
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html",
        "https://www.iso.org/standard/74685.html",
        "https://maszwybor.ure.gov.pl/or/cenki",
        "https://re.jrc.ec.europa.eu/pvg_tools/en/",
        "https://energy.ec.europa.eu/topics/energy-efficiency/energy-performance-buildings/energy-performance-buildings-directive_en"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#tco-calculator",
      "name": "Kalkulator kosztów ogrzewania elektrycznego i wodnej podłogówki z pompą ciepła",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#rk-ec-calculator",
      "description": "Oblicza zakup energii, koszt pierwszego roku, koszt na metr kwadratowy, TCO do 30 lat, pierwszy rok przecięcia oraz wrażliwość na SCOP.",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Heating cost calculator",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "featureList": [
        "dwa sposoby podania użytecznego ciepła",
        "pełna zmienna cena energii",
        "nakłady po dotacjach",
        "SCOP i sprawność elektryczna",
        "energia pomocnicza",
        "serwis obu systemów",
        "osobna autokonsumpcja PV",
        "wymiana pompy ciepła",
        "jawny wzrost ceny prądu",
        "TCO od 1 do 30 lat",
        "pierwszy rok przecięcia kosztów",
        "trzy widoki wykresu",
        "tabela wybranych lat",
        "analiza wrażliwości na SCOP"
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#howto",
      "name": "Jak uczciwie porównać ogrzewanie elektryczne i wodne krok po kroku",
      "description": "Osiem kroków od ustalenia komfortu i zapotrzebowania po analizę scenariuszy oraz potwierdzenie techniczne.",
      "totalTime": "PT45M",
      "supply": [
        { "@type": "HowToSupply", "name": "OZC lub bilans rocznej energii użytecznej" },
        { "@type": "HowToSupply", "name": "Kompletne oferty obu systemów" },
        { "@type": "HowToSupply", "name": "Rachunek i umowa za energię" },
        { "@type": "HowToSupply", "name": "Dane sezonowe pompy ciepła" },
        { "@type": "HowToSupply", "name": "Warunki serwisu, gwarancji i dotacji" }
      ],
      "tool": [
        { "@type": "HowToTool", "name": "Kalkulator TCO w artykule" },
        { "@type": "HowToTool", "name": "Dokumentacja budynku i instalacji" }
      ],
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Ustal ten sam komfort",
          "text": "Zdefiniuj ogrzewane pomieszczenia, temperatury wewnętrzne, harmonogram i ten sam zakres CWU lub wyłącz CWU z obu wariantów."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Wyznacz użyteczne ciepło",
          "text": "Przyjmij roczne kWh z obliczeń budynku albo świadomie oszacuj je z powierzchni i wskaźnika energii — bez mieszania z mocą W."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Wyrównaj zakres CAPEX",
          "text": "Porównaj projekt, emiter, źródło, automatykę, elektrykę, hydraulikę, montaż, uruchomienie oraz koszty po faktycznych dotacjach."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Wpisz cenę z rachunku",
          "text": "Dodaj cenę energii i zmienne składniki dystrybucji. Nie doliczaj opłaty stałej, jeśli występuje identycznie niezależnie od wyboru."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Przyjmij sezonową sprawność",
          "text": "Dla elektryki użyj η bliskiej 1, a dla pompy realistycznego SCOP uwzględniającego klimat, temperaturę wody i działanie instalacji."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Dodaj serwis, PV i wymianę",
          "text": "Wpisz koszty roczne, energię pomocniczą, udokumentowaną autokonsumpcję ogrzewania oraz wariant wymiany pompy."
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Sprawdź kilka scenariuszy",
          "text": "Zmień SCOP, cenę prądu, wzrost ceny, horyzont i koszt wymiany. Zwróć uwagę, czy wybór pozostaje stabilny."
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Potwierdź wykonalność",
          "text": "Zweryfikuj moce, rozstawy, temperatury, przepływy, opory, przyłącze i sterowanie. Kalkulacja finansowa nie zastępuje projektu."
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#comparison-inputs",
      "name": "Dane potrzebne do porównania kosztów ogrzewania",
      "numberOfItems": 8,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Ten sam zakres komfortu" },
        { "@type": "ListItem", "position": 2, "name": "Roczne użyteczne ciepło" },
        { "@type": "ListItem", "position": 3, "name": "Kompletny CAPEX po dotacjach" },
        { "@type": "ListItem", "position": 4, "name": "Zmienna cena energii z rachunku" },
        { "@type": "ListItem", "position": 5, "name": "Sprawność η i sezonowy SCOP" },
        { "@type": "ListItem", "position": 6, "name": "Energia pomocnicza i serwis" },
        { "@type": "ListItem", "position": 7, "name": "Rzeczywista autokonsumpcja PV" },
        { "@type": "ListItem", "position": 8, "name": "Koszt i rok wymiany urządzenia" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#faq-schema",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/#rk-ec-faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Co jest tańsze: ogrzewanie elektryczne czy wodna podłogówka z pompą ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Elektryczne bezpośrednie zwykle wymaga niższego nakładu, a pompa ciepła może mieć niższy koszt energii. O niższym TCO decydują zapotrzebowanie, pełny CAPEX, SCOP, cena prądu, serwis, wymiany i czas analizy." }
        },
        {
          "@type": "Question",
          "name": "Ile kosztuje ogrzewanie podłogowe elektryczne domu 100 m² rocznie?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie da się tego określić z samej powierzchni. Roczny koszt to w przybliżeniu użyteczne ciepło podzielone przez sprawność, pomniejszone o rzeczywistą autokonsumpcję PV i pomnożone przez zmienną cenę kWh, plus serwis." }
        },
        {
          "@type": "Question",
          "name": "Jakie zapotrzebowanie wpisać do kalkulatora?",
          "acceptedAnswer": { "@type": "Answer", "text": "Roczne użyteczne ciepło potrzebne do ogrzewania pomieszczeń, najlepiej z wiarygodnych obliczeń. Nie wpisuj mocy urządzenia w kW ani energii pierwotnej. Alternatywnie użyj powierzchni i świadomie przyjętego kWh/(m²·rok)." }
        },
        {
          "@type": "Question",
          "name": "Czy COP 3,5 oznacza, że rachunek zawsze będzie 3,5 razy niższy?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Do porównania rocznego potrzebny jest sezonowy SCOP, a ponadto trzeba doliczyć energię pomocniczą, serwis i nakład. Chwilowy COP zależy od konkretnego punktu pracy." }
        },
        {
          "@type": "Question",
          "name": "Czy wodna podłogówka z kotłem elektrycznym zużyje mniej prądu niż kable?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie należy tego zakładać. Oba warianty wykorzystują oporowe wytwarzanie ciepła ze sprawnością bliską 1, a układ wodny ma dodatkową energię pomp. Jego zaletą może być możliwość późniejszej zmiany źródła." }
        },
        {
          "@type": "Question",
          "name": "Czy fotowoltaika zapewnia darmowe ogrzewanie elektryczne?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie automatycznie. Trzeba rozliczyć zgodność produkcji i zużycia w czasie, zasady umowy oraz energię rzeczywiście wykorzystaną na ogrzewanie. Cała roczna produkcja PV nie jest autokonsumpcją zimowego grzania." }
        },
        {
          "@type": "Question",
          "name": "Po ilu latach zwraca się wodna podłogówka z pompą ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednej liczby. Rok zwrotu jest pierwszym rokiem, gdy skumulowane oszczędności operacyjne pokrywają różnicę inwestycji i dodatkowe koszty. Przy części założeń zwrot nie nastąpi w badanym okresie." }
        },
        {
          "@type": "Question",
          "name": "Czy kable grzejne w wylewce nie mają bezwładności?",
          "acceptedAnswer": { "@type": "Answer", "text": "Mogą mieć znaczną bezwładność, jeśli współpracują z masywnym jastrychem. Dynamikę wyznaczają warstwy, masa, izolacja, moc i sterowanie, a nie wyłącznie to, czy nośnikiem jest woda lub prąd." }
        },
        {
          "@type": "Question",
          "name": "Jakie koszty trzeba uwzględnić w porównaniu TCO?",
          "acceptedAnswer": { "@type": "Answer", "text": "Kompletną inwestycję po realnych dotacjach, energię zmienną, energię pomocniczą, serwis, automatykę, planowane wymiany i ten sam zakres funkcji. Koszt finansowania oraz wartość pieniądza w czasie analizuje się osobno." }
        },
        {
          "@type": "Question",
          "name": "Czy kalkulator zastępuje OZC i projekt ogrzewania?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Kalkulator pokazuje konsekwencje ekonomiczne założeń. OZC i projekt sprawdzają, ile mocy potrzebują pomieszczenia oraz czy instalacja osiągnie ją przy prawidłowych temperaturach, przepływach i oporach." }
        }
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">Ogrzewanie elektryczne vs wodna podłogówka: Kalkulator kosztów eksploatacji.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Temperatura zasilania pompy ciepła – czy 35°C wystarczy?</title>
		<link>https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 10:17:48 +0000</pubDate>
				<category><![CDATA[Efektywne ogrzewanie]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje niskotemperaturowe]]></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 budowlany]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty eksploatacji]]></category>
		<category><![CDATA[krzywa grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[scop]]></category>
		<category><![CDATA[systemy niskotemperaturowe]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[termodynamika]]></category>
		<category><![CDATA[współczynnik cop]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4200</guid>

					<description><![CDATA[<p>Wybór odpowiednich parametrów grzewczych to absolutny fundament, od którego zależą Twoje przyszłe rachunki za prąd oraz trwałość wykończenia wnętrz. W świecie nowoczesnych instalacji coraz częściej pojawia się kluczowe pytanie o to, jaka powinna być niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki? Odpowiedź na nie wymaga zrozumienia praw fizyki, a konkretnie zależności między temperaturą czynnika a współczynnikiem wydajności COP. Utrzymywanie zasilania na tym poziomie pozwala urządzeniu pracować z maksymalną efektywnością, co bezpośrednio przekłada się na realne oszczędności w domowym budżecie. W niniejszym tekście szczegółowo analizujemy aspekty techniczne, wpływ temperatury na jastrych oraz wyjaśniamy, dlaczego precyzyjny projekt instalacji jest ważniejszy niż zakup najdroższej jednostki grzewczej dostępnej na rynku.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">Temperatura zasilania pompy ciepła – czy 35°C wystarczy?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-temp35-guide {
    --rk-temp35-navy: #123247;
    --rk-temp35-navy-deep: #0b2536;
    --rk-temp35-teal: #0e7787;
    --rk-temp35-cyan: #5fdef0;
    --rk-temp35-orange: #ff7a21;
    --rk-temp35-green: #248c68;
    --rk-temp35-red: #c64b48;
    --rk-temp35-amber: #b77812;
    --rk-temp35-ink: #173246;
    --rk-temp35-muted: #5d7180;
    --rk-temp35-line: #d7e1e7;
    --rk-temp35-soft: #f3f7f9;
    --rk-temp35-white: #ffffff;
    --rk-temp35-shadow: 0 18px 48px rgba(13, 43, 60, 0.12);
    color: var(--rk-temp35-ink);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 18px;
    line-height: 1.72;
    overflow-x: hidden;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

<article id="rk-temp35-guide" aria-labelledby="rk-temp35-visual-title">
  <div class="rk-temp35-shell">
    <header class="rk-temp35-hero">
      <div class="rk-temp35-hero-inner">
        <span class="rk-temp35-kicker">35°C to punkt projektowy, nie dogmat</span>
        <div class="rk-temp35-hero-title" id="rk-temp35-visual-title">Najniższa temperatura, <span>która pokrywa straty</span></div>
        <p class="rk-temp35-hero-lead">Podłogówka nie potrzebuje z definicji dokładnie 35°C. Prawidłowa temperatura zasilania wynika z obciążenia każdego pomieszczenia, czynnej powierzchni podłogi, jej konstrukcji, okładziny i warunków obliczeniowych. Dla pompy ciepła celem jest możliwie niski parametr, ale bez utraty wymaganej mocy.</p>

        <div class="rk-temp35-hero-tags" aria-label="Zakres poradnika">
          <span class="rk-temp35-hero-tag">parametr 35/30°C</span>
          <span class="rk-temp35-hero-tag">moc podłogi</span>
          <span class="rk-temp35-hero-tag">COP i SCOP</span>
          <span class="rk-temp35-hero-tag">krzywa grzewcza</span>
          <span class="rk-temp35-hero-tag">przepływ i ΔT</span>
        </div>

        <div class="rk-temp35-byline">
          <span>Autor: <strong>Robert Kucharski</strong></span>
          <span>Czas czytania: około 39 minut</span>
          <span>Aktualizacja techniczna: 11 września 2026 r.</span>
        </div>

        <div class="rk-temp35-hero-metrics" aria-label="Trzy etapy wyznaczania temperatury zasilania">
          <div class="rk-temp35-hero-metric">
            <b>OZC wyznacza potrzebną moc</b>
            <span>Najpierw ustala się obciążenie każdego pomieszczenia w warunkach projektowych.</span>
          </div>
          <div class="rk-temp35-hero-metric">
            <b>Podłoga musi ją przekazać</b>
            <span>Liczą się powierzchnia czynna, rozstaw, warstwy, okładzina oraz średnia temperatura wody.</span>
          </div>
          <div class="rk-temp35-hero-metric">
            <b>Pompa pracuje w wynikowym punkcie</b>
            <span>Sprawność zależy od rzeczywistych temperatur, pogody, obciążenia i konkretnego urządzenia.</span>
          </div>
        </div>
      </div>
    </header>

    <nav class="rk-temp35-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-temp35-shortcuts-label">Na skróty — wszystkie H2</span>
      <a href="#rk-temp35-answer">Szybka odpowiedź</a>
      <a href="#rk-temp35-notation">Co oznacza 35/30°C?</a>
      <a href="#rk-temp35-efficiency">Wpływ na sprawność</a>
      <a href="#rk-temp35-not-universal">Dlaczego nie zawsze 35°C?</a>
      <a href="#rk-temp35-factors">Czynniki doboru</a>
      <a href="#rk-temp35-heat-flux">Wymagane W/m²</a>
      <a href="#rk-temp35-calculator">Kalkulator i wykres</a>
      <a href="#rk-temp35-results">Interpretacja</a>
      <a href="#rk-temp35-graphic">Grafika zależności</a>
      <a href="#rk-temp35-spacing">Rozstaw rur</a>
      <a href="#rk-temp35-coverings">Okładziny</a>
      <a href="#rk-temp35-curve">Krzywa grzewcza</a>
      <a href="#rk-temp35-hydraulics">ΔT i przepływ</a>
      <a href="#rk-temp35-architecture">Układ instalacji</a>
      <a href="#rk-temp35-buffer">Bufor i zład</a>
      <a href="#rk-temp35-example">Przykład</a>
      <a href="#rk-temp35-errors">Błędy i mity</a>
      <a href="#rk-temp35-checklist">Lista kontrolna</a>
      <a href="#rk-temp35-conclusions">Wnioski</a>
      <a href="#rk-temp35-references">Źródła</a>
      <a href="#rk-temp35-faq">FAQ</a>
      <a href="#rk-temp35-author">Autor</a>
    </nav>

    <section class="rk-temp35-section" id="rk-temp35-answer">
      <span class="rk-temp35-eyebrow">Odpowiedź w 30 sekund</span>
      <h2 class="rk-temp35-section-title">Czy 35°C zawsze wystarczy do ogrzewania podłogowego?</h2>
      <div class="rk-temp35-answer">
        <span class="rk-temp35-answer-label">Najkrótsza poprawna odpowiedź</span>
        <p><strong>Nie zawsze. Temperatura zasilania 35°C wystarczy wtedy, gdy rzeczywista moc ogrzewania podłogowego przy danej konstrukcji i powierzchni czynnej jest co najmniej równa obciążeniu wszystkich pomieszczeń. W dobrze ocieplonym domu może wystarczyć jeszcze niższa wartość, a w pomieszczeniu o dużych stratach, małej powierzchni czynnej lub opornej okładzinie może być potrzebny wyższy parametr albo zmiana projektu emitera.</strong></p>
      </div>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>32°C może wystarczyć</h3><p>W budynku o małym obciążeniu i dużej powierzchni czynnej podłoga może pokryć straty przy temperaturze niższej niż 35°C.</p></article>
        <article class="rk-temp35-card"><h3>35°C jest częstym założeniem</h3><p>Parametr 35/30°C jest użytecznym punktem obliczeniowym, ale jego skuteczność trzeba potwierdzić dla każdego pomieszczenia.</p></article>
        <article class="rk-temp35-card"><h3>40°C nie oznacza awarii projektu</h3><p>Wyższy parametr może być uzasadniony w trudniejszym budynku. Nadal należy szukać najniższej wartości zapewniającej wymaganą moc.</p></article>
      </div>

      <p>Najważniejsza zasada brzmi: <strong>nie wybieramy temperatury na podstawie samego napisu „pompa ciepła”</strong>. Punktem wyjścia jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>, a następnie zdolność konkretnej podłogi do przekazania tej mocy. Dopiero wtedy ocenia się wymagany parametr źródła.</p>
      <div class="rk-temp35-callout"><strong>35°C nie jest uniwersalnym nakazem normowym.</strong> Normowe metody opisują sposób wyznaczania mocy i wymiarowania ogrzewania płaszczyznowego. Wynik zależy od różnicy temperatur, konstrukcji, geometrii oraz warunków pomieszczenia.</div>
    </section>

    <section class="rk-temp35-section rk-temp35-section-soft" id="rk-temp35-notation">
      <span class="rk-temp35-eyebrow">Jedna liczba nie opisuje całego obiegu</span>
      <h2 class="rk-temp35-section-title">Co właściwie oznacza parametr 35/30°C?</h2>
      <p class="rk-temp35-lead">Zapis 35/30°C oznacza projektową temperaturę zasilania 35°C i powrotu 30°C. Różnica wynosi 5 K, a średnia temperatura wody — w prostym ujęciu — 32,5°C.</p>

      <div class="rk-temp35-equation-box">
        <span class="rk-temp35-equation-label">Podstawowe zależności</span>
        <div class="rk-temp35-equation-main">ΔT = 35 − 30 = 5 K &nbsp; | &nbsp; θ<sub>m</sub> = (35 + 30) ÷ 2 = 32,5°C</div>
        <p>Do emisji podłogi istotna jest średnia różnica pomiędzy temperaturą czynnika i pomieszczenia, a nie wyłącznie temperatura na króćcu zasilającym.</p>
      </div>

      <div class="rk-temp35-compare-table" role="table" aria-label="Znaczenie temperatur w instalacji ogrzewania podłogowego">
        <div class="rk-temp35-table-row rk-temp35-table-head" role="row"><div role="columnheader">Wielkość</div><div role="columnheader">Co opisuje?</div><div role="columnheader">Dlaczego jest ważna?</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wielkość" role="cell">Zasilanie 35°C</div><div data-label="Opis" role="cell">Temperaturę wody wpływającej do obiegu lub rozdzielacza.</div><div data-label="Znaczenie" role="cell">Wpływa na możliwą moc emitera i punkt pracy pompy ciepła.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wielkość" role="cell">Powrót 30°C</div><div data-label="Opis" role="cell">Temperaturę wody po oddaniu części energii do podłogi.</div><div data-label="Znaczenie" role="cell">Wspólnie z zasilaniem określa średnią temperaturę i projektowe ΔT.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wielkość" role="cell">Podłoga 24–29°C</div><div data-label="Opis" role="cell">Temperaturę powierzchni odczuwaną w pomieszczeniu.</div><div data-label="Znaczenie" role="cell">Nie jest równa temperaturze wody i wynika z przekazywanego strumienia ciepła.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wielkość" role="cell">Powietrze 20–24°C</div><div data-label="Opis" role="cell">Projektową lub regulowaną temperaturę pomieszczenia.</div><div data-label="Znaczenie" role="cell">Zmienia różnicę napędzającą przepływ ciepła z podłogi.</div></div>
      </div>

      <p>Parametr 35/30°C nie gwarantuje automatycznie określonej temperatury posadzki. Zależność opisuje poradnik o <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">optymalnej temperaturze ogrzewania podłogowego</a>. Osobno należy kontrolować również <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalną temperaturę zasilania podłogówki</a>.</p>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-efficiency">
      <span class="rk-temp35-eyebrow">Niższe podnoszenie temperatury zwykle pomaga</span>
      <h2 class="rk-temp35-section-title">Dlaczego niższa temperatura zasilania wspiera sprawność pompy ciepła?</h2>
      <p class="rk-temp35-lead">Pompa ciepła przenosi energię z dolnego źródła do instalacji. Im mniejsza różnica pomiędzy temperaturą źródła i wymaganą temperaturą wody, tym korzystniejsze mogą być warunki pracy sprężarki. Nie istnieje jednak jeden procent poprawy wspólny dla wszystkich urządzeń.</p>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Temperatura dolnego źródła</h3><p>Powietrze zewnętrzne, grunt lub woda zmieniają warunki parowania. Dlatego COP ma sens tylko razem z opisem punktu pomiarowego.</p></article>
        <article class="rk-temp35-card"><h3>Temperatura po stronie instalacji</h3><p>Wyższa temperatura wody zwykle zwiększa wymagane podniesienie temperatury, lecz skala skutku zależy od konstrukcji urządzenia.</p></article>
        <article class="rk-temp35-card"><h3>Obciążenie częściowe</h3><p>Modulacja, odszranianie, praca pomp i przygotowanie CWU wpływają na wynik sezonowy inaczej niż pojedynczy punkt katalogowy.</p></article>
      </div>

      <div class="rk-temp35-grid-2">
        <article class="rk-temp35-card"><h3>COP</h3><p>Opisuje stosunek uzyskanej mocy cieplnej do pobranej mocy elektrycznej w konkretnych warunkach badania lub pracy.</p></article>
        <article class="rk-temp35-card"><h3>SCOP</h3><p>Jest wskaźnikiem sezonowym. Nie powinno się go zastępować pojedynczym COP ani obliczać z samej temperatury zasilania.</p></article>
      </div>

      <p>W praktyce porównujemy dane tego samego modelu w porównywalnych warunkach. Nie przenosimy COP jednej pompy na inne urządzenie i nie wyznaczamy trwałości sprężarki z prostego suwaka temperatury. Ogólny kontekst pracy źródła rozwija poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła i instalacja ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-temp35-section rk-temp35-section-dark" id="rk-temp35-not-universal">
      <span class="rk-temp35-eyebrow">Najpierw moc, potem parametr</span>
      <h2 class="rk-temp35-section-title">Dlaczego 35°C nie jest uniwersalnym optimum?</h2>
      <p class="rk-temp35-lead">Dwa domy z identyczną pompą mogą wymagać innej temperatury. Nawet w jednym budynku łazienka, salon z przeszkleniami i sypialnia mogą mieć zupełnie różne obciążenie przypadające na metr czynnej podłogi.</p>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Za niska temperatura</h3><p>Jeżeli podłoga nie pokrywa strat w warunkach projektowych, pomieszczenie nie osiągnie zadanej temperatury mimo prawidłowego przepływu.</p></article>
        <article class="rk-temp35-card"><h3>Temperatura wystarczająca</h3><p>Emiter pokrywa obciążenie z rozsądną rezerwą, a instalacja zachowuje wymagane warunki powierzchniowe i hydrauliczne.</p></article>
        <article class="rk-temp35-card"><h3>Temperatura niepotrzebnie wysoka</h3><p>Może pogarszać warunki pracy źródła i regulację, choć pomieszczenia nadal będą ogrzane.</p></article>
      </div>

      <p>Właściwy cel to <strong>najniższa krzywa grzewcza zapewniająca bilans wszystkich pomieszczeń</strong>, a nie bezwarunkowe utrzymywanie 35°C przez cały sezon. Czasami wymaga to zagęszczenia rur, zwiększenia powierzchni czynnej, zmiany okładziny, ograniczenia strat budynku albo zastosowania dodatkowego emitera.</p>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-factors">
      <span class="rk-temp35-eyebrow">Osiem danych zamiast jednej liczby</span>
      <h2 class="rk-temp35-section-title">Od czego zależy wymagana temperatura zasilania?</h2>
      <p class="rk-temp35-lead">Temperatura jest wynikiem projektu cieplnego. Nie można jej dobrać poprawnie z powierzchni domu, mocy znamionowej pompy ani samego rozstawu rur.</p>

      <div class="rk-temp35-spec-grid">
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">1</span><div><strong>Obciążenie pomieszczenia</strong><span>Projektowe straty w watach dla temperatury zewnętrznej właściwej lokalizacji.</span></div></div>
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">2</span><div><strong>Powierzchnia czynna</strong><span>Fragment podłogi rzeczywiście uczestniczący w oddawaniu ciepła.</span></div></div>
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">3</span><div><strong>Temperatura pomieszczenia</strong><span>Inne warunki projektowe przyjmuje się dla sypialni, salonu i łazienki.</span></div></div>
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">4</span><div><strong>Rozstaw oraz rura</strong><span>Geometria systemu wpływa na pole charakterystyk cieplnych i hydraulikę.</span></div></div>
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">5</span><div><strong>Warstwy nad rurą</strong><span>Rodzaj i grubość jastrychu zmieniają przewodzenie oraz bezwładność.</span></div></div>
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">6</span><div><strong>Okładzina podłogowa</strong><span>Płytki, winyl, panele i drewno mają różny opór cieplny oraz ograniczenia producenta.</span></div></div>
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">7</span><div><strong>Temperatura i ΔT wody</strong><span>Zasilanie oraz powrót wyznaczają średnią temperaturę czynnika i przepływ.</span></div></div>
        <div class="rk-temp35-spec"><span class="rk-temp35-spec-mark">8</span><div><strong>Warunki źródła</strong><span>Charakterystyka pompy, przepływ minimalny, automatyka i temperatura zewnętrzna.</span></div></div>
      </div>

      <p>Podstawą pozostaje obliczenie dla każdego pomieszczenia. Zobacz, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty ciepła budynku</a> oraz jak powstaje <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-temp35-section rk-temp35-section-soft" id="rk-temp35-heat-flux">
      <span class="rk-temp35-eyebrow">Wymagana moc przypada na powierzchnię, która naprawdę grzeje</span>
      <h2 class="rk-temp35-section-title">Jak obciążenie i powierzchnia czynna wyznaczają wymagane W/m²?</h2>
      <p class="rk-temp35-lead">Jeżeli pomieszczenie wymaga 1000 W, nie wolno dzielić tej wartości przez cały metraż, gdy część podłogi zajmuje stała zabudowa. Najpierw ustala się powierzchnię aktywną.</p>

      <div class="rk-temp35-equation-box">
        <span class="rk-temp35-equation-label">Wymagana gęstość strumienia ciepła</span>
        <div class="rk-temp35-equation-main">q<sub>wym.</sub> = Q<sub>pom.</sub> ÷ A<sub>czynna</sub></div>
        <p>Dla obciążenia 1000 W i 20 m² czynnej podłogi potrzeba średnio 50 W/m². Jeżeli powierzchnia zmaleje do 16 m², wymaganie wzrośnie do 62,5 W/m².</p>
      </div>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Q pomieszczenia</h3><p>Pochodzi z OZC. Nie dodajemy automatycznego procentowego narzutu bez wskazania jego przyczyny.</p></article>
        <article class="rk-temp35-card"><h3>A czynna</h3><p>Powinna wynikać z rzutu i uzgodnionej zabudowy, a nie z przybliżonego udziału procentowego.</p></article>
        <article class="rk-temp35-card"><h3>q dostępne</h3><p>Odczytuje się z obliczenia lub tabeli konkretnego systemu dla przyjętych temperatur i warstw.</p></article>
      </div>

      <p>Dopiero zestawienie q<sub>wym.</sub> z dostępną mocą podłogi odpowiada na pytanie, czy 35/30°C wystarczy. Znaczenie mebli i powierzchni wyłączonych omawia poradnik <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">ogrzewanie podłogowe a meble</a>.</p>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-calculator">
      <span class="rk-temp35-eyebrow">Kalkulator bilansu i porównania sezonowego</span>
      <h2 class="rk-temp35-section-title">Sprawdź parametr 35/30°C i porównaj koszty na podstawie SCOP</h2>
      <p class="rk-temp35-lead">Pierwsza zakładka weryfikuje bilans jednego pomieszczenia. Druga porównuje dwa warianty na podstawie sezonowych współczynników wpisanych z dokumentacji konkretnego urządzenia.</p>

      <div class="rk-temp35-tool" id="rk-temp35-calculator-tool">
        <div class="rk-temp35-tool-head">
          <span class="rk-temp35-eyebrow">Jedno narzędzie, dwa odrębne pytania</span>
          <h3>Weryfikator temperatury i kosztów pracy pompy ciepła</h3>
          <p>Kalkulator nie zgaduje mocy podłogi ani SCOP. Wymaga wprowadzenia danych z projektu, tabel systemu podłogowego i dokumentacji pompy.</p>
        </div>

        <div class="rk-temp35-tool-body">
          <div class="rk-temp35-segmented" role="tablist" aria-label="Wybierz rodzaj obliczenia">
            <button type="button" role="tab" id="rk-temp35-tab-balance" data-rk-temp35-mode="balance" aria-selected="true" aria-controls="rk-temp35-panel-balance">Czy 35/30°C wystarczy?</button>
            <button type="button" role="tab" id="rk-temp35-tab-scop" data-rk-temp35-mode="scop" aria-selected="false" aria-controls="rk-temp35-panel-scop">Porównaj SCOP i koszt</button>
          </div>

          <div class="rk-temp35-panel" id="rk-temp35-panel-balance" role="tabpanel" aria-labelledby="rk-temp35-tab-balance">
            <div class="rk-temp35-field-grid rk-temp35-field-grid-3">
              <div class="rk-temp35-field">
                <label for="rk-temp35-room-load">Obciążenie pomieszczenia</label>
                <input id="rk-temp35-room-load" type="number" min="10" max="20000" step="10" value="1000" inputmode="decimal">
                <span class="rk-temp35-field-help">Projektowa wartość Q w watach.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-active-area">Czynna powierzchnia podłogi</label>
                <input id="rk-temp35-active-area" type="number" min="0.5" max="300" step="0.5" value="20" inputmode="decimal">
                <span class="rk-temp35-field-help">Powierzchnia faktycznie oddająca ciepło w m².</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-table-output">Moc podłogi z tabeli</label>
                <input id="rk-temp35-table-output" type="number" min="1" max="250" step="1" value="50" inputmode="decimal">
                <span class="rk-temp35-field-help">W/m² dla wpisanego parametru i konkretnej konstrukcji.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-supply-temp">Temperatura zasilania</label>
                <input id="rk-temp35-supply-temp" type="number" min="20" max="70" step="0.5" value="35" inputmode="decimal">
                <span class="rk-temp35-field-help">Temperatura projektowa w °C.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-return-temp">Temperatura powrotu</label>
                <input id="rk-temp35-return-temp" type="number" min="15" max="65" step="0.5" value="30" inputmode="decimal">
                <span class="rk-temp35-field-help">Musi być niższa od zasilania.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-room-temp">Temperatura pomieszczenia</label>
                <input id="rk-temp35-room-temp" type="number" min="15" max="28" step="0.5" value="20" inputmode="decimal">
                <span class="rk-temp35-field-help">Do pokazania średniej różnicy temperatur.</span>
              </div>
            </div>

            <div class="rk-temp35-result-grid rk-temp35-result-grid-3">
              <div class="rk-temp35-result"><span>Wymagana moc jednostkowa</span><strong id="rk-temp35-result-required-output">50,0 W/m²</strong></div>
              <div class="rk-temp35-result"><span>Dostępna moc podłogi</span><strong id="rk-temp35-result-available-power">1000 W</strong></div>
              <div class="rk-temp35-result"><span>Bilans mocy</span><strong id="rk-temp35-result-balance">0 W</strong></div>
              <div class="rk-temp35-result"><span>Potrzebna powierzchnia</span><strong id="rk-temp35-result-required-area">20,0 m²</strong></div>
              <div class="rk-temp35-result"><span>Przepływ dla pomieszczenia</span><strong id="rk-temp35-result-flow">2,87 l/min</strong></div>
              <div class="rk-temp35-result"><span>Średnia różnica woda–pokój</span><strong id="rk-temp35-result-medium-delta">12,5 K</strong></div>
            </div>

            <p class="rk-temp35-equation" id="rk-temp35-balance-equation">1000 W ÷ 20 m² = 50,0 W/m²; 50 W/m² × 20 m² = 1000 W.</p>
          </div>

          <div class="rk-temp35-panel" id="rk-temp35-panel-scop" role="tabpanel" aria-labelledby="rk-temp35-tab-scop" hidden="">
            <div class="rk-temp35-field-grid rk-temp35-field-grid-3">
              <div class="rk-temp35-field">
                <label for="rk-temp35-annual-heat">Roczne użyteczne ciepło</label>
                <input id="rk-temp35-annual-heat" type="number" min="100" max="200000" step="100" value="10000" inputmode="decimal">
                <span class="rk-temp35-field-help">Energia dostarczana do budynku w kWh/rok.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-energy-price">Cena energii elektrycznej</label>
                <input id="rk-temp35-energy-price" type="number" min="0.01" max="10" step="0.01" value="1.10" inputmode="decimal">
                <span class="rk-temp35-field-help">Łączny koszt 1 kWh w PLN.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-years">Okres porównania</label>
                <input id="rk-temp35-years" type="number" min="1" max="30" step="1" value="10" inputmode="numeric">
                <span class="rk-temp35-field-help">Bez prognozowania zmian ceny energii.</span>
              </div>
            </div>
            <div class="rk-temp35-field-grid rk-temp35-field-grid-4">
              <div class="rk-temp35-field">
                <label for="rk-temp35-low-temp">Niższa temperatura zasilania</label>
                <input id="rk-temp35-low-temp" type="number" min="20" max="65" step="1" value="35" inputmode="decimal">
                <span class="rk-temp35-field-help">Etykieta wariantu w °C.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-low-scop">SCOP niższego parametru</label>
                <input id="rk-temp35-low-scop" type="number" min="1" max="10" step="0.1" value="4.2" inputmode="decimal">
                <span class="rk-temp35-field-help">Wartość z porównywalnych danych producenta.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-high-temp">Wyższa temperatura zasilania</label>
                <input id="rk-temp35-high-temp" type="number" min="20" max="70" step="1" value="45" inputmode="decimal">
                <span class="rk-temp35-field-help">Etykieta wariantu porównawczego w °C.</span>
              </div>
              <div class="rk-temp35-field">
                <label for="rk-temp35-high-scop">SCOP wyższego parametru</label>
                <input id="rk-temp35-high-scop" type="number" min="1" max="10" step="0.1" value="3.4" inputmode="decimal">
                <span class="rk-temp35-field-help">Nie zastępuj SCOP chwilowym COP.</span>
              </div>
            </div>

            <div class="rk-temp35-result-grid rk-temp35-result-grid-3">
              <div class="rk-temp35-result"><span id="rk-temp35-low-energy-label">Prąd przy 35°C</span><strong id="rk-temp35-result-low-energy">2381 kWh/rok</strong></div>
              <div class="rk-temp35-result"><span id="rk-temp35-high-energy-label">Prąd przy 45°C</span><strong id="rk-temp35-result-high-energy">2941 kWh/rok</strong></div>
              <div class="rk-temp35-result"><span>Różnica zużycia</span><strong id="rk-temp35-result-energy-difference">560 kWh/rok</strong></div>
              <div class="rk-temp35-result"><span id="rk-temp35-low-cost-label">Koszt przy 35°C</span><strong id="rk-temp35-result-low-cost">2619 zł/rok</strong></div>
              <div class="rk-temp35-result"><span id="rk-temp35-high-cost-label">Koszt przy 45°C</span><strong id="rk-temp35-result-high-cost">3235 zł/rok</strong></div>
              <div class="rk-temp35-result"><span>Różnica w całym okresie</span><strong id="rk-temp35-result-period-difference">6162 zł</strong></div>
            </div>

            <p class="rk-temp35-equation" id="rk-temp35-scop-equation">10 000 kWh ÷ 4,2 = 2381 kWh prądu; 10 000 kWh ÷ 3,4 = 2941 kWh prądu.</p>
          </div>

          <div class="rk-temp35-chart-card">
            <div class="rk-temp35-chart-title" id="rk-temp35-chart-visible-title">Bilans mocy pomieszczenia przy wpisanym parametrze</div>
            <div class="rk-temp35-chart-wrap" id="rk-temp35-chart-wrap">
              <svg id="rk-temp35-comparison-chart" viewBox="0 0 760 330" role="img" aria-labelledby="rk-temp35-chart-title-svg rk-temp35-chart-desc">
                <title id="rk-temp35-chart-title-svg">Porównanie wymaganej i dostępnej mocy</title>
                <desc id="rk-temp35-chart-desc">Wykres porównuje projektowe obciążenie pomieszczenia z mocą dostępną z czynnej powierzchni podłogi.</desc>
              </svg>
            </div>
            <div class="rk-temp35-chart-reading" id="rk-temp35-chart-reading" aria-live="polite"><strong>Bilans:</strong> dostępna moc 1000 W odpowiada obciążeniu 1000 W.</div>
          </div>

          <div class="rk-temp35-status is-good" id="rk-temp35-calculator-status" role="status">Dla wpisanych danych podłoga pokrywa projektowe obciążenie bez rezerwy. Zweryfikuj, czy 50 W/m² pochodzi z tabeli odpowiadającej dokładnie parametrowi 35/30°C i konstrukcji podłogi.</div>
          <div class="rk-temp35-tool-disclaimer"><strong>Granice kalkulatora:</strong> narzędzie nie wyznacza mocy podłogi z rozstawu rur, nie oblicza temperatury powierzchni i nie tworzy charakterystyki pompy ciepła. Wartość W/m² oraz SCOP muszą pochodzić z wiarygodnych, porównywalnych danych. Wynik nie zastępuje projektu według właściwych metod obliczeniowych ani dokumentacji producentów.</div>
        </div>
      </div>
    </section>

    <section class="rk-temp35-section rk-temp35-section-soft" id="rk-temp35-results">
      <span class="rk-temp35-eyebrow">Wynik mówi o bilansie, nie o całym projekcie</span>
      <h2 class="rk-temp35-section-title">Jak interpretować wynik kalkulatora?</h2>
      <p class="rk-temp35-lead">Kalkulator odpowiada na dwa precyzyjne pytania: czy wpisana moc jednostkowa wystarcza dla danego pomieszczenia oraz jak zmienia się rachunek przy dwóch wpisanych wartościach SCOP. Nie wybiera automatycznie temperatury ani urządzenia.</p>

      <div class="rk-temp35-compare-table" role="table" aria-label="Interpretacja bilansu mocy ogrzewania podłogowego">
        <div class="rk-temp35-table-row rk-temp35-table-head" role="row"><div role="columnheader">Wynik</div><div role="columnheader">Co oznacza?</div><div role="columnheader">Co sprawdzić dalej?</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wynik" role="cell">Dodatnia rezerwa</div><div data-label="Znaczenie" role="cell">Wpisana moc podłogi przewyższa obciążenie pomieszczenia.</div><div data-label="Dalsza kontrola" role="cell">Temperaturę powierzchni, dane systemu, hydraulikę oraz pozostałe pomieszczenia.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wynik" role="cell">Bilans bliski zera</div><div data-label="Znaczenie" role="cell">Podłoga pokrywa obciążenie bez istotnej rezerwy dla wpisanych danych.</div><div data-label="Dalsza kontrola" role="cell">Dokładność OZC, powierzchnię czynną i warunki skrajne.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wynik" role="cell">Deficyt mocy</div><div data-label="Znaczenie" role="cell">Przyjęta moc W/m² pomnożona przez powierzchnię jest zbyt mała.</div><div data-label="Dalsza kontrola" role="cell">Możliwość zwiększenia powierzchni, zmiany konstrukcji, rozstawu, parametru lub dodania emitera.</div></div>
      </div>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Nie przenoś wyniku na cały dom</h3><p>Salon może mieć rezerwę, a łazienka lub pomieszczenie z dużymi przeszkleniami — deficyt. Sprawdza się każde pomieszczenie.</p></article>
        <article class="rk-temp35-card"><h3>Nie mieszaj COP ze SCOP</h3><p>Chwilowy COP nie służy bezpośrednio do prognozy rocznego zużycia. Kalkulator kosztów wymaga sezonowych danych.</p></article>
        <article class="rk-temp35-card"><h3>Nie traktuj W/m² jako stałej</h3><p>Moc z tabeli musi odpowiadać temperaturze, rozstawowi, konstrukcji, okładzinie i warunkom pomieszczenia.</p></article>
      </div>

      <div class="rk-temp35-cta">
        <div class="rk-temp35-cta-title">35°C wystarcza tylko wtedy, gdy wynika to z bilansu pomieszczeń</div>
        <p>Kalkulator sprawdza jeden warunek dla wpisanych danych. W kompletnym projekcie trzeba połączyć OZC każdego pomieszczenia, powierzchnie czynne, warstwy podłogi, rozstaw rur, parametr 35/30°C, długości pętli, przepływy oraz punkt pracy pompy obiegowej. Dopiero wtedy wiadomo, gdzie niska temperatura rzeczywiście wystarczy.</p>
        <a class="rk-temp35-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-temp35-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-graphic">
      <span class="rk-temp35-eyebrow">Interaktywna grafika edukacyjna</span>
      <h2 class="rk-temp35-section-title">Jak budynek i podłoga prowadzą do temperatury pracy pompy?</h2>
      <p class="rk-temp35-lead">Wybierz zmianę. Sześć modułów pokaże jej kierunek oddziaływania — od warunków budynku do wymaganego parametru i pracy źródła.</p>

      <div class="rk-temp35-tool" id="rk-temp35-dependency-tool">
        <div class="rk-temp35-tool-head">
          <span class="rk-temp35-eyebrow">Łańcuch cieplny od pogody do sprężarki</span>
          <h3>Sprawdź, co naprawdę zmienia wymagane zasilanie</h3>
          <p>Grafika pokazuje kierunek zmian przy pozostałych warunkach niezmienionych. Nie przypisuje uniwersalnych wartości temperatury ani sprawności.</p>
        </div>
        <div class="rk-temp35-tool-body">
          <div class="rk-temp35-graphic-controls" role="group" aria-label="Wybierz analizowaną zmianę">
            <button type="button" data-rk-temp35-scenario="insulation" aria-pressed="true">Mniejsze straty budynku</button>
            <button type="button" data-rk-temp35-scenario="area" aria-pressed="false">Mniej czynnej podłogi</button>
            <button type="button" data-rk-temp35-scenario="covering" aria-pressed="false">Większy opór okładziny</button>
            <button type="button" data-rk-temp35-scenario="spacing" aria-pressed="false">Gęstszy rozstaw rur</button>
          </div>

          <div class="rk-temp35-hydraulic-grid" aria-live="polite">
            <article class="rk-temp35-hydraulic-card is-muted" data-rk-temp35-component="weather"><span class="rk-temp35-hydraulic-number">1</span><h3>Warunki zewnętrzne</h3><span class="rk-temp35-hydraulic-value" data-rk-temp35-component-value="">Bez zmian</span><p data-rk-temp35-component-copy="">Temperatura obliczeniowa lokalizacji pozostaje taka sama.</p></article>
            <article class="rk-temp35-hydraulic-card is-active" data-rk-temp35-component="load"><span class="rk-temp35-hydraulic-number">2</span><h3>Obciążenie pomieszczenia</h3><span class="rk-temp35-hydraulic-value" data-rk-temp35-component-value="">Maleje</span><p data-rk-temp35-component-copy="">Lepsza izolacyjność ogranicza moc potrzebną do utrzymania temperatury.</p></article>
            <article class="rk-temp35-hydraulic-card is-muted" data-rk-temp35-component="area"><span class="rk-temp35-hydraulic-number">3</span><h3>Powierzchnia czynna</h3><span class="rk-temp35-hydraulic-value" data-rk-temp35-component-value="">Bez zmian</span><p data-rk-temp35-component-copy="">Dostępny obszar grzewczy nie zmienia się.</p></article>
            <article class="rk-temp35-hydraulic-card is-active" data-rk-temp35-component="emission"><span class="rk-temp35-hydraulic-number">4</span><h3>Wymagane W/m²</h3><span class="rk-temp35-hydraulic-value" data-rk-temp35-component-value="">Maleją</span><p data-rk-temp35-component-copy="">Ta sama podłoga musi przekazać mniej energii na każdy metr kwadratowy.</p></article>
            <article class="rk-temp35-hydraulic-card is-active" data-rk-temp35-component="water"><span class="rk-temp35-hydraulic-number">5</span><h3>Temperatura wody</h3><span class="rk-temp35-hydraulic-value" data-rk-temp35-component-value="">Może być niższa</span><p data-rk-temp35-component-copy="">Do uzyskania mniejszej mocy może wystarczyć niższa średnia temperatura czynnika.</p></article>
            <article class="rk-temp35-hydraulic-card is-active" data-rk-temp35-component="pump"><span class="rk-temp35-hydraulic-number">6</span><h3>Pompa ciepła</h3><span class="rk-temp35-hydraulic-value" data-rk-temp35-component-value="">Korzystniejszy punkt</span><p data-rk-temp35-component-copy="">Mniejszy wymagany poziom temperatury może poprawić warunki pracy urządzenia.</p></article>
          </div>

          <div class="rk-temp35-graphic-result" id="rk-temp35-scenario-result" role="status" aria-live="polite"><strong>Mniejsze straty budynku otwierają drogę do niższej temperatury.</strong><p>Obciążenie na metr czynnej powierzchni maleje. Nie oznacza to automatycznie konkretnej wartości — trzeba ponownie odczytać moc systemu dla jego konstrukcji.</p></div>
          <div class="rk-temp35-tool-disclaimer"><strong>Granica grafiki:</strong> moduł nie liczy mocy i nie zastępuje OZC ani tabel systemu. Pokazuje, który element łańcucha się zmienia i dlaczego temperatura zasilania jest wynikiem, a nie punktem wyjścia.</div>
        </div>
      </div>
    </section>

    <section class="rk-temp35-section rk-temp35-section-soft" id="rk-temp35-spacing">
      <span class="rk-temp35-eyebrow">10 cm nie jest jedynym poprawnym rozstawem</span>
      <h2 class="rk-temp35-section-title">Jak temperatura zasilania wiąże się z rozstawem rur?</h2>
      <p class="rk-temp35-lead">Mniejszy rozstaw może zwiększyć zdolność przekazywania ciepła przy tej samej średniej temperaturze wody i poprawić równomierność powierzchni. Nie oznacza jednak, że każdy dom z pompą ciepła wymaga rur co 10 cm.</p>

      <div class="rk-temp35-compare-table" role="table" aria-label="Znaczenie rozstawu rur dla temperatury zasilania">
        <div class="rk-temp35-table-row rk-temp35-table-head" role="row"><div role="columnheader">Rozstaw</div><div role="columnheader">Możliwa rola</div><div role="columnheader">Warunek zastosowania</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Rozstaw" role="cell">10 cm</div><div data-label="Rola" role="cell">Większa długość rury na m² i zwykle korzystniejsze pole charakterystyk cieplnych.</div><div data-label="Warunek" role="cell">Musi wynikać z mocy, hydrauliki, długości pętli oraz wykonalności.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Rozstaw" role="cell">15 cm</div><div data-label="Rola" role="cell">Częsty kompromis w pomieszczeniach o umiarkowanym obciążeniu.</div><div data-label="Warunek" role="cell">Podłoga musi pokrywać obliczone W/m² przy przyjętych temperaturach.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Rozstaw" role="cell">20 cm</div><div data-label="Rola" role="cell">Może być wystarczający w strefach o małym zapotrzebowaniu albo odpowiedniej konstrukcji.</div><div data-label="Warunek" role="cell">Nie wolno go zatwierdzić wyłącznie na podstawie oszczędności rury.</div></div>
      </div>

      <p>Rozstaw dobiera się z obliczeń, a nie z rodzaju źródła. Więcej przykładów zawiera poradnik <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw rur przy pompie ciepła</a> oraz analiza, <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/">jak gęsto rozkładać podłogówkę</a>.</p>
      <div class="rk-temp35-note"><strong>Gęściej nie znaczy automatycznie lepiej.</strong> Większa długość rury wpływa na liczbę pętli, opory, objętość wody, rozdzielacz i koszt. Korzyść cieplną trzeba połączyć z poprawnym projektem hydraulicznym.</div>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-coverings">
      <span class="rk-temp35-eyebrow">Temperatura wody nie omija oporu warstw</span>
      <h2 class="rk-temp35-section-title">Jak płytki, panele i drewno zmieniają wymagany parametr?</h2>
      <p class="rk-temp35-lead">Okładzina o większym oporze cieplnym ogranicza strumień przekazywany do pomieszczenia przy tej samej temperaturze wody. Projekt musi jednocześnie respektować dopuszczalne warunki pracy wykończenia podane przez jego producenta.</p>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Płytki ceramiczne</h3><p>Zwykle mają korzystne przewodzenie i ułatwiają uzyskanie wymaganej mocy przy niższej temperaturze, ale znaczenie ma cały układ kleju i jastrychu.</p></article>
        <article class="rk-temp35-card"><h3>Panele i winyl</h3><p>Należy sprawdzić łączny opór panelu oraz podkładu, dopuszczenie do ogrzewania podłogowego i maksymalną temperaturę powierzchni.</p></article>
        <article class="rk-temp35-card"><h3>Drewno</h3><p>Liczą się gatunek, budowa warstwowa, grubość, stabilność wymiarowa, wilgotność oraz wymagania producenta podłogi i chemii.</p></article>
      </div>

      <p>Nie można zagwarantować określonej temperatury powierzchni ani wilgotności drewna wyłącznie przez ustawienie 35°C. Zobacz, <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">jak okładzina wpływa na wydajność podłogówki</a>, oraz porównanie <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">gatunków drewna na ogrzewanie podłogowe</a>.</p>
    </section>

    <section class="rk-temp35-section rk-temp35-section-dark" id="rk-temp35-curve">
      <span class="rk-temp35-eyebrow">Przez większość sezonu potrzebna jest niższa temperatura niż projektowa</span>
      <h2 class="rk-temp35-section-title">Co zmienia krzywa grzewcza?</h2>
      <p class="rk-temp35-lead">Jeżeli 35°C jest wymagane przy obliczeniowej temperaturze zewnętrznej, nie oznacza to stałego zasilania 35°C jesienią, wiosną i podczas łagodnej zimy. Automatyka pogodowa powinna dopasowywać parametr do bieżącego obciążenia.</p>

      <div class="rk-temp35-chain" aria-label="Zależność działania krzywej grzewczej">
        <div class="rk-temp35-chain-item"><strong>Pogoda</strong><span>zmienia straty</span></div>
        <div class="rk-temp35-chain-item"><strong>Obciążenie</strong><span>zmienia potrzebną moc</span></div>
        <div class="rk-temp35-chain-item"><strong>Krzywa</strong><span>wyznacza zasilanie</span></div>
        <div class="rk-temp35-chain-item"><strong>Podłoga</strong><span>oddaje energię</span></div>
        <div class="rk-temp35-chain-item"><strong>Korekta</strong><span>stabilizuje komfort</span></div>
      </div>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Nachylenie</h3><p>Określa, jak mocno temperatura wody ma wzrastać wraz ze spadkiem temperatury zewnętrznej.</p></article>
        <article class="rk-temp35-card"><h3>Przesunięcie</h3><p>Koryguje cały poziom krzywej bez automatycznego zmieniania wszystkich pozostałych elementów projektu.</p></article>
        <article class="rk-temp35-card"><h3>Weryfikacja</h3><p>Nastawy dopracowuje się na stabilnie pracującej instalacji, małymi zmianami i z uwzględnieniem bezwładności podłogi.</p></article>
      </div>

      <p>Nie istnieje uniwersalne nachylenie 0,2 albo 0,3 dla każdego budynku. Mechanizm oraz sposób regulacji opisuje poradnik <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza w ogrzewaniu podłogowym</a>.</p>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-hydraulics">
      <span class="rk-temp35-eyebrow">Niska temperatura nie oznacza automatycznie „potężnego przepływu”</span>
      <h2 class="rk-temp35-section-title">Jak temperatura, ΔT i przepływ łączą się hydraulicznie?</h2>
      <p class="rk-temp35-lead">Dla zadanej mocy przepływ zależy przede wszystkim od projektowej różnicy temperatur pomiędzy zasilaniem i powrotem oraz właściwości czynnika. Sama wartość 35°C nie wyznacza strumienia.</p>

      <div class="rk-temp35-equation-box">
        <span class="rk-temp35-equation-label">Przybliżenie dla wody</span>
        <div class="rk-temp35-equation-main">V̇ [l/h] ≈ 0,86 × Q [W] ÷ ΔT [K]</div>
        <p>Dla mocy 1000 W i ΔT = 5 K przepływ wynosi około 172 l/h, czyli 2,87 l/min. Jeżeli tę moc przenoszą dwie pętle, przepływ rozdziela się zgodnie z ich udziałem.</p>
      </div>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Mniejsze ΔT</h3><p>Przy tej samej mocy wymaga większego przepływu, co może podnieść prędkość i opór instalacji.</p></article>
        <article class="rk-temp35-card"><h3>Większe ΔT</h3><p>Zmniejsza wymagany przepływ, ale wpływa na średnią temperaturę wody i rozkład temperatury wzdłuż pętli.</p></article>
        <article class="rk-temp35-card"><h3>Podział na pętle</h3><p>Zmienia przepływ oraz opór pojedynczej gałęzi, choć suma energii potrzebnej w pomieszczeniu pozostaje taka sama.</p></article>
      </div>

      <p>ΔT nie powinno być wybierane jedynie z etykiety źródła. Zależność rozwija materiał o <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatur zasilania i powrotu</a>. Opory warto później sprawdzić w poradnikach o <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicach rur podłogówki</a> i <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">doborze pompy obiegowej</a>.</p>
    </section>

    <section class="rk-temp35-section rk-temp35-section-soft" id="rk-temp35-architecture">
      <span class="rk-temp35-eyebrow">Jedna temperatura nie opisuje całej instalacji</span>
      <h2 class="rk-temp35-section-title">Układ bezpośredni, mieszacz czy dwa poziomy temperatury?</h2>
      <p class="rk-temp35-lead">Sposób wytworzenia 35°C zależy od architektury instalacji. Inaczej pracuje pompa ciepła zasilająca wyłącznie podłogówkę, a inaczej system mieszany z grzejnikami, kilkoma obiegami lub elementem separującym hydraulicznie.</p>

      <div class="rk-temp35-compare-table" role="table" aria-label="Porównanie architektury instalacji niskotemperaturowej">
        <div class="rk-temp35-table-row rk-temp35-table-head" role="row"><div role="columnheader">Wariant</div><div role="columnheader">Kiedy ma sens?</div><div role="columnheader">Co trzeba zweryfikować?</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wariant" role="cell">Układ bezpośredni</div><div data-label="Zastosowanie" role="cell">Jednorodny obieg niskotemperaturowy, w którym źródło podaje parametr wymagany przez podłogę.</div><div data-label="Weryfikacja" role="cell">Minimalny przepływ i zład źródła, zakres modulacji, regulację pogodową oraz pracę po zamknięciu stref.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wariant" role="cell">Układ z mieszaniem</div><div data-label="Zastosowanie" role="cell">Wspólne źródło obsługuje obiegi wymagające różnych temperatur albo podłoga musi otrzymać parametr niższy od obiegu pierwotnego.</div><div data-label="Weryfikacja" role="cell">Autorytet zaworu, temperatury obu stron, pompę obiegu, sterowanie i wpływ mieszania na pracę źródła.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wariant" role="cell">Separacja hydrauliczna</div><div data-label="Zastosowanie" role="cell">Kilka obiegów ma różne przepływy albo producent źródła wymaga stabilnych warunków po stronie pierwotnej.</div><div data-label="Weryfikacja" role="cell">Czy separacja jest rzeczywiście potrzebna, ile pomp wymaga układ i jakie straty oraz konsekwencje regulacyjne wprowadza.</div></div>
      </div>

      <p>Sam mieszacz nie naprawi zbyt małej powierzchni grzewczej, a sprzęgło nie zastąpi obliczeń. Zobacz, jak działa <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obieg grzewczy podłogówki</a>, kiedy stosuje się <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> oraz jak połączyć <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">ogrzewanie podłogowe z grzejnikami</a>.</p>
      <div class="rk-temp35-callout"><strong>Najprostszy poprawny układ jest zwykle najłatwiejszy do regulacji.</strong> Liczba pomp, zaworów i elementów separujących powinna wynikać z funkcji hydraulicznej, a nie z automatycznego schematu przypisanego do pompy ciepła.</div>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-buffer">
      <span class="rk-temp35-eyebrow">35°C nie odpowiada na pytanie o objętość i minimalny przepływ</span>
      <h2 class="rk-temp35-section-title">Czy niska temperatura zasilania eliminuje potrzebę bufora?</h2>
      <p class="rk-temp35-lead">Nie. O potrzebie, funkcji i wielkości bufora decydują wymagania konkretnego źródła oraz zachowanie całego układu: minimalny zład, minimalny przepływ, modulacja, odszranianie, liczba zamykanych stref, separacja hydrauliczna i sposób sterowania.</p>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Bufor jako zwiększenie zładu</h3><p>Może pomagać spełnić wymaganie minimalnej objętości wody lub ograniczyć niekorzystne skutki krótkich cykli, jeżeli wynika to z danych urządzenia.</p></article>
        <article class="rk-temp35-card"><h3>Bufor jako separacja</h3><p>Może rozdzielać obiegi o różnych przepływach, ale zmienia hydraulikę, liczbę pomp i sposób regulacji temperatury.</p></article>
        <article class="rk-temp35-card"><h3>Instalacja bez bufora</h3><p>Może być poprawna, gdy układ bezpośredni zapewnia wymagany zład, przepływ, odbiór mocy i warunki pracy w każdym stanie regulacji.</p></article>
      </div>

      <p>Gęstszy rozstaw zwiększa długość rur i ilość wody, lecz nie daje automatycznie wszystkich funkcji bufora. Osobno trzeba przeanalizować <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła w ogrzewaniu podłogowym</a> oraz wpływ <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowania strefowego</a> na minimalny czynny obieg.</p>
      <div class="rk-temp35-warning"><strong>Nie usuwaj bufora tylko dlatego, że projekt pracuje na 35°C.</strong> Najpierw sprawdź dokumentację pompy ciepła i policz aktywny zład oraz przepływ przy najbardziej ograniczonym stanie pracy instalacji.</div>
    </section>

    <section class="rk-temp35-section rk-temp35-section-soft" id="rk-temp35-example">
      <span class="rk-temp35-eyebrow">Przejrzysty przykład bez udawania tabeli systemowej</span>
      <h2 class="rk-temp35-section-title">Przykład: czy 35/30°C wystarczy w salonie?</h2>
      <p class="rk-temp35-lead">Załóżmy projektowe obciążenie salonu 1150 W, powierzchnię brutto 28 m² oraz 6 m² trwałej zabudowy. Czynna podłoga ma więc 22 m², a wymaganie wynosi 52,3 W/m². Przyjmijmy wyłącznie do porównania, że sprawdzona tabela konkretnego systemu podaje 48 W/m² dla 35/30°C.</p>

      <div class="rk-temp35-compare-table" role="table" aria-label="Przykład bilansu mocy salonu dla parametru 35 na 30 stopni Celsjusza">
        <div class="rk-temp35-table-row rk-temp35-table-head" role="row"><div role="columnheader">Wariant</div><div role="columnheader">Obliczenie</div><div role="columnheader">Wniosek</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wariant" role="cell">Bazowy: 22 m² i 48 W/m²</div><div data-label="Obliczenie" role="cell">Dostępna moc 1056 W; deficyt 94 W.</div><div data-label="Wniosek" role="cell">Dla założeń przykładu 35/30°C nie wystarcza.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wariant" role="cell">Większa powierzchnia: 24 m²</div><div data-label="Obliczenie" role="cell">24 × 48 = 1152 W; rezerwa 2 W.</div><div data-label="Wniosek" role="cell">Bilans się domyka, jeżeli dodatkowe 2 m² rzeczywiście mogą grzać.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wariant" role="cell">Wyższa moc systemu: 53 W/m²</div><div data-label="Obliczenie" role="cell">22 × 53 = 1166 W; rezerwa 16 W.</div><div data-label="Wniosek" role="cell">Może pomóc inna konstrukcja lub geometria, ale wartość musi pochodzić z weryfikacji.</div></div>
        <div class="rk-temp35-table-row" role="row"><div class="rk-temp35-table-label" data-label="Wariant" role="cell">Dodatkowy emiter</div><div data-label="Obliczenie" role="cell">Podłoga pozostaje przy 1056 W, a emiter pokrywa co najmniej brakujące 94 W.</div><div data-label="Wniosek" role="cell">Pozwala zachować niski parametr, jeżeli oba emitery są do niego dobrane.</div></div>
      </div>

      <p>Dla mocy 1150 W i ΔT = 5 K wymagany przepływ dla salonu wynosi około 198 l/h, czyli 3,30 l/min. Przy dwóch równomiernie obciążonych pętlach byłoby to orientacyjnie po 1,65 l/min, lecz rzeczywiste nastawy wynikają z przypisanej mocy każdej pętli i jej hydrauliki.</p>
      <div class="rk-temp35-note"><strong>To przykład metody, nie uniwersalna charakterystyka podłogi.</strong> Wartość 48 W/m² została przyjęta hipotetycznie. W projekcie odczytuje się ją z obliczeń lub dokumentacji odpowiadającej dokładnej konstrukcji, rozstawowi, okładzinie i temperaturom.</div>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-errors">
      <span class="rk-temp35-eyebrow">Najgroźniejsze skróty myślowe brzmią jak precyzyjne reguły</span>
      <h2 class="rk-temp35-section-title">Najczęstsze błędy i mity o zasilaniu 35°C</h2>
      <div class="rk-temp35-mistakes">
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>„35°C wymaga norma”</strong><p>Metoda normowa prowadzi do obliczenia mocy i wymiarowania systemu; nie nadaje jednej temperatury każdemu budynkowi.</p></div></div>
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>Prognoza COP z samej temperatury</strong><p>COP zależy między innymi od warunków źródła, obciążenia i konkretnego urządzenia. Do rocznych porównań potrzebne są porównywalne dane sezonowe.</p></div></div>
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>Wyliczanie trwałości sprężarki suwakiem</strong><p>Nie ma podstaw, aby z samego przejścia z 35 na 45°C obliczać procent skrócenia życia urządzenia.</p></div></div>
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>Rozstaw 10 cm w każdym pomieszczeniu</strong><p>Geometria wynika z wymaganej mocy, konstrukcji i hydrauliki. Ten sam rozstaw nie musi być optymalny w całym domu.</p></div></div>
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>Naprawianie deficytu rotametrem</strong><p>Zwiększenie przepływu nie zastąpi brakującej powierzchni i nie stworzy dowolnej mocy przy zbyt niskiej średniej temperaturze wody.</p></div></div>
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>Stały narzut procentowy do OZC</strong><p>Rezerwę należy uzasadnić niepewnością danych, dynamiką lub konkretnym ryzykiem, a nie dodawać automatycznie do każdego pomieszczenia.</p></div></div>
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>„Dużo rury zastępuje bufor”</strong><p>Zład wodny jest tylko jednym warunkiem. Znaczenie mają także minimalny przepływ, regulacja, odszranianie i funkcja hydrauliczna bufora.</p></div></div>
        <div class="rk-temp35-mistake"><span class="rk-temp35-mistake-icon">!</span><div><strong>Sprawdzenie domu bez pomieszczeń</strong><p>Bilans całego budynku może wyglądać dobrze, gdy pojedyncza łazienka lub strefa przy przeszkleniach nadal ma deficyt mocy.</p></div></div>
      </div>

      <p>Niepewności warto opisywać wprost, a każdą liczbę przypisać do źródła lub obliczenia. Pomaga w tym analiza, czy <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">podłogówka może być jedynym źródłem ciepła</a>, oraz poradnik o <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a>.</p>
    </section>

    <section class="rk-temp35-section rk-temp35-section-soft" id="rk-temp35-checklist">
      <span class="rk-temp35-eyebrow">Przed zatwierdzeniem temperatury projektowej</span>
      <h2 class="rk-temp35-section-title">Lista kontrolna instalacji 35/30°C</h2>
      <p class="rk-temp35-lead">Każdy punkt powinien mieć odpowiedź w obliczeniach, dokumentacji produktu albo projekcie wykonawczym. Braku nie uzupełnia się intuicyjną temperaturą.</p>

      <div class="rk-temp35-checklist">
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Lokalizacja i warunki obliczeniowe</strong><br>Czy przyjęto właściwą temperaturę zewnętrzną i warunki brzegowe budynku?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>OZC każdego pomieszczenia</strong><br>Czy znane jest projektowe obciążenie w watach, a nie tylko wskaźnik całego domu?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Powierzchnia czynna</strong><br>Czy odjęto trwałą zabudowę i skoordynowano układ z aranżacją?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Temperatura pomieszczenia</strong><br>Czy łazienka, salon i sypialnie mają właściwe założenia projektowe?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Konstrukcja podłogi</strong><br>Czy znane są jastrych, położenie rury i wszystkie warstwy nad nią?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Okładzina i jej ograniczenia</strong><br>Czy sprawdzono łączny opór cieplny oraz warunki producentów materiałów?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Moc przy docelowym parametrze</strong><br>Czy W/m² pochodzi z obliczenia lub właściwej tabeli systemu dla 35/30°C?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Temperatura powierzchni</strong><br>Czy obliczony strumień nie narusza warunków komfortu i zastosowanych materiałów?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Rozstaw i trasy rur</strong><br>Czy geometria pokrywa obciążenie i daje wykonalne długości pętli?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>ΔT i przepływy</strong><br>Czy dla każdej pętli obliczono strumień odpowiadający jej mocy?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Opory i pompa obiegowa</strong><br>Czy droga krytyczna mieści się w osiągalnym punkcie pracy?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Dane pompy ciepła</strong><br>Czy moc, COP lub SCOP, zakres modulacji i ograniczenia odczytano dla właściwych warunków?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Minimalny przepływ, zład i sterowanie</strong><br>Czy układ spełnia wymagania źródła także po zamknięciu części stref?</div></div>
        <div class="rk-temp35-checklist-item"><span>✓</span><div><strong>Dokumentacja i uruchomienie</strong><br>Czy zapisano krzywą, przepływy, nastawy, próby oraz sposób późniejszej korekty?</div></div>
      </div>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-conclusions">
      <span class="rk-temp35-eyebrow">Wnioski projektanta</span>
      <h2 class="rk-temp35-section-title">Kiedy 35°C jest dobrym parametrem dla pompy ciepła?</h2>
      <p class="rk-temp35-lead">Wtedy, gdy przy projektowej pogodzie podłoga pokrywa obciążenie każdego pomieszczenia, pozostaje zgodna z ograniczeniami powierzchni i materiałów, a hydraulika oraz pompa ciepła pracują w zweryfikowanym zakresie.</p>

      <div class="rk-temp35-grid-3">
        <article class="rk-temp35-card"><h3>Moc się bilansuje</h3><p>Dostępne W/m² pomnożone przez powierzchnię czynną pokrywają projektowe straty pomieszczenia.</p></article>
        <article class="rk-temp35-card"><h3>Hydraulika jest osiągalna</h3><p>Przepływy, ΔT, opory, zład oraz stany częściowego odbioru odpowiadają urządzeniom i armaturze.</p></article>
        <article class="rk-temp35-card"><h3>Regulacja obniża parametr</h3><p>Krzywa pogodowa prowadzi instalację poniżej wartości projektowej, gdy na zewnątrz robi się cieplej.</p></article>
      </div>

      <div class="rk-temp35-answer"><span class="rk-temp35-answer-label">Reguła końcowa</span><p><strong>Nie projektuj domu „na 35°C”. Zaprojektuj podłogę dla obciążeń pomieszczeń, a następnie wyznacz najniższą temperaturę zasilania, przy której cały system spełnia wymagania w warunkach projektowych.</strong></p></div>

      <div class="rk-temp35-cta">
        <div class="rk-temp35-cta-title">Zaprojektuj najniższą temperaturę, która naprawdę wystarczy</div>
        <p>Kompletny projekt łączy OZC, powierzchnie czynne, warstwy podłogi, temperatury, rozstawy, pętle, przepływy, opory, rozdzielacze, punkt pracy pompy oraz nastawy potrzebne do uruchomienia układu.</p>
        <a class="rk-temp35-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-temp35-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-temp35-section rk-temp35-section-soft" id="rk-temp35-references">
      <span class="rk-temp35-eyebrow">Podstawa techniczna i granice interpretacji</span>
      <h2 class="rk-temp35-section-title">Źródła i zakres odpowiedzialności</h2>
      <p class="rk-temp35-lead">Oficjalne źródła potwierdzają potrzebę obliczenia mocy i wymiarowania systemu oraz znaczenie optymalizacji całej instalacji. Nie stanowią podstawy do przypisania jednego COP, kosztu albo temperatury wszystkim budynkom.</p>

      <div class="rk-temp35-source-grid">
        <article class="rk-temp35-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 wraz z Amd 1:2023 — określanie mocy</a><p>Oficjalna karta wydania dotyczącego wyznaczania strumienia ciepła, temperatur powierzchni i zależności charakterystycznych wodnych systemów ogrzewania oraz chłodzenia.</p></article>
        <article class="rk-temp35-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 wraz z Amd 1:2023 — projektowanie i wymiarowanie</a><p>Oficjalna karta wydania opisującego metodę projektowania i wymiarowania wbudowanych systemów płaszczyznowych.</p></article>
        <article class="rk-temp35-source-card"><a href="https://www.gov.uk/government/news/heat-pumps-explained-experts-answer-your-questions" target="_blank" rel="nofollow noopener noreferrer">DESNZ — Heat pumps explained: experts answer your questions</a><p>Oficjalny materiał brytyjskiego resortu energii wyjaśniający znaczenie projektu całego systemu i warunków pracy dla efektywności pompy ciepła.</p></article>
      </div>

      <div class="rk-temp35-responsibility">
        <p><strong>Status źródeł:</strong> oficjalne karty ISO wskazują wydania z 2021 r. i poprawki Amd 1:2023. Stan odnośników i opisu technicznego sprawdzono 11 września 2026 r.</p>
        <p><strong>Zakres kalkulatora:</strong> bilans korzysta z danych wpisanych przez użytkownika, a przepływ z przybliżenia dla wody. Porównanie sezonowe dzieli użyteczne ciepło przez podany SCOP; nie modeluje pogody, taryf godzinowych, CWU, grzałki, odszraniania ani charakterystyki urządzenia.</p>
        <p><strong>Odpowiedzialność:</strong> artykuł ma charakter edukacyjny. Nie jest projektem wykonawczym, doborem pompy ciepła, instrukcją producenta, audytem energetycznym ani oceną istniejącej instalacji.</p>
      </div>
    </section>

    <section class="rk-temp35-section" id="rk-temp35-faq">
      <span class="rk-temp35-eyebrow">Najczęstsze pytania o niskotemperaturową podłogówkę</span>
      <h2 class="rk-temp35-section-title">FAQ — temperatura zasilania pompy ciepła i podłogówki</h2>
      <div class="rk-temp35-faq">
        <details><summary>Czy 35°C zawsze wystarczy do ogrzewania podłogowego?</summary><div class="rk-temp35-faq-answer"><p>Nie. Wystarczy tylko wtedy, gdy moc podłogi przy przyjętym zasilaniu, powrocie, konstrukcji i okładzinie pokrywa obciążenie każdego pomieszczenia. W domu o małych stratach może wystarczyć mniej, a w trudnym pomieszczeniu może być potrzebna zmiana emitera lub wyższy parametr.</p></div></details>
        <details><summary>Czy 35°C jest temperaturą wymaganą przez normę?</summary><div class="rk-temp35-faq-answer"><p>Nie należy przedstawiać jej jako jednej temperatury nakazanej dla wszystkich instalacji. Metody projektowe służą do określania mocy i wymiarowania systemu, dlatego wynik zależy od warunków pomieszczenia, powierzchni, konstrukcji i geometrii.</p></div></details>
        <details><summary>Co dokładnie oznacza zapis 35/30°C?</summary><div class="rk-temp35-faq-answer"><p>Najczęściej oznacza projektową temperaturę zasilania 35°C i powrotu 30°C, czyli ΔT równe 5 K. Nie jest to temperatura podłogi ani powietrza w pomieszczeniu.</p></div></details>
        <details><summary>Czy niższa temperatura zasilania zawsze zwiększa COP?</summary><div class="rk-temp35-faq-answer"><p>Niższy wymagany poziom temperatury może poprawiać warunki pracy pompy, lecz dokładny skutek zależy od dolnego źródła, pogody, obciążenia i konstrukcji urządzenia. Warto porównywać dane tego samego modelu w tych samych warunkach.</p></div></details>
        <details><summary>Jak sprawdzić, czy parametr 35/30°C pokryje straty?</summary><div class="rk-temp35-faq-answer"><p>Podziel obciążenie pomieszczenia przez czynną powierzchnię podłogi, a otrzymane W/m² porównaj z mocą konkretnego systemu przy 35/30°C, właściwej temperaturze wnętrza, rozstawie i okładzinie. Następnie sprawdź temperaturę powierzchni oraz hydraulikę.</p></div></details>
        <details><summary>Czy rury trzeba zawsze układać co 10 cm przy pompie ciepła?</summary><div class="rk-temp35-faq-answer"><p>Nie. Rozstaw 10 cm może być uzasadniony obliczoną mocą i charakterystyką systemu, ale w części pomieszczeń wystarczający może być inny rozstaw. Trzeba równocześnie kontrolować długości, liczbę pętli, przepływy i opory.</p></div></details>
        <details><summary>Czy drewno na podłodze wyklucza zasilanie 35°C?</summary><div class="rk-temp35-faq-answer"><p>Nie automatycznie. Trzeba sprawdzić cały opór cieplny warstw, dopuszczenie produktu do podłogówki, warunki montażu i ograniczenia temperatury powierzchni. Następnie oblicza się, czy dostępna moc pokrywa obciążenie.</p></div></details>
        <details><summary>Czy podniesienie przepływu naprawi za niską moc podłogi?</summary><div class="rk-temp35-faq-answer"><p>Nie zawsze. Przepływ wpływa na ΔT i rozkład temperatury, ale nie może dowolnie zwiększyć mocy ograniczonej przez średnią temperaturę wody, powierzchnię oraz opór warstw. Najpierw trzeba ustalić przyczynę deficytu.</p></div></details>
        <details><summary>Czy instalacja 35/30°C potrzebuje bufora?</summary><div class="rk-temp35-faq-answer"><p>Sam parametr nie rozstrzyga tej kwestii. Decydują wymagania producenta pompy, minimalny zład i przepływ, modulacja, odszranianie, sterowanie strefowe oraz funkcja hydrauliczna, którą bufor miałby pełnić.</p></div></details>
        <details><summary>Jak ustawić krzywą grzewczą dla podłogówki?</summary><div class="rk-temp35-faq-answer"><p>Punkt projektowy wynika z obliczeń, a nachylenie i przesunięcie dopracowuje się podczas stabilnej pracy instalacji małymi krokami. Należy uwzględnić bezwładność podłogi i nie oceniać każdej zmiany po kilku minutach.</p></div></details>
      </div>
    </section>

    <section class="rk-temp35-author" id="rk-temp35-author">
      <span class="rk-temp35-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-temp35-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-temp35-author-layout">
        <aside class="rk-temp35-author-side">
          <div class="rk-temp35-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-temp35-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-temp35-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-temp35-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-temp35-author-main">
          <div class="rk-temp35-author-quote">„35°C nie jest nagrodą za wybór pompy ciepła. To jeden z możliwych wyników bilansu pomieszczeń, konstrukcji podłogi i hydrauliki całej instalacji.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz dokumentację wykonawczą dla inwestorów i wykonawców. W projekcie łączy OZC, aktywne powierzchnie, model emisji, trasy pętli, przepływy, opory i wymagania źródła.</p>
          <p>W tej aktualizacji usunięto bezwarunkowe przedstawianie 35°C jako ideału, stałe procenty wpływu temperatury na koszty i trwałość sprężarki, obowiązkowy rozstaw 10 cm, automatyczny narzut do OZC oraz stwierdzenie, że duży zład w rurach zawsze zastępuje bufor.</p>
          <p>Kalkulator rozdziela bilans pomieszczenia od porównania sezonowego. Nie wyprowadza SCOP z temperatury, lecz pozwala wpisać porównywalne dane konkretnej pompy. Interaktywna grafika pokazuje cały łańcuch prowadzący od strat budynku do punktu pracy źródła.</p>
          <p>Autor publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego</a>.</p>
          <div class="rk-temp35-author-facts">
            <div class="rk-temp35-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, pompy ciepła i hydraulika instalacji</div>
            <div class="rk-temp35-author-fact"><strong>Metoda pracy</strong>OZC, moc powierzchniowa, temperatura, przepływy i punkt pracy źródła</div>
            <div class="rk-temp35-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 11 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

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

  var root = document.getElementById('rk-temp35-guide');
  if (!root) return;

  var svgNamespace = 'http://www.w3.org/2000/svg';
  var mode = 'balance';
  var lastBalance = null;
  var lastScop = null;
  var resizeTimer = null;

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

  function each(selector, callback) {
    var nodes = root.querySelectorAll(selector);
    Array.prototype.forEach.call(nodes, callback);
  }

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

  function formatNumber(value, decimals) {
    return new Intl.NumberFormat('pl-PL', {
      minimumFractionDigits: decimals,
      maximumFractionDigits: decimals
    }).format(value);
  }

  function signed(value, decimals, unit) {
    var prefix = value > 0 ? '+' : '';
    return prefix + formatNumber(value, decimals) + ' ' + unit;
  }

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

  function setStatus(message, kind) {
    var status = byId('rk-temp35-calculator-status');
    if (!status) return;
    status.textContent = message;
    status.classList.remove('is-good');
    status.classList.remove('is-warning');
    if (kind) status.classList.add(kind);
  }

  function isPositive(value) {
    return Number.isFinite(value) ? value > 0 : false;
  }

  function calculateBalance() {
    var roomLoad = numberFrom('rk-temp35-room-load');
    var activeArea = numberFrom('rk-temp35-active-area');
    var tableOutput = numberFrom('rk-temp35-table-output');
    var supply = numberFrom('rk-temp35-supply-temp');
    var returnTemperature = numberFrom('rk-temp35-return-temp');
    var roomTemperature = numberFrom('rk-temp35-room-temp');

    var baseValid = isPositive(roomLoad) ? isPositive(activeArea) : false;
    baseValid = baseValid ? isPositive(tableOutput) : false;
    baseValid = baseValid ? Number.isFinite(supply) : false;
    baseValid = baseValid ? Number.isFinite(returnTemperature) : false;
    baseValid = baseValid ? Number.isFinite(roomTemperature) : false;

    if (!baseValid) {
      setStatus('Uzupełnij wszystkie pola dodatnimi, liczbowymi wartościami.', 'is-warning');
      return;
    }

    var deltaT = supply - returnTemperature;
    if (deltaT <= 0) {
      setStatus('Temperatura zasilania musi być wyższa od temperatury powrotu.', 'is-warning');
      return;
    }

    var requiredOutput = roomLoad / activeArea;
    var availablePower = tableOutput * activeArea;
    var balance = availablePower - roomLoad;
    var requiredArea = roomLoad / tableOutput;
    var flowLh = 0.86 * roomLoad / deltaT;
    var flowLmin = flowLh / 60;
    var meanWaterTemperature = (supply + returnTemperature) / 2;
    var mediumDelta = meanWaterTemperature - roomTemperature;

    setText('rk-temp35-result-required-output', formatNumber(requiredOutput, 1) + ' W/m²');
    setText('rk-temp35-result-available-power', formatNumber(availablePower, 0) + ' W');
    setText('rk-temp35-result-balance', signed(balance, 0, 'W'));
    setText('rk-temp35-result-required-area', formatNumber(requiredArea, 1) + ' m²');
    setText('rk-temp35-result-flow', formatNumber(flowLmin, 2) + ' l/min');
    setText('rk-temp35-result-medium-delta', formatNumber(mediumDelta, 1) + ' K');
    setText(
      'rk-temp35-balance-equation',
      formatNumber(roomLoad, 0) + ' W ÷ ' + formatNumber(activeArea, 1) + ' m² = ' +
      formatNumber(requiredOutput, 1) + ' W/m²; ' + formatNumber(tableOutput, 1) +
      ' W/m² × ' + formatNumber(activeArea, 1) + ' m² = ' + formatNumber(availablePower, 0) + ' W.'
    );

    var tolerance = Math.max(1, roomLoad * 0.01);
    var reserveThreshold = Math.max(1, roomLoad * 0.03);
    if (balance >= reserveThreshold) {
      setStatus(
        'Dla wpisanych danych podłoga pokrywa obciążenie z rezerwą ' +
        formatNumber(balance, 0) + ' W. Nadal sprawdź temperaturę powierzchni, hydraulikę i pozostałe pomieszczenia.',
        'is-good'
      );
    } else if (balance >= -tolerance) {
      setStatus(
        'Dla wpisanych danych bilans jest bliski zeru. Zweryfikuj dokładność OZC, powierzchnię czynną i moc z tabeli systemu.',
        'is-good'
      );
    } else {
      setStatus(
        'Dla wpisanych danych brakuje ' + formatNumber(Math.abs(balance), 0) +
        ' W. Nie kompensuj tego samym przepływem — sprawdź powierzchnię, konstrukcję, rozstaw, temperaturę lub dodatkowy emiter.',
        'is-warning'
      );
    }

    lastBalance = {
      required: roomLoad,
      available: availablePower,
      balance: balance,
      supply: supply,
      returnTemperature: returnTemperature
    };
    drawChart();
  }

  function calculateScop() {
    var annualHeat = numberFrom('rk-temp35-annual-heat');
    var energyPrice = numberFrom('rk-temp35-energy-price');
    var years = numberFrom('rk-temp35-years');
    var lowTemperature = numberFrom('rk-temp35-low-temp');
    var lowScop = numberFrom('rk-temp35-low-scop');
    var highTemperature = numberFrom('rk-temp35-high-temp');
    var highScop = numberFrom('rk-temp35-high-scop');

    var valid = isPositive(annualHeat) ? isPositive(energyPrice) : false;
    valid = valid ? isPositive(years) : false;
    valid = valid ? Number.isFinite(lowTemperature) : false;
    valid = valid ? isPositive(lowScop) : false;
    valid = valid ? Number.isFinite(highTemperature) : false;
    valid = valid ? isPositive(highScop) : false;

    if (!valid) {
      setStatus('Uzupełnij wszystkie pola porównania dodatnimi, liczbowymi wartościami.', 'is-warning');
      return;
    }

    var lowEnergy = annualHeat / lowScop;
    var highEnergy = annualHeat / highScop;
    var energyDifference = highEnergy - lowEnergy;
    var lowCost = lowEnergy * energyPrice;
    var highCost = highEnergy * energyPrice;
    var annualCostDifference = highCost - lowCost;
    var periodDifference = annualCostDifference * years;
    var percentageDifference = lowEnergy > 0 ? (highEnergy / lowEnergy - 1) * 100 : 0;

    setText('rk-temp35-low-energy-label', 'Prąd przy ' + formatNumber(lowTemperature, 0) + '°C');
    setText('rk-temp35-high-energy-label', 'Prąd przy ' + formatNumber(highTemperature, 0) + '°C');
    setText('rk-temp35-low-cost-label', 'Koszt przy ' + formatNumber(lowTemperature, 0) + '°C');
    setText('rk-temp35-high-cost-label', 'Koszt przy ' + formatNumber(highTemperature, 0) + '°C');
    setText('rk-temp35-result-low-energy', formatNumber(lowEnergy, 0) + ' kWh/rok');
    setText('rk-temp35-result-high-energy', formatNumber(highEnergy, 0) + ' kWh/rok');
    setText('rk-temp35-result-energy-difference', signed(energyDifference, 0, 'kWh/rok'));
    setText('rk-temp35-result-low-cost', formatNumber(lowCost, 0) + ' zł/rok');
    setText('rk-temp35-result-high-cost', formatNumber(highCost, 0) + ' zł/rok');
    setText('rk-temp35-result-period-difference', signed(periodDifference, 0, 'zł'));
    setText(
      'rk-temp35-scop-equation',
      formatNumber(annualHeat, 0) + ' kWh ÷ ' + formatNumber(lowScop, 1) + ' = ' +
      formatNumber(lowEnergy, 0) + ' kWh prądu; ' + formatNumber(annualHeat, 0) +
      ' kWh ÷ ' + formatNumber(highScop, 1) + ' = ' + formatNumber(highEnergy, 0) + ' kWh prądu.'
    );

    if (energyDifference > 0) {
      setStatus(
        'Z wpisanych wartości wynika, że wariant ' + formatNumber(highTemperature, 0) + '°C zużywa o ' +
        formatNumber(energyDifference, 0) + ' kWh/rok więcej, czyli o ' + formatNumber(percentageDifference, 1) +
        '%. To porównanie danych wejściowych, nie prognoza SCOP z temperatury.',
        'is-good'
      );
    } else if (Math.abs(energyDifference) < 0.5) {
      setStatus('Wpisane wartości SCOP dają praktycznie takie samo zużycie energii w obu wariantach.', 'is-good');
    } else {
      setStatus(
        'Wpisane dane pokazują mniejsze zużycie dla wariantu o wyższej temperaturze. Sprawdź, czy wartości SCOP pochodzą z porównywalnych warunków i tego samego urządzenia.',
        'is-warning'
      );
    }

    lastScop = {
      lowTemperature: lowTemperature,
      highTemperature: highTemperature,
      lowEnergy: lowEnergy,
      highEnergy: highEnergy,
      difference: energyDifference,
      years: years,
      periodDifference: periodDifference
    };
    drawChart();
  }

  function svgElement(name, attributes, content) {
    var element = document.createElementNS(svgNamespace, name);
    Object.keys(attributes).forEach(function (key) {
      element.setAttribute(key, attributes[key]);
    });
    if (typeof content === 'string') element.textContent = content;
    return element;
  }

  function appendSvg(parent, name, attributes, content) {
    var element = svgElement(name, attributes, content);
    parent.appendChild(element);
    return element;
  }

  function drawBarChart(data, unit, title, description, reading) {
    var svg = byId('rk-temp35-comparison-chart');
    if (!svg) return;
    while (svg.firstChild) svg.removeChild(svg.firstChild);

    appendSvg(svg, 'title', { id: 'rk-temp35-chart-title-svg' }, title);
    appendSvg(svg, 'desc', { id: 'rk-temp35-chart-desc' }, description);

    var renderedWidth = 760;
    var wrap = byId('rk-temp35-chart-wrap');
    if (wrap) {
      var measuredWidth = Number(wrap.clientWidth);
      if (Number.isFinite(measuredWidth)) {
        if (measuredWidth > 0) renderedWidth = measuredWidth;
      }
    }
    var compact = renderedWidth < 560;
    var width = compact ? 420 : 760;
    var height = 330;
    var left = compact ? 18 : 205;
    var right = compact ? 24 : 78;
    var top = compact ? 88 : 70;
    var plotWidth = width - left - right;
    var maxValue = Math.max(data[0].value, data[1].value, 1) * 1.12;
    var ticks = 4;

    svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);

    appendSvg(svg, 'text', { x: left, y: 31, class: 'rk-temp35-chart-unit' }, unit);
    for (var tick = 0; tick <= ticks; tick += 1) {
      var ratio = tick / ticks;
      var x = left + plotWidth * ratio;
      appendSvg(svg, 'line', {
        x1: x,
        y1: top - 10,
        x2: x,
        y2: height - 44,
        class: 'rk-temp35-chart-grid-line'
      });
      appendSvg(svg, 'text', {
        x: x,
        y: height - 18,
        'text-anchor': 'middle',
        class: 'rk-temp35-chart-tick'
      }, formatNumber(maxValue * ratio, 0));
    }

    data.forEach(function (item, index) {
      var y = top + index * 105;
      var barWidth = Math.max(2, plotWidth * item.value / maxValue);
      appendSvg(svg, 'text', {
        x: compact ? left : 18,
        y: compact ? y - 10 : y + 31,
        class: 'rk-temp35-chart-label'
      }, item.label);
      appendSvg(svg, 'rect', {
        x: left,
        y: y,
        width: barWidth,
        height: 48,
        rx: 10,
        class: 'rk-temp35-chart-bar ' + item.className
      });

      var valueInside = barWidth >= 105;
      var valueX = valueInside ? left + barWidth - 12 : left + barWidth + 10;
      appendSvg(svg, 'text', {
        x: valueX,
        y: y + 31,
        'text-anchor': valueInside ? 'end' : 'start',
        class: valueInside ? 'rk-temp35-chart-value is-inside' : 'rk-temp35-chart-value'
      }, formatNumber(item.value, 0));
    });

    setText('rk-temp35-chart-visible-title', title);
    var readingElement = byId('rk-temp35-chart-reading');
    if (readingElement) readingElement.innerHTML = reading;
  }

  function drawChart() {
    if (mode === 'scop') {
      if (!lastScop) return;
      var scopReading;
      if (lastScop.difference >= 0) {
        scopReading = '<strong>Różnica:</strong> wariant ' + formatNumber(lastScop.highTemperature, 0) +
          '°C wymaga według wpisanych SCOP o ' + formatNumber(lastScop.difference, 0) +
          ' kWh energii elektrycznej rocznie więcej.';
      } else {
        scopReading = '<strong>Sprawdź dane:</strong> wpisane SCOP dają niższe zużycie wariantowi ' +
          formatNumber(lastScop.highTemperature, 0) + '°C.';
      }
      drawBarChart(
        [
          { label: 'Wariant ' + formatNumber(lastScop.lowTemperature, 0) + '°C', value: lastScop.lowEnergy, className: 'is-low' },
          { label: 'Wariant ' + formatNumber(lastScop.highTemperature, 0) + '°C', value: lastScop.highEnergy, className: 'is-high' }
        ],
        'Zużycie energii elektrycznej [kWh/rok]',
        'Roczne zużycie energii na podstawie wpisanych wartości SCOP',
        'Wykres porównuje roczne zużycie energii elektrycznej obliczone z użytecznego ciepła i wpisanych wartości SCOP.',
        scopReading
      );
      return;
    }

    if (!lastBalance) return;
    var balanceReading;
    if (lastBalance.balance > 0) {
      balanceReading = '<strong>Rezerwa:</strong> dostępna moc jest wyższa od obciążenia o ' +
        formatNumber(lastBalance.balance, 0) + ' W.';
    } else if (lastBalance.balance < 0) {
      balanceReading = '<strong>Deficyt:</strong> dostępna moc jest niższa od obciążenia o ' +
        formatNumber(Math.abs(lastBalance.balance), 0) + ' W.';
    } else {
      balanceReading = '<strong>Bilans:</strong> dostępna moc odpowiada projektowemu obciążeniu pomieszczenia.';
    }
    drawBarChart(
      [
        { label: 'Obciążenie pomieszczenia', value: lastBalance.required, className: 'is-required' },
        { label: 'Moc dostępna z podłogi', value: lastBalance.available, className: 'is-available' }
      ],
      'Moc [W]',
      'Bilans mocy pomieszczenia dla ' + formatNumber(lastBalance.supply, 1) + '/' +
        formatNumber(lastBalance.returnTemperature, 1) + '°C',
      'Wykres porównuje projektowe obciążenie pomieszczenia z mocą dostępną z czynnej powierzchni podłogi.',
      balanceReading
    );
  }

  function selectMode(nextMode, focusTab) {
    mode = nextMode === 'scop' ? 'scop' : 'balance';
    each('[data-rk-temp35-mode]', function (button) {
      var selected = button.getAttribute('data-rk-temp35-mode') === mode;
      button.setAttribute('aria-selected', selected ? 'true' : 'false');
      if (selected) {
        button.removeAttribute('tabindex');
        if (focusTab) button.focus();
      } else {
        button.setAttribute('tabindex', '-1');
      }
    });

    var balancePanel = byId('rk-temp35-panel-balance');
    var scopPanel = byId('rk-temp35-panel-scop');
    if (balancePanel) balancePanel.hidden = mode !== 'balance';
    if (scopPanel) scopPanel.hidden = mode !== 'scop';
    if (mode === 'scop') calculateScop();
    else calculateBalance();
  }

  var scenarios = {
    insulation: {
      components: {
        weather: ['Bez zmian', 'Temperatura obliczeniowa lokalizacji pozostaje taka sama.', 'muted'],
        load: ['Maleje', 'Lepsza izolacyjność ogranicza moc potrzebną do utrzymania temperatury.', 'active'],
        area: ['Bez zmian', 'Dostępny obszar grzewczy nie zmienia się.', 'muted'],
        emission: ['Maleją', 'Ta sama podłoga musi przekazać mniej energii na każdy metr kwadratowy.', 'active'],
        water: ['Może być niższa', 'Do uzyskania mniejszej mocy może wystarczyć niższa średnia temperatura czynnika.', 'active'],
        pump: ['Korzystniejszy punkt', 'Mniejszy wymagany poziom temperatury może poprawić warunki pracy urządzenia.', 'active']
      },
      title: 'Mniejsze straty budynku otwierają drogę do niższej temperatury.',
      copy: 'Obciążenie na metr czynnej powierzchni maleje. Nie oznacza to automatycznie konkretnej wartości — trzeba ponownie odczytać moc systemu dla jego konstrukcji.'
    },
    area: {
      components: {
        weather: ['Bez zmian', 'Warunki zewnętrzne i lokalizacja pozostają takie same.', 'muted'],
        load: ['Bez zmian', 'Pomieszczenie nadal traci tę samą projektową moc.', 'muted'],
        area: ['Maleje', 'Stała zabudowa ogranicza fragment powierzchni, który może oddawać ciepło.', 'warning'],
        emission: ['Rosną', 'Ta sama moc musi zostać przekazana przez mniejszą liczbę metrów kwadratowych.', 'warning'],
        water: ['Może być wyższa', 'Jeżeli system nie osiąga wymaganych W/m², może wymagać zmiany geometrii lub temperatury.', 'warning'],
        pump: ['Trudniejszy punkt', 'Wyższy wymagany poziom temperatury może pogarszać warunki pracy źródła.', 'warning']
      },
      title: 'Mniejsza powierzchnia czynna zwiększa wymaganie W/m².',
      copy: 'Najpierw sprawdź możliwość uwolnienia powierzchni lub zmianę systemu. Podnoszenie temperatury jest jedną z opcji, ale nie pierwszym automatycznym ruchem.'
    },
    covering: {
      components: {
        weather: ['Bez zmian', 'Temperatura zewnętrzna nie zależy od wyboru okładziny.', 'muted'],
        load: ['Bez zmian', 'Straty pomieszczenia pozostają takie same.', 'muted'],
        area: ['Bez zmian', 'W przykładzie zmienia się materiał, a nie ogrzewany obszar.', 'muted'],
        emission: ['Trudniejsza', 'Większy opór warstw ogranicza moc przy tej samej temperaturze wody.', 'warning'],
        water: ['Może być wyższa', 'Do pokrycia tej samej mocy może być potrzebna większa różnica temperatur.', 'warning'],
        pump: ['Mniej korzystny punkt', 'Wyższy parametr może zwiększyć wymagane podniesienie temperatury.', 'warning']
      },
      title: 'Większy opór okładziny ogranicza zdolność oddawania ciepła.',
      copy: 'Nie wolno jednak przekraczać ograniczeń producenta podłogi. Rozwiązaniem może być także redukcja strat, większa powierzchnia albo dodatkowy emiter.'
    },
    spacing: {
      components: {
        weather: ['Bez zmian', 'Warunki zewnętrzne nie zależą od rozstawu rur.', 'muted'],
        load: ['Bez zmian', 'Zagęszczenie rury nie zmienia strat pomieszczenia.', 'muted'],
        area: ['Bez zmian', 'Czynny obszar podłogi pozostaje taki sam.', 'muted'],
        emission: ['Wymaganie bez zmian', 'Potrzebne W/m² nadal wynikają z obciążenia i powierzchni.', 'muted'],
        water: ['Może być niższa', 'Korzystniejsza charakterystyka systemu może pokryć tę samą moc przy niższym parametrze.', 'active'],
        pump: ['Bilans do sprawdzenia', 'Niższa temperatura może pomóc źródłu, ale większa długość rur zmienia hydraulikę.', 'active']
      },
      title: 'Gęstszy rozstaw może obniżyć wymagany parametr, lecz zwiększa długość rur.',
      copy: 'Korzyść cieplną trzeba zestawić z liczbą pętli, oporami, przepływem, kosztami i możliwościami wykonawczymi.'
    }
  };

  function selectScenario(name) {
    var scenario = scenarios[name] || scenarios.insulation;
    each('[data-rk-temp35-scenario]', function (button) {
      button.setAttribute('aria-pressed', button.getAttribute('data-rk-temp35-scenario') === name ? 'true' : 'false');
    });

    each('[data-rk-temp35-component]', function (card) {
      var key = card.getAttribute('data-rk-temp35-component');
      var item = scenario.components[key];
      if (!item) return;
      card.classList.remove('is-active');
      card.classList.remove('is-muted');
      card.classList.remove('is-warning');
      card.classList.add('is-' + item[2]);
      var value = card.querySelector('[data-rk-temp35-component-value]');
      var copy = card.querySelector('[data-rk-temp35-component-copy]');
      if (value) value.textContent = item[0];
      if (copy) copy.textContent = item[1];
    });

    var result = byId('rk-temp35-scenario-result');
    if (result) result.innerHTML = '<strong>' + scenario.title + '</strong><p>' + scenario.copy + '</p>';
  }

  each('[data-rk-temp35-mode]', function (button, index) {
    button.addEventListener('click', function () {
      selectMode(button.getAttribute('data-rk-temp35-mode'), false);
    });
    button.addEventListener('keydown', function (event) {
      if (['ArrowRight', 'ArrowLeft'].indexOf(event.key) === -1) return;
      event.preventDefault();
      var nextIndex = event.key === 'ArrowRight' ? index + 1 : index - 1;
      var tabs = root.querySelectorAll('[data-rk-temp35-mode]');
      if (nextIndex >= tabs.length) nextIndex = 0;
      if (nextIndex < 0) nextIndex = tabs.length - 1;
      selectMode(tabs[nextIndex].getAttribute('data-rk-temp35-mode'), true);
    });
  });

  each('#rk-temp35-calculator-tool input', function (input) {
    input.addEventListener('input', function () {
      if (mode === 'scop') calculateScop();
      else calculateBalance();
    });
  });

  each('[data-rk-temp35-scenario]', function (button) {
    button.addEventListener('click', function () {
      selectScenario(button.getAttribute('data-rk-temp35-scenario'));
    });
  });

  calculateBalance();
  calculateScop();
  selectMode('balance', false);
  selectScenario('insulation');

  if (typeof window !== 'undefined') {
    window.addEventListener('resize', function () {
      if (resizeTimer) window.clearTimeout(resizeTimer);
      resizeTimer = window.setTimeout(drawChart, 100);
    });
  }
}());
</script>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "description": "Profesjonalne projektowanie ogrzewania podłogowego i poradniki techniczne HVAC.",
      "inLanguage": "pl-PL",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://projekt-ogrzewania.pl/?s={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": {
        "@id": "https://projekt-ogrzewania.pl/#logo"
      },
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      }
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#logo",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "width": 1024,
      "height": 1024,
      "caption": "Projekt Ogrzewania"
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "affiliation": [
        {
          "@id": "https://remont.biz.pl/#organization"
        },
        {
          "@id": "https://sobir.pl/#organization"
        }
      ],
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "obliczenia OZC",
        "temperatura zasilania",
        "hydraulika instalacji",
        "krzywa grzewcza"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Niska-temperatura-zasilania-pompy-ciepla-–-dlaczego-35-stopni-to-ideal-dla-podlogowki.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Niska-temperatura-zasilania-pompy-ciepla-–-dlaczego-35-stopni-to-ideal-dla-podlogowki.webp",
      "width": 900,
      "height": 900,
      "caption": "Niska temperatura zasilania pompy ciepła i ogrzewania podłogowego"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Pompa ciepła",
          "item": "https://projekt-ogrzewania.pl/pompa-ciepla/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Temperatura zasilania pompy ciepła",
          "item": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webpage",
      "url": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/",
      "name": "Temperatura zasilania pompy ciepła – czy 35°C wystarczy?",
      "description": "Czy 35°C wystarczy do podłogówki z pompą ciepła? Sprawdź wpływ OZC, powierzchni czynnej i okładziny na dobór zasilania, COP oraz koszty pracy.",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#breadcrumb"
      },
      "primaryImageOfPage": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#primaryimage"
      },
      "datePublished": "2026-04-17T10:17:48+00:00",
      "dateModified": "2026-09-11T00:00:00+00:00",
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article"
      },
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "#rk-temp35-answer",
          "#rk-temp35-conclusions"
        ]
      }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article",
      "url": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/",
      "headline": "Temperatura zasilania pompy ciepła do podłogówki – czy 35°C zawsze wystarczy?",
      "alternativeHeadline": "Czy zasilanie 35°C jest optymalne dla podłogówki z pompą ciepła?",
      "description": "Czy 35°C wystarczy do podłogówki z pompą ciepła? Sprawdź wpływ OZC, powierzchni czynnej i okładziny na dobór zasilania, COP oraz koszty pracy.",
      "image": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#primaryimage"
      },
      "thumbnailUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Niska-temperatura-zasilania-pompy-ciepla-–-dlaczego-35-stopni-to-ideal-dla-podlogowki.webp",
      "datePublished": "2026-04-17T10:17:48+00:00",
      "dateModified": "2026-09-11T00:00:00+00:00",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "wordCount": 4433,
      "timeRequired": "PT39M",
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webpage"
      },
      "articleSection": [
        "Temperatura zasilania ogrzewania podłogowego",
        "Pompa ciepła i sprawność",
        "Moc powierzchniowa podłogi",
        "Krzywa grzewcza",
        "Hydraulika i przepływ",
        "Bufor i sterowanie"
      ],
      "keywords": [
        "temperatura zasilania pompy ciepła",
        "czy 35°C wystarczy do podłogówki",
        "parametr 35/30°C",
        "jaka temperatura podłogówki przy pompie ciepła",
        "COP a temperatura zasilania",
        "SCOP pompy ciepła",
        "krzywa grzewcza ogrzewania podłogowego",
        "przepływ podłogówki przy ΔT 5 K"
      ],
      "about": [
        {
          "@type": "Thing",
          "name": "Pompa ciepła"
        },
        {
          "@type": "Thing",
          "name": "Wodne ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Temperatura zasilania"
        },
        {
          "@type": "Thing",
          "name": "Sezonowy współczynnik efektywności SCOP"
        }
      ],
      "citation": [
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html",
        "https://www.gov.uk/government/news/heat-pumps-explained-experts-answer-your-questions"
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#calculator-app"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dependency-app"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#checklist-schema"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#faq-schema"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#calculator-app",
      "url": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#rk-temp35-calculator",
      "name": "Kalkulator bilansu 35/30°C i porównania kosztów na podstawie SCOP",
      "description": "Sprawdza bilans mocy jednego pomieszczenia i porównuje roczne zużycie oraz koszt dwóch wariantów na podstawie danych wpisanych przez użytkownika.",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "featureList": [
        "obliczenie wymaganej mocy jednostkowej",
        "bilans obciążenia i dostępnej mocy",
        "przepływ dla wpisanego ΔT",
        "porównanie zużycia na podstawie SCOP",
        "responsywny wykres wyników"
      ],
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article"
      }
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dependency-app",
      "url": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#rk-temp35-graphic",
      "name": "Interaktywna grafika zależności temperatury zasilania",
      "description": "Pokazuje, jak straty budynku, powierzchnia czynna, okładzina i rozstaw rur wpływają na wymagane W/m², temperaturę wody i warunki pracy pompy ciepła.",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "featureList": [
        "cztery scenariusze zmian",
        "sześć modułów zależności",
        "interpretacja bez uniwersalnych temperatur",
        "układ responsywny dla desktopu i telefonu"
      ],
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#howto",
      "url": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#rk-temp35-checklist",
      "name": "Jak sprawdzić, czy 35/30°C wystarczy do ogrzewania podłogowego",
      "description": "Proces od obciążenia pomieszczeń do weryfikacji źródła, hydrauliki i regulacji.",
      "inLanguage": "pl-PL",
      "totalTime": "PT10M",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Oblicz OZC pomieszczeń",
          "text": "Wyznacz projektowe straty ciepła dla właściwych warunków zewnętrznych i temperatur wnętrz."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Ustal powierzchnie czynne",
          "text": "Odejmij trwałą zabudowę i skoordynuj aktywną podłogę z aranżacją."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Oblicz wymagane W/m²",
          "text": "Podziel obciążenie każdego pomieszczenia przez jego powierzchnię czynną."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Sprawdź konstrukcję i okładzinę",
          "text": "Uwzględnij warstwy podłogi, ich opór oraz ograniczenia producentów."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Zweryfikuj moc przy 35/30°C",
          "text": "Porównaj wymaganie z charakterystyką konkretnego systemu dla przyjętego rozstawu i temperatur."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Policz przepływy i opory",
          "text": "Wyznacz przepływy z mocy i ΔT, a następnie sprawdź pętle oraz drogę krytyczną."
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Sprawdź wymagania pompy ciepła",
          "text": "Porównaj moc, punkt pracy, minimalny przepływ, zład, modulację i sposób sterowania."
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Ustaw i zweryfikuj krzywą",
          "text": "Uruchom układ z nastawami projektowymi i koryguj krzywą małymi krokami po ustabilizowaniu instalacji."
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#checklist-schema",
      "url": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#rk-temp35-checklist",
      "name": "Lista kontrolna instalacji 35/30°C",
      "numberOfItems": 14,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Lokalizacja i warunki obliczeniowe",
          "description": "Czy przyjęto właściwą temperaturę zewnętrzną i warunki brzegowe budynku?"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "OZC każdego pomieszczenia",
          "description": "Czy znane jest projektowe obciążenie w watach, a nie tylko wskaźnik całego domu?"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Powierzchnia czynna",
          "description": "Czy odjęto trwałą zabudowę i skoordynowano układ z aranżacją?"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Temperatura pomieszczenia",
          "description": "Czy łazienka, salon i sypialnie mają właściwe założenia projektowe?"
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Konstrukcja podłogi",
          "description": "Czy znane są jastrych, położenie rury i wszystkie warstwy nad nią?"
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Okładzina i jej ograniczenia",
          "description": "Czy sprawdzono łączny opór cieplny oraz warunki producentów materiałów?"
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Moc przy docelowym parametrze",
          "description": "Czy W/m² pochodzi z obliczenia lub właściwej tabeli systemu dla 35/30°C?"
        },
        {
          "@type": "ListItem",
          "position": 8,
          "name": "Temperatura powierzchni",
          "description": "Czy obliczony strumień nie narusza warunków komfortu i zastosowanych materiałów?"
        },
        {
          "@type": "ListItem",
          "position": 9,
          "name": "Rozstaw i trasy rur",
          "description": "Czy geometria pokrywa obciążenie i daje wykonalne długości pętli?"
        },
        {
          "@type": "ListItem",
          "position": 10,
          "name": "ΔT i przepływy",
          "description": "Czy dla każdej pętli obliczono strumień odpowiadający jej mocy?"
        },
        {
          "@type": "ListItem",
          "position": 11,
          "name": "Opory i pompa obiegowa",
          "description": "Czy droga krytyczna mieści się w osiągalnym punkcie pracy?"
        },
        {
          "@type": "ListItem",
          "position": 12,
          "name": "Dane pompy ciepła",
          "description": "Czy moc, COP lub SCOP, zakres modulacji i ograniczenia odczytano dla właściwych warunków?"
        },
        {
          "@type": "ListItem",
          "position": 13,
          "name": "Minimalny przepływ, zład i sterowanie",
          "description": "Czy układ spełnia wymagania źródła także po zamknięciu części stref?"
        },
        {
          "@type": "ListItem",
          "position": 14,
          "name": "Dokumentacja i uruchomienie",
          "description": "Czy zapisano krzywą, przepływy, nastawy, próby oraz sposób późniejszej korekty?"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#faq-schema",
      "url": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#rk-temp35-faq",
      "name": "FAQ — temperatura zasilania pompy ciepła i podłogówki",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy 35°C zawsze wystarczy do ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Wystarczy tylko wtedy, gdy moc podłogi przy przyjętym zasilaniu, powrocie, konstrukcji i okładzinie pokrywa obciążenie każdego pomieszczenia. W domu o małych stratach może wystarczyć mniej, a w trudnym pomieszczeniu może być potrzebna zmiana emitera lub wyższy parametr."
          }
        },
        {
          "@type": "Question",
          "name": "Czy 35°C jest temperaturą wymaganą przez normę?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie należy przedstawiać jej jako jednej temperatury nakazanej dla wszystkich instalacji. Metody projektowe służą do określania mocy i wymiarowania systemu, dlatego wynik zależy od warunków pomieszczenia, powierzchni, konstrukcji i geometrii."
          }
        },
        {
          "@type": "Question",
          "name": "Co dokładnie oznacza zapis 35/30°C?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Najczęściej oznacza projektową temperaturę zasilania 35°C i powrotu 30°C, czyli ΔT równe 5 K. Nie jest to temperatura podłogi ani powietrza w pomieszczeniu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy niższa temperatura zasilania zawsze zwiększa COP?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Niższy wymagany poziom temperatury może poprawiać warunki pracy pompy, lecz dokładny skutek zależy od dolnego źródła, pogody, obciążenia i konstrukcji urządzenia. Warto porównywać dane tego samego modelu w tych samych warunkach."
          }
        },
        {
          "@type": "Question",
          "name": "Jak sprawdzić, czy parametr 35/30°C pokryje straty?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Podziel obciążenie pomieszczenia przez czynną powierzchnię podłogi, a otrzymane W/m² porównaj z mocą konkretnego systemu przy 35/30°C, właściwej temperaturze wnętrza, rozstawie i okładzinie. Następnie sprawdź temperaturę powierzchni oraz hydraulikę."
          }
        },
        {
          "@type": "Question",
          "name": "Czy rury trzeba zawsze układać co 10 cm przy pompie ciepła?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Rozstaw 10 cm może być uzasadniony obliczoną mocą i charakterystyką systemu, ale w części pomieszczeń wystarczający może być inny rozstaw. Trzeba równocześnie kontrolować długości, liczbę pętli, przepływy i opory."
          }
        },
        {
          "@type": "Question",
          "name": "Czy drewno na podłodze wyklucza zasilanie 35°C?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie automatycznie. Trzeba sprawdzić cały opór cieplny warstw, dopuszczenie produktu do podłogówki, warunki montażu i ograniczenia temperatury powierzchni. Następnie oblicza się, czy dostępna moc pokrywa obciążenie."
          }
        },
        {
          "@type": "Question",
          "name": "Czy podniesienie przepływu naprawi za niską moc podłogi?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie zawsze. Przepływ wpływa na ΔT i rozkład temperatury, ale nie może dowolnie zwiększyć mocy ograniczonej przez średnią temperaturę wody, powierzchnię oraz opór warstw. Najpierw trzeba ustalić przyczynę deficytu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy instalacja 35/30°C potrzebuje bufora?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Sam parametr nie rozstrzyga tej kwestii. Decydują wymagania producenta pompy, minimalny zład i przepływ, modulacja, odszranianie, sterowanie strefowe oraz funkcja hydrauliczna, którą bufor miałby pełnić."
          }
        },
        {
          "@type": "Question",
          "name": "Jak ustawić krzywą grzewczą dla podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Punkt projektowy wynika z obliczeń, a nachylenie i przesunięcie dopracowuje się podczas stabilnej pracy instalacji małymi krokami. Należy uwzględnić bezwładność podłogi i nie oceniać każdej zmiany po kilku minutach."
          }
        }
      ],
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webpage"
      }
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">Temperatura zasilania pompy ciepła – czy 35°C wystarczy?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</title>
		<link>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/</link>
					<comments>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 26 Mar 2026 10:11:32 +0000</pubDate>
				<category><![CDATA[Błędy budowlane]]></category>
		<category><![CDATA[Błędy instalacyjne]]></category>
		<category><![CDATA[Domy drewniane]]></category>
		<category><![CDATA[Domy szkieletowe]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty budowy domu]]></category>
		<category><![CDATA[Koszty inwestycji]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy zabudowy suchej]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[błędy instalacyjne]]></category>
		<category><![CDATA[dom drewniany]]></category>
		<category><![CDATA[dom szkieletowy]]></category>
		<category><![CDATA[jastrych cementowy]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[lamele aluminiowe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[projekt ozc]]></category>
		<category><![CDATA[system suchy]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4030</guid>

					<description><![CDATA[<p>Planowanie instalacji grzewczej w budynku o lekkiej konstrukcji drewnianej wymaga zupełnie innego podejścia niż w tradycyjnym budownictwie murowanym. Niska bezwładność cieplna, brak ciężkich ścian akumulujących energię oraz ryzyko przeciążenia stropów sprawiają, że standardowe schematy instalatorów często tutaj zawodzą. W tym artykule bierzemy pod lupę temat, jakim jest ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki, na które najczęściej wpadają inwestorzy. Dowiesz się, dlaczego system suchy deklasuje ciężką wylewkę, jak uniknąć kosztownego przewymiarowania rur, dlaczego optymalizacja temperatury zasilania jest kluczowa dla żywotności pompy ciepła, oraz o co dokładnie zapytać wykonawcę przed podpisaniem umowy.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-frame-guide {
    --rk-navy-950: #0b2232;
    --rk-navy-900: #102f42;
    --rk-navy-800: #17465c;
    --rk-blue: #0796bd;
    --rk-cyan: #29c4da;
    --rk-orange: #ff6846;
    --rk-yellow: #f3b51b;
    --rk-green: #15936f;
    --rk-red: #d84b4b;
    --rk-purple: #6d62c8;
    --rk-ink: #102739;
    --rk-text: #40566a;
    --rk-muted: #6e8293;
    --rk-line: #d3e2e9;
    --rk-soft: #f2f7f9;
    --rk-cyan-soft: #e9fbfe;
    --rk-orange-soft: #fff1ec;
    --rk-yellow-soft: #fff8df;
    --rk-green-soft: #eaf8f3;
    --rk-red-soft: #fff0ee;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 28px auto 68px;
    color: var(--rk-ink);
    font-family: inherit;
    font-size: 17px;
    line-height: 1.72;
  }

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

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

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

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

  #rk-frame-guide .rk-frame-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 22px 64px rgba(16, 47, 66, 0.12);
  }

  #rk-frame-guide .rk-frame-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 76px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 5%, rgba(41, 196, 218, 0.32), transparent 29%),
      radial-gradient(circle at 5% 96%, rgba(255, 104, 70, 0.21), transparent 28%),
      linear-gradient(135deg, #0d2332 0%, #143e53 58%, #0b6680 100%);
  }

  #rk-frame-guide .rk-frame-hero::after {
    position: absolute;
    right: -74px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 44px solid rgba(255, 255, 255, 0.055);
    border-radius: 50%;
    content: "";
  }

  #rk-frame-guide .rk-frame-eyebrow {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: 0.69rem;
    font-weight: 950;
    letter-spacing: 0.09em;
    line-height: 1.2;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-eyebrow::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 104, 70, 0.14);
    content: "";
  }

  #rk-frame-guide .rk-frame-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.28rem);
    font-weight: 950;
    line-height: 1.01;
    letter-spacing: -0.055em;
  }

  #rk-frame-guide .rk-frame-hero-title span {
    color: #78efff;
  }

  #rk-frame-guide .rk-frame-hero-lead {
    position: relative;
    z-index: 1;
    max-width: 920px;
    margin: 0 0 24px;
    color: #d8e9ef;
    font-size: clamp(1.02rem, 2vw, 1.24rem);
    line-height: 1.67;
  }

  #rk-frame-guide .rk-frame-hero-tags {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin: 0 0 27px;
  }

  #rk-frame-guide .rk-frame-hero-tag {
    display: inline-flex;
    min-height: 38px;
    align-items: center;
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 999px;
    color: #eefcff;
    background: rgba(255, 255, 255, 0.075);
    font-size: 0.72rem;
    font-weight: 850;
    line-height: 1.3;
  }

  #rk-frame-guide .rk-frame-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    color: #bad3dc;
    font-size: 0.72rem;
    font-weight: 720;
  }

  #rk-frame-guide .rk-frame-byline strong,
  #rk-frame-guide .rk-frame-byline a {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-byline a {
    text-decoration: none;
  }

  #rk-frame-guide .rk-frame-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    padding: 22px 28px;
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-nav-label {
    display: inline-flex;
    align-items: center;
    padding: 7px 2px;
    color: var(--rk-navy-900);
    font-size: 0.68rem;
    font-weight: 950;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-nav a {
    display: inline-flex;
    min-height: 39px;
    align-items: center;
    padding: 8px 13px;
    border: 1px solid transparent;
    border-radius: 999px;
    color: var(--rk-ink);
    background: var(--rk-soft);
    font-size: 0.73rem;
    font-weight: 850;
    line-height: 1.25;
    text-decoration: none;
  }

  #rk-frame-guide .rk-frame-nav a:hover,
  #rk-frame-guide .rk-frame-nav a:focus-visible {
    border-color: var(--rk-cyan);
    color: var(--rk-navy-900);
    background: var(--rk-cyan-soft);
  }

  #rk-frame-guide .rk-frame-main {
    padding: 0 clamp(22px, 5vw, 66px);
  }

  #rk-frame-guide .rk-frame-section {
    scroll-margin-top: 24px;
    padding: clamp(44px, 6vw, 70px) 0;
    border-bottom: 1px solid var(--rk-line);
  }

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

  #rk-frame-guide h2,
  #rk-frame-guide h3,
  #rk-frame-guide h4 {
    color: var(--rk-ink);
    font-weight: 930;
    letter-spacing: -0.025em;
  }

  #rk-frame-guide h2 {
    max-width: 940px;
    margin: 0 0 21px;
    font-size: clamp(1.62rem, 3.3vw, 2.52rem);
    line-height: 1.12;
  }

  #rk-frame-guide h3 {
    margin: 0 0 10px;
    font-size: clamp(1.08rem, 2vw, 1.33rem);
    line-height: 1.3;
  }

  #rk-frame-guide h4 {
    margin: 0 0 7px;
    font-size: 0.98rem;
    line-height: 1.35;
  }

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

  #rk-frame-guide p:last-child {
    margin-bottom: 0;
  }

  #rk-frame-guide .rk-frame-lead {
    max-width: 960px;
    color: #274356;
    font-size: 1.08rem;
    line-height: 1.78;
  }

  #rk-frame-guide ul,
  #rk-frame-guide ol {
    margin: 15px 0 0;
    padding-left: 1.25rem;
    color: var(--rk-text);
  }

  #rk-frame-guide li {
    margin: 8px 0;
  }

  #rk-frame-guide .rk-frame-answer,
  #rk-frame-guide .rk-frame-note,
  #rk-frame-guide .rk-frame-warning {
    margin: 24px 0;
    padding: 21px 23px;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 0 16px 16px 0;
    background: var(--rk-cyan-soft);
  }

  #rk-frame-guide .rk-frame-note {
    border-left-color: var(--rk-yellow);
    background: var(--rk-yellow-soft);
  }

  #rk-frame-guide .rk-frame-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-orange-soft);
  }

  #rk-frame-guide .rk-frame-answer p,
  #rk-frame-guide .rk-frame-note p,
  #rk-frame-guide .rk-frame-warning p {
    color: var(--rk-ink);
  }

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

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

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

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

  #rk-frame-guide .rk-frame-card {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 25px rgba(16, 47, 66, 0.055);
  }

  #rk-frame-guide .rk-frame-card-accent {
    border-top: 5px solid var(--rk-cyan);
  }

  #rk-frame-guide .rk-frame-card-orange {
    border-top-color: var(--rk-orange);
  }

  #rk-frame-guide .rk-frame-card-green {
    border-top-color: var(--rk-green);
  }

  #rk-frame-guide .rk-frame-card-purple {
    border-top-color: var(--rk-purple);
  }

  #rk-frame-guide .rk-frame-tag {
    display: inline-flex;
    margin-bottom: 11px;
    padding: 5px 9px;
    border-radius: 999px;
    color: var(--rk-navy-900);
    background: var(--rk-cyan-soft);
    font-size: 0.67rem;
    font-weight: 900;
    letter-spacing: 0.04em;
    line-height: 1.2;
    text-transform: uppercase;
  }

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

  #rk-frame-guide .rk-frame-step {
    position: relative;
    padding: 20px 17px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-soft);
  }

  #rk-frame-guide .rk-frame-step-num {
    display: inline-flex;
    width: 31px;
    height: 31px;
    align-items: center;
    justify-content: center;
    margin-bottom: 12px;
    border-radius: 10px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.74rem;
    font-weight: 950;
  }

  #rk-frame-guide .rk-frame-step p {
    font-size: 0.86rem;
    line-height: 1.58;
  }

  #rk-frame-guide .rk-frame-table-wrap {
    overflow: hidden;
    margin: 24px 0;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
  }

  #rk-frame-guide .rk-frame-table {
    width: 100%;
    margin: 0;
    border: 0;
    border-collapse: collapse;
    table-layout: fixed;
  }

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

  #rk-frame-guide .rk-frame-table th {
    color: var(--rk-white);
    background: var(--rk-navy-900);
    font-size: 0.76rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-frame-guide .rk-frame-table td {
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: 0.86rem;
    line-height: 1.58;
  }

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

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

  #rk-frame-guide .rk-frame-code-line {
    display: block;
    margin: 22px 0;
    padding: 18px 20px;
    border: 1px dashed #90adba;
    border-radius: 14px;
    color: var(--rk-navy-900);
    background: #f8fbfc;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(0.76rem, 1.5vw, 0.92rem);
    line-height: 1.6;
    overflow-wrap: anywhere;
  }

  #rk-frame-guide .rk-frame-tool {
    overflow: hidden;
    margin: 28px 0 0;
    border: 1px solid #2d586d;
    border-radius: 24px;
    color: var(--rk-white);
    background: var(--rk-navy-950);
    box-shadow: 0 20px 42px rgba(11, 34, 50, 0.2);
  }

  #rk-frame-guide .rk-frame-tool-head {
    padding: 27px clamp(20px, 4vw, 38px);
    border-bottom: 1px solid #2d586d;
    background: linear-gradient(130deg, #11384c, #17657a);
  }

  #rk-frame-guide .rk-frame-tool-kicker {
    display: block;
    margin-bottom: 7px;
    color: #6feaff;
    font-size: 0.68rem;
    font-weight: 950;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-tool-head h3 {
    margin: 0 0 8px;
    color: var(--rk-white);
    font-size: clamp(1.4rem, 3vw, 2.1rem);
  }

  #rk-frame-guide .rk-frame-tool-head p {
    max-width: 930px;
    color: #c8e0e8;
  }

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

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

  #rk-frame-guide .rk-frame-field {
    padding: 16px;
    border: 1px solid #315a6e;
    border-radius: 15px;
    background: rgba(255, 255, 255, 0.045);
  }

  #rk-frame-guide .rk-frame-field label {
    display: block;
    margin-bottom: 8px;
    color: #edfaff;
    font-size: 0.78rem;
    font-weight: 850;
    line-height: 1.4;
  }

  #rk-frame-guide .rk-frame-field small {
    display: block;
    margin-top: 7px;
    color: #8fb4c3;
    font-size: 0.66rem;
    line-height: 1.45;
  }

  #rk-frame-guide .rk-frame-field select {
    width: 100%;
    min-height: 47px;
    padding: 10px 36px 10px 12px;
    border: 1px solid #aac0ca;
    border-radius: 10px;
    color: var(--rk-ink);
    background: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-tool-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin: 20px 0 0;
  }

  #rk-frame-guide .rk-frame-reset {
    min-height: 44px;
    padding: 10px 17px;
    border: 1px solid #56798a;
    border-radius: 11px;
    color: var(--rk-white);
    background: transparent;
    font-weight: 850;
    cursor: pointer;
  }

  #rk-frame-guide .rk-frame-reset:hover,
  #rk-frame-guide .rk-frame-reset:focus-visible {
    border-color: var(--rk-cyan);
    background: rgba(41, 196, 218, 0.11);
  }

  #rk-frame-guide .rk-frame-result {
    margin-top: 24px;
    padding: 24px;
    border: 1px solid #426a7d;
    border-radius: 19px;
    background: #143447;
  }

  #rk-frame-guide .rk-frame-status {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 15px;
    align-items: center;
    padding: 18px;
    border-left: 5px solid var(--rk-yellow);
    border-radius: 13px;
    background: rgba(243, 181, 27, 0.11);
  }

  #rk-frame-guide .rk-frame-status[data-state="complete"] {
    border-left-color: var(--rk-green);
    background: rgba(21, 147, 111, 0.14);
  }

  #rk-frame-guide .rk-frame-status[data-state="missing"] {
    border-left-color: var(--rk-red);
    background: rgba(216, 75, 75, 0.14);
  }

  #rk-frame-guide .rk-frame-status-icon {
    display: inline-flex;
    width: 48px;
    height: 48px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-navy-950);
    background: var(--rk-yellow);
    font-size: 1.2rem;
    font-weight: 950;
  }

  #rk-frame-guide .rk-frame-status[data-state="complete"] .rk-frame-status-icon {
    color: var(--rk-white);
    background: var(--rk-green);
  }

  #rk-frame-guide .rk-frame-status[data-state="missing"] .rk-frame-status-icon {
    color: var(--rk-white);
    background: var(--rk-red);
  }

  #rk-frame-guide .rk-frame-status h4 {
    margin: 0 0 4px;
    color: var(--rk-white);
    font-size: 1.02rem;
  }

  #rk-frame-guide .rk-frame-status p {
    color: #c5dce5;
    font-size: 0.83rem;
    line-height: 1.55;
  }

  #rk-frame-guide .rk-frame-mark-preview {
    margin: 18px 0;
    padding: 15px 18px;
    border: 1px dashed #5d8293;
    border-radius: 12px;
    color: #dbf7fb;
    background: #0e2939;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.77rem;
    line-height: 1.55;
    overflow-wrap: anywhere;
  }

  #rk-frame-guide .rk-frame-visual {
    margin: 18px 0;
    padding: 20px;
    border: 1px solid #315a6e;
    border-radius: 16px;
    background: #0f2b3b;
  }

  #rk-frame-guide .rk-frame-visual h4 {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-layer-set {
    display: none;
    gap: 7px;
    margin-top: 15px;
  }

  #rk-frame-guide .rk-frame-layers.is-three .rk-frame-layer-three,
  #rk-frame-guide .rk-frame-layers.is-five .rk-frame-layer-five,
  #rk-frame-guide .rk-frame-layers.is-unknown .rk-frame-layer-unknown {
    display: grid;
  }

  #rk-frame-guide .rk-frame-layer-three {
    grid-template-columns: 5fr 1fr 1.2fr;
  }

  #rk-frame-guide .rk-frame-layer-five {
    grid-template-columns: 4.2fr 0.8fr 1.1fr 0.8fr 2.1fr;
  }

  #rk-frame-guide .rk-frame-layer-unknown {
    grid-template-columns: 1fr;
  }

  #rk-frame-guide .rk-frame-layer {
    display: flex;
    min-height: 86px;
    align-items: center;
    justify-content: center;
    padding: 9px;
    border-radius: 10px;
    color: var(--rk-navy-950);
    font-size: 0.68rem;
    font-weight: 900;
    line-height: 1.25;
    text-align: center;
  }

  #rk-frame-guide .rk-frame-layer-base {
    background: #d9eef3;
  }

  #rk-frame-guide .rk-frame-layer-adhesive {
    background: #f3c860;
  }

  #rk-frame-guide .rk-frame-layer-barrier {
    color: var(--rk-white);
    background: var(--rk-orange);
  }

  #rk-frame-guide .rk-frame-layer-protect {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-frame-guide .rk-frame-layer-neutral {
    color: #cfe4ec;
    background: #24495c;
  }

  #rk-frame-guide .rk-frame-visual-note {
    margin-top: 12px;
    color: #9ebdca;
    font-size: 0.72rem;
    line-height: 1.55;
  }

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

  #rk-frame-guide .rk-frame-evidence {
    padding: 18px;
    border: 1px solid #315a6e;
    border-radius: 15px;
    background: rgba(255, 255, 255, 0.035);
  }

  #rk-frame-guide .rk-frame-evidence h4 {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-evidence ul {
    margin-top: 8px;
    color: #c5dce5;
    font-size: 0.78rem;
    line-height: 1.5;
  }

  #rk-frame-guide .rk-frame-tool-foot {
    margin: 18px 0 0;
    color: #8fb1bf;
    font-size: 0.72rem;
    line-height: 1.55;
  }

  #rk-frame-guide .rk-frame-button,
  #rk-frame-guide a.rk-frame-button {
    display: inline-flex;
    min-height: 48px;
    align-items: center;
    justify-content: center;
    padding: 12px 20px;
    border: 0;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-orange);
    font-weight: 900;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
    box-shadow: 0 10px 25px rgba(255, 104, 70, 0.22);
    transition: transform 0.18s ease, box-shadow 0.18s ease;
  }

  #rk-frame-guide .rk-frame-button:hover,
  #rk-frame-guide .rk-frame-button:focus-visible {
    color: var(--rk-white);
    transform: translateY(-2px);
    box-shadow: 0 14px 30px rgba(255, 104, 70, 0.32);
  }

  #rk-frame-guide .rk-frame-cta {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 22px;
    align-items: center;
    margin: 30px 0 0;
    padding: 25px;
    border-radius: 19px;
    color: var(--rk-white);
    background: linear-gradient(130deg, var(--rk-navy-900), #17556c);
  }

  #rk-frame-guide .rk-frame-cta h3 {
    margin: 0 0 7px;
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-cta p {
    color: #d2e6ed;
    font-size: 0.88rem;
    line-height: 1.6;
  }

  #rk-frame-guide .rk-frame-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin: 24px 0;
    counter-reset: rk-frame-check;
  }

  #rk-frame-guide .rk-frame-check {
    position: relative;
    min-height: 90px;
    padding: 18px 18px 18px 63px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-soft);
    counter-increment: rk-frame-check;
  }

  #rk-frame-guide .rk-frame-check::before {
    position: absolute;
    top: 18px;
    left: 18px;
    display: inline-flex;
    width: 31px;
    height: 31px;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.72rem;
    font-weight: 950;
    content: counter(rk-frame-check);
  }

  #rk-frame-guide .rk-frame-check p {
    font-size: 0.84rem;
    line-height: 1.55;
  }

  #rk-frame-guide .rk-frame-myth {
    display: grid;
    grid-template-columns: 0.8fr 1.2fr;
    gap: 0;
    overflow: hidden;
    margin: 13px 0;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
  }

  #rk-frame-guide .rk-frame-myth > div {
    padding: 17px 19px;
  }

  #rk-frame-guide .rk-frame-myth > div:first-child {
    color: #882e2e;
    background: var(--rk-red-soft);
    font-weight: 900;
  }

  #rk-frame-guide .rk-frame-myth > div:last-child {
    color: var(--rk-text);
    background: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-faq {
    display: grid;
    gap: 11px;
    margin-top: 24px;
  }

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

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

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

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

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

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

  #rk-frame-guide .rk-frame-faq-answer p {
    font-size: 0.9rem;
  }

  #rk-frame-guide .rk-frame-sources {
    margin-top: 20px;
    padding: 20px 22px 20px 43px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-soft);
  }

  #rk-frame-guide .rk-frame-sources li {
    margin: 10px 0;
    font-size: 0.82rem;
    line-height: 1.55;
  }

  #rk-frame-guide .rk-frame-author {
    position: relative;
    scroll-margin-top: 24px;
    border-top: 1px solid var(--rk-line);
    background: #f4f9fb;
  }

  #rk-frame-guide .rk-frame-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
  }

  #rk-frame-guide .rk-frame-author-head {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: center;
    padding: 25px clamp(24px, 5vw, 54px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-author-head span:first-child {
    display: block;
    margin-bottom: 3px;
    color: var(--rk-blue);
    font-size: 0.67rem;
    font-weight: 950;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-author-head h2 {
    margin: 0;
    font-size: clamp(1.4rem, 2.5vw, 2rem);
  }

  #rk-frame-guide .rk-frame-author-mark {
    padding: 8px 12px;
    border-radius: 999px;
    color: var(--rk-navy-900);
    background: var(--rk-cyan-soft);
    font-size: 0.68rem;
    font-weight: 900;
    letter-spacing: 0.05em;
  }

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

  #rk-frame-guide .rk-frame-author-side {
    padding: 34px 28px;
    color: var(--rk-white);
    background: var(--rk-navy-950);
    text-align: center;
  }

  #rk-frame-guide .rk-frame-author-photo {
    width: 162px;
    height: 162px;
    margin: 0 auto 19px;
    overflow: hidden;
    border: 6px solid rgba(255, 255, 255, 0.16);
    border-radius: 50%;
    background: var(--rk-white);
  }

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

  #rk-frame-guide .rk-frame-author-name a {
    color: var(--rk-white);
    font-size: 1.18rem;
    font-weight: 950;
    text-decoration: none;
  }

  #rk-frame-guide .rk-frame-author-role {
    margin-top: 8px;
    color: #b9d2dc;
    font-size: 0.78rem;
    line-height: 1.55;
  }

  #rk-frame-guide .rk-frame-author-social-label {
    margin: 25px 0 10px;
    color: #819fac;
    font-size: 0.65rem;
    font-weight: 900;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

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

  #rk-frame-guide .rk-frame-author-social a {
    display: inline-flex;
    width: 48px;
    height: 48px;
    align-items: center;
    justify-content: center;
    border: 1px solid #426375;
    border-radius: 50%;
    color: #d9edf4;
  }

  #rk-frame-guide .rk-frame-author-social a:hover,
  #rk-frame-guide .rk-frame-author-social a:focus-visible {
    border-color: var(--rk-cyan);
    color: var(--rk-white);
    background: rgba(41, 196, 218, 0.12);
  }

  #rk-frame-guide .rk-frame-author-social svg {
    width: 22px;
    height: 22px;
    fill: currentColor;
  }

  #rk-frame-guide .rk-frame-author-main {
    padding: 34px clamp(28px, 5vw, 52px);
  }

  #rk-frame-guide .rk-frame-author-quote {
    position: relative;
    margin: 0 0 24px;
    padding: 21px 24px 21px 65px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-author-quote::before {
    position: absolute;
    top: 8px;
    left: 23px;
    color: var(--rk-cyan);
    font-family: Georgia, serif;
    font-size: 3.1rem;
    line-height: 1;
    content: "“";
  }

  #rk-frame-guide .rk-frame-author-quote p {
    color: var(--rk-ink);
    font-weight: 800;
  }

  #rk-frame-guide .rk-frame-author-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 20px;
  }

  #rk-frame-guide .rk-frame-author-tab {
    padding: 9px 15px;
    border-radius: 999px;
    color: var(--rk-muted);
    background: #e5eef2;
    font-size: 0.72rem;
    font-weight: 900;
    cursor: pointer;
  }

  #rk-frame-guide .rk-frame-author-panel {
    display: none;
  }

  #rk-frame-guide .rk-frame-author-panel p {
    font-size: 0.9rem;
  }

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

  #rk-frame-author-about:checked ~ .rk-frame-author-layout label[for="rk-frame-author-about"],
  #rk-frame-author-exp:checked ~ .rk-frame-author-layout label[for="rk-frame-author-exp"],
  #rk-frame-author-sites:checked ~ .rk-frame-author-layout label[for="rk-frame-author-sites"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-frame-guide .rk-frame-final-wrap {
    padding: 32px clamp(22px, 5vw, 66px);
    border-top: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-final-wrap .rk-frame-cta {
    margin: 0;
  }

  #rk-frame-guide .rk-frame-footnote {
    padding: 18px 24px;
    color: #718594;
    background: #eef5f7;
    font-size: 0.7rem;
    line-height: 1.55;
    text-align: center;
  }

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

  #rk-frame-guide .rk-frame-field input:focus,
  #rk-frame-guide .rk-frame-field select:focus {
    border-color: var(--rk-cyan);
    box-shadow: 0 0 0 3px rgba(41, 196, 218, 0.16);
  }

  #rk-frame-guide .rk-frame-tool-group {
    margin-bottom: 20px;
    padding: 22px;
    border: 1px solid #315a6e;
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.035);
  }

  #rk-frame-guide .rk-frame-tool-group:last-child {
    margin-bottom: 0;
  }

  #rk-frame-guide .rk-frame-tool-group-head {
    display: flex;
    gap: 13px;
    align-items: flex-start;
    margin-bottom: 17px;
  }

  #rk-frame-guide .rk-frame-tool-group-num {
    display: inline-flex;
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    align-items: center;
    justify-content: center;
    border-radius: 10px;
    color: var(--rk-navy-950);
    background: var(--rk-cyan);
    font-size: 0.76rem;
    font-weight: 950;
  }

  #rk-frame-guide .rk-frame-tool-group-head h4 {
    margin: 0 0 3px;
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-tool-group-head p {
    color: #9fc2cf;
    font-size: 0.75rem;
    line-height: 1.48;
  }

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

  #rk-frame-guide .rk-frame-results {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-top: 18px;
  }

  #rk-frame-guide .rk-frame-result-card {
    min-width: 0;
    padding: 17px;
    border: 1px solid #3b6679;
    border-radius: 14px;
    background: #0f2c3c;
  }

  #rk-frame-guide .rk-frame-result-card span,
  #rk-frame-guide .rk-frame-result-card small {
    display: block;
    color: #8eb2c1;
    font-size: 0.65rem;
    line-height: 1.42;
  }

  #rk-frame-guide .rk-frame-result-card span {
    margin-bottom: 5px;
    font-weight: 900;
    letter-spacing: 0.045em;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-result-card strong {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-white);
    font-size: clamp(1.12rem, 2.2vw, 1.5rem);
    line-height: 1.14;
    overflow-wrap: anywhere;
  }

  #rk-frame-guide .rk-frame-result-card.is-cyan strong {
    color: #6feaff;
  }

  #rk-frame-guide .rk-frame-result-card.is-orange strong {
    color: #ff9b7f;
  }

  #rk-frame-guide .rk-frame-result-card.is-green strong {
    color: #64d9b8;
  }

  #rk-frame-guide .rk-frame-result-card.is-danger strong {
    color: #ff9287;
  }

  #rk-frame-guide .rk-frame-section-visual {
    margin-top: 18px;
    padding: 20px;
    border: 1px solid #315a6e;
    border-radius: 17px;
    background: #0d2939;
  }

  #rk-frame-guide .rk-frame-section-visual h4 {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-section-visual > p {
    color: #9fc0cd;
    font-size: 0.76rem;
  }

  #rk-frame-guide .rk-frame-cross-section {
    display: block;
    width: 100%;
    height: auto;
    margin-top: 13px;
    border: 1px solid #416c7e;
    border-radius: 14px;
    background: #f4fafc;
  }

  #rk-frame-guide .rk-frame-result-note {
    margin-top: 13px;
    padding: 14px 16px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 0 11px 11px 0;
    color: #d3e8ef;
    background: rgba(41, 196, 218, 0.08);
    font-size: 0.76rem;
    line-height: 1.55;
  }

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

  #rk-frame-guide .rk-frame-protocol article {
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-soft);
  }

  #rk-frame-guide .rk-frame-protocol span {
    display: inline-flex;
    margin-bottom: 10px;
    padding: 5px 9px;
    border-radius: 999px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.65rem;
    font-weight: 900;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-definition {
    display: grid;
    grid-template-columns: minmax(170px, 0.42fr) minmax(0, 1fr);
    overflow: hidden;
    margin: 13px 0;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
  }

  #rk-frame-guide .rk-frame-definition strong,
  #rk-frame-guide .rk-frame-definition div {
    padding: 16px 18px;
  }

  #rk-frame-guide .rk-frame-definition strong {
    color: var(--rk-navy-900);
    background: var(--rk-cyan-soft);
  }

  #rk-frame-guide .rk-frame-definition div {
    color: var(--rk-text);
    background: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-mini-formula {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin: 22px 0;
  }

  #rk-frame-guide .rk-frame-mini-formula div {
    padding: 18px;
    border: 1px dashed #91acb9;
    border-radius: 14px;
    color: var(--rk-navy-900);
    background: #f8fbfc;
    text-align: center;
  }

  #rk-frame-guide .rk-frame-mini-formula strong {
    display: block;
    margin-bottom: 5px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 1.02rem;
  }

  #rk-frame-guide .rk-frame-hero-action {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    margin: 0 0 26px;
  }

  #rk-frame-guide .rk-frame-hero-action small {
    max-width: 520px;
    color: #bcd6df;
    font-size: 0.7rem;
    line-height: 1.5;
  }

  #rk-frame-guide .rk-frame-zone-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin: 18px 0;
  }

  #rk-frame-guide .rk-frame-zone-button {
    min-height: 40px;
    padding: 8px 13px;
    border: 1px solid #4c7486;
    border-radius: 999px;
    color: #e8f8fc;
    background: #173c4e;
    font-size: 0.72rem;
    font-weight: 850;
    line-height: 1.3;
    cursor: pointer;
  }

  #rk-frame-guide .rk-frame-zone-button:hover,
  #rk-frame-guide .rk-frame-zone-button:focus-visible,
  #rk-frame-guide .rk-frame-zone-button.is-active {
    border-color: var(--rk-cyan);
    color: var(--rk-navy-950);
    background: var(--rk-cyan);
  }

  #rk-frame-guide .rk-frame-decision {
    display: grid;
    grid-template-columns: minmax(170px, 0.34fr) minmax(0, 1fr);
    gap: 0;
    overflow: hidden;
    margin-top: 12px;
    border: 1px solid #416c7e;
    border-radius: 16px;
    background: #0e2b3b;
  }

  #rk-frame-guide .rk-frame-decision-state {
    display: flex;
    min-height: 150px;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 22px;
    color: var(--rk-white);
    background: #17627a;
    text-align: center;
  }

  #rk-frame-guide .rk-frame-decision[data-state="exclude"] .rk-frame-decision-state {
    background: #a84736;
  }

  #rk-frame-guide .rk-frame-decision[data-state="check"] .rk-frame-decision-state {
    color: var(--rk-navy-950);
    background: var(--rk-yellow);
  }

  #rk-frame-guide .rk-frame-decision[data-state="keep"] .rk-frame-decision-state {
    background: var(--rk-green);
  }

  #rk-frame-guide .rk-frame-decision-state strong {
    display: block;
    margin-bottom: 5px;
    font-size: 1.05rem;
    line-height: 1.25;
  }

  #rk-frame-guide .rk-frame-decision-state span {
    font-size: 0.67rem;
    font-weight: 850;
    line-height: 1.4;
    opacity: 0.88;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-decision-body {
    padding: 22px;
  }

  #rk-frame-guide .rk-frame-decision-body h4 {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-decision-body p {
    color: #bcd7e1;
    font-size: 0.81rem;
    line-height: 1.57;
  }

  #rk-frame-guide .rk-frame-decision-body ul {
    margin-top: 9px;
    color: #bcd7e1;
    font-size: 0.76rem;
    line-height: 1.5;
  }

  #rk-frame-guide .rk-frame-map-wrap {
    margin-top: 18px;
    padding: 20px;
    border: 1px solid #315a6e;
    border-radius: 17px;
    background: #0d2939;
  }

  #rk-frame-guide .rk-frame-map-wrap h4 {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-map-wrap > p {
    color: #9fc0cd;
    font-size: 0.76rem;
  }

  #rk-frame-guide .rk-frame-room-map {
    display: block;
    width: 100%;
    height: auto;
    margin-top: 14px;
    border: 1px solid #416c7e;
    border-radius: 14px;
    background: #f4fafc;
  }

  #rk-frame-guide .rk-frame-map-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    margin-top: 13px;
    color: #b8d3dd;
    font-size: 0.69rem;
    line-height: 1.45;
  }

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

  #rk-frame-guide .rk-frame-map-legend i {
    display: inline-block;
    width: 13px;
    height: 13px;
    border-radius: 4px;
    background: var(--rk-cyan);
  }

  #rk-frame-guide .rk-frame-map-legend .is-excluded {
    background: var(--rk-orange);
  }

  #rk-frame-guide .rk-frame-map-legend .is-check {
    background: var(--rk-yellow);
  }

  #rk-frame-guide .rk-frame-capacity {
    margin-top: 16px;
    padding: 16px;
    border: 1px solid #315a6e;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.035);
  }

  #rk-frame-guide .rk-frame-capacity-head {
    display: flex;
    gap: 12px;
    justify-content: space-between;
    margin-bottom: 9px;
    color: #d9eef5;
    font-size: 0.72rem;
    font-weight: 850;
  }

  #rk-frame-guide .rk-frame-capacity-track {
    overflow: hidden;
    height: 12px;
    border-radius: 999px;
    background: #274e61;
  }

  #rk-frame-guide .rk-frame-capacity-fill {
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: var(--rk-cyan);
    transition: width 0.2s ease;
  }

  #rk-frame-guide .rk-frame-capacity[data-state="low"] .rk-frame-capacity-fill {
    background: var(--rk-red);
  }

  #rk-frame-guide .rk-frame-capacity small {
    display: block;
    margin-top: 8px;
    color: #8eb0be;
    font-size: 0.67rem;
    line-height: 1.5;
  }

  #rk-frame-guide .rk-frame-category-table strong {
    display: inline-flex;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 0.67rem;
    line-height: 1.3;
  }

  #rk-frame-guide .rk-frame-category-table .is-exclude {
    color: #8e3127;
    background: var(--rk-red-soft);
  }

  #rk-frame-guide .rk-frame-category-table .is-check {
    color: #775500;
    background: var(--rk-yellow-soft);
  }

  #rk-frame-guide .rk-frame-category-table .is-keep {
    color: #126a51;
    background: var(--rk-green-soft);
  }

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

  #rk-frame-guide .rk-frame-audit-panels {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-top: 18px;
  }

  #rk-frame-guide .rk-frame-audit-panel {
    min-width: 0;
    padding: 18px;
    border: 1px solid #3d687b;
    border-top: 5px solid var(--rk-yellow);
    border-radius: 15px;
    background: #102e3e;
  }

  #rk-frame-guide .rk-frame-audit-panel[data-state="complete"] {
    border-top-color: var(--rk-green);
  }

  #rk-frame-guide .rk-frame-audit-panel[data-state="missing"] {
    border-top-color: var(--rk-red);
  }

  #rk-frame-guide .rk-frame-audit-panel span {
    display: block;
    margin-bottom: 7px;
    color: #82a9b9;
    font-size: 0.65rem;
    font-weight: 900;
    letter-spacing: 0.055em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-audit-panel strong {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-white);
    font-size: 1rem;
    line-height: 1.3;
  }

  #rk-frame-guide .rk-frame-audit-panel p {
    color: #b8d1dc;
    font-size: 0.73rem;
    line-height: 1.5;
  }

  #rk-frame-guide .rk-frame-score {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: 14px;
    align-items: center;
    margin-top: 18px;
    padding: 16px;
    border: 1px solid #315a6e;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.035);
  }

  #rk-frame-guide .rk-frame-score strong {
    color: var(--rk-white);
    font-size: 0.9rem;
  }

  #rk-frame-guide .rk-frame-score-track {
    overflow: hidden;
    height: 12px;
    border-radius: 999px;
    background: #274e61;
  }

  #rk-frame-guide .rk-frame-score-fill {
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-yellow), var(--rk-green));
    transition: width 0.22s ease;
  }

  #rk-frame-guide .rk-frame-house-wrap {
    margin-top: 18px;
    padding: 20px;
    border: 1px solid #315a6e;
    border-radius: 17px;
    background: #0d2939;
  }

  #rk-frame-guide .rk-frame-house-wrap h4 {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-house-wrap > p {
    color: #9fc0cd;
    font-size: 0.76rem;
  }

  #rk-frame-guide .rk-frame-house-svg {
    display: block;
    width: 100%;
    height: auto;
    margin-top: 14px;
    border: 1px solid #416c7e;
    border-radius: 14px;
    background: #f4fafc;
  }

  #rk-frame-guide .rk-frame-level-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin-top: 15px;
  }

  #rk-frame-guide .rk-frame-level-card {
    padding: 17px;
    border: 1px solid #3b6679;
    border-radius: 14px;
    background: #102f41;
  }

  #rk-frame-guide .rk-frame-level-card span {
    display: block;
    margin-bottom: 6px;
    color: #78dff0;
    font-size: 0.65rem;
    font-weight: 900;
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }

  #rk-frame-guide .rk-frame-level-card strong {
    display: block;
    margin-bottom: 6px;
    color: var(--rk-white);
    line-height: 1.35;
  }

  #rk-frame-guide .rk-frame-level-card p {
    color: #b9d2dc;
    font-size: 0.75rem;
    line-height: 1.55;
  }

  #rk-frame-guide .rk-frame-audit-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin-top: 18px;
  }

  #rk-frame-guide .rk-frame-audit-action {
    padding: 16px 18px;
    border-left: 4px solid var(--rk-yellow);
    border-radius: 0 12px 12px 0;
    color: #d4e8ef;
    background: rgba(243, 181, 27, 0.08);
    font-size: 0.76rem;
    line-height: 1.55;
  }

  #rk-frame-guide .rk-frame-audit-action.is-critical {
    border-left-color: var(--rk-red);
    background: rgba(216, 75, 75, 0.1);
  }

  #rk-frame-guide .rk-frame-audit-action.is-complete {
    border-left-color: var(--rk-green);
    background: rgba(21, 147, 111, 0.1);
  }

  #rk-frame-guide .rk-frame-audit-action strong {
    color: var(--rk-white);
  }

  #rk-frame-guide .rk-frame-floor-chip {
    display: inline-flex;
    margin: 4px 5px 4px 0;
    padding: 5px 9px;
    border-radius: 999px;
    color: #0b2a39;
    background: #7deaf8;
    font-size: 0.66rem;
    font-weight: 900;
    line-height: 1.3;
  }

  #rk-frame-guide .rk-frame-floor-chip.is-orange {
    color: #6d2a1c;
    background: #ffc2b2;
  }

  #rk-frame-guide .rk-frame-floor-chip.is-yellow {
    color: #624700;
    background: #ffe290;
  }

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

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

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

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

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

    #rk-frame-guide .rk-frame-cta {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-cta .rk-frame-button {
      justify-self: start;
    }
  }

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

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

    #rk-frame-guide .rk-frame-nav {
      gap: 7px;
      padding: 17px 16px;
    }

    #rk-frame-guide .rk-frame-nav-label {
      width: 100%;
    }

    #rk-frame-guide .rk-frame-nav a {
      min-height: 36px;
      padding: 7px 10px;
      font-size: 0.68rem;
    }

    #rk-frame-guide .rk-frame-grid-2,
    #rk-frame-guide .rk-frame-grid-3,
    #rk-frame-guide .rk-frame-grid-4,
    #rk-frame-guide .rk-frame-steps,
    #rk-frame-guide .rk-frame-form-grid,
    #rk-frame-guide .rk-frame-evidence-grid,
    #rk-frame-guide .rk-frame-checklist,
    #rk-frame-guide .rk-frame-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-protocol,
    #rk-frame-guide .rk-frame-mini-formula {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-audit-actions,
    #rk-frame-guide .rk-frame-level-grid {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-definition {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-decision {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-decision-state {
      min-height: 105px;
    }

    #rk-frame-guide .rk-frame-layer-three,
    #rk-frame-guide .rk-frame-layer-five {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-layer {
      min-height: 54px;
    }

    #rk-frame-guide .rk-frame-myth {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-table-wrap {
      overflow: visible;
      border: 0;
      border-radius: 0;
    }

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

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

    #rk-frame-guide .rk-frame-table tr {
      overflow: hidden;
      margin: 0 0 14px;
      border: 1px solid var(--rk-line);
      border-radius: 15px;
      background: var(--rk-white);
      box-shadow: 0 8px 18px rgba(16, 47, 66, 0.05);
    }

    #rk-frame-guide .rk-frame-table td,
    #rk-frame-guide .rk-frame-table tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(110px, 0.75fr) minmax(0, 1.25fr);
      gap: 12px;
      padding: 13px 14px;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
    }

    #rk-frame-guide .rk-frame-table td::before {
      color: var(--rk-navy-900);
      font-size: 0.69rem;
      font-weight: 900;
      line-height: 1.4;
      content: attr(data-label);
    }

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

    #rk-frame-guide .rk-frame-author-head {
      align-items: flex-start;
    }

    #rk-frame-guide .rk-frame-author-mark {
      display: none;
    }

    #rk-frame-guide .rk-frame-author-side {
      padding: 30px 22px;
    }

    #rk-frame-guide .rk-frame-author-main {
      padding: 28px 22px;
    }

    #rk-frame-guide .rk-frame-author-quote {
      padding: 50px 20px 20px;
    }

    #rk-frame-guide .rk-frame-author-quote::before {
      top: 8px;
      left: 20px;
    }
  }

  @media (max-width: 460px) {
    #rk-frame-guide .rk-frame-hero {
      padding: 34px 20px 31px;
    }

    #rk-frame-guide .rk-frame-main {
      padding: 0 18px;
    }

    #rk-frame-guide .rk-frame-status {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-result,
    #rk-frame-guide .rk-frame-tool-body,
    #rk-frame-guide .rk-frame-cta {
      padding: 18px;
    }

    #rk-frame-guide .rk-frame-input-grid,
    #rk-frame-guide .rk-frame-results,
    #rk-frame-guide .rk-frame-audit-panels {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-score {
      grid-template-columns: 1fr;
    }

    #rk-frame-guide .rk-frame-tool-group,
    #rk-frame-guide .rk-frame-section-visual,
    #rk-frame-guide .rk-frame-map-wrap {
      padding: 16px;
    }

    #rk-frame-guide .rk-frame-table td,
    #rk-frame-guide .rk-frame-table tbody tr:nth-child(even) td {
      grid-template-columns: 1fr;
      gap: 4px;
    }

    #rk-frame-guide .rk-frame-final-wrap {
      padding: 24px 18px;
    }
  }

  @media print {
    #rk-frame-guide .rk-frame-nav,
    #rk-frame-guide .rk-frame-tool-actions,
    #rk-frame-guide .rk-frame-cta,
    #rk-frame-guide .rk-frame-final-wrap {
      display: none !important;
    }

    #rk-frame-guide .rk-frame-shell {
      border: 0;
      box-shadow: none;
    }
  }
</style>

<article id="rk-frame-guide" itemscope itemtype="https://schema.org/TechArticle">
  <div class="rk-frame-shell">
    <header class="rk-frame-hero">
      <span class="rk-frame-eyebrow">Dom szkieletowy • aktualizacja 2026</span>
      <div class="rk-frame-hero-title">Podłogówka w domu szkieletowym — <span>dobór od konstrukcji, nie od etykiety</span></div>
      <p class="rk-frame-hero-lead">Parter na gruncie, drewniany strop i płyta CLT nie wymagają tego samego rozwiązania. Zobacz, kiedy sens ma system suchy, kiedy można zaprojektować podłogę z jastrychem oraz jakie dane trzeba sprawdzić, zanim wybierzesz rozstaw rur i temperaturę wody.</p>

      <div class="rk-frame-hero-tags" aria-label="Najważniejsze zagadnienia artykułu">
        <span class="rk-frame-hero-tag">parter na gruncie</span>
        <span class="rk-frame-hero-tag">strop drewniany</span>
        <span class="rk-frame-hero-tag">system suchy</span>
        <span class="rk-frame-hero-tag">system z jastrychem</span>
        <span class="rk-frame-hero-tag">audyt projektu</span>
      </div>

      <div class="rk-frame-byline">
        <span>Autor: <a href="https://projekt-ogrzewania.pl/author/admin3399/"><strong>Robert Kucharski</strong></a></span>
        <span>Czas czytania: około 25 minut</span>
        <span>Aktualizacja techniczna: 1 września 2026 r.</span>
      </div>
    </header>

    <nav class="rk-frame-nav" aria-label="Nawigacja po wszystkich nagłówkach H2">
      <span class="rk-frame-nav-label">Na skróty — wszystkie H2</span>
      <a href="#rk-frame-szybka-odpowiedz">Szybka odpowiedź</a>
      <a href="#rk-frame-kondygnacje">Dwie różne kondygnacje</a>
      <a href="#rk-frame-roznice">Co zmienia szkielet</a>
      <a href="#rk-frame-suchy-mokry">Suchy czy mokry</a>
      <a href="#rk-frame-parter">Parter na gruncie</a>
      <a href="#rk-frame-strop">Strop drewniany</a>
      <a href="#rk-frame-konstrukcja">Nośność i ugięcia</a>
      <a href="#rk-frame-wilgoc">Wilgoć i szczelność</a>
      <a href="#rk-frame-akustyka">Akustyka i pożar</a>
      <a href="#rk-frame-termika">Strata ciepła</a>
      <a href="#rk-frame-audyt">Audyt projektu</a>
      <a href="#rk-frame-parametry">Rozstaw i temperatura</a>
      <a href="#rk-frame-okladziny">Okładziny</a>
      <a href="#rk-frame-zrodlo">Źródło ciepła</a>
      <a href="#rk-frame-sterowanie">Sterowanie</a>
      <a href="#rk-frame-kolejnosc">Kolejność prac</a>
      <a href="#rk-frame-bledy">Błędy i mity</a>
      <a href="#rk-frame-checklista">Checklista</a>
      <a href="#rk-frame-faq">FAQ</a>
      <a href="#rk-frame-zrodla">Źródła</a>
      <a href="#rk-frame-author">Autor</a>
    </nav>

    <main class="rk-frame-main">
      <section class="rk-frame-section" id="rk-frame-szybka-odpowiedz">
        <h2>Czy ogrzewanie podłogowe sprawdzi się w domu szkieletowym?</h2>
        <p class="rk-frame-lead">Tak. Ogrzewanie podłogowe może pracować bardzo dobrze w domu szkieletowym, ale nie dobiera się go z samej nazwy technologii budynku. Osobno analizuje się podłogę parteru, strop międzykondygnacyjny, straty ciepła pomieszczeń, okładziny oraz hydraulikę źródła.</p>

        <div class="rk-frame-answer">
          <p><strong>Dom szkieletowy nie oznacza automatycznie systemu suchego.</strong> Na parterze wykonanym jako podłoga na gruncie albo płyta fundamentowa może być uzasadniony system z jastrychem. Na lekkim stropie belkowym często wybiera się system suchy, lecz ostateczną decyzję wyznaczają nośność, ugięcie, drgania, akustyka, wysokość warstw i potwierdzona wydajność cieplna.</p>
        </div>

        <div class="rk-frame-grid-4">
          <article class="rk-frame-card rk-frame-card-accent">
            <span class="rk-frame-tag">Krok 1</span>
            <h3>Rozdziel kondygnacje</h3>
            <p>Parter na gruncie i strop drewniany mogą mieć zupełnie inne przekroje, masę oraz sposób przekazywania obciążeń.</p>
          </article>
          <article class="rk-frame-card rk-frame-card-accent rk-frame-card-orange">
            <span class="rk-frame-tag">Krok 2</span>
            <h3>Sprawdź konstrukcję</h3>
            <p>Ciężaru warstw, ugięcia i drgań nie ocenia się na podstawie samej powierzchni domu ani katalogowej nazwy systemu.</p>
          </article>
          <article class="rk-frame-card rk-frame-card-accent rk-frame-card-green">
            <span class="rk-frame-tag">Krok 3</span>
            <h3>Policz wymaganą moc</h3>
            <p>Strata ciepła każdego pomieszczenia musi zostać odniesiona do rzeczywiście ogrzewanej powierzchni podłogi.</p>
          </article>
          <article class="rk-frame-card rk-frame-card-accent rk-frame-card-purple">
            <span class="rk-frame-tag">Krok 4</span>
            <h3>Skoordynuj źródło</h3>
            <p>Temperatura zasilania, minimalny przepływ, moc minimalna i sterowanie muszą tworzyć jeden układ.</p>
          </article>
        </div>

        <p>Najważniejsza zasada brzmi: <strong>najpierw przekrój budowlany i obliczenia, później nazwa systemu</strong>. Szczegółowe omówienie samego stropu znajdziesz w artykule <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-nadaje-sie-do-drewnianego-stropu/">ogrzewanie podłogowe na stropie drewnianym</a>.</p>
      </section>
 
      <section class="rk-frame-section" id="rk-frame-kondygnacje">
        <h2>Parter i piętro domu szkieletowego to często dwa różne projekty podłogi</h2>
        <p>Ściany w technologii szkieletowej nie przesądzają o konstrukcji każdej podłogi. W tym samym budynku parter może opierać się na gruncie albo płycie fundamentowej, a piętro na belkach drewnianych. Próba zastosowania jednego przekroju „dla całego domu” pomija zasadnicze różnice.</p>

        <div class="rk-frame-table-wrap">
          <table class="rk-frame-table">
            <thead>
              <tr>
                <th>Przegroda</th>
                <th>Najważniejsze pytanie</th>
                <th>Co może być odpowiednie?</th>
                <th>Co trzeba potwierdzić?</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Przegroda"><strong>Podłoga na gruncie</strong></td>
                <td data-label="Pytanie">Czy cały przekrój spełnia wymagania cieplne i wysokościowe?</td>
                <td data-label="Rozwiązanie">System z jastrychem albo rozwiązanie suche — zależnie od projektu warstw.</td>
                <td data-label="Potwierdź">Izolację, hydroizolację, dylatacje, obciążenia i poziomy posadzki.</td>
              </tr>
              <tr>
                <td data-label="Przegroda"><strong>Płyta fundamentowa</strong></td>
                <td data-label="Pytanie">W której warstwie ma pracować ogrzewanie i jaka będzie jego bezwładność?</td>
                <td data-label="Rozwiązanie">Rury w rozwiązaniu przewidzianym projektem płyty albo osobna warstwa grzewcza nad nią.</td>
                <td data-label="Potwierdź">Projekt konstrukcyjny, strefy bez rur, przebicia, izolację i logikę regulacji.</td>
              </tr>
              <tr>
                <td data-label="Przegroda"><strong>Strop belkowy</strong></td>
                <td data-label="Pytanie">Czy strop przeniesie stałe obciążenie i zachowa wymaganą sztywność?</td>
                <td data-label="Rozwiązanie">Najczęściej lekki system suchy; wariant z wylewką tylko po pełnej weryfikacji.</td>
                <td data-label="Potwierdź">Nośność, ugięcie, drgania, akustykę, ogień i wilgoć technologiczną.</td>
              </tr>
              <tr>
                <td data-label="Przegroda"><strong>CLT lub strop masywny</strong></td>
                <td data-label="Pytanie">Jak warstwy ogrzewania współpracują z płytą i połączeniami?</td>
                <td data-label="Rozwiązanie">System suchy albo mokry zaprojektowany jako kompletna nadbudowa.</td>
                <td data-label="Potwierdź">Obciążenie, akustykę, wilgoć, mocowania i dokumentację systemową.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div class="rk-frame-note">
          <p><strong>Nie przenoś automatycznie rozwiązania z parteru na piętro.</strong> Jastrych, który jest racjonalny na podłodze na gruncie, może być niepotrzebnym lub niedopuszczalnym obciążeniem na stropie belkowym. Z kolei lekki system suchy nie musi być najlepszym wyborem wszędzie tylko dlatego, że budynek ma ściany szkieletowe.</p>
        </div>
      </section>

      <section class="rk-frame-section" id="rk-frame-roznice">
        <h2>Co naprawdę zmienia technologia szkieletowa?</h2>
        <p>Domy szkieletowe zwykle mają mniejszą masę akumulacyjną przegród niż budynki ciężkie, lecz nie pozwala to przypisać im jednej reakcji czasowej ani jednego sposobu sterowania. Na zachowanie cieplne wpływa komplet warstw: konstrukcja, poszycia, izolacja, jastrych lub płyty suche, okładzina i wyposażenie.</p>

        <div class="rk-frame-grid-3">
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Konstrukcja</span>
            <h3>Masa i sztywność</h3>
            <p>Lekki strop jest bardziej wrażliwy na dodatkowe obciążenia, ugięcie i drgania. Nie oznacza to jednak, że każda mokra warstwa jest zakazana.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Fizyka budowli</span>
            <h3>Wilgoć i szczelność</h3>
            <p>Przebieg warstw kontrolujących przepływ powietrza i pary wodnej musi być ciągły, a przejścia instalacyjne — zaprojektowane.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Eksploatacja</span>
            <h3>Szybkie zyski ciepła</h3>
            <p>Nasłonecznienie i mała akumulacja mogą szybciej podnosić temperaturę wnętrza, dlatego ważne są przepływy i logika regulacji.</p>
          </article>
        </div>

        <h3>Współczynnik U nie jest oporem cieplnym</h3>
        <p>Współczynnik przenikania ciepła <strong>U</strong> opisuje przepływ ciepła przez przegrodę przy różnicy temperatur. Im mniejsza wartość U, tym mniejsze przenikanie ciepła i — w uproszczeniu — większy opór cieplny całej przegrody. Nie należy pisać, że niski współczynnik U oznacza niski opór. Obliczenia przegród można wstępnie sprawdzić w <a href="https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/" target="_blank" rel="nofollow noopener noreferrer">rządowym kalkulatorze współczynnika przenikania ciepła</a>.</p>

        <p>Wymagania izolacyjności cieplnej wynikają z całego układu przegrody i aktualnych warunków technicznych, a nie z popularnej reguły „dom szkieletowy potrzebuje określonej liczby centymetrów izolacji”. Tekst jednolity przepisów udostępnia <a href="https://eli.gov.pl/eli/DU/2022/1225/ogl" target="_blank" rel="nofollow noopener noreferrer">Elektroniczny Dziennik Ustaw</a>.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-suchy-mokry">
        <h2>System suchy czy mokry w domu szkieletowym?</h2>
        <p class="rk-frame-lead">Oba rozwiązania mogą być technicznie poprawne. Różnią się masą, sposobem rozprowadzania ciepła, kolejnością prac, wymaganiami podłoża i czasem potrzebnym przed ułożeniem okładziny. Nie można wybrać systemu wyłącznie z tabeli „typ budynku → gotowa odpowiedź”.</p>

        <div class="rk-frame-table-wrap">
          <table class="rk-frame-table">
            <thead>
              <tr>
                <th>Cecha</th>
                <th>System suchy</th>
                <th>System z jastrychem</th>
                <th>Wniosek projektowy</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Cecha">Obciążenie stałe</td>
                <td data-label="System suchy">Zwykle mniejsze, ale zależne od wszystkich płyt i okładziny.</td>
                <td data-label="System mokry">Zwykle większe; oblicza się je z grubości i gęstości warstw.</td>
                <td data-label="Wniosek">Porównuj kompletne przekroje, a nie tylko warstwę z rurą.</td>
              </tr>
              <tr>
                <td data-label="Cecha">Akumulacja i reakcja</td>
                <td data-label="System suchy">Zwykle mniejsza masa nad rurą i szybsza odpowiedź.</td>
                <td data-label="System mokry">Zwykle większa akumulacja i wolniejsza odpowiedź.</td>
                <td data-label="Wniosek">Czas reakcji zależy również od mocy, przepływu, okładziny i budynku.</td>
              </tr>
              <tr>
                <td data-label="Cecha">Rozprowadzenie ciepła</td>
                <td data-label="System suchy">Wymaga dobrze zaprojektowanych płyt przewodzących i kontaktu warstw.</td>
                <td data-label="System mokry">Jastrych otacza rurę i rozprowadza ciepło w swojej objętości.</td>
                <td data-label="Wniosek">Korzystaj z charakterystyki całego systemu dla konkretnego rozstawu i okładziny.</td>
              </tr>
              <tr>
                <td data-label="Cecha">Wilgoć technologiczna</td>
                <td data-label="System suchy">Brak jastrychu nie oznacza braku wszystkich procesów mokrych w budynku.</td>
                <td data-label="System mokry">Wymaga kontroli wilgotności i warunków przed zamknięciem wrażliwych warstw.</td>
                <td data-label="Wniosek">Procedurę wykonania uzgadnia się z projektem budowlanym i okładziną.</td>
              </tr>
              <tr>
                <td data-label="Cecha">Wysokość zabudowy</td>
                <td data-label="System suchy">Może być niski, lecz nie ma jednej uniwersalnej grubości.</td>
                <td data-label="System mokry">Zależy od średnicy rury, przykrycia, jastrychu i wymagań konstrukcyjnych.</td>
                <td data-label="Wniosek">Sprawdź drzwi, schody, progi i poziomy wszystkich pomieszczeń.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <p>Więcej różnic opisujemy w poradniku <a href="https://projekt-ogrzewania.pl/system-mokry-czy-suchy-w-wodnym-ogrzewaniu-podlogowym-ktory-wybrac/">system mokry czy suchy</a> oraz w osobnym omówieniu <a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">suchego ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-parter">
        <h2>Ogrzewanie podłogowe na parterze domu szkieletowego</h2>
        <p>Na parterze najpierw ustala się, czy mamy podłogę na gruncie, płytę fundamentową, czy strop nad przestrzenią nieogrzewaną. Każdy wariant ma inną drogę przepływu ciepła, mostki, warunki wilgotnościowe i wymagania konstrukcyjne.</p>

        <h3>Podłoga na gruncie</h3>
        <p>System z rurami w jastrychu może być racjonalny, jeżeli został przewidziany w przekroju. Grubość izolacji nie wynika z technologii ścian, lecz z obliczeń całej podłogi, jej obwodu, geometrii, połączeń z fundamentem i wymagań cieplnych. Ważne są też hydroizolacja, dylatacje, warstwa brzegowa i stabilność podłoża.</p>

        <h3>Płyta fundamentowa</h3>
        <p>Rury mogą znaleźć się w rozwiązaniu zintegrowanym z płytą albo w osobnej warstwie nad nią. To dwie różne instalacje pod względem akumulacji, dostępności, kolejności prac i sterowania. Każde przejście, strefa konstrukcyjna oraz miejsce planowanego kotwienia musi zostać skoordynowane przed betonowaniem.</p>

        <h3>Strop nad przestrzenią nieogrzewaną</h3>
        <p>Trzeba sprawdzić nie tylko moc oddawaną do pomieszczenia, ale też izolacyjność w dół i ryzyko lokalnych mostków. Sama obecność ogrzewania nie zastępuje projektu cieplnego przegrody.</p>

        <div class="rk-frame-warning">
          <p><strong>Nie dobieraj izolacji z tabeli „10, 15 czy 20 cm”.</strong> Materiały o tej samej grubości mogą mieć różne właściwości, a wynik zależy od kompletnego układu. Ostateczną grubość wyznacza projekt przegrody, dostępna wysokość i wymagania budynku.</p>
        </div>
      </section>

      <section class="rk-frame-section" id="rk-frame-strop">
        <h2>Podłogówka na drewnianym stropie</h2>
        <p class="rk-frame-lead">Na stropie belkowym system suchy jest częstym wyborem, ponieważ może ograniczyć dodatkową masę i wilgoć technologiczną. Nie jest jednak automatycznie poprawny: nadal wymaga oceny nośności, ugięcia, drgań, akustyki oraz sztywności podłoża pod okładzinę.</p>

        <div class="rk-frame-grid-3">
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Warstwa grzewcza</span>
            <h3>Rura i rozdzielanie ciepła</h3>
            <p>Płyty przewodzące muszą współpracować ze średnicą rury, rozstawem i płytą rozkładającą obciążenie. Luźny kontakt pogarsza przewodzenie i może powodować odgłosy.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Podłoże</span>
            <h3>Sztywność i płaskość</h3>
            <p>Okładzina potrzebuje podłoża o wymaganej sztywności. Szczególnie płytki wymagają kontroli ugięcia całego układu, nie tylko nośności belek.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Przegroda</span>
            <h3>Akustyka i ogień</h3>
            <p>Warstwy podłogi uczestniczą w ochronie akustycznej i odporności ogniowej. Nie wolno usuwać ich wyłącznie po to, by zmieścić ogrzewanie.</p>
          </article>
        </div>

        <h3>Czy system suchy ma zawsze małą pojemność wodną?</h3>
        <p>Nie. Pojemność wodna wynika przede wszystkim ze średnicy wewnętrznej i całkowitej długości rur, a nie z tego, czy nad rurą znajduje się jastrych. System suchy ma zwykle mniejszą masę warstw przewodzących, lecz liczba pętli i objętość wody wymagają osobnych obliczeń.</p>

        <h3>Czy system suchy zawsze pracuje na niższej temperaturze?</h3>
        <p>Nie. Potrzebna temperatura zależy od wymaganej mocy, rozstawu, konstrukcji, płyt przewodzących, kontaktu warstw, okładziny i temperatury pomieszczenia. Typ systemu sam nie wyznacza temperatury zasilania.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-konstrukcja">
        <h2>Nośność, obciążenie, ugięcie i drgania stropu</h2>
        <p>Ocena stropu nie kończy się na stwierdzeniu, że „wytrzyma określoną liczbę kilogramów”. Konstruktor rozdziela obciążenia stałe od użytkowych, analizuje rozpiętość i przekrój belek, podparcie, połączenia, otwory oraz kryteria użytkowalności: ugięcie i drgania.</p>

        <span class="rk-frame-code-line">m<sub>A</sub> = d · ρ</span>
        <p>Orientacyjną masę powierzchniową jednorodnej warstwy można policzyć z grubości <strong>d</strong> i gęstości <strong>ρ</strong>, zachowując spójne jednostki. To tylko masa jednej warstwy — do stropu dochodzą płyty, podsypki, izolacja akustyczna, okładzina, sufity i wyposażenie.</p>

        <div class="rk-frame-mini-formula">
          <div><strong>obciążenia stałe</strong><span>warstwy podłogi, sufitu, instalacji i elementy trwale związane z budynkiem</span></div>
          <div><strong>obciążenia użytkowe</strong><span>ludzie, meble i użytkowanie przyjęte zgodnie z przeznaczeniem</span></div>
          <div><strong>użytkowalność</strong><span>ugięcie, drgania i warunki pracy przegród oraz okładzin</span></div>
        </div>

        <p>Zasady projektowania konstrukcji drewnianych obejmuje Eurokod 5. Materiał wprowadzający udostępnia <a href="https://eurocodes.jrc.ec.europa.eu/sites/default/files/2022-06/EN1995_4_Kreuzinger.pdf" target="_blank" rel="nofollow noopener noreferrer">Joint Research Centre Komisji Europejskiej</a>. Taki dokument nie zastępuje obliczeń konkretnego stropu.</p>

        <div class="rk-frame-warning">
          <p><strong>Kalkulator internetowy nie oceni bezpiecznie stropu.</strong> Bez geometrii, klasy i wilgotności drewna, schematu podparcia, połączeń, otworów oraz pełnego zestawu obciążeń wynik byłby pozornie precyzyjny. Dlatego narzędzie w tym artykule sprawdza kompletność danych, a nie nośność.</p>
        </div>
      </section>

      <section class="rk-frame-section" id="rk-frame-wilgoc">
        <h2>Wilgoć technologiczna, paroizolacja i szczelność powietrzna</h2>
        <p>W domu szkieletowym trzeba skoordynować instalację z warstwami odpowiedzialnymi za szczelność powietrzną i kontrolę przepływu pary wodnej. Ich położenie zależy od kompletnego przekroju ściany lub stropu, klimatu wewnętrznego oraz projektu fizyki budowli. Nie istnieje jedna poprawna lokalizacja „folii” dla każdego domu.</p>

        <div class="rk-frame-grid-3">
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Ciągłość</span>
            <h3>Warstwa szczelna</h3>
            <p>Przejścia rur, kabli i mocowań powinny mieć zaprojektowane uszczelnienie. Przypadkowe przebicia mogą zniszczyć ciągłość warstwy.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Proces mokry</span>
            <h3>Kontrola wysychania</h3>
            <p>Przed zamknięciem drewna i płyt wrażliwych na wilgoć trzeba potwierdzić warunki oraz wilgotność zgodnie z projektem i technologią.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Uruchomienie</span>
            <h3>Procedura wygrzewania</h3>
            <p>Jastrych uruchamia się według jego dokumentacji i warunków wykonania. Próba szczelności instalacji nie jest tym samym co wygrzewanie.</p>
          </article>
        </div>

        <p>Przy systemie mokrym znaczenie ma rodzaj jastrychu, grubość, warunki dojrzewania, pomiar wilgotności i wymagania okładziny. Szczegóły opisuje przewodnik <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewka na ogrzewanie podłogowe</a>.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-akustyka">
        <h2>Akustyka, odporność ogniowa i sztywność warstw</h2>
        <p>Warstwa ogrzewania nie działa w izolacji od reszty stropu. Płyty, podsypki, maty, sufity i połączenia wpływają jednocześnie na dźwięki uderzeniowe, dźwięki powietrzne, ochronę ogniową oraz zachowanie mechaniczne podłogi.</p>

        <div class="rk-frame-definition"><strong>Akustyka</strong><div>Przerwanie warstwy sprężystej, sztywne mostki przy ścianach albo mocowania przechodzące przez układ pływający mogą pogorszyć wynik całej przegrody.</div></div>
        <div class="rk-frame-definition"><strong>Ogień</strong><div>Okładziny i liczba warstw płyt mogą być częścią przebadanego lub obliczonego rozwiązania. Nie wolno dowolnie zmieniać ich grubości i sposobu mocowania.</div></div>
        <div class="rk-frame-definition"><strong>Sztywność</strong><div>Podłoże musi ograniczać odkształcenia w stopniu wymaganym przez system i okładzinę. Brak nadmiernego ugięcia belek nie gwarantuje jeszcze poprawnej pracy płytek.</div></div>

        <div class="rk-frame-note">
          <p><strong>Najlepszy przekrój jest skoordynowany wielobranżowo.</strong> Konstruktor, projektant instalacji, osoba odpowiedzialna za fizykę budowli i projektant wnętrz powinni pracować na tej samej wersji warstw oraz poziomów.</p>
        </div>
      </section>

      <section class="rk-frame-section" id="rk-frame-termika">
        <h2>Strata ciepła i powierzchnia czynna: od tego zaczyna się dobór</h2>
        <p>Wymaganą moc podłogi oblicza się dla każdego pomieszczenia. Strata ciepła salonu nie może zostać podzielona przez powierzchnię całej kondygnacji, a powierzchnia pod stałą zabudową nie powinna automatycznie zwiększać pola grzejnego.</p>

        <span class="rk-frame-code-line">q<sub>wym</sub> = Q<sub>pomieszczenia</sub> / A<sub>czynna</sub></span>

        <div class="rk-frame-mini-formula">
          <div><strong>Q<sub>pomieszczenia</sub> [W]</strong><span>projektowa strata ciepła konkretnego pomieszczenia</span></div>
          <div><strong>A<sub>czynna</sub> [m²]</strong><span>rzeczywiście ogrzewane pole bez uzgodnionych wyłączeń</span></div>
          <div><strong>q<sub>wym</sub> [W/m²]</strong><span>wymagana średnia moc z pola czynnego</span></div>
        </div>

        <p>Dopiero później sprawdza się, czy dany przekrój podłogi przy wybranym rozstawie, temperaturze wody, oporze okładziny i dopuszczalnej temperaturze powierzchni może oddać tę moc. Metodykę określania wydajności wodnych powierzchni grzewczych opisują między innymi <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2</a> i seria EN 1264.</p>

        <p>Jeżeli nie masz obliczeń, możesz wykonać wstępny bilans w naszym <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulatorze strat ciepła</a>. Do ostatecznego doboru instalacji potrzebne są jednak dane pomieszczenie po pomieszczeniu.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-audyt">
        <h2>Interaktywny audyt projektu podłogówki w domu szkieletowym</h2>
        <p class="rk-frame-lead">Narzędzie nie wybiera za Ciebie systemu i nie ocenia nośności. Pokazuje, czy decyzja ma oparcie w czterech grupach danych: konstrukcji, termice, fizyce budowli oraz hydraulice. Opcjonalnie liczy wymaganą moc jednostkową z rzeczywistej straty pomieszczenia.</p>

        <div class="rk-frame-tool" id="rk-frame-audit-tool">
          <div class="rk-frame-tool-head">
            <span class="rk-frame-tool-kicker">Audyt kompletności • wynik na żywo</span>
            <h3>Sprawdź, czego jeszcze brakuje przed wyborem systemu</h3>
            <p>Wybierz konstrukcję każdej kondygnacji, etap uzgodnień i dane termiczne. Wynik nie jest świadectwem bezpieczeństwa — to uporządkowana lista decyzji potrzebnych do projektu.</p>
          </div>

          <div class="rk-frame-tool-body">
            <div class="rk-frame-tool-group">
              <div class="rk-frame-tool-group-head"><span class="rk-frame-tool-group-num">1</span><div><h4>Konstrukcja kondygnacji</h4><p>Rozdziel parter od stropu. W jednym domu mogą być potrzebne dwa różne systemy.</p></div></div>
              <div class="rk-frame-input-grid">
                <div class="rk-frame-field">
                  <label for="rk-frame-ground-type">Konstrukcja podłogi parteru</label>
                  <select id="rk-frame-ground-type">
                    <option value="ground">Podłoga na gruncie</option>
                    <option value="slab">Płyta fundamentowa</option>
                    <option value="unheated">Strop nad przestrzenią nieogrzewaną</option>
                    <option value="na">Nie dotyczy</option>
                  </select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-ground-system">Planowany system na parterze</label>
                  <select id="rk-frame-ground-system">
                    <option value="undecided">Jeszcze nie wybrano</option>
                    <option value="wet">System z jastrychem</option>
                    <option value="dry">System suchy</option>
                    <option value="na">Nie dotyczy</option>
                  </select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-upper-type">Konstrukcja stropu/piętra</label>
                  <select id="rk-frame-upper-type">
                    <option value="timber">Strop belkowy drewniany</option>
                    <option value="clt">Płyta CLT / strop masywny drewniany</option>
                    <option value="concrete">Strop betonowy</option>
                    <option value="none">Brak ogrzewanego piętra</option>
                  </select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-upper-system">Planowany system na piętrze</label>
                  <select id="rk-frame-upper-system">
                    <option value="undecided">Jeszcze nie wybrano</option>
                    <option value="dry">System suchy</option>
                    <option value="wet">System z jastrychem</option>
                    <option value="na">Nie dotyczy</option>
                  </select>
                </div>
              </div>
            </div>

            <div class="rk-frame-tool-group">
              <div class="rk-frame-tool-group-head"><span class="rk-frame-tool-group-num">2</span><div><h4>Uzgodnienia projektowe</h4><p>Zaznacz „tak” tylko wtedy, gdy masz konkretny wynik lub uzgodniony detal — nie samo założenie.</p></div></div>
              <div class="rk-frame-input-grid">
                <div class="rk-frame-field">
                  <label for="rk-frame-struct-check">Konstruktor sprawdził warstwy i strop</label>
                  <select id="rk-frame-struct-check"><option value="no">Nie / jeszcze nie</option><option value="yes">Tak</option><option value="na">Nie dotyczy stropu</option></select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-heatloss-check">Są straty ciepła dla pomieszczeń</label>
                  <select id="rk-frame-heatloss-check"><option value="no">Nie</option><option value="yes">Tak</option></select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-covering-check">Znane są okładziny i ich opór</label>
                  <select id="rk-frame-covering-check"><option value="no">Nie</option><option value="yes">Tak</option></select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-systemdata-check">Jest wydajność wybranego przekroju</label>
                  <select id="rk-frame-systemdata-check"><option value="no">Nie</option><option value="yes">Tak, dla rzeczywistych warunków</option></select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-airtight-check">Skoordynowano wilgoć i szczelność</label>
                  <select id="rk-frame-airtight-check"><option value="no">Nie / jeszcze nie</option><option value="yes">Tak</option><option value="na">Nie dotyczy danego detalu</option></select>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-source-check">Znane są wymagania hydrauliczne źródła</label>
                  <select id="rk-frame-source-check"><option value="no">Nie</option><option value="yes">Tak</option></select>
                  <small>Minimalny przepływ, moc minimalna, sposób regulacji i ewentualne wymagania dotyczące pojemności.</small>
                </div>
              </div>
            </div>

            <div class="rk-frame-tool-group">
              <div class="rk-frame-tool-group-head"><span class="rk-frame-tool-group-num">3</span><div><h4>Opcjonalne sprawdzenie cieplne jednego pomieszczenia</h4><p>Wpisz dane z obliczeń i potwierdzoną moc wybranego systemu dla konkretnego rozstawu, temperatur oraz okładziny.</p></div></div>
              <div class="rk-frame-input-grid">
                <div class="rk-frame-field">
                  <label for="rk-frame-room-loss">Projektowa strata pomieszczenia [W]</label>
                  <input id="rk-frame-room-loss" type="number" min="0" step="10" value="900" inputmode="decimal">
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-active-area">Rzeczywiście ogrzewana powierzchnia [m²]</label>
                  <input id="rk-frame-active-area" type="number" min="0.1" step="0.1" value="18" inputmode="decimal">
                  <small>Bez uzgodnionych stref trwałej zabudowy i innych wyłączeń.</small>
                </div>
                <div class="rk-frame-field">
                  <label for="rk-frame-available-output">Potwierdzona moc systemu [W/m²]</label>
                  <input id="rk-frame-available-output" type="number" min="0" step="1" value="0" inputmode="decimal">
                  <small>Pozostaw 0, jeżeli nie masz charakterystyki dla swoich warunków.</small>
                </div>
              </div>
            </div>

            <div class="rk-frame-results" aria-live="polite">
              <div class="rk-frame-result-card is-cyan"><span>Wymagana moc jednostkowa</span><strong id="rk-frame-out-required">50,0 W/m²</strong><small>Q pomieszczenia ÷ powierzchnia czynna</small></div>
              <div class="rk-frame-result-card"><span>Wymagana moc pomieszczenia</span><strong id="rk-frame-out-room">900 W</strong><small>wartość wpisana z obliczeń</small></div>
              <div class="rk-frame-result-card is-green"><span>Dostępna moc całkowita</span><strong id="rk-frame-out-capacity">Nie oceniono</strong><small id="rk-frame-out-capacity-note">wpisz potwierdzoną moc systemu</small></div>
              <div class="rk-frame-result-card" id="rk-frame-margin-card"><span>Bilans względem potrzeby</span><strong id="rk-frame-out-margin">Nie oceniono</strong><small id="rk-frame-out-margin-note">brak danych systemowych</small></div>
            </div>

            <div class="rk-frame-audit-panels" aria-live="polite">
              <article class="rk-frame-audit-panel" id="rk-frame-panel-structure" data-state="missing"><span>Konstrukcja</span><strong id="rk-frame-panel-structure-title">Do uzupełnienia</strong><p id="rk-frame-panel-structure-text">Strop i warstwy wymagają weryfikacji konstrukcyjnej.</p></article>
              <article class="rk-frame-audit-panel" id="rk-frame-panel-thermal" data-state="missing"><span>Termika</span><strong id="rk-frame-panel-thermal-title">Do uzupełnienia</strong><p id="rk-frame-panel-thermal-text">Potrzebne są straty ciepła i wydajność wybranego przekroju.</p></article>
              <article class="rk-frame-audit-panel" id="rk-frame-panel-physics" data-state="missing"><span>Fizyka budowli</span><strong id="rk-frame-panel-physics-title">Do uzupełnienia</strong><p id="rk-frame-panel-physics-text">Sprawdź okładziny, wilgoć i ciągłość warstw.</p></article>
              <article class="rk-frame-audit-panel" id="rk-frame-panel-hydraulics" data-state="missing"><span>Hydraulika i sterowanie</span><strong id="rk-frame-panel-hydraulics-title">Do uzupełnienia</strong><p id="rk-frame-panel-hydraulics-text">Brakuje wymagań źródła ciepła i obiegów.</p></article>
            </div>

            <div class="rk-frame-score">
              <strong>Kompletność danych: <span id="rk-frame-score-value">0/4</span></strong>
              <div class="rk-frame-score-track" aria-hidden="true"><div class="rk-frame-score-fill" id="rk-frame-score-fill"></div></div>
              <strong id="rk-frame-score-percent">0%</strong>
            </div>

            <div class="rk-frame-house-wrap">
              <h4>Dynamiczny przekrój domu</h4>
              <p>Schemat rozdziela parter i piętro. Kolory nie są oceną bezpieczeństwa — pokazują jedynie wybrany etap decyzji.</p>
              <svg class="rk-frame-house-svg" viewBox="0 0 920 520" role="img" aria-labelledby="rk-frame-house-title rk-frame-house-desc">
                <title id="rk-frame-house-title">Schemat kondygnacji domu szkieletowego</title>
                <desc id="rk-frame-house-desc">Parter oraz piętro z opisem wybranej konstrukcji i systemu ogrzewania.</desc>
                <rect x="0" y="0" width="920" height="520" fill="#eef7fa"/>
                <path d="M125 185 L460 48 L795 185" fill="none" stroke="#143e53" stroke-width="24" stroke-linecap="round" stroke-linejoin="round"/>
                <rect x="150" y="180" width="620" height="270" rx="8" fill="#ffffff" stroke="#143e53" stroke-width="10"/>
                <rect id="rk-frame-svg-upper-band" x="175" y="215" width="570" height="88" rx="12" fill="#f3b51b" opacity="0.82"/>
                <rect id="rk-frame-svg-ground-band" x="175" y="330" width="570" height="88" rx="12" fill="#29c4da" opacity="0.82"/>
                <line x1="150" y1="316" x2="770" y2="316" stroke="#143e53" stroke-width="9"/>
                <rect x="110" y="450" width="700" height="28" rx="10" fill="#829aa5"/>
                <rect x="70" y="478" width="780" height="25" rx="10" fill="#b98658"/>
                <text x="205" y="246" fill="#0b2232" font-size="24" font-weight="900" id="rk-frame-svg-upper-title">Strop belkowy drewniany</text>
                <text x="205" y="278" fill="#0b2232" font-size="18" font-weight="700" id="rk-frame-svg-upper-system">System jeszcze nie wybrany</text>
                <text x="205" y="361" fill="#0b2232" font-size="24" font-weight="900" id="rk-frame-svg-ground-title">Podłoga na gruncie</text>
                <text x="205" y="393" fill="#0b2232" font-size="18" font-weight="700" id="rk-frame-svg-ground-system">System jeszcze nie wybrany</text>
              </svg>

              <div class="rk-frame-level-grid">
                <article class="rk-frame-level-card"><span>Parter</span><strong id="rk-frame-ground-summary-title">Podłoga na gruncie</strong><p id="rk-frame-ground-summary-text">Ustal przekrój cieplny, wysokości, izolację, wilgoć i dylatacje przed wyborem systemu.</p></article>
                <article class="rk-frame-level-card" id="rk-frame-upper-summary-card"><span>Piętro / strop</span><strong id="rk-frame-upper-summary-title">Strop belkowy drewniany</strong><p id="rk-frame-upper-summary-text">Sprawdź nośność, ugięcie, drgania, akustykę i pełny ciężar warstw.</p></article>
              </div>
            </div>

            <div class="rk-frame-audit-actions" id="rk-frame-audit-actions" aria-live="polite"></div>

            <div class="rk-frame-tool-actions">
              <button class="rk-frame-reset" type="button" id="rk-frame-reset">Przywróć dane przykładowe</button>
            </div>

            <p class="rk-frame-tool-foot">Audyt ma charakter edukacyjny. Nie wykonuje obliczeń konstrukcyjnych, projektu fizyki budowli, OZC ani obliczeń hydraulicznych. Wynik „kompletne” oznacza wyłącznie, że użytkownik zadeklarował posiadanie danej grupy informacji.</p>
          </div>
        </div>

        <div class="rk-frame-cta">
          <div>
            <h3>Audyt wskazał luki? W projekcie trzeba połączyć je na jednym rzucie</h3>
            <p>Analizator może pokazać, że na parterze można rozważyć system z jastrychem, a na drewnianym stropie brakuje oceny konstrukcyjnej. Nie zna jednak przekrojów i rozpiętości belek, ugięć, drgań, warstw akustycznych, rzeczywistych strat pomieszczeń ani hydrauliki wybranego źródła. Te elementy trzeba skoordynować w indywidualnym projekcie.</p>
          </div>
          <a class="rk-frame-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki do domu szkieletowego</a>
        </div>
      </section>
<section class="rk-frame-section" id="rk-frame-parametry">
        <h2>Rozstaw rur, moc i temperatura zasilania w domu szkieletowym</h2>
        <p>Technologia budynku nie wyznacza automatycznie rozstawu rur. Podłoga nie „wie”, czy znajduje się w domu murowanym czy szkieletowym. Jej wydajność zależy od geometrii systemu, średniej temperatury wody, temperatury pomieszczenia, oporu warstw nad rurą i dopuszczalnej temperatury powierzchni.</p>

        <h3>Rozstaw 10 czy 15 cm?</h3>
        <p>Najpierw trzeba znać wymaganą moc jednostkową. Następnie porównuje się warianty w identycznych warunkach: przy tej samej temperaturze zasilania i powrotu, tym samym przekroju podłogi oraz tej samej okładzinie. Samo stwierdzenie „pompa ciepła = 10 cm” albo „dom szkieletowy = 15 cm” nie jest metodą projektową. Zobacz osobne 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>.</p>

        <h3>Temperatura zasilania</h3>
        <p>Nie ma jednej optymalnej temperatury dla wszystkich domów szkieletowych. Projekt określa ją na podstawie najbardziej wymagającego pomieszczenia, charakterystyki systemu i ograniczeń okładziny. Sterowanie pogodowe może później zmniejszać temperaturę wraz ze wzrostem temperatury zewnętrznej. Więcej wyjaśniamy w artykule o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>.</p>

        <h3>Długość pętli i opory</h3>
        <p>System suchy nie zwalnia z obliczeń hydraulicznych. Długość rury, przepływ, średnica wewnętrzna, opory rozdzielacza i dobiegów nadal wyznaczają stratę ciśnienia. Rozstaw wpływa na ilość rury w polu, ale nie zastępuje obliczenia krytycznej pętli. Pomocny jest przewodnik o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli ogrzewania podłogowego</a>.</p>

        <div class="rk-frame-note">
          <p><strong>Nie porównuj samych temperatur zasilania.</strong> Dwa systemy przy tej samej temperaturze mogą oddawać inną moc, jeżeli różnią się rozstawem, płytami przewodzącymi, oporem okładziny albo temperaturą powrotu.</p>
        </div>
      </section>

      <section class="rk-frame-section" id="rk-frame-okladziny">
        <h2>Panele, drewno i płytki na podłogówce w domu szkieletowym</h2>
        <p>Okładzinę dobiera się jako część całego przekroju. Liczy się deklarowany opór cieplny wykończenia wraz z podkładem, dopuszczenie do ogrzewania podłogowego, ograniczenie temperatury powierzchni oraz wymagania dotyczące wilgotności i odkształceń podłoża.</p>

        <div class="rk-frame-table-wrap">
          <table class="rk-frame-table">
            <thead>
              <tr>
                <th>Okładzina</th>
                <th>Co wpływa na wymianę ciepła?</th>
                <th>Co sprawdzić przed projektem?</th>
                <th>Typowy błąd</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Okładzina"><strong>Płytki</strong></td>
                <td data-label="Wpływ">Zwykle niski opór wykończenia, ale wynik zależy też od kleju i płyt podkładowych.</td>
                <td data-label="Sprawdź">Sztywność, ugięcie, dylatacje, hydroizolację i zgodność całego układu.</td>
                <td data-label="Błąd">Założenie, że sama płytka rozwiązuje problem pracy drewnianego stropu.</td>
              </tr>
              <tr>
                <td data-label="Okładzina"><strong>Panele</strong></td>
                <td data-label="Wpływ">Opór panelu i podkładu; sposób ułożenia oraz kontakt z podłożem.</td>
                <td data-label="Sprawdź">Łączny opór, maksymalną temperaturę i wymagania montażowe konkretnego produktu.</td>
                <td data-label="Błąd">Dobór po samej grubości lub oznaczeniu „do podłogówki”.</td>
              </tr>
              <tr>
                <td data-label="Okładzina"><strong>Drewno</strong></td>
                <td data-label="Wpływ">Gatunek, grubość, budowa elementu i sposób montażu.</td>
                <td data-label="Sprawdź">Opór, wilgotność, dopuszczalne temperatury oraz stabilność wymiarową.</td>
                <td data-label="Błąd">Traktowanie każdego parkietu i każdej deski jako tej samej okładziny.</td>
              </tr>
              <tr>
                <td data-label="Okładzina"><strong>Dywan / wykładzina</strong></td>
                <td data-label="Wpływ">Łączny opór wykładziny i podkładu może wyraźnie ograniczać emisję.</td>
                <td data-label="Sprawdź">Dopuszczenie do ogrzewania i deklarowany opór kompletnego zestawu.</td>
                <td data-label="Błąd">Dodanie grubej warstwy po obliczeniu instalacji bez ponownej weryfikacji.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <p>Sam rodzaj materiału nie daje gotowej odpowiedzi. Praktyczne porównanie zawiera artykuł <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele czy płytki na ogrzewanie podłogowe</a>, a znaczenie parametru wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporze cieplnym R</a>.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-zrodlo">
        <h2>Pompa ciepła, kocioł i bufor w domu szkieletowym</h2>
        <p>Ogrzewanie podłogowe może współpracować z pompą ciepła, kotłem kondensacyjnym i innym źródłem wody grzewczej. Źródło wpływa na preferowane temperatury, wymagany przepływ, zakres modulacji oraz sposób sterowania, ale nie wybiera za projektanta konstrukcji podłogi.</p>

        <div class="rk-frame-grid-3">
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Temperatura</span>
            <h3>Projektuj dla niskich parametrów, jeśli bilans na to pozwala</h3>
            <p>Niższa temperatura może sprzyjać sprawności źródła, ale system musi nadal pokrywać obciążenie pomieszczeń w warunkach projektowych.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Przepływ</span>
            <h3>Nie zamykaj przypadkowo wszystkich obiegów</h3>
            <p>Źródło i pompa obiegowa mogą wymagać minimalnego przepływu. Duża liczba siłowników musi być uwzględniona w hydraulice i automatyce.</p>
          </article>
          <article class="rk-frame-card">
            <span class="rk-frame-tag">Pojemność</span>
            <h3>Bufor nie jest automatycznym dodatkiem</h3>
            <p>Potrzebę bufora ocenia się z wymagań źródła, pojemności instalacji, minimalnej mocy, defrostu i sposobu rozdzielenia obiegów.</p>
          </article>
        </div>

        <p>Lekka konstrukcja budynku sama nie jest dowodem, że bufor jest konieczny ani że można go pominąć. Podobnie system suchy nie przesądza o liczbie uruchomień sprężarki. Liczy się zachowanie całego układu: zapotrzebowanie chwilowe, modulacja, objętość wody, przepływy, histereza i sterowanie.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-sterowanie">
        <h2>Sterowanie podłogówką i zyski słoneczne</h2>
        <p>Duże przeszklenia mogą szybko zwiększać temperaturę w pomieszczeniu, szczególnie w budynku o niewielkiej masie akumulacyjnej. Nie oznacza to jednak, że najlepszym rozwiązaniem jest agresywne włączanie i wyłączanie każdej pętli.</p>

        <h3>Sterowanie pogodowe jako baza</h3>
        <p>Krzywa grzewcza dostosowuje temperaturę wody do warunków zewnętrznych. Dobrze ustawiona zmniejsza ryzyko przegrzewania i pozwala instalacji pracować stabilniej niż przy stałej, zawyżonej temperaturze zasilania.</p>

        <h3>Regulacja pomieszczeniowa</h3>
        <p>Termostaty i siłowniki mogą ograniczać dopływ ciepła w pomieszczeniach z dużymi zyskami, lecz ich działanie trzeba skoordynować z minimalnym przepływem źródła, pompą obiegową i bezwładnością zastosowanego przekroju. Sterowanie nie naprawi źle dobranej mocy ani niewyrównanej hydrauliki.</p>

        <h3>Równoważenie przepływów</h3>
        <p>Każda pętla powinna otrzymać przepływ wynikający z jej obciążenia i projektowej różnicy temperatur. Takie nastawy są ważniejsze niż arbitralne ustawienie jednakowej wartości na wszystkich rotametrach. Więcej o sensie podziału na strefy przeczytasz w artykule <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe ogrzewaniem</a>.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-kolejnosc">
        <h2>Kolejność projektowania i wykonania instalacji</h2>
        <p>Najwięcej problemów powstaje wtedy, gdy system ogrzewania jest wybierany po zamknięciu przekrojów konstrukcyjnych albo gdy instalator otrzymuje nieaktualny rzut. Bezpieczniejsza jest kolejność oparta na kolejnych uzgodnieniach.</p>

        <div class="rk-frame-steps rk-frame-steps-six">
          <article class="rk-frame-step"><span class="rk-frame-step-num">1</span><h3>Ustal konstrukcje</h3><p>Zidentyfikuj podłogę parteru, wszystkie stropy, rozpiętości, podparcia i planowane warstwy.</p></article>
          <article class="rk-frame-step"><span class="rk-frame-step-num">2</span><h3>Policz straty</h3><p>Wyznacz obciążenie cieplne każdego pomieszczenia i rzeczywistą powierzchnię czynną.</p></article>
          <article class="rk-frame-step"><span class="rk-frame-step-num">3</span><h3>Wybierz przekroje</h3><p>Porównaj system suchy i mokry pod kątem konstrukcji, wysokości, akustyki oraz wydajności.</p></article>
          <article class="rk-frame-step"><span class="rk-frame-step-num">4</span><h3>Oblicz instalację</h3><p>Dobierz rozstaw, temperatury, długości pętli, przepływy, opory i nastawy rozdzielacza.</p></article>
          <article class="rk-frame-step"><span class="rk-frame-step-num">5</span><h3>Skoordynuj detale</h3><p>Uzgodnij dylatacje, drzwi, schody, okładziny, strefy bez rur i wszystkie przebicia warstw.</p></article>
          <article class="rk-frame-step"><span class="rk-frame-step-num">6</span><h3>Wykonaj i odbierz</h3><p>Przeprowadź próbę, udokumentuj rury, kontroluj wilgotność i uruchom system zgodnie z procedurą.</p></article>
        </div>

        <h3>Co powinno znaleźć się na dokumentacji?</h3>
        <p>Rzut powinien pokazywać przebieg i numery pętli, rozstawy, strefy brzegowe, dobieg, rozdzielacz, dylatacje, powierzchnie wyłączone oraz przejścia przez przegrody. Zestawienie powinno zawierać długości, obciążenia, przepływy, straty ciśnienia i nastawy. Pełny zakres opisujemy w artykule <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt podłogówki</a>.</p>
      </section>

      <section class="rk-frame-section" id="rk-frame-bledy">
        <h2>Najczęstsze błędy i mity</h2>

        <div class="rk-frame-myth"><div>Mit: dom szkieletowy zawsze wymaga systemu suchego.</div><div><strong>Fakt:</strong> o wyborze decyduje konkretna podłoga lub strop. Na parterze może być uzasadniony jastrych, a na stropie lekkie rozwiązanie suche.</div></div>
        <div class="rk-frame-myth"><div>Mit: jastrych jest zawsze zbyt ciężki dla stropu drewnianego.</div><div><strong>Fakt:</strong> nie wolno zakładać ani dopuszczalności, ani zakazu bez obliczeń. Konstruktor ocenia pełne obciążenie, ugięcie, drgania i detale.</div></div>
        <div class="rk-frame-myth"><div>Mit: system suchy ma z definicji określoną moc i temperaturę.</div><div><strong>Fakt:</strong> wydajność zależy od całego przekroju, rozstawu, temperatur wody, okładziny i warunków pomieszczenia.</div></div>
        <div class="rk-frame-myth"><div>Mit: 10 cm rozstawu jest obowiązkowe przy pompie ciepła.</div><div><strong>Fakt:</strong> rozstaw wynika z obciążenia i charakterystyki systemu. Źródło określa preferowane warunki pracy, ale nie zastępuje obliczeń podłogi.</div></div>
        <div class="rk-frame-myth"><div>Mit: niski U oznacza niski opór cieplny.</div><div><strong>Fakt:</strong> niższy współczynnik U oznacza mniejsze przenikanie ciepła i większą izolacyjność całej przegrody.</div></div>
        <div class="rk-frame-myth"><div>Mit: lekki dom potrzebuje bufora.</div><div><strong>Fakt:</strong> potrzebę bufora ocenia się z wymagań źródła, pojemności wodnej, mocy minimalnej, przepływu i logiki sterowania.</div></div>
        <div class="rk-frame-myth"><div>Mit: termostaty naprawią przegrzewanie.</div><div><strong>Fakt:</strong> sterowanie nie zastępuje prawidłowej mocy, temperatury zasilania, równoważenia i koordynacji zysków słonecznych.</div></div>
        <div class="rk-frame-myth"><div>Mit: panele „do podłogówki” nie wymagają dalszych danych.</div><div><strong>Fakt:</strong> potrzebny jest opór całego zestawu, dopuszczalna temperatura i wymagania dotyczące podłoża oraz montażu.</div></div>
      </section>

      <section class="rk-frame-section" id="rk-frame-checklista">
        <h2>Checklista przed zamówieniem i wykonaniem podłogówki</h2>
        <p>Jeżeli któregoś punktu nie można potwierdzić, nie oznacza to automatycznie błędu — oznacza decyzję, którą trzeba podjąć przed zamknięciem warstw.</p>

        <div class="rk-frame-checklist">
          <div class="rk-frame-check"><h3>Konstrukcja każdej podłogi</h3><p>Znane są przekroje parteru, stropów, rozpiętości, podparcia i dopuszczalne warstwy.</p></div>
          <div class="rk-frame-check"><h3>Pełne obciążenia</h3><p>Konstruktor otrzymał ciężar całego przekroju, a nie tylko nazwę ogrzewania podłogowego.</p></div>
          <div class="rk-frame-check"><h3>Ugięcie i drgania</h3><p>Sprawdzono kryteria użytkowalności odpowiednie dla stropu oraz planowanej okładziny.</p></div>
          <div class="rk-frame-check"><h3>Straty pomieszczeń</h3><p>Dostępne są obciążenia cieplne osobno dla każdego pomieszczenia.</p></div>
          <div class="rk-frame-check"><h3>Powierzchnia czynna</h3><p>Rzut uwzględnia trwałą zabudowę, schody, dylatacje i inne uzgodnione strefy bez rur.</p></div>
          <div class="rk-frame-check"><h3>Charakterystyka systemu</h3><p>Moc sprawdzono dla konkretnego rozstawu, temperatur, przekroju i oporu okładziny.</p></div>
          <div class="rk-frame-check"><h3>Okładziny</h3><p>Znany jest łączny opór, ograniczenia temperatury i wymagania montażowe wykończenia.</p></div>
          <div class="rk-frame-check"><h3>Wilgoć i szczelność</h3><p>Zaplanowano ciągłość warstw, przejścia instalacyjne, wysychanie i pomiary przed zamknięciem.</p></div>
          <div class="rk-frame-check"><h3>Akustyka i ogień</h3><p>Ogrzewanie nie narusza warstw wymaganych dla ochrony akustycznej i ogniowej stropu.</p></div>
          <div class="rk-frame-check"><h3>Hydraulika</h3><p>Policzono długości, przepływy, opory, nastawy i krytyczną pętlę rozdzielacza.</p></div>
          <div class="rk-frame-check"><h3>Źródło ciepła</h3><p>Znane są minimalny przepływ, moc minimalna, zakres temperatur i wymagania producenta źródła.</p></div>
          <div class="rk-frame-check"><h3>Dokumentacja wykonawcza</h3><p>Wykonawca otrzymał aktualny rzut, a przed zakryciem rur powstanie dokumentacja powykonawcza.</p></div>
        </div>
      </section>

      <section class="rk-frame-section" id="rk-frame-faq">
        <h2>FAQ: ogrzewanie podłogowe w domu szkieletowym</h2>
        <div class="rk-frame-faq">
          <details><summary>Czy ogrzewanie podłogowe nadaje się do domu szkieletowego?</summary><div class="rk-frame-faq-answer"><p>Tak. Trzeba jednak osobno zaprojektować podłogę parteru i każdy strop, uwzględniając konstrukcję, straty ciepła, powierzchnię czynną, okładziny oraz hydraulikę źródła.</p></div></details>
          <details><summary>Czy w domu szkieletowym musi być system suchy?</summary><div class="rk-frame-faq-answer"><p>Nie. System suchy jest częstym wyborem na lekkim stropie, ale parter na gruncie lub płyta fundamentowa mogą mieć system z jastrychem. Decyzja wynika z konkretnego przekroju, a nie z technologii ścian.</p></div></details>
          <details><summary>Czy w domu szkieletowym można wykonać wylewkę?</summary><div class="rk-frame-faq-answer"><p>Można, jeśli rozwiązanie przewiduje projekt konstrukcyjny i projekt warstw. Na stropie trzeba sprawdzić pełne obciążenie, ugięcie, drgania, wilgoć technologiczną, akustykę oraz wymagania okładziny.</p></div></details>
          <details><summary>Czy jastrych cementowy jest dopuszczalny na stropie drewnianym?</summary><div class="rk-frame-faq-answer"><p>Nie da się odpowiedzieć na podstawie samej nazwy stropu. Dopuszczalność zależy od jego konstrukcji, rozpiętości, podparcia, pełnego ciężaru warstw i kryteriów użytkowalności. Potrzebna jest ocena konstruktora.</p></div></details>
          <details><summary>Czy jastrych anhydrytowy jest obowiązkowy w domu szkieletowym?</summary><div class="rk-frame-faq-answer"><p>Nie. Rodzaj jastrychu dobiera się do kompletnego rozwiązania, wymagań konstrukcyjnych, wilgotnościowych, wykonawczych i okładziny. Sama technologia szkieletowa nie narzuca anhydrytu.</p></div></details>
          <details><summary>Jaka podłogówka na parterze domu szkieletowego?</summary><div class="rk-frame-faq-answer"><p>Najpierw trzeba ustalić, czy jest to podłoga na gruncie, płyta fundamentowa czy strop nad przestrzenią nieogrzewaną. Na tej podstawie projektuje się izolację, warstwy, dylatacje oraz system suchy albo z jastrychem.</p></div></details>
          <details><summary>Jaka podłogówka na stropie drewnianym?</summary><div class="rk-frame-faq-answer"><p>Często wybiera się lekki system suchy, lecz wymaga on odpowiedniej sztywności, rozprowadzania ciepła, akustyki i zgodności z okładziną. System z wylewką jest możliwy wyłącznie po pełnej weryfikacji konstrukcyjnej.</p></div></details>
          <details><summary>Ile waży ogrzewanie podłogowe na stropie?</summary><div class="rk-frame-faq-answer"><p>Nie ma jednej wartości. Trzeba zsumować masę rur z wodą, płyt, profili lub jastrychu, izolacji, podsypek, okładziny, klejów i pozostałych warstw. Konstruktor ocenia kompletne obciążenie stałe.</p></div></details>
          <details><summary>Jaka temperatura zasilania podłogówki w domu szkieletowym?</summary><div class="rk-frame-faq-answer"><p>Temperatura wynika z wymaganej mocy, charakterystyki konkretnego systemu, rozstawu, oporu okładziny, temperatury pomieszczenia i ograniczeń powierzchni. Nie ma jednej wartości właściwej dla wszystkich domów szkieletowych.</p></div></details>
          <details><summary>Jaki rozstaw rur stosować w domu szkieletowym?</summary><div class="rk-frame-faq-answer"><p>Rozstaw dobiera się po obliczeniu straty ciepła i powierzchni czynnej, a następnie sprawdza wydajność konkretnego przekroju przy projektowych temperaturach. Technologia szkieletowa ani pompa ciepła nie wyznaczają go samodzielnie.</p></div></details>
          <details><summary>Czy pompa ciepła wymaga systemu suchego?</summary><div class="rk-frame-faq-answer"><p>Nie. Pompa ciepła może współpracować z systemem suchym i mokrym. Istotne są możliwie niskie temperatury przy pokryciu obciążenia, wymagany przepływ, pojemność instalacji, zakres modulacji i sterowanie.</p></div></details>
          <details><summary>Czy do podłogówki w domu szkieletowym potrzebny jest bufor?</summary><div class="rk-frame-faq-answer"><p>Nie zawsze. Potrzebę bufora określa się z wymagań konkretnego źródła, minimalnego przepływu, mocy minimalnej, objętości wody, sposobu odszraniania i pracy stref. Sama lekka konstrukcja nie rozstrzyga.</p></div></details>
          <details><summary>Czy warto stosować sterowanie strefowe?</summary><div class="rk-frame-faq-answer"><p>Może pomagać przy różnych zyskach słonecznych i sposobach użytkowania, ale musi być skoordynowane z hydrauliką i minimalnym przepływem źródła. Nie zastąpi prawidłowego doboru mocy, temperatury i przepływów.</p></div></details>
          <details><summary>Czy panele i drewno nadają się na suche ogrzewanie podłogowe?</summary><div class="rk-frame-faq-answer"><p>Tak, jeśli producent dopuszcza takie zastosowanie, a łączny opór okładziny z podkładem, maksymalna temperatura, wilgotność i sposób montażu są zgodne z projektem systemu.</p></div></details>
          <details><summary>Jak obliczyć wymaganą moc podłogi?</summary><div class="rk-frame-faq-answer"><p>Projektową stratę ciepła pomieszczenia w watach dzieli się przez rzeczywiście ogrzewaną powierzchnię w metrach kwadratowych. Wynik w W/m² porównuje się z wydajnością wybranego przekroju dla konkretnych temperatur i okładziny.</p></div></details>
          <details><summary>Czy paroizolacja powinna być pod ogrzewaniem podłogowym?</summary><div class="rk-frame-faq-answer"><p>Nie ma jednej odpowiedzi dla każdego przekroju. Lokalizację warstw kontrolujących parę i szczelność powietrzną określa projekt fizyki budowli. Przejścia instalacyjne muszą zachować ich ciągłość.</p></div></details>
        </div>
      </section>

      <section class="rk-frame-section" id="rk-frame-zrodla">
        <h2>Normy i źródła techniczne</h2>
        <p>Artykuł opiera się na metodyce projektowania powierzchni grzewczych, zasadach projektowania konstrukcji drewnianych i obowiązujących wymaganiach budowlanych. Dostęp do pełnej treści części norm może być płatny.</p>
        <ol class="rk-frame-sources">
          <li><a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-floor-heating-methods-for-the-determination-of-the-thermal-output-using-calculations-and-experimental-tests" target="_blank" rel="nofollow noopener noreferrer">BSI — EN 1264-2: określanie mocy cieplnej ogrzewania podłogowego</a>.</li>
          <li><a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-dimensioning-1" target="_blank" rel="nofollow noopener noreferrer">BSI — EN 1264-3: wymiarowanie wodnych systemów powierzchniowych</a>.</li>
          <li><a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-installation-1" target="_blank" rel="nofollow noopener noreferrer">BSI — EN 1264-4: wymagania instalacyjne</a>.</li>
          <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2: wyznaczanie wydajności powierzchni grzewczej i chłodzącej</a>.</li>
          <li><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3: projektowanie i wymiarowanie</a>.</li>
          <li><a href="https://eurocodes.jrc.ec.europa.eu/sites/default/files/2022-06/EN1995_4_Kreuzinger.pdf" target="_blank" rel="nofollow noopener noreferrer">Joint Research Centre — wprowadzenie do Eurokodu 5 dla konstrukcji drewnianych</a>.</li>
          <li><a href="https://eli.gov.pl/eli/DU/2022/1225/ogl" target="_blank" rel="nofollow noopener noreferrer">Elektroniczny Dziennik Ustaw — warunki techniczne, jakim powinny odpowiadać budynki</a>.</li>
          <li><a href="https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/" target="_blank" rel="nofollow noopener noreferrer">Budowlane ABC — rządowy kalkulator współczynnika przenikania ciepła przegród</a>.</li>
        </ol>
      </section>
    </main>

    <section class="rk-frame-author" id="rk-frame-author" aria-labelledby="rk-frame-author-title">
      <input type="radio" name="rk-frame-author-tabs" id="rk-frame-author-about" checked>
      <input type="radio" name="rk-frame-author-tabs" id="rk-frame-author-exp">
      <input type="radio" name="rk-frame-author-tabs" id="rk-frame-author-sites">

      <div class="rk-frame-author-head">
        <div><span>Autor opracowania</span><h2 id="rk-frame-author-title">Robert Kucharski</h2></div>
        <span class="rk-frame-author-mark">Projektowanie HVAC • praktyka i obliczenia</span>
      </div>

      <div class="rk-frame-author-layout">
        <aside class="rk-frame-author-side">
          <div class="rk-frame-author-photo"><img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="162" height="162" loading="lazy"></div>
          <div class="rk-frame-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <div class="rk-frame-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-frame-author-social-label">Profile autora</div>
          <div class="rk-frame-author-social">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="Profil Roberta Kucharskiego na LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 3.5A2.2 2.2 0 1 1 5.2 8a2.2 2.2 0 0 1 0-4.5ZM3.3 9.5h3.8V21H3.3V9.5Zm6.2 0h3.6v1.6h.1c.5-.9 1.7-2 3.6-2 3.9 0 4.6 2.6 4.6 5.9v6h-3.8v-5.3c0-1.3 0-2.9-1.8-2.9s-2.1 1.4-2.1 2.8V21H9.5V9.5Z"/></svg></a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Profil Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M13.8 22v-8h2.7l.4-3h-3.1V9.1c0-.9.3-1.5 1.6-1.5H17V4.9c-.3 0-1.3-.1-2.4-.1-2.4 0-4 1.4-4 4.1V11H8v3h2.6v8h3.2Z"/></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.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.4l7.2-8.2L2.9 2h6.3l4.4 5.8L18.9 2Zm-1.1 17.9h1.7L8.3 4H6.5l11.3 15.9Z"/></svg></a>
          </div>
        </aside>

        <div class="rk-frame-author-main">
          <blockquote class="rk-frame-author-quote"><p>W domu szkieletowym nie projektuje się „jednej podłogówki”. Projektuje się konkretne podłogi i stropy, a dopiero potem łączy ich obiegi w spójny układ hydrauliczny.</p></blockquote>

          <div class="rk-frame-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-frame-author-tab" for="rk-frame-author-about" role="tab">O autorze</label>
            <label class="rk-frame-author-tab" for="rk-frame-author-exp" role="tab">Doświadczenie</label>
            <label class="rk-frame-author-tab" for="rk-frame-author-sites" role="tab">Serwisy</label>
          </div>

          <div class="rk-frame-author-panel rk-frame-author-panel-about">
            <p><strong>Robert Kucharski</strong> opracowuje projekty ogrzewania podłogowego, obliczenia strat ciepła i hydrauliki instalacji oraz materiały techniczne dla inwestorów i wykonawców. W pracy łączy bilans cieplny pomieszczeń z rzeczywistą geometrią rzutu, konstrukcją podłogi, doborem pętli, przepływami i nastawami rozdzielacza.</p>
            <p>W artykułach rozdziela wartości wynikające z norm i obliczeń od uproszczeń orientacyjnych. Szczególną uwagę poświęca ograniczeniom narzędzi internetowych: kalkulator może uporządkować dane, ale nie zastąpi oceny konstrukcji, koordynacji międzybranżowej ani projektu wykonawczego.</p>
          </div>

          <div class="rk-frame-author-panel rk-frame-author-panel-exp">
            <p>Zakres opracowań autora obejmuje projektowe straty ciepła, wydajność ogrzewania powierzchniowego, długości i podział pętli, dobór przepływów, straty ciśnienia, równoważenie hydrauliczne, dobór pomp oraz współpracę instalacji z pompami ciepła i kotłami.</p>
            <p>W budynkach o lekkiej konstrukcji kluczowe jest połączenie projektu HVAC z przekrojami stropów, wymaganiami okładzin, ochroną przed wilgocią, akustyką i ograniczeniami konstrukcyjnymi. Dlatego w tym opracowaniu nie podano uniwersalnych ciężarów, czasów reakcji ani temperatur bez określenia warunków.</p>
          </div>

          <div class="rk-frame-author-panel rk-frame-author-panel-sites">
            <p>Robert Kucharski publikuje materiały techniczne w serwisie Projekt-Ogrzewania.pl oraz współtworzy treści branżowe 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>. Wszystkie wpisy autora na tej stronie znajdziesz w <a href="https://projekt-ogrzewania.pl/author/admin3399/">archiwum Roberta Kucharskiego</a>.</p>
          </div>
        </div>
      </div>
    </section>

    <div class="rk-frame-final-wrap">
      <div class="rk-frame-cta">
        <div>
          <h3>Przełóż przekroje domu szkieletowego na konkretny projekt podłogówki</h3>
          <p>Projekt obejmie układ pętli na parterze i piętrze, rozstawy rur, długości obwodów, wymagane przepływy oraz nastawy rozdzielacza — z uwzględnieniem rzeczywistej konstrukcji podłóg i stropów.</p>
        </div>
        <a class="rk-frame-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki do domu szkieletowego</a>
      </div>
    </div>

    <div class="rk-frame-footnote">Materiał edukacyjny. Ostateczny dobór konstrukcji podłogi, obciążeń, warstw oraz parametrów instalacji powinien wynikać z dokumentacji konkretnego budynku i uzgodnień właściwych projektantów.</div>
  </div>
</article>

      
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#article",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/",
      "headline": "Ogrzewanie podłogowe w domu szkieletowym: system suchy, strop i projekt",
      "description": "Projektowanie ogrzewania podłogowego w domu szkieletowym: parter na gruncie, drewniany strop, system suchy lub z jastrychem, obciążenie, moc, hydraulika i sterowanie.",
      "inLanguage": "pl-PL",
      "datePublished": "2026-09-01",
      "dateModified": "2026-09-01",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webpage"},
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "image": {"@type": "ImageObject", "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"},
      "about": [
        "ogrzewanie podłogowe w domu szkieletowym",
        "system suchego ogrzewania podłogowego",
        "ogrzewanie podłogowe na stropie drewnianym",
        "projektowanie instalacji grzewczej"
      ],
      "keywords": "ogrzewanie podłogowe w domu szkieletowym, podłogówka w domu drewnianym, system suchy, strop drewniany, jastrych, pompa ciepła"
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#webpage",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/",
      "name": "Ogrzewanie podłogowe w domu szkieletowym: system suchy, strop i projekt",
      "description": "Sprawdź, jak zaprojektować podłogówkę w domu szkieletowym: parter na gruncie, strop drewniany, system suchy lub mokry, obciążenie i sterowanie.",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#breadcrumb"},
      "primaryImageOfPage": {"@type": "ImageObject", "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"},
      "datePublished": "2026-09-01",
      "dateModified": "2026-09-01",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#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": "Ogrzewanie podłogowe w domu szkieletowym", "item": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#application",
      "name": "Interaktywny audyt projektu podłogówki w domu szkieletowym",
      "url": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#rk-frame-audyt",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "Włączona obsługa JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie porządkuje dane konstrukcyjne, cieplne, wilgotnościowe i hydrauliczne dla podłogówki w domu szkieletowym oraz oblicza wymaganą moc jednostkową z podanej straty pomieszczenia i powierzchni czynnej.",
      "featureList": [
        "oddzielna analiza parteru i stropu",
        "audyt danych konstrukcyjnych",
        "audyt strat ciepła i charakterystyki systemu",
        "audyt wilgoci, szczelności i okładzin",
        "audyt hydrauliki i sterowania źródła",
        "obliczenie wymaganej mocy W/m²",
        "porównanie z mocą wpisaną z dokumentacji",
        "dynamiczny przekrój domu i lista kolejnych działań"
      ],
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#howto",
      "name": "Jak zaplanować ogrzewanie podłogowe w domu szkieletowym",
      "description": "Kolejność projektowania podłogówki z uwzględnieniem konstrukcji parteru, stropu, strat ciepła, przekrojów podłogi i hydrauliki.",
      "totalTime": "PT2H",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Ustal konstrukcję każdej podłogi", "text": "Zidentyfikuj podłogę parteru, stropy, rozpiętości, podparcia i planowane warstwy."},
        {"@type": "HowToStep", "position": 2, "name": "Policz straty ciepła pomieszczeń", "text": "Wyznacz projektową stratę ciepła i rzeczywiście ogrzewaną powierzchnię każdego pomieszczenia."},
        {"@type": "HowToStep", "position": 3, "name": "Porównaj kompletne przekroje", "text": "Oceń system suchy i system z jastrychem pod kątem obciążenia, wysokości, akustyki, wilgoci i wydajności."},
        {"@type": "HowToStep", "position": 4, "name": "Oblicz instalację", "text": "Dobierz rozstaw, temperatury, długości pętli, przepływy, straty ciśnienia oraz nastawy rozdzielacza."},
        {"@type": "HowToStep", "position": 5, "name": "Skoordynuj detale budowlane", "text": "Uzgodnij dylatacje, okładziny, strefy bez rur, poziomy, akustykę i przejścia przez warstwy szczelne."},
        {"@type": "HowToStep", "position": 6, "name": "Wykonaj próbę i dokumentację", "text": "Przeprowadź próbę instalacji, udokumentuj przebieg rur, kontroluj wilgotność i uruchom ogrzewanie zgodnie z procedurą."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/#faq",
      "mainEntity": [
        {"@type": "Question", "name": "Czy ogrzewanie podłogowe nadaje się do domu szkieletowego?", "acceptedAnswer": {"@type": "Answer", "text": "Tak. Trzeba jednak osobno zaprojektować podłogę parteru i każdy strop, uwzględniając konstrukcję, straty ciepła, powierzchnię czynną, okładziny oraz hydraulikę źródła."}},
        {"@type": "Question", "name": "Czy w domu szkieletowym musi być system suchy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. System suchy jest częstym wyborem na lekkim stropie, ale parter na gruncie lub płyta fundamentowa mogą mieć system z jastrychem. Decyzja wynika z konkretnego przekroju, a nie z technologii ścian."}},
        {"@type": "Question", "name": "Czy w domu szkieletowym można wykonać wylewkę?", "acceptedAnswer": {"@type": "Answer", "text": "Można, jeśli rozwiązanie przewiduje projekt konstrukcyjny i projekt warstw. Na stropie trzeba sprawdzić pełne obciążenie, ugięcie, drgania, wilgoć technologiczną, akustykę oraz wymagania okładziny."}},
        {"@type": "Question", "name": "Czy jastrych cementowy jest dopuszczalny na stropie drewnianym?", "acceptedAnswer": {"@type": "Answer", "text": "Nie da się odpowiedzieć na podstawie samej nazwy stropu. Dopuszczalność zależy od jego konstrukcji, rozpiętości, podparcia, pełnego ciężaru warstw i kryteriów użytkowalności. Potrzebna jest ocena konstruktora."}},
        {"@type": "Question", "name": "Czy jastrych anhydrytowy jest obowiązkowy w domu szkieletowym?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Rodzaj jastrychu dobiera się do kompletnego rozwiązania, wymagań konstrukcyjnych, wilgotnościowych, wykonawczych i okładziny. Sama technologia szkieletowa nie narzuca anhydrytu."}},
        {"@type": "Question", "name": "Jaka podłogówka na parterze domu szkieletowego?", "acceptedAnswer": {"@type": "Answer", "text": "Najpierw trzeba ustalić, czy jest to podłoga na gruncie, płyta fundamentowa czy strop nad przestrzenią nieogrzewaną. Na tej podstawie projektuje się izolację, warstwy, dylatacje oraz system suchy albo z jastrychem."}},
        {"@type": "Question", "name": "Jaka podłogówka na stropie drewnianym?", "acceptedAnswer": {"@type": "Answer", "text": "Często wybiera się lekki system suchy, lecz wymaga on odpowiedniej sztywności, rozprowadzania ciepła, akustyki i zgodności z okładziną. System z wylewką jest możliwy wyłącznie po pełnej weryfikacji konstrukcyjnej."}},
        {"@type": "Question", "name": "Ile waży ogrzewanie podłogowe na stropie?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości. Trzeba zsumować masę rur z wodą, płyt, profili lub jastrychu, izolacji, podsypek, okładziny, klejów i pozostałych warstw. Konstruktor ocenia kompletne obciążenie stałe."}},
        {"@type": "Question", "name": "Jaka temperatura zasilania podłogówki w domu szkieletowym?", "acceptedAnswer": {"@type": "Answer", "text": "Temperatura wynika z wymaganej mocy, charakterystyki konkretnego systemu, rozstawu, oporu okładziny, temperatury pomieszczenia i ograniczeń powierzchni. Nie ma jednej wartości właściwej dla wszystkich domów szkieletowych."}},
        {"@type": "Question", "name": "Jaki rozstaw rur stosować w domu szkieletowym?", "acceptedAnswer": {"@type": "Answer", "text": "Rozstaw dobiera się po obliczeniu straty ciepła i powierzchni czynnej, a następnie sprawdza wydajność konkretnego przekroju przy projektowych temperaturach. Technologia szkieletowa ani pompa ciepła nie wyznaczają go samodzielnie."}},
        {"@type": "Question", "name": "Czy pompa ciepła wymaga systemu suchego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Pompa ciepła może współpracować z systemem suchym i mokrym. Istotne są możliwie niskie temperatury przy pokryciu obciążenia, wymagany przepływ, pojemność instalacji, zakres modulacji i sterowanie."}},
        {"@type": "Question", "name": "Czy do podłogówki w domu szkieletowym potrzebny jest bufor?", "acceptedAnswer": {"@type": "Answer", "text": "Nie zawsze. Potrzebę bufora określa się z wymagań konkretnego źródła, minimalnego przepływu, mocy minimalnej, objętości wody, sposobu odszraniania i pracy stref. Sama lekka konstrukcja nie rozstrzyga."}},
        {"@type": "Question", "name": "Czy warto stosować sterowanie strefowe?", "acceptedAnswer": {"@type": "Answer", "text": "Może pomagać przy różnych zyskach słonecznych i sposobach użytkowania, ale musi być skoordynowane z hydrauliką i minimalnym przepływem źródła. Nie zastąpi prawidłowego doboru mocy, temperatury i przepływów."}},
        {"@type": "Question", "name": "Czy panele i drewno nadają się na suche ogrzewanie podłogowe?", "acceptedAnswer": {"@type": "Answer", "text": "Tak, jeśli producent dopuszcza takie zastosowanie, a łączny opór okładziny z podkładem, maksymalna temperatura, wilgotność i sposób montażu są zgodne z projektem systemu."}},
        {"@type": "Question", "name": "Jak obliczyć wymaganą moc podłogi?", "acceptedAnswer": {"@type": "Answer", "text": "Projektową stratę ciepła pomieszczenia w watach dzieli się przez rzeczywiście ogrzewaną powierzchnię w metrach kwadratowych. Wynik w W/m² porównuje się z wydajnością wybranego przekroju dla konkretnych temperatur i okładziny."}},
        {"@type": "Question", "name": "Czy paroizolacja powinna być pod ogrzewaniem podłogowym?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej odpowiedzi dla każdego przekroju. Lokalizację warstw kontrolujących parę i szczelność powietrzną określa projekt fizyki budowli. Przejścia instalacyjne muszą zachować ich ciągłość."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "ogrzewanie podłogowe w domu szkieletowym",
        "obliczenia strat ciepła",
        "hydraulika instalacji grzewczych",
        "projektowanie pętli grzewczych",
        "dobór pomp obiegowych",
        "równoważenie hydrauliczne",
        "koordynacja instalacji HVAC"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/"
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/"
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "inLanguage": "pl-PL"
    }
  ]
}
</script>

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

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

  var fields = {
    groundType: document.getElementById("rk-frame-ground-type"),
    groundSystem: document.getElementById("rk-frame-ground-system"),
    upperType: document.getElementById("rk-frame-upper-type"),
    upperSystem: document.getElementById("rk-frame-upper-system"),
    structure: document.getElementById("rk-frame-struct-check"),
    heatloss: document.getElementById("rk-frame-heatloss-check"),
    covering: document.getElementById("rk-frame-covering-check"),
    systemData: document.getElementById("rk-frame-systemdata-check"),
    airtight: document.getElementById("rk-frame-airtight-check"),
    source: document.getElementById("rk-frame-source-check"),
    roomLoss: document.getElementById("rk-frame-room-loss"),
    activeArea: document.getElementById("rk-frame-active-area"),
    availableOutput: document.getElementById("rk-frame-available-output")
  };

  var output = {
    required: document.getElementById("rk-frame-out-required"),
    room: document.getElementById("rk-frame-out-room"),
    capacity: document.getElementById("rk-frame-out-capacity"),
    capacityNote: document.getElementById("rk-frame-out-capacity-note"),
    margin: document.getElementById("rk-frame-out-margin"),
    marginNote: document.getElementById("rk-frame-out-margin-note"),
    marginCard: document.getElementById("rk-frame-margin-card"),
    scoreValue: document.getElementById("rk-frame-score-value"),
    scoreFill: document.getElementById("rk-frame-score-fill"),
    scorePercent: document.getElementById("rk-frame-score-percent")
  };

  var panels = {
    structure: {
      box: document.getElementById("rk-frame-panel-structure"),
      title: document.getElementById("rk-frame-panel-structure-title"),
      text: document.getElementById("rk-frame-panel-structure-text")
    },
    thermal: {
      box: document.getElementById("rk-frame-panel-thermal"),
      title: document.getElementById("rk-frame-panel-thermal-title"),
      text: document.getElementById("rk-frame-panel-thermal-text")
    },
    physics: {
      box: document.getElementById("rk-frame-panel-physics"),
      title: document.getElementById("rk-frame-panel-physics-title"),
      text: document.getElementById("rk-frame-panel-physics-text")
    },
    hydraulics: {
      box: document.getElementById("rk-frame-panel-hydraulics"),
      title: document.getElementById("rk-frame-panel-hydraulics-title"),
      text: document.getElementById("rk-frame-panel-hydraulics-text")
    }
  };

  var visual = {
    groundBand: document.getElementById("rk-frame-svg-ground-band"),
    upperBand: document.getElementById("rk-frame-svg-upper-band"),
    groundTitle: document.getElementById("rk-frame-svg-ground-title"),
    groundSystem: document.getElementById("rk-frame-svg-ground-system"),
    upperTitle: document.getElementById("rk-frame-svg-upper-title"),
    upperSystem: document.getElementById("rk-frame-svg-upper-system"),
    groundSummaryTitle: document.getElementById("rk-frame-ground-summary-title"),
    groundSummaryText: document.getElementById("rk-frame-ground-summary-text"),
    upperSummaryTitle: document.getElementById("rk-frame-upper-summary-title"),
    upperSummaryText: document.getElementById("rk-frame-upper-summary-text"),
    upperSummaryCard: document.getElementById("rk-frame-upper-summary-card"),
    description: document.getElementById("rk-frame-house-desc")
  };

  var actions = document.getElementById("rk-frame-audit-actions");
  var reset = document.getElementById("rk-frame-reset");

  var groundLabels = {
    ground: "Podłoga na gruncie",
    slab: "Płyta fundamentowa",
    unheated: "Strop nad przestrzenią nieogrzewaną",
    na: "Parter nieobjęty analizą"
  };

  var upperLabels = {
    timber: "Strop belkowy drewniany",
    clt: "Płyta CLT / strop masywny drewniany",
    concrete: "Strop betonowy",
    none: "Brak ogrzewanego piętra"
  };

  var systemLabels = {
    undecided: "System jeszcze nie wybrany",
    dry: "Planowany system suchy",
    wet: "Planowany system z jastrychem",
    na: "System nie dotyczy"
  };

  function numberValue(field) {
    var value = Number(String(field.value).replace(",", "."));
    if (!Number.isFinite(value)) {
      return 0;
    }
    return value;
  }

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

  function setPanel(panel, state, title, textValue) {
    panel.box.setAttribute("data-state", state);
    panel.title.textContent = title;
    panel.text.textContent = textValue;
  }

  function actionItem(className, title, textValue) {
    var item = document.createElement("div");
    var strong = document.createElement("strong");
    var textNode = document.createTextNode(" " + textValue);
    item.className = "rk-frame-audit-action " + className;
    strong.textContent = title;
    item.appendChild(strong);
    item.appendChild(textNode);
    actions.appendChild(item);
  }

  function systemColor(value) {
    if (value === "dry") {
      return "#29c4da";
    }
    if (value === "wet") {
      return "#ff6846";
    }
    if (value === "na") {
      return "#9aabb3";
    }
    return "#f3b51b";
  }

  function groundDescription(value) {
    if (value === "slab") {
      return "Uzgodnij położenie rur, strefy konstrukcyjne, przebicia, izolację, akumulację i sposób regulacji.";
    }
    if (value === "unheated") {
      return "Sprawdź konstrukcję stropu, izolacyjność w dół, mostki, akustykę i pełne obciążenie warstw.";
    }
    if (value === "na") {
      return "Ta kondygnacja nie została objęta audytem. Wynik dotyczy pozostałych zaznaczonych części budynku.";
    }
    return "Ustal przekrój cieplny, izolację, hydroizolację, dylatacje, wysokości i stabilność podłoża.";
  }

  function upperDescription(value) {
    if (value === "clt") {
      return "Sprawdź obciążenie, połączenia, akustykę, wilgoć i sposób mocowania wszystkich warstw do płyty.";
    }
    if (value === "concrete") {
      return "Uzgodnij obciążenie, wysokość, akustykę, dylatacje i wilgoć technologiczną całego przekroju.";
    }
    if (value === "none") {
      return "Brak ogrzewanego piętra — część audytu dotycząca stropu jest traktowana jako nieobjęta zakresem.";
    }
    return "Sprawdź nośność, ugięcie, drgania, akustykę, odporność ogniową i pełny ciężar warstw.";
  }

  function updateVisual() {
    var groundType = fields.groundType.value;
    var upperType = fields.upperType.value;
    var groundSystem = fields.groundSystem.value;
    var upperSystem = fields.upperSystem.value;

    visual.groundTitle.textContent = groundLabels[groundType];
    visual.groundSystem.textContent = systemLabels[groundSystem];
    visual.upperTitle.textContent = upperLabels[upperType];
    visual.upperSystem.textContent = upperType === "none" ? "System nie dotyczy" : systemLabels[upperSystem];
    visual.groundSummaryTitle.textContent = groundLabels[groundType] + " — " + systemLabels[groundSystem].toLowerCase();
    visual.groundSummaryText.textContent = groundDescription(groundType);
    visual.upperSummaryTitle.textContent = upperLabels[upperType] + (upperType === "none" ? "" : " — " + systemLabels[upperSystem].toLowerCase());
    visual.upperSummaryText.textContent = upperDescription(upperType);
    visual.groundBand.setAttribute("fill", systemColor(groundSystem));

    if (upperType === "none") {
      visual.upperBand.setAttribute("fill", "#9aabb3");
      visual.upperBand.setAttribute("opacity", "0.25");
      visual.upperSummaryCard.style.opacity = "0.68";
    } else {
      visual.upperBand.setAttribute("fill", systemColor(upperSystem));
      visual.upperBand.setAttribute("opacity", "0.82");
      visual.upperSummaryCard.style.opacity = "1";
    }

    visual.description.textContent = groundLabels[groundType] + " z ustawieniem: " + systemLabels[groundSystem] + ". " + upperLabels[upperType] + (upperType === "none" ? "." : " z ustawieniem: " + systemLabels[upperSystem] + ".");
  }

  function updateThermalResults() {
    var loss = Math.max(0, numberValue(fields.roomLoss));
    var area = Math.max(0, numberValue(fields.activeArea));
    var available = Math.max(0, numberValue(fields.availableOutput));
    var required = 0;

    output.room.textContent = loss > 0 ? formatNumber(loss, 0) + " W" : "—";

    if (loss > 0) {
      if (area > 0) {
        required = loss / area;
        output.required.textContent = formatNumber(required, 1) + " W/m²";
      } else {
        output.required.textContent = "—";
      }
    } else {
      output.required.textContent = "—";
    }

    if (available > 0) {
      if (area > 0) {
        var capacity = available * area;
        var margin = capacity - loss;
        output.capacity.textContent = formatNumber(capacity, 0) + " W";
        output.capacityNote.textContent = formatNumber(available, 1) + " W/m² × " + formatNumber(area, 1) + " m²";

        if (loss > 0) {
          output.margin.textContent = (margin >= 0 ? "+" : "") + formatNumber(margin, 0) + " W";
          if (margin >= 0) {
            output.marginCard.className = "rk-frame-result-card is-green";
            output.marginNote.textContent = "bilans arytmetyczny nie zastępuje kontroli temperatury powierzchni";
          } else {
            output.marginCard.className = "rk-frame-result-card is-danger";
            output.marginNote.textContent = "wpisana moc nie pokrywa straty pomieszczenia";
          }
        } else {
          output.margin.textContent = "—";
          output.marginCard.className = "rk-frame-result-card";
          output.marginNote.textContent = "wpisz dodatnią stratę pomieszczenia";
        }
      } else {
        output.capacity.textContent = "—";
        output.capacityNote.textContent = "wpisz dodatnią powierzchnię czynną";
        output.margin.textContent = "—";
        output.marginCard.className = "rk-frame-result-card is-danger";
        output.marginNote.textContent = "brak poprawnej geometrii";
      }
    } else {
      output.capacity.textContent = "Nie oceniono";
      output.capacityNote.textContent = "wpisz potwierdzoną moc systemu";
      output.margin.textContent = "Nie oceniono";
      output.marginCard.className = "rk-frame-result-card";
      output.marginNote.textContent = "brak danych systemowych";
    }
  }

  function updateAudit() {
    var groundType = fields.groundType.value;
    var groundSystem = fields.groundSystem.value;
    var upperType = fields.upperType.value;
    var upperSystem = fields.upperSystem.value;
    var structureValue = fields.structure.value;
    var heatlossValue = fields.heatloss.value;
    var coveringValue = fields.covering.value;
    var systemDataValue = fields.systemData.value;
    var airtightValue = fields.airtight.value;
    var sourceValue = fields.source.value;
    var loss = Math.max(0, numberValue(fields.roomLoss));
    var area = Math.max(0, numberValue(fields.activeArea));
    var available = Math.max(0, numberValue(fields.availableOutput));
    var completeCount = 0;
    var structureState = "missing";
    var thermalState = "missing";
    var physicsState = "missing";
    var hydraulicsState = "missing";
    var groundDecided = groundSystem !== "undecided";
    var upperDecided = upperSystem !== "undecided";
    var upperPresent = upperType !== "none";
    var structuralNeeded = upperPresent;
    var wetSystem = groundSystem === "wet";
    var criticalWetStrop = false;

    if (upperPresent) {
      if (upperSystem === "wet") {
        wetSystem = true;
        if (upperType === "timber") {
          criticalWetStrop = true;
        }
        if (upperType === "clt") {
          criticalWetStrop = true;
        }
      }
    } else {
      upperDecided = true;
    }

    if (groundType === "unheated") {
      structuralNeeded = true;
    }

    if (structuralNeeded) {
      if (structureValue === "yes") {
        if (groundDecided) {
          if (upperDecided) {
            structureState = "complete";
            setPanel(panels.structure, "complete", "Dane zadeklarowane jako kompletne", "Konstrukcja i planowane typy systemów zostały wskazane. Zachowaj obliczenia oraz uzgodnione przekroje w dokumentacji.");
          } else {
            structureState = "partial";
            setPanel(panels.structure, "partial", "Konstrukcja sprawdzona, system nieustalony", "Wybierz przekrój piętra dopiero po porównaniu pełnych warstw i wydajności.");
          }
        } else {
          structureState = "partial";
          setPanel(panels.structure, "partial", "Konstrukcja sprawdzona, system nieustalony", "Wybierz przekrój parteru dopiero po porównaniu pełnych warstw i wydajności.");
        }
      } else {
        structureState = "missing";
        if (criticalWetStrop) {
          setPanel(panels.structure, "missing", "Krytyczna luka dla mokrego stropu", "Planowany jastrych na konstrukcji drewnianej wymaga sprawdzenia obciążeń, ugięcia, drgań i wszystkich warstw przez konstruktora.");
        } else {
          setPanel(panels.structure, "missing", "Brakuje oceny konstrukcyjnej", "Potwierdź obciążenia, ugięcie, drgania i komplet warstw dla stropu lub podłogi nad przestrzenią.");
        }
      }
    } else {
      if (groundDecided) {
        structureState = "complete";
        setPanel(panels.structure, "complete", "Zakres bez ogrzewanego stropu", "W audycie nie wskazano ogrzewanego piętra. Przekrój parteru nadal musi być zgodny z dokumentacją budowlaną.");
      } else {
        structureState = "partial";
        setPanel(panels.structure, "partial", "Ustal przekrój parteru", "Brak piętra nie zwalnia z zaprojektowania warstw podłogi parteru.");
      }
    }

    if (structureState === "complete") {
      completeCount += 1;
    }

    if (heatlossValue === "yes") {
      if (loss > 0) {
        if (area > 0) {
          if (systemDataValue === "yes") {
            if (available > 0) {
              thermalState = "complete";
              setPanel(panels.thermal, "complete", "Dane cieplne zadeklarowane jako kompletne", "Są straty pomieszczenia, powierzchnia czynna i wydajność systemu dla warunków, które należy zachować w projekcie.");
            } else {
              thermalState = "partial";
              setPanel(panels.thermal, "partial", "Brakuje wartości wydajności", "Zaznaczono posiadanie charakterystyki, ale nie wpisano dodatniej mocy systemu w W/m².");
            }
          } else {
            thermalState = "partial";
            setPanel(panels.thermal, "partial", "Obciążenie policzone, system niezweryfikowany", "Masz podstawę do wyznaczenia q wymaganego, lecz brakuje wydajności konkretnego przekroju dla rozstawu, temperatur i okładziny.");
          }
        } else {
          thermalState = "missing";
          setPanel(panels.thermal, "missing", "Brakuje powierzchni czynnej", "Wpisz dodatnią, rzeczywiście ogrzewaną powierzchnię pomieszczenia.");
        }
      } else {
        thermalState = "missing";
        setPanel(panels.thermal, "missing", "Brakuje straty pomieszczenia", "Wpisz dodatnią wartość Q wynikającą z obliczeń dla konkretnego pomieszczenia.");
      }
    } else {
      thermalState = "missing";
      setPanel(panels.thermal, "missing", "Brakuje obliczeń strat ciepła", "Nie dobieraj rozstawu i temperatury wyłącznie z powierzchni domu lub technologii ścian.");
    }

    if (thermalState === "complete") {
      completeCount += 1;
    }

    if (wetSystem) {
      if (coveringValue === "yes") {
        if (airtightValue === "yes") {
          physicsState = "complete";
          setPanel(panels.physics, "complete", "Okładziny i wilgoć skoordynowane", "Przy systemie mokrym zachowaj procedurę wysychania, pomiarów oraz ciągłość warstw budowlanych.");
        } else {
          physicsState = "missing";
          setPanel(panels.physics, "missing", "Mokry proces wymaga koordynacji", "Dla jastrychu potwierdź wilgoć technologiczną, warunki zamknięcia drewna i ciągłość warstw szczelnych.");
        }
      } else {
        physicsState = "missing";
        setPanel(panels.physics, "missing", "Brakuje danych okładziny", "Potwierdź opór, temperaturę, wilgotność i wymagania podłoża; przy jastrychu także plan wysychania.");
      }
    } else {
      if (coveringValue === "yes") {
        if (airtightValue === "yes") {
          physicsState = "complete";
          setPanel(panels.physics, "complete", "Dane zadeklarowane jako kompletne", "Okładziny oraz warstwy kontroli wilgoci i szczelności zostały wskazane jako uzgodnione.");
        } else if (airtightValue === "na") {
          physicsState = "complete";
          setPanel(panels.physics, "complete", "Dane zadeklarowane jako kompletne", "Okładziny są znane, a użytkownik oznaczył koordynację warstw jako nieobjętą danym detalem.");
        } else {
          physicsState = "partial";
          setPanel(panels.physics, "partial", "Okładzina znana, detal nieuzgodniony", "Sprawdź ciągłość warstw szczelnych i wszystkie przejścia instalacyjne w przekroju.");
        }
      } else {
        physicsState = "missing";
        setPanel(panels.physics, "missing", "Brakuje danych okładziny", "Bez oporu i ograniczeń wykończenia nie można potwierdzić mocy ani temperatury powierzchni.");
      }
    }

    if (physicsState === "complete") {
      completeCount += 1;
    }

    if (sourceValue === "yes") {
      hydraulicsState = "complete";
      setPanel(panels.hydraulics, "complete", "Wymagania źródła są znane", "Skoordynuj je z przepływami pętli, pompą obiegową, sterowaniem stref i zakresem temperatur.");
    } else {
      hydraulicsState = "missing";
      setPanel(panels.hydraulics, "missing", "Brakuje wymagań hydraulicznych", "Sprawdź minimalny przepływ, moc minimalną, pojemność, temperatury oraz logikę regulacji źródła.");
    }

    if (hydraulicsState === "complete") {
      completeCount += 1;
    }

    var percent = completeCount / 4 * 100;
    output.scoreValue.textContent = completeCount + "/4";
    output.scorePercent.textContent = formatNumber(percent, 0) + "%";
    output.scoreFill.style.width = String(percent) + "%";

    actions.textContent = "";

    if (structureState !== "complete") {
      if (criticalWetStrop) {
        actionItem("is-critical", "Najpierw konstruktor.", "Przed zatwierdzeniem jastrychu na drewnianym stropie potrzebne są pełne obliczenia warstw i użytkowalności.");
      } else {
        actionItem("", "Uzupełnij konstrukcję.", "Zatwierdź przekroje, obciążenia, ugięcie i drgania przed zamówieniem materiału.");
      }
    }

    if (thermalState !== "complete") {
      actionItem("", "Uzupełnij termikę.", "Policz straty pomieszczeń, powierzchnie czynne i zdobądź charakterystykę wybranego przekroju.");
    }

    if (physicsState !== "complete") {
      actionItem("", "Skoordynuj warstwy.", "Potwierdź okładziny, opór, wilgoć, szczelność, akustykę oraz kolejność zamykania przegród.");
    }

    if (hydraulicsState !== "complete") {
      actionItem("", "Sprawdź źródło i przepływy.", "Ustal wymagania źródła, oblicz pętle oraz zaplanuj pracę pompy i sterowania strefowego.");
    }

    if (completeCount === 4) {
      actionItem("is-complete", "Cztery grupy danych zadeklarowane.", "To dobry moment na weryfikację ich spójności na jednym rzucie i w zestawieniu hydraulicznym.");
      actionItem("", "Zachowaj dokumenty źródłowe.", "Wynik audytu nie potwierdza poprawności wartości — do projektu dołącz obliczenia, charakterystyki i uzgodnione przekroje.");
    }
  }

  function update() {
    updateVisual();
    updateThermalResults();
    updateAudit();
  }

  Object.keys(fields).forEach(function (key) {
    fields[key].addEventListener("input", update);
    fields[key].addEventListener("change", update);
  });

  reset.addEventListener("click", function () {
    fields.groundType.value = "ground";
    fields.groundSystem.value = "undecided";
    fields.upperType.value = "timber";
    fields.upperSystem.value = "undecided";
    fields.structure.value = "no";
    fields.heatloss.value = "no";
    fields.covering.value = "no";
    fields.systemData.value = "no";
    fields.airtight.value = "no";
    fields.source.value = "no";
    fields.roomLoss.value = "900";
    fields.activeArea.value = "18";
    fields.availableOutput.value = "0";
    update();
  });

  update();
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/">Ogrzewanie podłogowe w domu szkieletowym – kluczowe różnice i pułapki.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-domu-szkieletowym-kluczowe-roznice-i-pulapki/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 11:26:18 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Modernizacja domu]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[ile wat na m2]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator strat ciepła]]></category>
		<category><![CDATA[moc ogrzewania domu]]></category>
		<category><![CDATA[obliczanie strat ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[straty ciepła domu]]></category>
		<category><![CDATA[zapotrzebowanie na ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3743</guid>

					<description><![CDATA[<p>Obliczenie zapotrzebowania na ciepło budynku to pierwszy krok do prawidłowego zaprojektowania instalacji grzewczej. W tym poradniku pokazujemy, jak w prosty sposób oszacować straty energii w domu i sprawdzić, czy ogrzewanie podłogowe będzie wystarczające. Dzięki praktycznym wskazówkom oraz przykładom obliczeń dowiesz się, jak wykorzystać kalkulator strat ciepła domu – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie, aby ocenić moc instalacji, temperaturę zasilania oraz potencjalne koszty eksploatacji. To wiedza szczególnie przydatna dla inwestorów budujących dom lub modernizujących starsze budynki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-hl-guide {
    --rk-dark: #102536;
    --rk-navy: #15394d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e9ae27;
    --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: #6d808d;
    --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.72;
  }

  #rk-hl-guide,
  #rk-hl-guide * { box-sizing: border-box; }
  #rk-hl-guide img,
  #rk-hl-guide svg { max-width: 100%; }
  #rk-hl-guide button,
  #rk-hl-guide input,
  #rk-hl-guide select,
  #rk-hl-guide label,
  #rk-hl-guide summary,
  #rk-hl-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-hl-guide button,
  #rk-hl-guide input,
  #rk-hl-guide select { max-width: 100%; }
  #rk-hl-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-hl-guide a:hover,
  #rk-hl-guide a:focus-visible { color: var(--rk-red); }
  #rk-hl-guide p,
  #rk-hl-guide ul,
  #rk-hl-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-hl-guide h2,
  #rk-hl-guide h3,
  #rk-hl-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-hl-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-hl-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-hl-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-hl-guide strong { color: var(--rk-dark); }
  #rk-hl-guide [id] { scroll-margin-top: 24px; }

  #rk-hl-guide .rk-hl-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-hl-guide .rk-hl-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 76px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .32), transparent 28%),
      radial-gradient(circle at 6% 95%, rgba(255, 106, 61, .22), transparent 27%),
      linear-gradient(135deg, #0d2332 0%, #143e53 58%, #0b6680 100%);
  }
  #rk-hl-guide .rk-hl-hero::after {
    position: absolute;
    right: -74px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 44px solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
  }
  #rk-hl-guide .rk-hl-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-hl-guide .rk-hl-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-hl-guide .rk-hl-hero-title {
    position: relative;
    z-index: 1;
    max-width: 960px;
    margin: 0 0 19px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5.4vw, 4.28rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1.01;
  }
  #rk-hl-guide .rk-hl-hero-title span { color: #78efff; }
  #rk-hl-guide .rk-hl-lead {
    position: relative;
    z-index: 1;
    max-width: 900px;
    margin-bottom: 24px;
    color: #d8e9ef;
    font-size: clamp(1.02rem, 2vw, 1.24rem);
    line-height: 1.67;
  }
  #rk-hl-guide .rk-hl-hero-tags {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 27px;
  }
  #rk-hl-guide .rk-hl-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #eefcff;
    background: rgba(255, 255, 255, .075);
    font-size: .72rem;
    font-weight: 850;
    line-height: 1.3;
  }
  #rk-hl-guide .rk-hl-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    color: #bad3dc;
    font-size: .72rem;
    font-weight: 720;
  }
  #rk-hl-guide .rk-hl-byline strong { color: var(--rk-white); }
  #rk-hl-guide .rk-hl-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 34px;
  }
  #rk-hl-guide .rk-hl-hero-metric {
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 16px;
    background: rgba(5, 24, 36, .28);
  }
  #rk-hl-guide .rk-hl-hero-metric b {
    display: block;
    margin-bottom: 4px;
    color: #7af0ff;
    font-size: 1.04rem;
    font-weight: 950;
  }
  #rk-hl-guide .rk-hl-hero-metric span {
    display: block;
    color: #d5e7ec;
    font-size: .7rem;
    line-height: 1.45;
  }

  #rk-hl-guide .rk-hl-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-hl-guide .rk-hl-nav-label {
    padding-top: 8px;
    color: var(--rk-dark);
    font-size: .65rem;
    font-weight: 950;
    letter-spacing: .07em;
    text-transform: uppercase;
    white-space: nowrap;
  }
  #rk-hl-guide .rk-hl-nav-links { display: flex; flex-wrap: wrap; gap: 8px; min-width: 0; }
  #rk-hl-guide .rk-hl-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 7px 13px;
    border: 1px solid transparent;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: .68rem;
    font-weight: 900;
    line-height: 1.25;
    text-decoration: none;
  }
  #rk-hl-guide .rk-hl-nav a:hover,
  #rk-hl-guide .rk-hl-nav a:focus-visible { color: var(--rk-dark); border-color: var(--rk-cyan); background: var(--rk-cyan-soft); }

  #rk-hl-guide .rk-hl-content { padding: 0 clamp(22px, 5vw, 62px) 56px; }
  #rk-hl-guide .rk-hl-section { padding: clamp(44px, 7vw, 76px) 0; border-bottom: 1px solid var(--rk-line); }
  #rk-hl-guide .rk-hl-section:last-child { border-bottom: 0; }
  #rk-hl-guide .rk-hl-section-intro { max-width: 920px; color: var(--rk-text); font-size: 1.02rem; }
  #rk-hl-guide .rk-hl-eyebrow {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-blue);
    font-size: .66rem;
    font-weight: 950;
    letter-spacing: .09em;
    text-transform: uppercase;
  }

  #rk-hl-guide .rk-hl-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(260px, .55fr);
    gap: 22px;
    margin-top: 28px;
  }
  #rk-hl-guide .rk-hl-answer-main,
  #rk-hl-guide .rk-hl-answer-side,
  #rk-hl-guide .rk-hl-card {
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }
  #rk-hl-guide .rk-hl-answer-main { border-left: 6px solid var(--rk-cyan); background: linear-gradient(135deg, var(--rk-cyan-soft), #fff 68%); }
  #rk-hl-guide .rk-hl-answer-main p:last-child,
  #rk-hl-guide .rk-hl-answer-side p:last-child,
  #rk-hl-guide .rk-hl-card p:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-answer-number { display: block; margin-bottom: 8px; color: var(--rk-blue); font-size: clamp(1.65rem, 4vw, 2.7rem); font-weight: 950; line-height: 1; }
  #rk-hl-guide .rk-hl-answer-side { background: var(--rk-soft); }
  #rk-hl-guide .rk-hl-answer-side ul { margin-bottom: 0; padding-left: 20px; color: var(--rk-text); font-size: .85rem; }

  #rk-hl-guide .rk-hl-grid-2,
  #rk-hl-guide .rk-hl-grid-3,
  #rk-hl-guide .rk-hl-grid-4 { display: grid; gap: 16px; margin-top: 24px; }
  #rk-hl-guide .rk-hl-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-card { height: 100%; }
  #rk-hl-guide .rk-hl-card-icon {
    display: inline-grid;
    width: 42px;
    height: 42px;
    margin-bottom: 14px;
    place-items: center;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    font-size: .8rem;
    font-weight: 950;
  }
  #rk-hl-guide .rk-hl-card p,
  #rk-hl-guide .rk-hl-card li { color: var(--rk-text); font-size: .82rem; }
  #rk-hl-guide .rk-hl-card ul { margin-bottom: 0; padding-left: 19px; }

  #rk-hl-guide .rk-hl-formula {
    margin: 22px 0;
    padding: 23px clamp(20px, 4vw, 34px);
    border: 1px solid #bce7ef;
    border-radius: 18px;
    color: var(--rk-dark);
    background: linear-gradient(135deg, #effcff, #fff);
    font-size: clamp(1.05rem, 2.5vw, 1.36rem);
    font-weight: 900;
    line-height: 1.45;
    text-align: center;
  }
  #rk-hl-guide .rk-hl-formula small { display: block; margin-top: 8px; color: var(--rk-muted); font-size: .7rem; font-weight: 650; }

  #rk-hl-guide .rk-hl-callout {
    margin: 24px 0;
    padding: 20px 22px;
    border-left: 5px solid var(--rk-yellow);
    border-radius: 14px;
    color: var(--rk-text);
    background: var(--rk-yellow-soft);
  }
  #rk-hl-guide .rk-hl-callout strong { display: block; margin-bottom: 5px; }
  #rk-hl-guide .rk-hl-callout p:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-callout-red { border-left-color: var(--rk-red); background: var(--rk-red-soft); }
  #rk-hl-guide .rk-hl-callout-green { border-left-color: var(--rk-green); background: var(--rk-green-soft); }

  #rk-hl-guide .rk-hl-table-wrap { overflow: hidden; margin-top: 25px; border: 1px solid var(--rk-line); border-radius: 18px; }
  #rk-hl-guide table { width: 100%; margin: 0; border-collapse: collapse; font-size: .78rem; }
  #rk-hl-guide th { padding: 14px 15px; color: var(--rk-white); background: var(--rk-navy); font-size: .67rem; font-weight: 900; letter-spacing: .025em; text-align: left; }
  #rk-hl-guide td { padding: 14px 15px; border-bottom: 1px solid var(--rk-line); color: var(--rk-text); vertical-align: top; }
  #rk-hl-guide tbody tr:last-child td { border-bottom: 0; }
  #rk-hl-guide tbody tr:nth-child(even) { background: var(--rk-soft); }

  #rk-hl-guide .rk-hl-tool {
    overflow: hidden;
    margin-top: 30px;
    border-radius: 24px;
    color: #edf8fb;
    background: #102b3b;
    box-shadow: 0 22px 52px rgba(16, 37, 54, .18);
  }
  #rk-hl-guide .rk-hl-tool-head {
    padding: clamp(27px, 5vw, 46px);
    background:
      radial-gradient(circle at 88% 0%, rgba(37,199,216,.25), transparent 32%),
      linear-gradient(135deg, #153f52, #10576c);
  }
  #rk-hl-guide .rk-hl-tool-head h3 { margin-bottom: 10px; color: var(--rk-white); font-size: clamp(1.45rem, 3.4vw, 2.35rem); }
  #rk-hl-guide .rk-hl-tool-head p { max-width: 920px; margin-bottom: 0; color: #cce2e9; font-size: .82rem; }
  #rk-hl-guide .rk-hl-tool-body { padding: clamp(20px, 4vw, 38px); }
  #rk-hl-guide .rk-hl-step {
    margin-bottom: 22px;
    padding: clamp(20px, 3vw, 30px);
    border: 1px solid #355b6e;
    border-radius: 19px;
    background: #163546;
  }
  #rk-hl-guide .rk-hl-step:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-step-title { display: flex; gap: 13px; align-items: flex-start; margin-bottom: 20px; }
  #rk-hl-guide .rk-hl-step-no {
    display: inline-grid;
    flex: 0 0 35px;
    width: 35px;
    height: 35px;
    place-items: center;
    border-radius: 10px;
    color: #073040;
    background: var(--rk-cyan);
    font-size: .77rem;
    font-weight: 950;
  }
  #rk-hl-guide .rk-hl-step-title h4 { margin-bottom: 4px; color: var(--rk-white); font-size: 1rem; }
  #rk-hl-guide .rk-hl-step-title p { margin-bottom: 0; color: #a9c6d1; font-size: .68rem; }
  #rk-hl-guide .rk-hl-field-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; }
  #rk-hl-guide .rk-hl-field-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-field { min-width: 0; }
  #rk-hl-guide .rk-hl-field label { display: block; min-height: 38px; margin-bottom: 7px; color: #d8edf2; font-size: .64rem; font-weight: 850; line-height: 1.35; }
  #rk-hl-guide .rk-hl-field input,
  #rk-hl-guide .rk-hl-field select {
    width: 100%;
    min-height: 47px;
    padding: 10px 12px;
    border: 1px solid #6d8b99;
    border-radius: 10px;
    outline: 0;
    color: #102536;
    background: var(--rk-white);
    font-size: .76rem;
    font-weight: 760;
  }
  #rk-hl-guide .rk-hl-field input:focus,
  #rk-hl-guide .rk-hl-field select:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37,199,216,.18); }
  #rk-hl-guide .rk-hl-field small { display: block; margin-top: 6px; color: #91b3c0; font-size: .58rem; line-height: 1.45; }
  #rk-hl-guide .rk-hl-field[hidden] { display: none; }

  #rk-hl-guide .rk-hl-envelope-head,
  #rk-hl-guide .rk-hl-envelope-row {
    display: grid;
    grid-template-columns: 1.25fr .72fr .72fr .72fr .82fr;
    gap: 10px;
    align-items: center;
  }
  #rk-hl-guide .rk-hl-envelope-head { margin-bottom: 8px; padding: 0 10px; color: #91b3c0; font-size: .57rem; font-weight: 900; letter-spacing: .03em; text-transform: uppercase; }
  #rk-hl-guide .rk-hl-envelope-row { margin-bottom: 9px; padding: 10px; border: 1px solid #315568; border-radius: 13px; background: #123041; }
  #rk-hl-guide .rk-hl-envelope-row:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-envelope-name { color: #eaf8fb; font-size: .71rem; font-weight: 900; }
  #rk-hl-guide .rk-hl-envelope-name small { display: block; margin-top: 2px; color: #88aebc; font-size: .56rem; font-weight: 600; }
  #rk-hl-guide .rk-hl-envelope-row input {
    width: 100%;
    min-height: 42px;
    padding: 8px 10px;
    border: 1px solid #6d8b99;
    border-radius: 9px;
    outline: 0;
    color: #102536;
    background: #fff;
    font-size: .71rem;
    font-weight: 760;
  }
  #rk-hl-guide .rk-hl-envelope-row input:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37,199,216,.18); }
  #rk-hl-guide .rk-hl-row-result { padding-right: 5px; color: #7defff; font-size: .76rem; font-weight: 950; text-align: right; }
  #rk-hl-guide .rk-hl-row-result small { display: block; color: #8eb0bd; font-size: .54rem; font-weight: 650; }

  #rk-hl-guide .rk-hl-results {
    padding: clamp(24px, 4vw, 38px);
    border: 1px solid #3e6578;
    border-radius: 21px;
    background: linear-gradient(145deg, #173c4e, #102d3d);
  }
  #rk-hl-guide .rk-hl-results-top { display: grid; grid-template-columns: 1.35fr repeat(3, minmax(0, .65fr)); gap: 12px; }
  #rk-hl-guide .rk-hl-result-main,
  #rk-hl-guide .rk-hl-result-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid #3b6274;
    border-radius: 15px;
    background: rgba(8, 34, 48, .42);
  }
  #rk-hl-guide .rk-hl-result-main { border-color: #2ec8d7; background: linear-gradient(135deg, rgba(37,199,216,.16), rgba(8,34,48,.5)); }
  #rk-hl-guide .rk-hl-result-label { display: block; margin-bottom: 7px; color: #97bac7; font-size: .58rem; font-weight: 900; letter-spacing: .045em; text-transform: uppercase; }
  #rk-hl-guide .rk-hl-result-value { display: block; color: var(--rk-white); font-size: clamp(1.22rem, 3vw, 2.25rem); font-weight: 950; letter-spacing: -.04em; line-height: 1.08; }
  #rk-hl-guide .rk-hl-result-value small { color: #8ceffc; font-size: .56em; }
  #rk-hl-guide .rk-hl-result-note { display: block; margin-top: 6px; color: #a7c4ce; font-size: .57rem; line-height: 1.4; }
  #rk-hl-guide .rk-hl-result-card .rk-hl-result-value { font-size: clamp(1rem, 2.3vw, 1.52rem); }
  #rk-hl-guide .rk-hl-status {
    margin-top: 14px;
    padding: 15px 17px;
    border-left: 5px solid var(--rk-yellow);
    border-radius: 12px;
    color: #f1f8fa;
    background: rgba(233,174,39,.12);
    font-size: .69rem;
  }
  #rk-hl-guide .rk-hl-status[data-level="good"] { border-left-color: #32d5a5; background: rgba(50,213,165,.11); }
  #rk-hl-guide .rk-hl-status[data-level="alert"] { border-left-color: #ff7157; background: rgba(255,113,87,.12); }

  #rk-hl-guide .rk-hl-chart-panel,
  #rk-hl-guide .rk-hl-breakdown-panel,
  #rk-hl-guide .rk-hl-diagnostic-panel {
    margin-top: 18px;
    padding: clamp(20px, 3vw, 28px);
    border: 1px solid #3b6071;
    border-radius: 17px;
    background: #123242;
  }
  #rk-hl-guide .rk-hl-chart-panel h4,
  #rk-hl-guide .rk-hl-breakdown-panel h4,
  #rk-hl-guide .rk-hl-diagnostic-panel h4 { color: var(--rk-white); }
  #rk-hl-guide .rk-hl-chart-panel p,
  #rk-hl-guide .rk-hl-breakdown-panel p,
  #rk-hl-guide .rk-hl-diagnostic-panel p { color: #9ebfca; font-size: .65rem; }
  #rk-hl-guide .rk-hl-chart-box { overflow: hidden; min-height: 330px; padding: 8px; border-radius: 13px; background: #f8fdff; }
  #rk-hl-guide .rk-hl-chart-box svg { display: block; width: 100%; height: auto; min-height: 310px; }
  #rk-hl-guide .rk-hl-chart-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 10px; color: #b9d2db; font-size: .61rem; font-weight: 800; }
  #rk-hl-guide .rk-hl-chart-legend span { display: inline-flex; align-items: center; gap: 6px; }
  #rk-hl-guide .rk-hl-chart-legend i { display: inline-block; width: 22px; height: 4px; border-radius: 4px; background: var(--rk-cyan); }
  #rk-hl-guide .rk-hl-chart-legend .rk-hl-legend-design { background: var(--rk-orange); }
  #rk-hl-guide .rk-hl-breakdown-list { display: grid; gap: 12px; }
  #rk-hl-guide .rk-hl-breakdown-row { display: grid; grid-template-columns: 150px minmax(0, 1fr) 100px; gap: 12px; align-items: center; }
  #rk-hl-guide .rk-hl-breakdown-name { color: #dceef3; font-size: .66rem; font-weight: 820; }
  #rk-hl-guide .rk-hl-breakdown-track { overflow: hidden; height: 12px; border-radius: 999px; background: #234c5e; }
  #rk-hl-guide .rk-hl-breakdown-bar { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--rk-cyan), #60e6ef); transition: width .25s ease; }
  #rk-hl-guide .rk-hl-breakdown-row:nth-child(2) .rk-hl-breakdown-bar { background: linear-gradient(90deg, var(--rk-orange), #ff9a79); }
  #rk-hl-guide .rk-hl-breakdown-row:nth-child(3) .rk-hl-breakdown-bar { background: linear-gradient(90deg, var(--rk-purple), #9688ec); }
  #rk-hl-guide .rk-hl-breakdown-value { color: #fff; font-size: .66rem; font-weight: 900; text-align: right; }
  #rk-hl-guide .rk-hl-diagnostic-list { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
  #rk-hl-guide .rk-hl-diagnostic-list li { padding: 12px 14px; border-left: 4px solid #6b92a2; border-radius: 9px; color: #dcecf1; background: #173c4d; font-size: .66rem; }
  #rk-hl-guide .rk-hl-diagnostic-list li[data-state="good"] { border-left-color: #32d5a5; }
  #rk-hl-guide .rk-hl-diagnostic-list li[data-state="warn"] { border-left-color: var(--rk-yellow); }
  #rk-hl-guide .rk-hl-diagnostic-list li[data-state="bad"] { border-left-color: var(--rk-orange); }
  #rk-hl-guide .rk-hl-disclaimer { margin: 18px 0 0; color: #8fb2bf; font-size: .58rem; line-height: 1.55; }

  #rk-hl-guide .rk-hl-sales-cta {
    margin: clamp(34px, 6vw, 62px) 0;
    padding: clamp(28px, 5vw, 46px);
    border-radius: 22px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 95% 5%, rgba(37,199,216,.25), transparent 29%),
      linear-gradient(135deg, #102536, #16465b);
    box-shadow: 0 18px 44px rgba(16,37,54,.17);
  }
  #rk-hl-guide .rk-hl-sales-cta h3 { color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-hl-guide .rk-hl-sales-cta p { max-width: 940px; color: #d0e4eb; }
  #rk-hl-guide .rk-hl-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 13px 22px;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    box-shadow: 0 10px 24px rgba(37,199,216,.2);
    font-size: .78rem;
    font-weight: 950;
    line-height: 1.3;
    text-decoration: none;
    transition: transform .18s ease, background .18s ease;
  }
  #rk-hl-guide .rk-hl-cta-button:hover,
  #rk-hl-guide .rk-hl-cta-button:focus-visible { color: var(--rk-dark); background: #9af3fb; transform: translateY(-1px); }

  #rk-hl-guide .rk-hl-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 24px; }
  #rk-hl-guide .rk-hl-check {
    position: relative;
    padding: 17px 18px 17px 50px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: .78rem;
  }
  #rk-hl-guide .rk-hl-check::before {
    position: absolute;
    top: 16px;
    left: 17px;
    display: grid;
    width: 24px;
    height: 24px;
    place-items: center;
    border-radius: 50%;
    color: #fff;
    background: var(--rk-green);
    content: "✓";
    font-size: .68rem;
    font-weight: 950;
  }

  #rk-hl-guide .rk-hl-faq { display: grid; gap: 11px; margin-top: 25px; }
  #rk-hl-guide .rk-hl-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
  #rk-hl-guide .rk-hl-faq summary { position: relative; padding: 18px 52px 18px 20px; color: var(--rk-dark); font-size: .82rem; font-weight: 900; cursor: pointer; list-style: none; }
  #rk-hl-guide .rk-hl-faq summary::-webkit-details-marker { display: none; }
  #rk-hl-guide .rk-hl-faq summary::after { position: absolute; top: 50%; right: 19px; 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: 23px; text-align: center; transform: translateY(-50%); }
  #rk-hl-guide .rk-hl-faq details[open] summary::after { content: "−"; }
  #rk-hl-guide .rk-hl-faq-answer { padding: 0 20px 19px; color: var(--rk-text); font-size: .79rem; }
  #rk-hl-guide .rk-hl-faq-answer p:last-child { margin-bottom: 0; }

  #rk-hl-guide .rk-hl-source-list { display: grid; gap: 12px; margin-top: 24px; }
  #rk-hl-guide .rk-hl-source { padding: 18px 20px; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-soft); }
  #rk-hl-guide .rk-hl-source strong { display: block; margin-bottom: 4px; }
  #rk-hl-guide .rk-hl-source p { margin-bottom: 0; color: var(--rk-text); font-size: .75rem; }

  #rk-hl-guide .rk-hl-author {
    position: relative;
    overflow: hidden;
    margin-top: 28px;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: #f5fafc;
  }
  #rk-hl-guide .rk-hl-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-hl-guide .rk-hl-author-head { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 22px clamp(22px, 4vw, 38px); border-bottom: 1px solid var(--rk-line); background: #eef6f9; }
  #rk-hl-guide .rk-hl-author-head h3 { margin-bottom: 7px; font-size: clamp(1.45rem, 3vw, 2rem); }
  #rk-hl-guide .rk-hl-author-head p { margin-bottom: 0; color: var(--rk-muted); font-size: .72rem; }
  #rk-hl-guide .rk-hl-author-mark { max-width: 350px; color: var(--rk-blue); font-size: .6rem; font-weight: 950; letter-spacing: .055em; line-height: 1.5; text-align: right; }
  #rk-hl-guide .rk-hl-author-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr); }
  #rk-hl-guide .rk-hl-author-side { padding: 34px 24px; color: #fff; background: var(--rk-dark); text-align: center; }
  #rk-hl-guide .rk-hl-author-photo { overflow: hidden; width: 150px; height: 150px; margin: 0 auto 18px; border: 6px solid rgba(255,255,255,.16); border-radius: 50%; background: #fff; }
  #rk-hl-guide .rk-hl-author-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
  #rk-hl-guide .rk-hl-author-name { color: var(--rk-white); font-size: 1.08rem; font-weight: 950; }
  #rk-hl-guide .rk-hl-author-role { margin-top: 5px; color: #bdd4dd; font-size: .66rem; line-height: 1.55; }
  #rk-hl-guide .rk-hl-author-social-label { margin: 22px 0 10px; color: #89a9b7; font-size: .58rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
  #rk-hl-guide .rk-hl-author-social { display: flex; justify-content: center; gap: 9px; }
  #rk-hl-guide .rk-hl-author-social a { display: grid; width: 44px; height: 44px; place-items: center; border: 1px solid #45677a; border-radius: 50%; color: #c6dce5; background: transparent; text-decoration: none; }
  #rk-hl-guide .rk-hl-author-social a:hover,
  #rk-hl-guide .rk-hl-author-social a:focus-visible { color: var(--rk-white); border-color: var(--rk-cyan); background: rgba(37,199,216,.12); }
  #rk-hl-guide .rk-hl-author-social svg { width: 20px; height: 20px; fill: currentColor; }
  #rk-hl-guide .rk-hl-author-main { padding: clamp(25px, 4vw, 40px); }
  #rk-hl-guide .rk-hl-author-quote { position: relative; margin: 0 0 24px; padding: 20px 20px 20px 72px; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
  #rk-hl-guide .rk-hl-author-quote::before { position: absolute; top: 9px; left: 23px; color: var(--rk-cyan); content: "“"; font-family: Georgia, serif; font-size: 3.6rem; font-weight: 900; line-height: 1; }
  #rk-hl-guide .rk-hl-author-quote p { margin-bottom: 0; color: var(--rk-dark); font-size: .84rem; font-weight: 780; }
  #rk-hl-guide .rk-hl-author-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
  #rk-hl-guide .rk-hl-author-tab { display: inline-flex; align-items: center; min-height: 39px; padding: 8px 14px; border-radius: 999px; color: #59707c; background: #e4eef2; font-size: .65rem; font-weight: 900; cursor: pointer; }
  #rk-hl-guide .rk-hl-author-panel { display: none; color: var(--rk-text); font-size: .78rem; }
  #rk-hl-guide #rk-hl-author-about:checked ~ .rk-hl-author-layout .rk-hl-author-panel-about,
  #rk-hl-guide #rk-hl-author-exp:checked ~ .rk-hl-author-layout .rk-hl-author-panel-exp,
  #rk-hl-guide #rk-hl-author-method:checked ~ .rk-hl-author-layout .rk-hl-author-panel-method { display: block; }
  #rk-hl-guide #rk-hl-author-about:checked ~ .rk-hl-author-layout label[for="rk-hl-author-about"],
  #rk-hl-guide #rk-hl-author-exp:checked ~ .rk-hl-author-layout label[for="rk-hl-author-exp"],
  #rk-hl-guide #rk-hl-author-method:checked ~ .rk-hl-author-layout label[for="rk-hl-author-method"] { color: var(--rk-white); background: var(--rk-blue); }
  #rk-hl-guide .rk-hl-portals { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 19px; }
  #rk-hl-guide .rk-hl-portals a { display: inline-flex; align-items: center; min-height: 37px; padding: 7px 12px; border: 1px solid var(--rk-line); border-radius: 999px; background: #fff; font-size: .65rem; text-decoration: none; }

  @media (max-width: 980px) {
    #rk-hl-guide .rk-hl-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-results-top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-result-main { grid-column: 1 / -1; }
    #rk-hl-guide .rk-hl-author-layout { grid-template-columns: 225px minmax(0, 1fr); }
  }

  @media (max-width: 760px) {
    #rk-hl-guide { margin: 18px auto 46px; font-size: 16px; }
    #rk-hl-guide .rk-hl-shell { border-radius: 18px; }
    #rk-hl-guide .rk-hl-hero-metrics,
    #rk-hl-guide .rk-hl-answer,
    #rk-hl-guide .rk-hl-grid-2,
    #rk-hl-guide .rk-hl-grid-3,
    #rk-hl-guide .rk-hl-grid-4,
    #rk-hl-guide .rk-hl-checklist { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-nav { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-nav-label { padding-top: 0; }
    #rk-hl-guide .rk-hl-author-head { display: block; }
    #rk-hl-guide .rk-hl-author-mark { margin-top: 12px; text-align: left; }
    #rk-hl-guide .rk-hl-author-layout { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-breakdown-row { grid-template-columns: 110px minmax(0, 1fr) 76px; gap: 8px; }
    #rk-hl-guide .rk-hl-table-wrap { overflow: visible; border: 0; border-radius: 0; }
    #rk-hl-guide table,
    #rk-hl-guide thead,
    #rk-hl-guide tbody,
    #rk-hl-guide th,
    #rk-hl-guide td,
    #rk-hl-guide tr { display: block; }
    #rk-hl-guide thead { position: absolute; overflow: hidden; width: 1px; height: 1px; clip: rect(0 0 0 0); white-space: nowrap; }
    #rk-hl-guide tbody { display: grid; gap: 12px; }
    #rk-hl-guide tbody tr { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
    #rk-hl-guide tbody tr:nth-child(even) { background: var(--rk-white); }
    #rk-hl-guide td { display: grid; grid-template-columns: minmax(115px, .75fr) minmax(0, 1.25fr); gap: 13px; padding: 12px 14px; border-bottom: 1px solid var(--rk-line); }
    #rk-hl-guide td::before { color: var(--rk-dark); content: attr(data-label); font-size: .65rem; font-weight: 900; }
  }

  @media (max-width: 620px) {
    #rk-hl-guide .rk-hl-content { padding-right: 16px; padding-left: 16px; }
    #rk-hl-guide .rk-hl-hero { padding-right: 21px; padding-left: 21px; }
    #rk-hl-guide .rk-hl-hero-title { font-size: clamp(1.85rem, 10.2vw, 3rem); }
    #rk-hl-guide .rk-hl-field-grid,
    #rk-hl-guide .rk-hl-field-grid-3,
    #rk-hl-guide .rk-hl-results-top { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-envelope-head { display: none; }
    #rk-hl-guide .rk-hl-envelope-row { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 14px; }
    #rk-hl-guide .rk-hl-envelope-name { grid-column: 1 / -1; padding-bottom: 4px; }
    #rk-hl-guide .rk-hl-envelope-row input { min-height: 44px; }
    #rk-hl-guide .rk-hl-envelope-row input[data-role="factor"] { grid-column: 1; }
    #rk-hl-guide .rk-hl-row-result { display: flex; align-items: center; justify-content: flex-end; min-height: 44px; padding: 7px 9px; border-radius: 9px; background: #0e2938; }
    #rk-hl-guide .rk-hl-row-result small { margin-left: 5px; }
    #rk-hl-guide .rk-hl-chart-box { min-height: 250px; }
    #rk-hl-guide .rk-hl-chart-box svg { min-height: 235px; }
    #rk-hl-guide .rk-hl-breakdown-row { grid-template-columns: 1fr; gap: 5px; }
    #rk-hl-guide .rk-hl-breakdown-value { text-align: left; }
    #rk-hl-guide .rk-hl-author-main { padding: 24px 18px; }
    #rk-hl-guide .rk-hl-author-quote { padding-left: 58px; }
    #rk-hl-guide .rk-hl-sales-cta { padding: 26px 20px; }
    #rk-hl-guide .rk-hl-cta-button { width: 100%; text-align: center; }
    #rk-hl-guide td { grid-template-columns: 1fr; gap: 3px; }
  }

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

<article id="rk-hl-guide" itemscope itemtype="https://schema.org/TechArticle">
  <div class="rk-hl-shell">
    <header class="rk-hl-hero">
      <span class="rk-hl-kicker">Bilans cieplny budynku • aktualizacja 2026</span>
      <div class="rk-hl-hero-title">Oblicz projektową stratę ciepła — <span>przegroda po przegrodzie</span></div>
      <p class="rk-hl-lead">Wpisz rzeczywiste powierzchnie, współczynniki U, temperatury, wentylację i mostki. Kalkulator pokaże wymaganą moc w kW, wskaźnik W/m², udział poszczególnych strat oraz krzywą obciążenia względem temperatury zewnętrznej.</p>
      <div class="rk-hl-hero-tags" aria-label="Najważniejsze funkcje artykułu">
        <span class="rk-hl-hero-tag">przenikanie przez przegrody</span>
        <span class="rk-hl-hero-tag">wentylacja i infiltracja</span>
        <span class="rk-hl-hero-tag">mostki cieplne</span>
        <span class="rk-hl-hero-tag">budynek lub pomieszczenie</span>
        <span class="rk-hl-hero-tag">dynamiczny wykres</span>
      </div>
      <div class="rk-hl-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 24 minuty</span>
        <span>Aktualizacja techniczna: 1 września 2026 r.</span>
      </div>
      <div class="rk-hl-hero-metrics" aria-label="Zakres kalkulatora">
        <div class="rk-hl-hero-metric"><b>W i kW</b><span>Projektowa moc potrzebna w wybranych warunkach zewnętrznych.</span></div>
        <div class="rk-hl-hero-metric"><b>W/m²</b><span>Wskaźnik kontrolny odniesiony do powierzchni ogrzewanej lub czynnej.</span></div>
        <div class="rk-hl-hero-metric"><b>Nie kWh/rok</b><span>Kalkulator nie wyznacza rocznego zużycia energii ani kosztów ogrzewania.</span></div>
      </div>
    </header>

    <nav class="rk-hl-nav" aria-label="Nawigacja po artykule">
      <span class="rk-hl-nav-label">Na skróty</span>
      <div class="rk-hl-nav-links">
        <a href="#rk-hl-szybka-odpowiedz">Szybka odpowiedź</a>
        <a href="#rk-hl-moc-a-energia">Moc a energia</a>
        <a href="#rk-hl-bilans-strat">Składowe strat</a>
        <a href="#rk-hl-dane">Dane wejściowe</a>
        <a href="#rk-hl-kalkulator">Kalkulator</a>
        <a href="#rk-hl-interpretacja">Jak czytać wynik</a>
        <a href="#rk-hl-budynek-pomieszczenia">Budynek a pokoje</a>
        <a href="#rk-hl-podlogowka">Wynik a podłogówka</a>
        <a href="#rk-hl-zrodlo">Wynik a źródło</a>
        <a href="#rk-hl-przyklad">Przykład</a>
        <a href="#rk-hl-bledy">Błędy i checklista</a>
        <a href="#rk-hl-faq">FAQ</a>
        <a href="#rk-hl-zrodla">Źródła</a>
        <a href="#rk-hl-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-hl-content">
      <section class="rk-hl-section" id="rk-hl-szybka-odpowiedz">
        <span class="rk-hl-eyebrow">01 • Najważniejsza odpowiedź</span>
        <h2>Co naprawdę oblicza kalkulator strat ciepła budynku?</h2>
        <p class="rk-hl-section-intro">Kalkulator szacuje <strong>projektową moc potrzebną do uzupełnienia strat ciepła</strong> przy zadanej temperaturze wewnętrznej i zewnętrznej. Nie wystarcza do tego sam metraż ani rok budowy domu.</p>
        <div class="rk-hl-answer">
          <div class="rk-hl-answer-main">
            <span class="rk-hl-answer-number">Φ<sub>HL</sub> [W lub kW]</span>
            <h3>Najpierw bilans, później urządzenie i instalacja</h3>
            <p>Sumujemy straty przez ściany, okna, drzwi, dach, podłogę, przegrody do stref nieogrzewanych, wentylację, infiltrację i mostki cieplne. Dopiero taki wynik może być punktem wyjścia do dalszego projektowania.</p>
          </div>
          <aside class="rk-hl-answer-side">
            <h3>Czego wynik nie wybiera?</h3>
            <ul>
              <li>konkretnego modelu pompy ciepła,</li>
              <li>rozstawu rur w każdym pokoju,</li>
              <li>temperatury zasilania podłogówki,</li>
              <li>rocznego zużycia energii w kWh,</li>
              <li>kosztu ogrzewania całego sezonu.</li>
            </ul>
          </aside>
        </div>
        <div class="rk-hl-callout rk-hl-callout-green">
          <strong>Najważniejsza zasada</strong>
          <p>Wskaźnik W/m² jest wynikiem obliczenia i narzędziem kontrolnym. Nie powinien być domyślnym założeniem typu „nowy dom zawsze potrzebuje 45 W/m²”.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-moc-a-energia">
        <span class="rk-hl-eyebrow">02 • Jednostki bez pomyłek</span>
        <h2>Moc w kW a energia w kWh — to nie jest ten sam wynik</h2>
        <p class="rk-hl-section-intro">Najczęstszy błąd w internetowych kalkulatorach polega na zamiennym używaniu mocy, energii i kosztu. Każda z tych wielkości odpowiada na inne pytanie.</p>
        <div class="rk-hl-table-wrap">
          <table>
            <thead>
              <tr><th>Wielkość</th><th>Jednostka</th><th>Co opisuje?</th><th>Do czego służy?</th></tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Wielkość"><strong>Projektowe obciążenie cieplne</strong></td>
                <td data-label="Jednostka">W lub kW</td>
                <td data-label="Co opisuje?">Moc potrzebną przy projektowych warunkach zimowych.</td>
                <td data-label="Do czego służy?">Do projektowania instalacji i analizy źródła ciepła.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Wskaźnik obciążenia</strong></td>
                <td data-label="Jednostka">W/m²</td>
                <td data-label="Co opisuje?">Moc odniesioną do powierzchni budynku albo pomieszczenia.</td>
                <td data-label="Do czego służy?">Do kontroli wyniku i porównania stref.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Energia użytkowa</strong></td>
                <td data-label="Jednostka">kWh/rok</td>
                <td data-label="Co opisuje?">Ilość ciepła potrzebną podczas całego sezonu.</td>
                <td data-label="Do czego służy?">Do analiz energetycznych i kosztowych.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Energia jednostkowa</strong></td>
                <td data-label="Jednostka">kWh/(m²·rok)</td>
                <td data-label="Co opisuje?">Sezonowe potrzeby odniesione do powierzchni.</td>
                <td data-label="Do czego służy?">Do oceny standardu energetycznego budynku.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>Norma EN 12831-1 opisuje obliczanie projektowego obciążenia cieplnego pomieszczeń i budynków. Metody z rodziny ISO 52016 obejmują również potrzeby energetyczne i obciążenia w czasie. Dlatego wynik w kW nie jest rocznym zużyciem energii. Więcej o samym pojęciu przeczytasz w opracowaniu <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-bilans-strat">
        <span class="rk-hl-eyebrow">03 • Fizyka budynku</span>
        <h2>Z czego składa się projektowy bilans strat ciepła?</h2>
        <p class="rk-hl-section-intro">W modelu uproszczonym całkowita strata jest sumą przenikania przez przegrody, wymiany powietrza i mostków cieplnych.</p>
        <div class="rk-hl-formula">
          Φ<sub>HL</sub> ≈ Φ<sub>T</sub> + Φ<sub>V</sub> + Φ<sub>TB</sub>
          <small>Model referencyjny kalkulatora. Pełne obliczenia projektowe mogą uwzględniać dodatkowe zasady metodyczne i dane krajowe.</small>
        </div>
        <div class="rk-hl-grid-3">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">T</span>
            <h3>Przenikanie</h3>
            <p>Straty przez ściany, okna, drzwi, dach, podłogę i przegrody do pomieszczeń nieogrzewanych.</p>
            <div class="rk-hl-formula">Φ<sub>T,i</sub> = U<sub>i</sub> · A<sub>i</sub> · b<sub>i</sub> · Δθ</div>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">V</span>
            <h3>Wentylacja i infiltracja</h3>
            <p>Ciepło potrzebne do ogrzania powietrza wentylacyjnego oraz napływającego przez nieszczelności.</p>
            <div class="rk-hl-formula">Φ<sub>V</sub> = 0,34 · V̇<sub>eff</sub> · Δθ</div>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">ψ</span>
            <h3>Mostki cieplne</h3>
            <p>Dodatkowy przepływ ciepła przez połączenia przegród, nadproża, wieńce i inne węzły.</p>
            <div class="rk-hl-formula">Φ<sub>TB</sub> = Σ(ψ · l) · Δθ</div>
          </article>
        </div>
        <div class="rk-hl-callout">
          <strong>Uwaga na podłogę na gruncie</strong>
          <p>Proste działanie U · A · Δθ jest tutaj przybliżeniem. Dokładna wymiana z gruntem zależy między innymi od geometrii podłogi, obwodu, poziomu zagłębienia i właściwości gruntu. W kalkulatorze stosujemy jawny współczynnik redukcyjny b, ale nie przedstawiamy wyniku jako pełnego obliczenia według ISO 13370.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-dane">
        <span class="rk-hl-eyebrow">04 • Przygotowanie</span>
        <h2>Jakie dane przygotować przed uruchomieniem kalkulatora?</h2>
        <p class="rk-hl-section-intro">Jakość wyniku nie może być lepsza niż jakość danych wejściowych. Największą różnicę robią rzeczywiste powierzchnie przegród, prawidłowe U oraz przepływ powietrza.</p>
        <div class="rk-hl-grid-4">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">01</span>
            <h3>Geometria</h3>
            <ul>
              <li>powierzchnia ogrzewana,</li>
              <li>kubatura ogrzewana,</li>
              <li>powierzchnie ścian,</li>
              <li>osobno okna i drzwi.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">02</span>
            <h3>Przegrody</h3>
            <ul>
              <li>współczynniki U,</li>
              <li>układ warstw,</li>
              <li>przestrzeń po drugiej stronie,</li>
              <li>dane stolarki.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">03</span>
            <h3>Temperatury</h3>
            <ul>
              <li>temperatura wewnętrzna,</li>
              <li>temperatura projektowa,</li>
              <li>temperatury stref buforowych,</li>
              <li>lokalizacja budynku.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">04</span>
            <h3>Powietrze</h3>
            <ul>
              <li>strumień wentylacji,</li>
              <li>infiltracja,</li>
              <li>rodzaj systemu,</li>
              <li>sprawność odzysku.</li>
            </ul>
          </article>
        </div>
        <p>Jeżeli nie znasz U przegrody, możesz pomocniczo skorzystać z oficjalnego <a href="https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/" target="_blank" rel="noopener nofollow">kalkulatora współczynnika U w serwisie Budowlane ABC</a>. Pamiętaj jednak, że metoda dla ściany wielowarstwowej nie jest automatycznie metodą dla podłogi pozostającej w kontakcie z gruntem.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-kalkulator">
        <span class="rk-hl-eyebrow">05 • Narzędzie interaktywne</span>
        <h2>Kalkulator strat ciepła budynku i pomieszczenia</h2>
        <p class="rk-hl-section-intro">Wszystkie wartości są przeliczane na żywo. Współczynnik b pozwala jawnie ograniczyć różnicę temperatur dla gruntu lub strefy buforowej. Jeżeli nie znasz mostków cieplnych, pozostaw zero — kalkulator zgłosi brak w diagnostyce zamiast doliczać arbitralny procent.</p>

        <div class="rk-hl-tool" id="rk-hl-tool" aria-label="Interaktywny kalkulator strat ciepła">
          <div class="rk-hl-tool-head">
            <h3>Policz wstępny bilans projektowych strat ciepła</h3>
            <p>Wynik pokazuje moc wymaganą do pokrycia wprowadzonych strat przy zadanej różnicy temperatur. To model edukacyjny i kontrolny — nie pełne OZC oraz nie automatyczny dobór źródła ciepła.</p>
          </div>
          <div class="rk-hl-tool-body">
            <section class="rk-hl-step" aria-labelledby="rk-hl-step-1-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">1</span>
                <div><h4 id="rk-hl-step-1-title">Zakres i geometria analizowanej strefy</h4><p>Możesz policzyć cały budynek albo jedno pomieszczenie. W trybie pomieszczenia pojawi się powierzchnia czynna podłogi.</p></div>
              </div>
              <div class="rk-hl-field-grid">
                <div class="rk-hl-field">
                  <label for="rk-hl-scope">Zakres obliczenia</label>
                  <select id="rk-hl-scope">
                    <option value="building">Cały budynek</option>
                    <option value="room">Jedno pomieszczenie</option>
                  </select>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-area">Powierzchnia ogrzewana [m²]</label>
                  <input id="rk-hl-area" type="number" min="1" max="5000" step="1" value="140" inputmode="decimal">
                  <small>W trybie pokoju wpisz jego powierzchnię.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-volume">Kubatura ogrzewana [m³]</label>
                  <input id="rk-hl-volume" type="number" min="1" max="20000" step="1" value="350" inputmode="decimal">
                  <small>Powierzchnia razy średnia wysokość netto.</small>
                </div>
                <div class="rk-hl-field" id="rk-hl-active-field" hidden>
                  <label for="rk-hl-active-area">Czynna powierzchnia podłogi [m²]</label>
                  <input id="rk-hl-active-area" type="number" min="0" max="5000" step="0.1" value="16" inputmode="decimal">
                  <small>Bez trwałej zabudowy i stref bez rur.</small>
                </div>
              </div>
            </section>

            <section class="rk-hl-step" aria-labelledby="rk-hl-step-2-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">2</span>
                <div><h4 id="rk-hl-step-2-title">Temperatury projektowe</h4><p>Wybór strefy wpisuje wartość pomocniczą. Temperaturę zewnętrzną możesz następnie zmienić ręcznie zgodnie z lokalizacją i dokumentacją.</p></div>
              </div>
              <div class="rk-hl-field-grid rk-hl-field-grid-3">
                <div class="rk-hl-field">
                  <label for="rk-hl-zone">Pomocnicza strefa zimowa</label>
                  <select id="rk-hl-zone">
                    <option value="-16">Strefa I — −16°C</option>
                    <option value="-18">Strefa II — −18°C</option>
                    <option value="-20" selected>Strefa III — −20°C</option>
                    <option value="-22">Strefa IV — −22°C</option>
                    <option value="-24">Strefa V — −24°C</option>
                    <option value="manual">Wartość własna</option>
                  </select>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-indoor">Temperatura wewnętrzna θi [°C]</label>
                  <input id="rk-hl-indoor" type="number" min="5" max="35" step="0.5" value="20" inputmode="decimal">
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-outdoor">Temperatura zewnętrzna θe [°C]</label>
                  <input id="rk-hl-outdoor" type="number" min="-40" max="15" step="0.5" value="-20" inputmode="decimal">
                </div>
              </div>
            </section>

            <section class="rk-hl-step" aria-labelledby="rk-hl-step-3-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">3</span>
                <div><h4 id="rk-hl-step-3-title">Przegrody — powierzchnia, U i współczynnik redukcyjny b</h4><p>Dla przegród do powietrza zewnętrznego przyjmij b = 1,00. Mniejsza wartość może opisywać uproszczony wpływ gruntu albo strefy buforowej.</p></div>
              </div>
              <div class="rk-hl-envelope-head" aria-hidden="true">
                <span>Przegroda</span><span>Powierzchnia A [m²]</span><span>U [W/(m²·K)]</span><span>Współczynnik b</span><span>Strata</span>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="walls">
                <div class="rk-hl-envelope-name">Ściany zewnętrzne<small>Powierzchnia netto bez okien i drzwi</small></div>
                <input aria-label="Powierzchnia ścian zewnętrznych" data-role="area" type="number" min="0" step="0.1" value="150" inputmode="decimal">
                <input aria-label="Współczynnik U ścian" data-role="u" type="number" min="0" step="0.01" value="0.20" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny ścian" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="windows">
                <div class="rk-hl-envelope-name">Okna i przeszklenia<small>U całego okna Uw, nie samej szyby Ug</small></div>
                <input aria-label="Powierzchnia okien" data-role="area" type="number" min="0" step="0.1" value="30" inputmode="decimal">
                <input aria-label="Współczynnik U okien" data-role="u" type="number" min="0" step="0.01" value="0.90" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny okien" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="doors">
                <div class="rk-hl-envelope-name">Drzwi zewnętrzne<small>Łączna powierzchnia skrzydeł i bram</small></div>
                <input aria-label="Powierzchnia drzwi" data-role="area" type="number" min="0" step="0.1" value="5" inputmode="decimal">
                <input aria-label="Współczynnik U drzwi" data-role="u" type="number" min="0" step="0.01" value="1.30" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny drzwi" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="roof">
                <div class="rk-hl-envelope-name">Dach lub strop<small>Przegroda nad przestrzenią ogrzewaną</small></div>
                <input aria-label="Powierzchnia dachu lub stropu" data-role="area" type="number" min="0" step="0.1" value="140" inputmode="decimal">
                <input aria-label="Współczynnik U dachu" data-role="u" type="number" min="0" step="0.01" value="0.15" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny dachu" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="floor">
                <div class="rk-hl-envelope-name">Podłoga na gruncie<small>Model uproszczony — pełna metoda zależy od geometrii</small></div>
                <input aria-label="Powierzchnia podłogi" data-role="area" type="number" min="0" step="0.1" value="140" inputmode="decimal">
                <input aria-label="Współczynnik U podłogi" data-role="u" type="number" min="0" step="0.01" value="0.25" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny podłogi" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="0.50" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="buffer">
                <div class="rk-hl-envelope-name">Strefa nieogrzewana<small>Garaż, piwnica, poddasze lub inna strefa buforowa</small></div>
                <input aria-label="Powierzchnia przegrody do strefy nieogrzewanej" data-role="area" type="number" min="0" step="0.1" value="0" inputmode="decimal">
                <input aria-label="Współczynnik U przegrody buforowej" data-role="u" type="number" min="0" step="0.01" value="0.30" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny strefy buforowej" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="0.50" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="custom">
                <div class="rk-hl-envelope-name">Przegroda dodatkowa<small>Własna pozycja kontrolna</small></div>
                <input aria-label="Powierzchnia przegrody dodatkowej" data-role="area" type="number" min="0" step="0.1" value="0" inputmode="decimal">
                <input aria-label="Współczynnik U przegrody dodatkowej" data-role="u" type="number" min="0" step="0.01" value="0.30" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny przegrody dodatkowej" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
            </section>

            <section class="rk-hl-step" aria-labelledby="rk-hl-step-4-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">4</span>
                <div><h4 id="rk-hl-step-4-title">Wentylacja, infiltracja i mostki cieplne</h4><p>Odzysk ciepła redukuje część mechaniczną strumienia, ale nie usuwa infiltracji. Mostki wpisujemy jako sumaryczny współczynnik Htb w W/K.</p></div>
              </div>
              <div class="rk-hl-field-grid">
                <div class="rk-hl-field">
                  <label for="rk-hl-vent-flow">Strumień wentylacji V̇ [m³/h]</label>
                  <input id="rk-hl-vent-flow" type="number" min="0" max="50000" step="1" value="175" inputmode="decimal">
                  <small>Dla wentylacji grawitacyjnej wpisz szacowany pełny strumień.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-recovery">Sprawność odzysku η [%]</label>
                  <input id="rk-hl-recovery" type="number" min="0" max="95" step="1" value="0" inputmode="decimal">
                  <small>Dla braku odzysku wpisz 0%.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-infiltration">Infiltracja n<sub>inf</sub> [1/h]</label>
                  <input id="rk-hl-infiltration" type="number" min="0" max="3" step="0.01" value="0.10" inputmode="decimal">
                  <small>Osobny napływ przez nieszczelności obudowy.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-bridges">Mostki cieplne H<sub>TB</sub> [W/K]</label>
                  <input id="rk-hl-bridges" type="number" min="0" max="5000" step="0.1" value="15" inputmode="decimal">
                  <small>Suma ψ · l. Wpisz 0, jeśli brak danych.</small>
                </div>
              </div>
            </section>

            <section class="rk-hl-results" aria-live="polite" aria-atomic="false">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">5</span>
                <div><h4>Wynik na żywo</h4><p>Wartości wynikają wyłącznie z aktualnie wpisanych danych i jawnego modelu referencyjnego.</p></div>
              </div>
              <div class="rk-hl-results-top">
                <div class="rk-hl-result-main">
                  <span class="rk-hl-result-label">Projektowa strata całkowita</span>
                  <output class="rk-hl-result-value" id="rk-hl-total-kw">— <small>kW</small></output>
                  <span class="rk-hl-result-note" id="rk-hl-delta-note">Różnica temperatur: — K</span>
                </div>
                <div class="rk-hl-result-card">
                  <span class="rk-hl-result-label">Wskaźnik</span>
                  <output class="rk-hl-result-value" id="rk-hl-wm2">— <small>W/m²</small></output>
                  <span class="rk-hl-result-note">Odniesiony do wpisanej powierzchni</span>
                </div>
                <div class="rk-hl-result-card">
                  <span class="rk-hl-result-label">Przenikanie</span>
                  <output class="rk-hl-result-value" id="rk-hl-transmission">— <small>kW</small></output>
                  <span class="rk-hl-result-note">Suma wprowadzonych przegród</span>
                </div>
                <div class="rk-hl-result-card">
                  <span class="rk-hl-result-label">Wentylacja</span>
                  <output class="rk-hl-result-value" id="rk-hl-ventilation">— <small>kW</small></output>
                  <span class="rk-hl-result-note">Wentylacja po odzysku plus infiltracja</span>
                </div>
                <div class="rk-hl-result-card" id="rk-hl-active-result-card" hidden>
                  <span class="rk-hl-result-label">Moc z powierzchni czynnej</span>
                  <output class="rk-hl-result-value" id="rk-hl-active-wm2">— <small>W/m²</small></output>
                  <span class="rk-hl-result-note">Tylko kontrola w trybie pomieszczenia</span>
                </div>
              </div>
              <div class="rk-hl-status" id="rk-hl-status" data-level="warn">Uzupełnij dane, aby zobaczyć ocenę wyniku.</div>

              <div class="rk-hl-chart-panel">
                <h4>Moc budynku a temperatura zewnętrzna</h4>
                <p>Krzywa wykorzystuje aktualny sumaryczny współczynnik strat H. Pomarańczowy punkt oznacza temperaturę projektową wpisaną w kalkulatorze.</p>
                <div class="rk-hl-chart-box">
                  <svg id="rk-hl-chart" viewBox="0 0 760 330" role="img" aria-labelledby="rk-hl-chart-title rk-hl-chart-desc">
                    <title id="rk-hl-chart-title">Wykres wymaganej mocy względem temperatury zewnętrznej</title>
                    <desc id="rk-hl-chart-desc">Dynamiczna linia pokazująca wzrost strat ciepła wraz ze spadkiem temperatury zewnętrznej.</desc>
                    <g id="rk-hl-chart-grid"></g>
                    <polyline id="rk-hl-chart-line" fill="none" stroke="#25c7d8" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" points=""></polyline>
                    <line id="rk-hl-chart-design-line" x1="0" y1="0" x2="0" y2="0" stroke="#ff6a3d" stroke-width="2" stroke-dasharray="7 7"></line>
                    <circle id="rk-hl-chart-design-point" cx="0" cy="0" r="7" fill="#ff6a3d" stroke="#ffffff" stroke-width="3"></circle>
                    <text id="rk-hl-chart-design-label" x="0" y="0" fill="#102536" font-size="14" font-weight="900">—</text>
                  </svg>
                </div>
                <div class="rk-hl-chart-legend"><span><i></i> wymagana moc modelu</span><span><i class="rk-hl-legend-design"></i> punkt projektowy</span></div>
              </div>

              <div class="rk-hl-breakdown-panel">
                <h4>Udział głównych składowych</h4>
                <p>Paski porównują przenikanie, wymianę powietrza i mostki w identycznym punkcie temperaturowym.</p>
                <div class="rk-hl-breakdown-list">
                  <div class="rk-hl-breakdown-row">
                    <span class="rk-hl-breakdown-name">Przenikanie</span>
                    <span class="rk-hl-breakdown-track"><span class="rk-hl-breakdown-bar" id="rk-hl-bar-transmission"></span></span>
                    <span class="rk-hl-breakdown-value" id="rk-hl-share-transmission">—</span>
                  </div>
                  <div class="rk-hl-breakdown-row">
                    <span class="rk-hl-breakdown-name">Wentylacja</span>
                    <span class="rk-hl-breakdown-track"><span class="rk-hl-breakdown-bar" id="rk-hl-bar-ventilation"></span></span>
                    <span class="rk-hl-breakdown-value" id="rk-hl-share-ventilation">—</span>
                  </div>
                  <div class="rk-hl-breakdown-row">
                    <span class="rk-hl-breakdown-name">Mostki cieplne</span>
                    <span class="rk-hl-breakdown-track"><span class="rk-hl-breakdown-bar" id="rk-hl-bar-bridges"></span></span>
                    <span class="rk-hl-breakdown-value" id="rk-hl-share-bridges">—</span>
                  </div>
                </div>
              </div>

              <div class="rk-hl-diagnostic-panel">
                <h4>Diagnostyka danych i granic modelu</h4>
                <p>Kalkulator nie ukrywa pominiętych informacji. Ostrzeżenie nie oznacza automatycznie błędu instalacji — wskazuje, czego nie należy wyciągać z wyniku.</p>
                <ul class="rk-hl-diagnostic-list" id="rk-hl-diagnostics">
                  <li data-state="warn">Trwa inicjalizacja diagnostyki.</li>
                </ul>
              </div>
              <p class="rk-hl-disclaimer">Model referencyjny: ΦT = Σ(U · A · b) · Δθ, ΦV = 0,34 · [V̇ · (1 − η) + ninf · V] · Δθ, ΦTB = HTB · Δθ. Wartość b dla gruntu lub stref buforowych jest uproszczeniem. Narzędzie nie wykonuje pełnych obliczeń EN 12831-1, ISO 13370 ani analizy rocznej ISO 52016.</p>
            </section>
          </div>
          <noscript><p style="padding:20px;color:#fff;background:#7b281f">Kalkulator wymaga włączonej obsługi JavaScript. Treść i wzory pozostają dostępne w artykule.</p></noscript>
        </div>
      </section>

      <aside class="rk-hl-sales-cta" aria-label="Zamówienie projektu po obliczeniu strat ciepła">
        <h3>Masz wynik budynku. Do projektu podłogówki potrzebujesz jeszcze wyników każdego pomieszczenia.</h3>
        <p>Kalkulator nie zna pełnej geometrii węzłów, dokładnej wymiany z gruntem, rzeczywistych mostków, trwałej zabudowy ani przebiegu każdej pętli. Projekt przekłada obciążenie pomieszczeń na powierzchnie czynne, rozstawy rur, temperaturę wody, długości obwodów, przepływy i nastawy rozdzielacza.</p>
        <a class="rk-hl-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczeniami dla pomieszczeń</a>
      </aside>

      <section class="rk-hl-section" id="rk-hl-interpretacja">
        <span class="rk-hl-eyebrow">06 • Interpretacja</span>
        <h2>Jak czytać wynik kalkulatora strat ciepła?</h2>
        <p class="rk-hl-section-intro">Najważniejszą wartością jest całkowita moc w kW przy wpisanej temperaturze zewnętrznej. Wskaźnik W/m² i procentowy rozkład strat służą do kontroli, ale nie zastępują analizy danych źródłowych.</p>
        <div class="rk-hl-grid-3">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">kW</span>
            <h3>Moc projektowa</h3>
            <p>Informuje, ile ciepła trzeba dostarczać w rozpatrywanym punkcie zimowym, aby kompensować wprowadzone straty.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">W/m²</span>
            <h3>Wskaźnik kontrolny</h3>
            <p>Ułatwia porównanie budynków i pomieszczeń, ale średnia całego domu może ukryć trudną łazienkę albo salon z dużymi oknami.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">%</span>
            <h3>Rozkład strat</h3>
            <p>Pokazuje, czy największy udział ma obudowa budynku, wymiana powietrza czy mostki wpisane do modelu.</p>
          </article>
        </div>
        <h3>Dlaczego wykres jest przydatniejszy niż jedna liczba?</h3>
        <p>Strata ciepła zmienia się wraz z różnicą temperatur. Jeżeli model wyznacza 7 kW przy −20°C, przy 0°C wymagana moc będzie mniejsza. Wykres pozwala zobaczyć tę zależność bez udawania, że budynek przez cały sezon pracuje w najzimniejszym punkcie.</p>
        <div class="rk-hl-callout rk-hl-callout-red">
          <strong>Nie dodawaj automatycznie „15% zapasu”</strong>
          <p>Rezerwa nie naprawia błędnych powierzchni, U, temperatur ani wentylacji. Najpierw trzeba poprawić dane, a dopiero później analizować sposób doboru źródła, modulację i warunki jego pracy.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-budynek-pomieszczenia">
        <span class="rk-hl-eyebrow">07 • Dwa poziomy obliczeń</span>
        <h2>Strata całego budynku a strata pojedynczego pomieszczenia</h2>
        <p class="rk-hl-section-intro">Wynik budynku odpowiada na inne pytanie niż wynik salonu, łazienki czy sypialni. Do zaprojektowania odbiorników ciepła potrzebny jest podział na pomieszczenia.</p>
        <div class="rk-hl-table-wrap">
          <table>
            <thead>
              <tr><th>Zakres</th><th>Co wynika z obliczenia?</th><th>Czego nadal nie wiadomo?</th></tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Zakres"><strong>Cały budynek</strong></td>
                <td data-label="Co wynika?">Łączna moc wynikająca z obudowy, powietrza i mostków.</td>
                <td data-label="Czego nie wiadomo?">Rozkładu mocy pomiędzy pokoje oraz lokalnych ograniczeń ogrzewania.</td>
              </tr>
              <tr>
                <td data-label="Zakres"><strong>Pomieszczenie</strong></td>
                <td data-label="Co wynika?">Moc potrzebna w konkretnej strefie i obciążenie jej powierzchni.</td>
                <td data-label="Czego nie wiadomo?">Czy wybrana konstrukcja podłogi odda tę moc przy planowanej temperaturze wody.</td>
              </tr>
              <tr>
                <td data-label="Zakres"><strong>Powierzchnia czynna</strong></td>
                <td data-label="Co wynika?">Wymagana średnia moc z fragmentu, na którym rzeczywiście mogą leżeć rury.</td>
                <td data-label="Czego nie wiadomo?">Rozstawu, temperatury powierzchni i hydrauliki bez charakterystyki systemu.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <div class="rk-hl-formula">
          q<sub>wym</sub> = Φ<sub>HL,pom</sub> / A<sub>czynna</sub>
          <small>Dzielenie łącznej straty domu przez łączną powierzchnię podłogi nie zastępuje obliczeń każdego pomieszczenia.</small>
        </div>
        <p>Przykład: dom może mieć średnio 42 W/m², a łazienka — ze względu na wyższą temperaturę wewnętrzną, ścianę zewnętrzną i niewielką powierzchnię bez zabudowy — wymagać znacznie większej mocy z każdego aktywnego metra podłogi.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-podlogowka">
        <span class="rk-hl-eyebrow">08 • Przełożenie na instalację</span>
        <h2>Co wynik strat ciepła oznacza dla ogrzewania podłogowego?</h2>
        <p class="rk-hl-section-intro">Obciążenie cieplne jest wejściem do projektu podłogi, ale nie wydaje automatycznej decyzji „10 cm”, „15 cm” albo „35°C”.</p>
        <div class="rk-hl-grid-2">
          <article class="rk-hl-card">
            <h3>Najpierw trzeba sprawdzić moc powierzchni</h3>
            <ol>
              <li>Obliczyć stratę każdego pomieszczenia.</li>
              <li>Wyznaczyć rzeczywistą powierzchnię czynną.</li>
              <li>Określić konstrukcję jastrychu i opór okładziny.</li>
              <li>Porównać charakterystykę 10, 15 lub 20 cm przy tej samej temperaturze wody.</li>
              <li>Sprawdzić temperaturę powierzchni oraz hydraulikę pętli.</li>
            </ol>
          </article>
          <article class="rk-hl-card">
            <h3>Średnia budynku nie wyznacza rozstawu</h3>
            <p>Rozstaw może być różny w salonie, łazience i sypialni. W jednym pokoju 15 cm zapewni wystarczającą moc przy niskiej temperaturze wody, a w innym nawet 10 cm nie pokryje obciążenia z dostępnej powierzchni.</p>
            <p>Zobacz szczegółowe porównanie: <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 czy 15 cm</a>.</p>
          </article>
        </div>
        <p>Dopiero po dobraniu rozstawu i tras pętli można policzyć <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/">ile rury potrzeba na m² ogrzewania podłogowego</a>, wyznaczyć długości obwodów oraz obliczyć przepływy. Granice temperatury pracy instalacji szerzej omawia artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalna temperatura zasilania podłogówki</a>.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-zrodlo">
        <span class="rk-hl-eyebrow">09 • Dobór urządzenia</span>
        <h2>Czy wynik kalkulatora wystarcza do wyboru źródła ciepła?</h2>
        <p class="rk-hl-section-intro"><strong>Nie.</strong> Projektowe obciążenie jest podstawową daną, ale karta konkretnego urządzenia i cały sposób pracy układu mają własne parametry.</p>
        <div class="rk-hl-grid-3">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">PC</span>
            <h3>Pompa ciepła</h3>
            <p>Sprawdzamy moc przy właściwej temperaturze zewnętrznej i wymaganej temperaturze wody, punkt biwalentny, minimalną modulację, udział grzałki oraz przygotowanie c.w.u.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">K</span>
            <h3>Kocioł</h3>
            <p>Oprócz obciążenia ważna jest moc minimalna, zakres modulacji, sposób przygotowania c.w.u., hydraulika układu oraz wymagania producenta urządzenia.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">CO</span>
            <h3>Instalacja</h3>
            <p>Całkowita moc służy do obliczenia przepływu, ale wysokość podnoszenia pompy obiegowej wynika z oporów krytycznej drogi przepływu, nie z samego kW.</p>
          </article>
        </div>
        <div class="rk-hl-callout">
          <strong>Oddziel moc na ogrzewanie od ciepłej wody użytkowej</strong>
          <p>Kalkulator liczy straty ogrzewanej strefy. Nie dolicza automatycznie mocy chwilowej potrzebnej do ładowania zasobnika c.w.u. ani nie zakłada jednego uniwersalnego zapasu.</p>
        </div>
        <p>Po ustaleniu przepływu projektowego można przejść do osobnego <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a>. Nie należy jednak przenosić do niego wyniku bez podziału instalacji na rzeczywiste obiegi i krytyczne drogi przepływu.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-przyklad">
        <span class="rk-hl-eyebrow">10 • Przykład krok po kroku</span>
        <h2>Przykładowy bilans domu o powierzchni 140 m²</h2>
        <p class="rk-hl-section-intro">Poniższe liczby odpowiadają wartościom startowym kalkulatora. To przykład dydaktyczny, a nie uniwersalny model każdego domu 140 m².</p>
        <h3>Założenia temperatury</h3>
        <div class="rk-hl-formula">Δθ = 20°C − (−20°C) = 40 K</div>
        <h3>Przenikanie przez przegrody</h3>
        <div class="rk-hl-table-wrap">
          <table>
            <thead>
              <tr><th>Przegroda</th><th>A [m²]</th><th>U [W/(m²·K)]</th><th>b</th><th>Strata [W]</th></tr>
            </thead>
            <tbody>
              <tr><td data-label="Przegroda">Ściany</td><td data-label="A">150</td><td data-label="U">0,20</td><td data-label="b">1,00</td><td data-label="Strata">1200</td></tr>
              <tr><td data-label="Przegroda">Okna</td><td data-label="A">30</td><td data-label="U">0,90</td><td data-label="b">1,00</td><td data-label="Strata">1080</td></tr>
              <tr><td data-label="Przegroda">Drzwi</td><td data-label="A">5</td><td data-label="U">1,30</td><td data-label="b">1,00</td><td data-label="Strata">260</td></tr>
              <tr><td data-label="Przegroda">Dach</td><td data-label="A">140</td><td data-label="U">0,15</td><td data-label="b">1,00</td><td data-label="Strata">840</td></tr>
              <tr><td data-label="Przegroda">Podłoga — model uproszczony</td><td data-label="A">140</td><td data-label="U">0,25</td><td data-label="b">0,50</td><td data-label="Strata">700</td></tr>
            </tbody>
          </table>
        </div>
        <h3>Wentylacja, infiltracja i mostki</h3>
        <p>Przy strumieniu wentylacji 175 m³/h bez odzysku, infiltracji 0,10 1/h i kubaturze 350 m³ efektywny strumień wynosi 210 m³/h:</p>
        <div class="rk-hl-formula">Φ<sub>V</sub> = 0,34 · 210 · 40 = 2856 W</div>
        <p>Dla wpisanego H<sub>TB</sub> = 15 W/K mostki odpowiadają za:</p>
        <div class="rk-hl-formula">Φ<sub>TB</sub> = 15 · 40 = 600 W</div>
        <p>Łączny wynik przykładu wynosi około <strong>7,54 kW</strong>, czyli około <strong>53,8 W/m²</strong>. Po wprowadzeniu 85% odzysku dla części wentylacyjnej wynik spadnie, ale składnik infiltracji nadal pozostanie w bilansie.</p>
        <div class="rk-hl-callout rk-hl-callout-green">
          <strong>Co pokazuje przykład?</strong>
          <p>Największą zmianę wyniku może powodować nie metraż, lecz przyjęty strumień powietrza, sprawność odzysku i kompletność przegród. Dlatego gotowy wskaźnik W/m² nie zastąpi danych konkretnego domu.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-bledy">
        <span class="rk-hl-eyebrow">11 • Kontrola jakości</span>
        <h2>Najczęstsze błędy i checklista przed obliczeniem</h2>
        <div class="rk-hl-grid-2">
          <article class="rk-hl-card">
            <h3>Błędy, które zmieniają wynik</h3>
            <ul>
              <li>mnożenie powierzchni podłogi przez losowe W/m²,</li>
              <li>użycie powierzchni pokoju jako powierzchni ściany,</li>
              <li>pominięcie okien albo niewłaściwe użycie Ug zamiast Uw,</li>
              <li>wyliczenie U całej przegrody wyłącznie jako λ/d jednej warstwy,</li>
              <li>zastosowanie temperatury z innej lokalizacji,</li>
              <li>pominięcie wentylacji lub dwukrotne policzenie infiltracji,</li>
              <li>odjęcie sprawności rekuperacji od całej wymiany powietrza,</li>
              <li>automatyczne doliczenie mostków jako stałego procentu.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <h3>Wnioski, których kalkulator nie potwierdza</h3>
            <ul>
              <li>„Dom potrzebuje dokładnie takiej pompy ciepła”.</li>
              <li>„W każdym pokoju wystarczy rozstaw 15 cm”.</li>
              <li>„Podłogówka musi pracować na 35°C”.</li>
              <li>„Roczne zużycie wyniesie wynik kW razy liczba godzin”.</li>
              <li>„Rekuperacja usuwa wszystkie straty wentylacyjne”.</li>
              <li>„Wartość U podłogi wynika wyłącznie z grubości EPS”.</li>
            </ul>
          </article>
        </div>
        <h3>Checklista danych wejściowych</h3>
        <div class="rk-hl-checklist">
          <div class="rk-hl-check">Mam powierzchnię ogrzewaną i kubaturę netto.</div>
          <div class="rk-hl-check">Oddzieliłem ściany od okien i drzwi.</div>
          <div class="rk-hl-check">Używam współczynników U całych przegród.</div>
          <div class="rk-hl-check">Sprawdziłem temperaturę projektową lokalizacji.</div>
          <div class="rk-hl-check">Znam założony strumień wentylacji.</div>
          <div class="rk-hl-check">Oddzieliłem odzysk ciepła od infiltracji.</div>
          <div class="rk-hl-check">Uwzględniłem strefy nieogrzewane i grunt.</div>
          <div class="rk-hl-check">Wiem, czy mostki cieplne są policzone.</div>
          <div class="rk-hl-check">Dla podłogówki mam wyniki pomieszczeń.</div>
          <div class="rk-hl-check">Nie traktuję kalkulatora jako doboru urządzenia.</div>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-faq">
        <span class="rk-hl-eyebrow">12 • Pytania inwestorów</span>
        <h2>FAQ: kalkulator strat ciepła budynku</h2>
        <div class="rk-hl-faq">
          <details>
            <summary>Czy ten kalkulator zastępuje pełne OZC?</summary>
            <div class="rk-hl-faq-answer"><p>Nie. Jest przejrzystym modelem referencyjnym do wstępnego bilansu i kontroli danych. Pełne obliczenia wymagają kompletnej geometrii, warunków brzegowych, właściwej metody wymiany z gruntem, mostków, wentylacji oraz obliczeń pomieszczenie po pomieszczeniu.</p></div>
          </details>
          <details>
            <summary>Czy wystarczy pomnożyć metraż domu przez 40 albo 50 W/m²?</summary>
            <div class="rk-hl-faq-answer"><p>Nie jako obliczenie projektowe. Taki wskaźnik może być późniejszą kontrolą rzędu wielkości, ale nie zna powierzchni okien, geometrii, wentylacji, temperatur ani lokalnych strat pomieszczeń.</p></div>
          </details>
          <details>
            <summary>Dlaczego wynik jest podany w kW, a nie w kWh?</summary>
            <div class="rk-hl-faq-answer"><p>Ponieważ kalkulator wyznacza moc potrzebną w konkretnym punkcie temperaturowym. kWh opisuje energię zużytą lub dostarczoną w określonym czasie. Do wyniku rocznego potrzebny jest model sezonu, klimatu, zysków i sposobu użytkowania.</p></div>
          </details>
          <details>
            <summary>Jaką temperaturę zewnętrzną wpisać?</summary>
            <div class="rk-hl-faq-answer"><p>Należy przyjąć temperaturę projektową właściwą dla lokalizacji i stosowanej metody. Pomocniczy wybór pięciu stref w kalkulatorze nie zastępuje sprawdzenia położenia budynku. Szczegóły opisuje artykuł o <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/">strefach klimatycznych w Polsce</a>.</p></div>
          </details>
          <details>
            <summary>Co wpisać jako współczynnik b?</summary>
            <div class="rk-hl-faq-answer"><p>Dla bezpośredniej wymiany z powietrzem zewnętrznym przyjmujemy zwykle 1,00. Mniejsza wartość może w uproszczeniu opisywać grunt lub strefę buforową, ale prawidłowa wartość zależy od warunków po drugiej stronie i metody obliczeń. Domyślne 0,50 dla podłogi jest przykładem, nie uniwersalnym parametrem.</p></div>
          </details>
          <details>
            <summary>Czy sprawność rekuperatora można odjąć od wszystkich strat wentylacyjnych?</summary>
            <div class="rk-hl-faq-answer"><p>Nie. Odzysk dotyczy określonego strumienia przechodzącego przez wymiennik. Infiltracja przez nieszczelności pozostaje osobnym składnikiem, a rzeczywista praca instalacji może odbiegać od jednej wartości katalogowej.</p></div>
          </details>
          <details>
            <summary>Czy z wyniku można dobrać pompę ciepła?</summary>
            <div class="rk-hl-faq-answer"><p>Wynik jest ważnym wejściem do doboru, ale nie wskazuje samodzielnie konkretnego modelu. Trzeba porównać jego moc w odpowiednim punkcie pracy, temperaturę zasilania, punkt biwalentny, modulację, udział grzałki i przygotowanie c.w.u.</p></div>
          </details>
          <details>
            <summary>Czy wynik całego domu wystarczy do zaprojektowania podłogówki?</summary>
            <div class="rk-hl-faq-answer"><p>Nie. Podłogówkę dobiera się do obciążenia każdego pomieszczenia oraz jego rzeczywistej powierzchni czynnej. Następnie sprawdza się moc konkretnej konstrukcji podłogi, temperaturę powierzchni, rozstawy, długości, przepływy i opory pętli.</p></div>
          </details>
          <details>
            <summary>Czy audyt energetyczny i OZC to ten sam dokument?</summary>
            <div class="rk-hl-faq-answer"><p>Nie należy tych pojęć utożsamiać. Audyt energetyczny ma określony zakres, cel i wymagania dokumentacyjne. Projektowe obciążenie cieplne jest obliczeniem mocy. Wynik internetowego kalkulatora nie staje się audytem ani dokumentem wymaganym przez program dotacyjny.</p></div>
          </details>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-zrodla">
        <span class="rk-hl-eyebrow">13 • Metodyka i wiarygodność</span>
        <h2>Oficjalne źródła i ograniczenia modelu</h2>
        <p class="rk-hl-section-intro">Źródła zewnętrzne prowadzą wyłącznie do oficjalnych organizacji normalizacyjnych i serwisów publicznych. Kalkulator nie korzysta z tabel producentów ani materiałów sklepów internetowych.</p>
        <div class="rk-hl-source-list">
          <div class="rk-hl-source">
            <strong><a href="https://knowledge.bsigroup.com/products/energy-performance-of-buildings-method-for-calculation-of-the-design-heat-load-space-heating-load-module-m3-3" target="_blank" rel="noopener nofollow">BS EN 12831-1 — projektowe obciążenie cieplne</a></strong>
            <p>Metoda obliczania projektowego obciążenia cieplnego pomieszczeń, jednostek budynku i całych budynków.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65696.html" target="_blank" rel="noopener nofollow">ISO 52016-1 — potrzeby energetyczne, temperatury i obciążenia</a></strong>
            <p>Rozróżnia między innymi potrzeby energetyczne ogrzewania i chłodzenia oraz obciążenia cieplne.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65708.html" target="_blank" rel="noopener nofollow">ISO 6946:2017 — opór i współczynnik przenikania ciepła</a></strong>
            <p>Metoda dla komponentów budowlanych; jej zakres nie obejmuje między innymi okien ani elementów wymieniających ciepło z gruntem.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65716.html" target="_blank" rel="noopener nofollow">ISO 13370:2017 — wymiana ciepła przez grunt</a></strong>
            <p>Obliczanie współczynników i strumieni ciepła dla podłóg na gruncie, podłóg podniesionych i piwnic.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65706.html" target="_blank" rel="noopener nofollow">ISO 14683:2017 — liniowe mostki cieplne</a></strong>
            <p>Metody uproszczone i wartości domyślne dla liniowego współczynnika przenikania ciepła.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://czystepowietrze.gov.pl/wez-dofinansowanie/pytania-i-odpowiedzi/nowy-program-czyste-powietrze-obowiazujacy-od-31-marca-2025/14" target="_blank" rel="noopener nofollow">Program „Czyste Powietrze” — wymagania dotyczące audytu</a></strong>
            <p>Oficjalna odpowiedź dotycząca audytu energetycznego i dokumentu podsumowującego audyt. Nie należy utożsamiać ich z wynikiem kalkulatora internetowego.</p>
          </div>
        </div>
        <div class="rk-hl-callout">
          <strong>Zakres odpowiedzialności narzędzia</strong>
          <p>Kalkulator służy do edukacji, kontroli założeń i wstępnego bilansu. Wynik zależy od danych użytkownika. Nie zastępuje dokumentacji projektowej, audytu energetycznego, świadectwa charakterystyki energetycznej ani doboru konkretnego urządzenia.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-autor">
        <span class="rk-hl-eyebrow">14 • E-E-A-T</span>
        <h2>Autor opracowania i metodyki kalkulatora</h2>
        <section class="rk-hl-author" aria-label="Autor opracowania">
          <input type="radio" name="rk-hl-author-tabs" id="rk-hl-author-about" checked>
          <input type="radio" name="rk-hl-author-tabs" id="rk-hl-author-exp">
          <input type="radio" name="rk-hl-author-tabs" id="rk-hl-author-method">
          <header class="rk-hl-author-head">
            <div>
              <h3>Robert Kucharski</h3>
              <p>Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego</p>
            </div>
            <span class="rk-hl-author-mark">OBLICZENIA CIEPLNE • OGRZEWANIE PŁASZCZYZNOWE • HYDRAULIKA INSTALACJI</span>
          </header>
          <div class="rk-hl-author-layout">
            <aside class="rk-hl-author-side">
              <div class="rk-hl-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC" width="600" height="600" loading="lazy" decoding="async"></div>
              <div class="rk-hl-author-name">Robert Kucharski</div>
              <div class="rk-hl-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
              <div class="rk-hl-author-social-label">Profile autora</div>
              <div class="rk-hl-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="me noopener nofollow" aria-label="Robert Kucharski na LinkedIn">
                  <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5C4.98 4.88 3.87 6 2.5 6A2.5 2.5 0 1 1 5 3.5ZM.5 8h4V24h-4V8Zm7 0h3.84v2.19h.05C11.93 9.18 13.24 7.5 17.2 7.5 23.21 7.5 24 11.46 24 16.61V24h-4v-6.56c0-1.57-.03-3.59-2.19-3.59-2.19 0-2.53 1.71-2.53 3.48V24h-4V8h3.84v2.19h.05C15.7 9.18 17.02 7.5 19.79 7.5Z"></path></svg>
                </a>
                <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="me noopener nofollow" aria-label="Projekt Ogrzewania na Facebooku">
                  <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="me noopener nofollow" aria-label="Projekt HVAC w serwisie X">
                  <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231Zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77Z"></path></svg>
                </a>
              </div>
            </aside>
            <div class="rk-hl-author-main">
              <blockquote class="rk-hl-author-quote"><p>„Wartość W/m² powinna być wynikiem obliczenia przegród, temperatur i wymiany powietrza. Jeżeli wpisujemy ją na początku tylko dlatego, że dom ma 140 m², nie obliczamy strat — zgadujemy.”</p></blockquote>
              <div class="rk-hl-author-tabs" role="tablist" aria-label="Informacje o autorze">
                <label class="rk-hl-author-tab" for="rk-hl-author-about">O autorze</label>
                <label class="rk-hl-author-tab" for="rk-hl-author-exp">Doświadczenie</label>
                <label class="rk-hl-author-tab" for="rk-hl-author-method">Metodyka</label>
              </div>
              <div class="rk-hl-author-panel rk-hl-author-panel-about">
                <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W publikacjach łączy fizykę budynku z praktycznym przełożeniem wyniku na rozstawy, długości pętli, przepływy i pracę źródła ciepła.</p>
                <p>Prowadzi serwis Projekt-Ogrzewania.pl oraz rozwija portale budowlane Remont.biz.pl i Sobir.pl. Celem materiałów jest pokazanie założeń i ograniczeń obliczeń, a nie zastępowanie projektu pojedynczą liczbą z internetowego formularza.</p>
              </div>
              <div class="rk-hl-author-panel rk-hl-author-panel-exp">
                <p>Doświadczenie autora obejmuje analizę dokumentacji budynków nowych i modernizowanych, obliczanie obciążeń pomieszczeń, dobór powierzchni grzewczych oraz hydrauliczne bilansowanie instalacji. Szczególną uwagę poświęca sytuacjom, w których średnia całego domu ukrywa problem lokalny: małą powierzchnię czynną łazienki, duże przeszklenia, strefy bez rur albo ograniczenia posadzki.</p>
                <p>Praktyka projektowa pokazuje, że poprawne dane wejściowe są ważniejsze od rozbudowanej grafiki kalkulatora. Dlatego narzędzie jawnie pokazuje wzory, składowe i ostrzeżenia o pominiętych mostkach lub uproszczonej wymianie z gruntem.</p>
              </div>
              <div class="rk-hl-author-panel rk-hl-author-panel-method">
                <p>Model kalkulatora rozdziela straty przez przenikanie, wentylację wraz z infiltracją oraz mostki cieplne. Nie miesza mocy projektowej w kW z roczną energią w kWh i nie dobiera automatycznie rozstawu rur ani modelu urządzenia.</p>
                <p>Podstawą dalszego projektu podłogówki pozostaje obciążenie każdego pomieszczenia, jego powierzchnia czynna oraz charakterystyka konkretnej konstrukcji podłogi przy określonych temperaturach wody.</p>
              </div>
              <p><a href="https://projekt-ogrzewania.pl/author/admin3399/">Wszystkie wpisy autora</a></p>
              <div class="rk-hl-portals" aria-label="Serwisy prowadzone przez autora">
                <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>
        </section>
      </section>

      <aside class="rk-hl-sales-cta" aria-label="Końcowe zamówienie projektu ogrzewania podłogowego">
        <h3>Od bilansu strat do kompletnego projektu ogrzewania podłogowego</h3>
        <p>Otrzymasz rozstaw rur wpisany na rzut budynku, długości pętli, przepływy, nastawy rozdzielacza i zestawienie materiałowe oparte na danych poszczególnych pomieszczeń — bez projektowania całego domu na jednym uśrednionym W/m².</p>
        <a class="rk-hl-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </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.pl",
        "inLanguage": "pl-PL",
        "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" }
      },
      {
        "@type": "Organization",
        "@id": "https://projekt-ogrzewania.pl/#organization",
        "name": "Projekt-Ogrzewania.pl",
        "url": "https://projekt-ogrzewania.pl/",
        "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
      },
      {
        "@type": "Organization",
        "@id": "https://remont.biz.pl/#organization",
        "name": "Remont.biz.pl",
        "url": "https://remont.biz.pl/",
        "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
      },
      {
        "@type": "Organization",
        "@id": "https://sobir.pl/#organization",
        "name": "Sobir.pl",
        "url": "https://sobir.pl/",
        "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
      },
      {
        "@type": "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": "Autor opracowań, kalkulatorów i projektów dotyczących ogrzewania podłogowego, obliczeń cieplnych oraz hydrauliki instalacji grzewczych.",
        "knowsAbout": [
          "projektowe obciążenie cieplne budynków",
          "ogrzewanie podłogowe",
          "hydraulika instalacji grzewczych",
          "dobór pomp obiegowych",
          "równoważenie hydrauliczne",
          "projektowanie instalacji sanitarnych"
        ],
        "worksFor": [
          { "@id": "https://projekt-ogrzewania.pl/#organization" },
          { "@id": "https://remont.biz.pl/#organization" },
          { "@id": "https://sobir.pl/#organization" }
        ],
        "sameAs": [
          "https://www.linkedin.com/in/robert-kucharski-38069b48/",
          "https://www.facebook.com/projektogrzewaniapl",
          "https://x.com/Projekt_HVAC"
        ]
      },
      {
        "@type": "BreadcrumbList",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#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": "Kalkulator strat ciepła budynku",
            "item": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
          }
        ]
      },
      {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webpage",
        "url": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/",
        "name": "Kalkulator strat ciepła budynku – oblicz wymaganą moc ogrzewania w kW",
        "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
        "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#breadcrumb" },
        "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#primaryimage" },
        "datePublished": "2026-03-09T11:26:18+01:00",
        "dateModified": "2026-09-01T12:00:00+02:00",
        "inLanguage": "pl-PL",
        "mainEntity": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article" }
      },
      {
        "@type": "ImageObject",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#primaryimage",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Kalkulator-strat-ciepla-domu-–-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie.webp",
        "caption": "Kalkulator strat ciepła budynku"
      },
      {
        "@type": "WebApplication",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#calculator",
        "name": "Kalkulator strat ciepła budynku i pomieszczenia",
        "url": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#rk-hl-kalkulator",
        "applicationCategory": "UtilitiesApplication",
        "operatingSystem": "Any",
        "browserRequirements": "JavaScript enabled",
        "isAccessibleForFree": true,
        "inLanguage": "pl-PL",
        "description": "Kalkulator wstępnego bilansu projektowych strat ciepła przez przegrody, wentylację, infiltrację i mostki cieplne, z wykresem wymaganej mocy względem temperatury zewnętrznej.",
        "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
        "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "featureList": [
          "obliczanie strat przez przegrody",
          "obliczanie strat wentylacyjnych i infiltracyjnych",
          "uwzględnienie odzysku ciepła",
          "uwzględnienie liniowych mostków cieplnych",
          "wynik w W, kW i W/m²",
          "dynamiczna krzywa mocy względem temperatury zewnętrznej",
          "diagnostyka kompletności danych"
        ]
      },
      {
        "@type": "HowTo",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#howto",
        "name": "Jak wstępnie obliczyć projektowe straty ciepła budynku?",
        "description": "Pięć kroków prowadzących od geometrii i temperatur do wyniku oraz jego prawidłowej interpretacji.",
        "totalTime": "PT20M",
        "tool": [
          { "@type": "HowToTool", "name": "Dokumentacja przegród i stolarki" },
          { "@type": "HowToTool", "name": "Kalkulator strat ciepła na stronie" }
        ],
        "step": [
          {
            "@type": "HowToStep",
            "position": 1,
            "name": "Określ zakres i geometrię",
            "text": "Wybierz cały budynek albo pomieszczenie, a następnie wpisz powierzchnię ogrzewaną i kubaturę."
          },
          {
            "@type": "HowToStep",
            "position": 2,
            "name": "Wpisz temperatury projektowe",
            "text": "Podaj wymaganą temperaturę wewnętrzną oraz temperaturę zewnętrzną właściwą dla lokalizacji."
          },
          {
            "@type": "HowToStep",
            "position": 3,
            "name": "Opisz przegrody",
            "text": "Dla ścian, okien, drzwi, dachu, podłogi i stref buforowych podaj powierzchnię, współczynnik U oraz współczynnik redukcyjny."
          },
          {
            "@type": "HowToStep",
            "position": 4,
            "name": "Uzupełnij wymianę powietrza i mostki",
            "text": "Podaj strumień wentylacji, sprawność odzysku, infiltrację i znany sumaryczny współczynnik mostków cieplnych."
          },
          {
            "@type": "HowToStep",
            "position": 5,
            "name": "Oceń wynik i ograniczenia",
            "text": "Odczytaj moc w kW, wskaźnik W/m², rozkład strat, wykres temperatury oraz ostrzeżenia o brakujących danych."
          }
        ]
      },
      {
        "@type": "FAQPage",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#faq",
        "mainEntity": [
          {
            "@type": "Question",
            "name": "Czy ten kalkulator zastępuje pełne OZC?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie. Jest modelem referencyjnym do wstępnego bilansu i kontroli danych. Pełne obliczenia wymagają kompletnej geometrii, warunków brzegowych, wymiany z gruntem, mostków, wentylacji i wyników każdego pomieszczenia." }
          },
          {
            "@type": "Question",
            "name": "Czy wystarczy pomnożyć metraż domu przez 40 albo 50 W/m²?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie jako obliczenie projektowe. Taki wskaźnik może być kontrolą rzędu wielkości, ale nie uwzględnia powierzchni okien, geometrii, wentylacji, temperatur ani lokalnych strat pomieszczeń." }
          },
          {
            "@type": "Question",
            "name": "Dlaczego wynik jest podany w kW, a nie w kWh?",
            "acceptedAnswer": { "@type": "Answer", "text": "Kalkulator wyznacza moc potrzebną w konkretnym punkcie temperaturowym. kWh opisuje energię w określonym czasie i wymaga modelu sezonu, klimatu, zysków oraz sposobu użytkowania." }
          },
          {
            "@type": "Question",
            "name": "Jaką temperaturę zewnętrzną wpisać?",
            "acceptedAnswer": { "@type": "Answer", "text": "Należy przyjąć temperaturę projektową właściwą dla lokalizacji i stosowanej metody. Pomocniczy wybór strefy nie zastępuje sprawdzenia położenia budynku." }
          },
          {
            "@type": "Question",
            "name": "Co wpisać jako współczynnik b?",
            "acceptedAnswer": { "@type": "Answer", "text": "Dla bezpośredniej wymiany z powietrzem zewnętrznym przyjmuje się 1,00. Mniejsza wartość może w uproszczeniu opisywać grunt lub strefę buforową, ale zależy od warunków i metody obliczeń." }
          },
          {
            "@type": "Question",
            "name": "Czy sprawność rekuperatora można odjąć od wszystkich strat wentylacyjnych?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie. Odzysk dotyczy strumienia przechodzącego przez wymiennik. Infiltracja przez nieszczelności pozostaje osobnym składnikiem." }
          },
          {
            "@type": "Question",
            "name": "Czy z wyniku można dobrać pompę ciepła?",
            "acceptedAnswer": { "@type": "Answer", "text": "Wynik jest ważnym wejściem, ale nie wskazuje konkretnego modelu. Trzeba sprawdzić moc urządzenia w punkcie pracy, temperaturę zasilania, punkt biwalentny, modulację, grzałkę i ciepłą wodę użytkową." }
          },
          {
            "@type": "Question",
            "name": "Czy wynik całego domu wystarczy do zaprojektowania podłogówki?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzebne jest obciążenie każdego pomieszczenia, jego powierzchnia czynna, konstrukcja podłogi, temperatura powierzchni, rozstawy, długości, przepływy i opory pętli." }
          },
          {
            "@type": "Question",
            "name": "Czy audyt energetyczny i OZC to ten sam dokument?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie należy utożsamiać tych pojęć. Audyt energetyczny ma określony zakres i cel dokumentacyjny, a projektowe obciążenie cieplne jest obliczeniem mocy. Wynik kalkulatora nie jest audytem." }
          }
        ]
      },
      {
        "@type": "TechArticle",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article",
        "headline": "Kalkulator strat ciepła budynku – oblicz wymaganą moc ogrzewania w kW",
        "description": "Oblicz straty przez ściany, okna, dach, podłogę i wentylację. Sprawdź wymaganą moc w kW, W/m² oraz udział każdej części bilansu.",
        "url": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/",
        "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webpage" },
        "image": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#primaryimage" },
        "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
        "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
        "datePublished": "2026-03-09T11:26:18+01:00",
        "dateModified": "2026-09-01T12:00:00+02:00",
        "inLanguage": "pl-PL",
        "isAccessibleForFree": true,
        "proficiencyLevel": "Intermediate",
        "about": [
          { "@type": "Thing", "name": "projektowe obciążenie cieplne" },
          { "@type": "Thing", "name": "straty ciepła budynku" },
          { "@type": "Thing", "name": "ogrzewanie podłogowe" },
          { "@type": "Thing", "name": "wentylacja i infiltracja" }
        ],
        "mentions": [
          { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#calculator" },
          { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#howto" },
          { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#faq" }
        ],
        "citation": [
          "https://knowledge.bsigroup.com/products/energy-performance-of-buildings-method-for-calculation-of-the-design-heat-load-space-heating-load-module-m3-3",
          "https://www.iso.org/standard/65696.html",
          "https://www.iso.org/standard/65708.html",
          "https://www.iso.org/standard/65716.html",
          "https://www.iso.org/standard/65706.html",
          "https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/",
          "https://czystepowietrze.gov.pl/wez-dofinansowanie/pytania-i-odpowiedzi/nowy-program-czyste-powietrze-obowiazujacy-od-31-marca-2025/14"
        ]
      }
    ]
  }
  </script>

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

    function rkHlInit() {
      var root = document.getElementById("rk-hl-tool");
      if (!root) { return; }

      var scope = document.getElementById("rk-hl-scope");
      var areaInput = document.getElementById("rk-hl-area");
      var volumeInput = document.getElementById("rk-hl-volume");
      var activeField = document.getElementById("rk-hl-active-field");
      var activeInput = document.getElementById("rk-hl-active-area");
      var activeResultCard = document.getElementById("rk-hl-active-result-card");
      var zone = document.getElementById("rk-hl-zone");
      var indoorInput = document.getElementById("rk-hl-indoor");
      var outdoorInput = document.getElementById("rk-hl-outdoor");
      var ventFlowInput = document.getElementById("rk-hl-vent-flow");
      var recoveryInput = document.getElementById("rk-hl-recovery");
      var infiltrationInput = document.getElementById("rk-hl-infiltration");
      var bridgesInput = document.getElementById("rk-hl-bridges");
      var rows = root.querySelectorAll(".rk-hl-envelope-row");
      var totalKwOutput = document.getElementById("rk-hl-total-kw");
      var wm2Output = document.getElementById("rk-hl-wm2");
      var transmissionOutput = document.getElementById("rk-hl-transmission");
      var ventilationOutput = document.getElementById("rk-hl-ventilation");
      var activeWm2Output = document.getElementById("rk-hl-active-wm2");
      var deltaNote = document.getElementById("rk-hl-delta-note");
      var status = document.getElementById("rk-hl-status");
      var diagnostics = document.getElementById("rk-hl-diagnostics");

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

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

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

      function rkHlSetOutput(element, value, unit, digits) {
        element.innerHTML = rkHlFormat(value, digits) + " <small>" + unit + "</small>";
      }

      function rkHlCreateSvg(tag, attributes, textValue) {
        var element = document.createElementNS("http://www.w3.org/2000/svg", tag);
        Object.keys(attributes).forEach(function (key) {
          element.setAttribute(key, String(attributes[key]));
        });
        if (typeof textValue === "string") { element.textContent = textValue; }
        return element;
      }

      function rkHlClear(element) {
        while (element.firstChild) { element.removeChild(element.firstChild); }
      }

      function rkHlDrawChart(totalH, indoor, outdoor, totalKw) {
        var grid = document.getElementById("rk-hl-chart-grid");
        var line = document.getElementById("rk-hl-chart-line");
        var designLine = document.getElementById("rk-hl-chart-design-line");
        var designPoint = document.getElementById("rk-hl-chart-design-point");
        var designLabel = document.getElementById("rk-hl-chart-design-label");
        var left = 68;
        var right = 24;
        var top = 22;
        var bottom = 52;
        var width = 760;
        var height = 330;
        var plotWidth = width - left - right;
        var plotHeight = height - top - bottom;
        var xMin = -30;
        var xMax = 15;
        var yMax;
        var xStep;
        var points = [];
        var current;

        if (outdoor < xMin) { xMin = Math.floor(outdoor / 5) * 5; }
        if (indoor > xMax) { xMax = Math.ceil(indoor / 5) * 5; }
        yMax = totalH * Math.max(indoor - xMin, 1) / 1000;
        yMax = Math.max(1, Math.ceil(yMax));
        xStep = xMax - xMin > 50 ? 10 : 5;

        function xPos(value) {
          return left + (value - xMin) / (xMax - xMin) * plotWidth;
        }

        function yPos(value) {
          return top + plotHeight - value / yMax * plotHeight;
        }

        rkHlClear(grid);

        for (current = 0; current <= 5; current += 1) {
          var yValue = yMax * current / 5;
          var y = yPos(yValue);
          grid.appendChild(rkHlCreateSvg("line", {
            x1: left,
            y1: y,
            x2: width - right,
            y2: y,
            stroke: "#d9e8ed",
            "stroke-width": 1
          }));
          grid.appendChild(rkHlCreateSvg("text", {
            x: left - 10,
            y: y + 5,
            fill: "#607784",
            "font-size": 12,
            "text-anchor": "end"
          }, rkHlFormat(yValue, 1)));
        }

        for (current = xMin; current <= xMax; current += xStep) {
          var x = xPos(current);
          grid.appendChild(rkHlCreateSvg("line", {
            x1: x,
            y1: top,
            x2: x,
            y2: top + plotHeight,
            stroke: "#e4eef1",
            "stroke-width": 1
          }));
          grid.appendChild(rkHlCreateSvg("text", {
            x: x,
            y: height - 24,
            fill: "#607784",
            "font-size": 12,
            "text-anchor": "middle"
          }, String(current) + "°"));
        }

        grid.appendChild(rkHlCreateSvg("line", {
          x1: left,
          y1: top + plotHeight,
          x2: width - right,
          y2: top + plotHeight,
          stroke: "#728994",
          "stroke-width": 2
        }));
        grid.appendChild(rkHlCreateSvg("line", {
          x1: left,
          y1: top,
          x2: left,
          y2: top + plotHeight,
          stroke: "#728994",
          "stroke-width": 2
        }));
        grid.appendChild(rkHlCreateSvg("text", {
          x: left + plotWidth / 2,
          y: height - 3,
          fill: "#405965",
          "font-size": 13,
          "font-weight": 800,
          "text-anchor": "middle"
        }, "temperatura zewnętrzna [°C]"));
        grid.appendChild(rkHlCreateSvg("text", {
          x: 18,
          y: top + plotHeight / 2,
          fill: "#405965",
          "font-size": 13,
          "font-weight": 800,
          "text-anchor": "middle",
          transform: "rotate(-90 18 " + String(top + plotHeight / 2) + ")"
        }, "wymagana moc [kW]"));

        for (current = xMin; current <= xMax; current += 1) {
          var power = totalH * Math.max(indoor - current, 0) / 1000;
          points.push(rkHlFormat(xPos(current), 1).replace(",", ".") + "," + rkHlFormat(yPos(power), 1).replace(",", "."));
        }
        line.setAttribute("points", points.join(" "));

        var designTemperature = rkHlClamp(outdoor, xMin, xMax);
        var designX = xPos(designTemperature);
        var designY = yPos(totalKw);
        designLine.setAttribute("x1", String(designX));
        designLine.setAttribute("x2", String(designX));
        designLine.setAttribute("y1", String(top));
        designLine.setAttribute("y2", String(top + plotHeight));
        designPoint.setAttribute("cx", String(designX));
        designPoint.setAttribute("cy", String(designY));
        designLabel.setAttribute("x", String(designX > width - 135 ? designX - 92 : designX + 10));
        designLabel.setAttribute("y", String(Math.max(top + 16, designY - 12)));
        designLabel.textContent = rkHlFormat(totalKw, 2) + " kW przy " + rkHlFormat(outdoor, 1) + "°C";
      }

      function rkHlSetBar(barId, valueId, value, total) {
        var percentage = total > 0 ? value / total * 100 : 0;
        document.getElementById(barId).style.width = rkHlClamp(percentage, 0, 100) + "%";
        document.getElementById(valueId).textContent = rkHlFormat(value / 1000, 2) + " kW • " + rkHlFormat(percentage, 1) + "%";
      }

      function rkHlDiagnosticItem(textValue, stateValue) {
        var item = document.createElement("li");
        item.textContent = textValue;
        item.setAttribute("data-state", stateValue);
        return item;
      }

      function rkHlUpdate() {
        var area = Math.max(0, rkHlNumber(areaInput, 0));
        var volume = Math.max(0, rkHlNumber(volumeInput, 0));
        var activeArea = Math.max(0, rkHlNumber(activeInput, 0));
        var indoor = rkHlNumber(indoorInput, 20);
        var outdoor = rkHlNumber(outdoorInput, -20);
        var delta = Math.max(0, indoor - outdoor);
        var ventFlow = Math.max(0, rkHlNumber(ventFlowInput, 0));
        var recovery = rkHlClamp(rkHlNumber(recoveryInput, 0), 0, 95);
        var infiltration = Math.max(0, rkHlNumber(infiltrationInput, 0));
        var bridgesH = Math.max(0, rkHlNumber(bridgesInput, 0));
        var transmissionH = 0;
        var envelopeCount = 0;
        var invalidEnvelope = false;
        var floorSimplified = false;
        var ventEffective;
        var ventilationH;
        var totalH;
        var transmissionW;
        var ventilationW;
        var bridgesW;
        var totalW;
        var totalKw;
        var wm2;
        var activeWm2;
        var badCount = 0;
        var warnCount = 0;

        rows.forEach(function (row) {
          var rowArea = Math.max(0, rkHlNumber(row.querySelector('[data-role="area"]'), 0));
          var rowU = Math.max(0, rkHlNumber(row.querySelector('[data-role="u"]'), 0));
          var rowFactor = Math.max(0, rkHlNumber(row.querySelector('[data-role="factor"]'), 0));
          var rowH = rowArea * rowU * rowFactor;
          var rowW = rowH * delta;
          var rowOutput = row.querySelector('[data-role="result"]');
          transmissionH += rowH;
          if (rowArea > 0) { envelopeCount += 1; }
          if (rowArea > 0) {
            if (rowU <= 0) { invalidEnvelope = true; }
          }
          if (row.getAttribute("data-envelope") === "floor") {
            if (rowArea > 0) { floorSimplified = true; }
          }
          rowOutput.innerHTML = rkHlFormat(rowW, 0) + " <small>W</small>";
        });

        ventEffective = ventFlow * (1 - recovery / 100) + infiltration * volume;
        ventilationH = 0.34 * ventEffective;
        totalH = transmissionH + ventilationH + bridgesH;
        transmissionW = transmissionH * delta;
        ventilationW = ventilationH * delta;
        bridgesW = bridgesH * delta;
        totalW = transmissionW + ventilationW + bridgesW;
        totalKw = totalW / 1000;
        wm2 = area > 0 ? totalW / area : 0;
        activeWm2 = activeArea > 0 ? totalW / activeArea : 0;

        rkHlSetOutput(totalKwOutput, totalKw, "kW", 2);
        rkHlSetOutput(wm2Output, wm2, "W/m²", 1);
        rkHlSetOutput(transmissionOutput, transmissionW / 1000, "kW", 2);
        rkHlSetOutput(ventilationOutput, ventilationW / 1000, "kW", 2);
        rkHlSetOutput(activeWm2Output, activeWm2, "W/m²", 1);
        deltaNote.textContent = "Różnica temperatur: " + rkHlFormat(delta, 1) + " K • H całkowite: " + rkHlFormat(totalH, 1) + " W/K";

        rkHlSetBar("rk-hl-bar-transmission", "rk-hl-share-transmission", transmissionW, totalW);
        rkHlSetBar("rk-hl-bar-ventilation", "rk-hl-share-ventilation", ventilationW, totalW);
        rkHlSetBar("rk-hl-bar-bridges", "rk-hl-share-bridges", bridgesW, totalW);
        rkHlDrawChart(totalH, indoor, outdoor, totalKw);

        rkHlClear(diagnostics);

        if (delta <= 0) {
          diagnostics.appendChild(rkHlDiagnosticItem("Temperatura zewnętrzna nie jest niższa od wewnętrznej. Punkt nie opisuje zimowego obciążenia grzewczego.", "bad"));
          badCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Różnica temperatur jest dodatnia i została jawnie pokazana w wyniku.", "good"));
        }

        if (area <= 0) {
          diagnostics.appendChild(rkHlDiagnosticItem("Brakuje powierzchni ogrzewanej, dlatego wskaźnik W/m² nie może być oceniony.", "bad"));
          badCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Wskaźnik mocy został odniesiony do wpisanej powierzchni " + rkHlFormat(area, 1) + " m².", "good"));
        }

        if (envelopeCount < 3) {
          diagnostics.appendChild(rkHlDiagnosticItem("Wprowadzono mniej niż trzy rodzaje przegród. Sprawdź, czy bilans obejmuje całą analizowaną strefę.", "warn"));
          warnCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Przenikanie jest liczone osobno dla " + String(envelopeCount) + " rodzajów przegród.", "good"));
        }

        if (invalidEnvelope) {
          diagnostics.appendChild(rkHlDiagnosticItem("Co najmniej jedna przegroda ma powierzchnię większą od zera i U równe zero.", "bad"));
          badCount += 1;
        }

        if (floorSimplified) {
          diagnostics.appendChild(rkHlDiagnosticItem("Podłoga na gruncie jest policzona przybliżeniem U · A · b · Δθ, a nie pełną metodą wymiany z gruntem.", "warn"));
          warnCount += 1;
        }

        if (ventFlow <= 0) {
          if (infiltration <= 0) {
            diagnostics.appendChild(rkHlDiagnosticItem("Wentylacja i infiltracja mają wartość zero. Wynik prawdopodobnie pomija istotną część strat.", "bad"));
            badCount += 1;
          } else {
            diagnostics.appendChild(rkHlDiagnosticItem("Straty powietrzne obejmują tylko infiltrację. Sprawdź, czy celowo pominięto strumień wentylacyjny.", "warn"));
            warnCount += 1;
          }
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Efektywny strumień powietrza użyty w obliczeniu wynosi " + rkHlFormat(ventEffective, 1) + " m³/h.", "good"));
        }

        if (recovery > 0) {
          if (ventFlow <= 0) {
            diagnostics.appendChild(rkHlDiagnosticItem("Wpisano sprawność odzysku, ale strumień wentylacji wynosi zero.", "warn"));
            warnCount += 1;
          } else {
            diagnostics.appendChild(rkHlDiagnosticItem("Odzysk redukuje tylko wpisany strumień wentylacyjny; infiltracja pozostaje osobno.", "good"));
          }
        }

        if (bridgesH <= 0) {
          diagnostics.appendChild(rkHlDiagnosticItem("Mostki cieplne nie zostały uwzględnione. Nie doliczono automatycznego zapasu procentowego.", "warn"));
          warnCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Mostki cieplne odpowiadają za " + rkHlFormat(bridgesW / 1000, 2) + " kW w punkcie projektowym.", "good"));
        }

        if (scope.value === "room") {
          if (activeArea <= 0) {
            diagnostics.appendChild(rkHlDiagnosticItem("W trybie pomieszczenia brakuje czynnej powierzchni podłogi.", "bad"));
            badCount += 1;
          } else {
            diagnostics.appendChild(rkHlDiagnosticItem("Wymagana średnia moc z powierzchni czynnej wynosi " + rkHlFormat(activeWm2, 1) + " W/m². Trzeba ją porównać z charakterystyką konkretnej podłogi.", "good"));
          }
        }

        if (wm2 > 120) {
          diagnostics.appendChild(rkHlDiagnosticItem("Wskaźnik przekracza 120 W/m². Zweryfikuj dane, a następnie osobno oceń możliwości odbiorników ciepła.", "warn"));
          warnCount += 1;
        }

        if (badCount > 0) {
          status.setAttribute("data-level", "alert");
          status.textContent = "Brakuje danych krytycznych albo warunki nie opisują punktu grzewczego. Nie używaj jeszcze wyniku do dalszych decyzji.";
        } else if (warnCount > 0) {
          status.setAttribute("data-level", "warn");
          status.textContent = "Wynik jest użyteczny do wstępnej analizy, ale zawiera jawne uproszczenia. Przeczytaj diagnostykę przed wykorzystaniem liczby.";
        } else {
          status.setAttribute("data-level", "good");
          status.textContent = "Wprowadzone dane tworzą spójny wstępny bilans. Nadal nie jest to pełne OZC ani automatyczny dobór urządzenia.";
        }
      }

      function rkHlScopeChange() {
        if (scope.value === "room") {
          activeField.hidden = false;
          activeResultCard.hidden = false;
        } else {
          activeField.hidden = true;
          activeResultCard.hidden = true;
        }
        rkHlUpdate();
      }

      zone.addEventListener("change", function () {
        if (zone.value !== "manual") { outdoorInput.value = zone.value; }
        rkHlUpdate();
      });

      scope.addEventListener("change", rkHlScopeChange);

      root.querySelectorAll("input, select").forEach(function (control) {
        if (control !== zone) {
          if (control !== scope) {
            control.addEventListener("input", rkHlUpdate);
            control.addEventListener("change", rkHlUpdate);
          }
        }
      });

      rkHlScopeChange();
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <section id="rk-rv-okna" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Przepływy poza centralą</div>
        <h2>Czy przy rekuperacji można otwierać okna? Co z okapem i kominkiem?</h2>
        <h3>Co okresowo zmienia bilans przepływów?</h3>
        <h4>Otwieranie okien</h4>
        <p>Można otwierać okna. W tym czasie część wymiany powietrza odbywa się poza wymiennikiem, dlatego odzysk ciepła spada, a centrala nie kontroluje całego przepływu. Krótkie otwarcie okna nie „psuje” instalacji, lecz długotrwałe rozszczelnienie zwiększa straty.</p>
        <h4>Okap kuchenny</h4>
        <p>Okap wyrzucający powietrze bezpośrednio na zewnątrz może wytworzyć znaczne podciśnienie. Trzeba przewidzieć drogę powietrza kompensacyjnego i nie włączać jego dużego przepływu do standardowego bilansu centrali bez sprawdzenia.</p>
        <h4>Kominek i urządzenia spalające paliwo</h4>
        <p>Wymagają doprowadzenia powietrza do spalania oraz weryfikacji bezpieczeństwa i warunków ciągu. Nie wolno zakładać, że sama regulacja rekuperatora rozwiąże każdy przypadek podciśnienia.</p>
        <p>Pomieszczenia z dużymi oknami nadal trzeba obliczać lokalnie. Rekuperacja nie usuwa potrzeby analizy <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">podłogówki przy dużych przeszkleniach</a>.</p>
      </section>

      <section id="rk-rv-zima" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Tryby poza punktem katalogowym</div>
        <h2>Mróz, kondensat, odszranianie i bypass</h2>
        <p>W niskiej temperaturze w wymienniku może wykraplać się wilgoć, a w określonych warunkach powstawać szron. Centrala musi chronić wymiennik, na przykład zmieniając przepływy, uruchamiając nagrzewnicę lub realizując sekwencję odszraniania. Każda strategia może zmienić chwilowy odzysk i pobór energii.</p>
        <div class="rk-rv-grid-2">
          <div class="rk-rv-card rk-rv-card-warm"><h3>Zimą</h3><ul class="rk-rv-list-check"><li>sprawdź drożność odpływu kondensatu,</li><li>poznaj logikę ochrony przeciwzamrożeniowej,</li><li>kontroluj opory filtrów i bilans przepływów.</li></ul></div>
          <div class="rk-rv-card rk-rv-card-accent"><h3>Latem i w okresach przejściowych</h3><ul class="rk-rv-list-check"><li>bypass może omijać odzysk temperatury,</li><li>nocne chłodzenie zależy od temperatur i przepływu,</li><li>rekuperator nie zastępuje aktywnej klimatyzacji.</li></ul></div>
        </div>
        <div class="rk-rv-callout"><strong>Wartość odzysku z etykiety nie opisuje wszystkich trybów centrali.</strong> Do analizy sezonowej potrzebny jest przebieg pracy, dane klimatyczne i sposób sterowania.</div>
      </section>

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

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

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

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

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

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

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

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

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

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

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

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

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

      function setText(id, value) {
        var target = element(id);
        if (target) { target.textContent = value; }
      }

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

      function formatKw(value) {
        return formatNumber(value, 2) + " kW";
      }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        addDiagnostic(diagnostics, "Większy strumień odpowiada orientacyjnie " + formatNumber(airChange, 2) + " wymiany kubatury na godzinę. To kontrola, nie kryterium projektowe.", false);

        if (efficiencyPercent > 85) {
          addDiagnostic(diagnostics, "Wpisano wysoką sprawność " + formatNumber(efficiencyPercent, 0) + "%. Potwierdź ją dla konkretnego przepływu, temperatury i trybu odszraniania.", true);
        } else {
          addDiagnostic(diagnostics, "Sprawność " + formatNumber(efficiencyPercent, 0) + "% jest założeniem dla wybranego punktu, a nie gwarancją całoroczną.", true);
        }

        if (cleanInfiltration > 0) {
          addDiagnostic(diagnostics, "Dodatkowa infiltracja zwiększa wynik o " + formatNumber(qInfiltration, 2) + " kW i nie korzysta z odzysku w wymienniku.", true);
        }

        if (source === "heatpump") {
          addDiagnostic(diagnostics, "Dla pompy ciepła mniejsze obciążenie może zmienić dobór mocy, ale nie wolno odejmować odzyskanej mocy od urządzenia bez pełnego OZC i sprawdzenia punktu biwalentnego.", false);
        } else if (source === "gas") {
          addDiagnostic(diagnostics, "Dla kotła koszt unikniętej energii zależy od jego sprawności sezonowej, ceny paliwa i opłat — sama moc w kW nie jest oszczędnością w złotych.", false);
        } else if (source === "electric") {
          addDiagnostic(diagnostics, "Dla ogrzewania elektrycznego koszt zależy od taryfy i godzin pracy. Do wyniku trzeba doliczyć energię wentylatorów.", false);
        } else {
          addDiagnostic(diagnostics, "Wartość odzyskanej energii trzeba przeliczyć z użyciem sprawności i ceny właściwych dla konkretnego źródła ciepła.", false);
        }

        if (mode === "comparison") {
          addDiagnostic(diagnostics, "Tryb porównawczy pokazuje różnicę wariantów w tym samym punkcie. Nie przelicza jej na sezonowe kWh.", false);
        }

        drawChart({
          outdoor: outdoor,
          indoor: indoor,
          baseFlow: baseFlow,
          balancedFlow: balancedFlow,
          efficiency: efficiency,
          infiltration: cleanInfiltration,
          qNo: qNo,
          qTotal: qTotal
        });
      }

      var runButton = element("rk-rv-run");
      if (runButton) { runButton.addEventListener("click", calculate); }

      var fields = root.querySelectorAll("input, select");
      Array.prototype.forEach.call(fields, function (field) {
        field.addEventListener("change", calculate);
        field.addEventListener("input", calculate);
      });

      calculate();
    }

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", startRekuAnalyzer);
    } else {
      startRekuAnalyzer();
    }
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">Rekuperacja i ogrzewanie podłogowe – czy to się opłaca?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika</title>
		<link>https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 08 Feb 2026 09:42:12 +0000</pubDate>
				<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie niskotemperaturowe]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[budownictwo nowoczesne]]></category>
		<category><![CDATA[chłodzenie płaszczyznowe]]></category>
		<category><![CDATA[cop]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje hvac]]></category>
		<category><![CDATA[jastrych anhydrytowy]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[niskie parametry zasilania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3414</guid>

					<description><![CDATA[<p>Wybór systemu grzewczego to jedna z najważniejszych decyzji podczas budowy nowoczesnego domu. Samo urządzenie to jednak tylko połowa sukcesu. Aby instalacja była naprawdę energooszczędna, niezbędny jest rzetelny i precyzyjnie wykonany projekt ogrzewania podłogowego z pompą ciepła, który połączy fizykę budowli z charakterystyką pracy inwertera. W tym artykule wchodzimy głęboko w techniczne aspekty synergii systemów niskotemperaturowych. Analizujemy wpływ temperatury zasilania na współczynnik COP, wyjaśniamy znaczenie bezwładności jastrychu dla żywotności sprężarki oraz podpowiadamy, jak uniknąć błędów hydraulicznych, które mogą drastycznie podnieść Twoje rachunki za prąd. To obowiązkowa lektura dla każdego świadomego inwestora.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika</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>


<style>
  /* Audyt kompletności projektu — cztery kolejne warstwy, bez pustych kolumn. */
  #rk-heat-guide .rk-pc-audit-group {
    margin-bottom: 16px;
    padding: 21px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 16px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-pc-audit-group:last-child { margin-bottom: 0; }
  #rk-heat-guide .rk-pc-audit-head {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    margin-bottom: 17px;
  }
  #rk-heat-guide .rk-pc-audit-number {
    display: grid;
    flex: 0 0 38px;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    font-size: .78rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-audit-head h4 { margin: 0 0 4px; color: var(--rk-white); }
  #rk-heat-guide .rk-pc-audit-head p { margin: 0; color: #bcd7e1; font-size: .68rem; }
  #rk-heat-guide .rk-pc-stage-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 11px;
    margin: 18px 0;
  }
  #rk-heat-guide .rk-pc-stage {
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(136, 202, 220, .28);
    border-radius: 14px;
    background: rgba(255, 255, 255, .045);
  }
  #rk-heat-guide .rk-pc-stage::before {
    display: block;
    width: 100%;
    height: 7px;
    margin-bottom: 13px;
    border-radius: 999px;
    background: #ff8b7f;
    content: "";
  }
  #rk-heat-guide .rk-pc-stage.is-partial::before { background: #ffd568; }
  #rk-heat-guide .rk-pc-stage.is-ready::before { background: #4cd7ac; }
  #rk-heat-guide .rk-pc-stage b { display: block; color: var(--rk-white); font-size: .73rem; }
  #rk-heat-guide .rk-pc-stage span { display: block; margin-top: 5px; color: #bcd7e1; font-size: .61rem; line-height: 1.45; }
  #rk-heat-guide .rk-pc-summary {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 16px;
    align-items: center;
    padding: 18px;
    border: 1px solid rgba(136, 202, 220, .28);
    border-radius: 15px;
    background: rgba(255, 255, 255, .045);
  }
  #rk-heat-guide .rk-pc-score {
    display: grid;
    place-items: center;
    width: 92px;
    height: 92px;
    border: 8px solid var(--rk-cyan);
    border-radius: 50%;
    color: var(--rk-white);
    font-size: 1.12rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-summary h4 { margin-bottom: 4px; color: var(--rk-white); }
  #rk-heat-guide .rk-pc-summary p { margin: 0; color: #c6dfe7; font-size: .7rem; }
  #rk-heat-guide .rk-pc-result-columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin-top: 16px;
  }
  #rk-heat-guide .rk-pc-result-box {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 14px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-pc-result-box h4 { color: var(--rk-white); }
  #rk-heat-guide .rk-pc-result-box ul {
    display: grid;
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-pc-result-box li {
    position: relative;
    margin: 0;
    padding: 9px 10px 9px 32px;
    border-radius: 9px;
    color: #d9eaf0;
    background: rgba(255, 255, 255, .045);
    font-size: .64rem;
    line-height: 1.46;
  }
  #rk-heat-guide .rk-pc-result-box li::before {
    position: absolute;
    top: 9px;
    left: 11px;
    color: #4cd7ac;
    content: "✓";
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-result-box.is-missing li::before { color: #ffd568; content: "!"; }
  #rk-heat-guide .rk-pc-empty { color: #a9c8d3; font-size: .66rem; }
  #rk-heat-guide .rk-pc-tool-foot {
    margin: 16px 0 0;
    padding: 13px 15px;
    border-left: 4px solid #ffd568;
    border-radius: 10px;
    color: #fff0c4;
    background: rgba(214, 154, 22, .13);
    font-size: .66rem;
    line-height: 1.5;
  }
  #rk-heat-guide .rk-pc-tool-foot strong { color: #fff7dd; }
  #rk-heat-guide .rk-pc-doc-list {
    counter-reset: rk-doc;
    display: grid;
    gap: 12px;
    margin: 25px 0;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-pc-doc-list li {
    position: relative;
    min-height: 70px;
    margin: 0;
    padding: 17px 17px 17px 70px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-pc-doc-list li::before {
    position: absolute;
    top: 16px;
    left: 17px;
    display: grid;
    place-items: center;
    width: 39px;
    height: 39px;
    border-radius: 11px;
    color: var(--rk-white);
    background: var(--rk-blue);
    counter-increment: rk-doc;
    content: counter(rk-doc);
    font-size: .76rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-doc-list b { display: block; margin-bottom: 3px; }
  #rk-heat-guide .rk-pc-doc-list span { color: var(--rk-text); font-size: .8rem; }
  #rk-heat-guide .rk-pc-flow {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 25px 0;
  }
  #rk-heat-guide .rk-pc-flow > div {
    position: relative;
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-top: 6px solid var(--rk-cyan);
    border-radius: 14px;
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-pc-flow > div:nth-child(2) { border-top-color: var(--rk-orange); }
  #rk-heat-guide .rk-pc-flow > div:nth-child(3) { border-top-color: var(--rk-green); }
  #rk-heat-guide .rk-pc-flow > div:nth-child(4) { border-top-color: var(--rk-purple); }
  #rk-heat-guide .rk-pc-flow b { display: block; margin-bottom: 5px; }
  #rk-heat-guide .rk-pc-flow span { color: var(--rk-muted); font-size: .7rem; line-height: 1.45; }
  @media (max-width: 900px) {
    #rk-heat-guide .rk-pc-stage-grid,
    #rk-heat-guide .rk-pc-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 720px) {
    #rk-heat-guide .rk-pc-stage-grid,
    #rk-heat-guide .rk-pc-result-columns,
    #rk-heat-guide .rk-pc-flow { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-pc-summary { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-pc-score { width: 80px; height: 80px; }
    #rk-heat-guide .rk-pc-audit-group { padding: 17px; }
  }
  @media (max-width: 420px) {
    #rk-heat-guide .rk-pc-audit-head { display: block; }
    #rk-heat-guide .rk-pc-audit-number { margin-bottom: 10px; }
    #rk-heat-guide .rk-pc-doc-list li { padding-left: 62px; }
  }
</style>

<div id="rk-heat-guide">
  <article class="rk-heat-shell">
    <header class="rk-heat-hero">
      <span class="rk-heat-kicker">Projekt wykonawczy • podłogówka i pompa ciepła • aktualizacja 2026</span>
      <p class="rk-heat-hero-title">Projekt ogrzewania podłogowego z pompą ciepła <span>łączy budynek, podłogę, hydraulikę i źródło</span></p>
      <p class="rk-heat-lead">Dobry projekt nie kończy się na narysowaniu rur. Musi przeprowadzić obliczenia od strat ciepła każdego pomieszczenia, przez aktywną powierzchnię podłogi i długości pętli, aż do przepływów, nastaw rozdzielacza oraz parametrów pracy pompy ciepła.</p>
      <div class="rk-heat-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-heat-hero-tag">OZC pomieszczeń</span>
        <span class="rk-heat-hero-tag">rozstaw i pętle</span>
        <span class="rk-heat-hero-tag">przepływy i nastawy</span>
        <span class="rk-heat-hero-tag">temperatura zasilania</span>
        <span class="rk-heat-hero-tag">dokumentacja wykonawcza</span>
      </div>
      <div class="rk-heat-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 28 minut</span>
        <span>Aktualizacja techniczna: 7 września 2026 r.</span>
      </div>
      <div class="rk-heat-hero-metrics" aria-label="Trzy zasady kompletnego projektu">
        <div class="rk-heat-hero-metric"><b>Najpierw obciążenia pomieszczeń</b><span>Jedna moc całego domu nie wystarcza do rozplanowania podłogi w salonie, łazience i sypialniach.</span></div>
        <div class="rk-heat-hero-metric"><b>Później geometria i hydraulika</b><span>Rozstaw, długość obwodu, przepływ oraz strata ciśnienia muszą dotyczyć tej samej pętli.</span></div>
        <div class="rk-heat-hero-metric"><b>Na końcu zgodność ze źródłem</b><span>Temperatury, minimalny przepływ, sterowanie i praca stref muszą pasować do pompy ciepła.</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-pc-szybka">Szybka odpowiedź</a>
        <a href="#rk-pc-zakres">Zakres projektu</a>
        <a href="#rk-pc-warstwy">Cztery warstwy</a>
        <a href="#rk-pc-dane">Dane wejściowe</a>
        <a href="#rk-pc-ozc">OZC pomieszczeń</a>
        <a href="#rk-pc-powierzchnia">Powierzchnia czynna</a>
        <a href="#rk-pc-temperatury">Temperatury wody</a>
        <a href="#rk-pc-rozstaw">Rozstaw rur</a>
        <a href="#rk-pc-okladziny">Okładziny</a>
        <a href="#rk-pc-petle">Pętle i dobiegi</a>
        <a href="#rk-pc-hydraulika">Przepływy i opory</a>
        <a href="#rk-pc-pompa-obiegowa">Pompa obiegowa</a>
        <a href="#rk-pc-zrodlo">Dobór pompy ciepła</a>
        <a href="#rk-pc-bufor">Bufor i minimalny przepływ</a>
        <a href="#rk-pc-sterowanie">Sterowanie</a>
        <a href="#rk-pc-audyt">Audyt danych</a>
        <a href="#rk-pc-dokumentacja">Dokumentacja</a>
        <a href="#rk-pc-czytanie">Jak czytać projekt</a>
        <a href="#rk-pc-scenariusze">Nowy dom i modernizacja</a>
        <a href="#rk-pc-bledy">Błędy ofert</a>
        <a href="#rk-pc-checklista">Checklista</a>
        <a href="#rk-pc-faq">FAQ</a>
        <a href="#rk-pc-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-pc-szybka">
        <span class="rk-heat-eyebrow">Odpowiedź w 30 sekund</span>
        <h2>Co powinien zawierać projekt podłogówki z pompą ciepła?</h2>
        <div class="rk-heat-answer">
          <p><strong>Kompletny projekt powinien połączyć obciążenie cieplne każdego pomieszczenia z rzeczywistą powierzchnią grzewczą, parametrami podłogi, geometrią pętli, przepływami oraz warunkami pracy pompy ciepła.</strong> Efektem nie jest sam rysunek rur, lecz zestaw informacji, według których instalację można wykonać, uruchomić i wyregulować.</p>
        </div>
        <p>Na rzucie powinny być widoczne pola z rurami, strefy wyłączone, podział na pętle, ich rozstawy, długości oraz przypisanie do rozdzielaczy. W tabeli obliczeniowej potrzebne są co najmniej: moc pomieszczenia, powierzchnia czynna, temperatura zasilania i powrotu, przepływ, strata ciśnienia oraz nastawa obwodu.</p>
        <p>Tak rozumiany <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalny projekt ogrzewania podłogowego</a> pozwala sprawdzić zależności przed zalaniem rur. To zasadnicza różnica między dokumentacją wykonawczą a szkicem instalacji.</p>
        <div class="rk-heat-note"><p><strong>Projekt nie może zaczynać się od rozstawu 10 lub 15 cm.</strong> Rozstaw jest wynikiem obciążenia, powierzchni czynnej, temperatury wody, konstrukcji podłogi i oporu okładziny — nie samym założeniem wejściowym.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-zakres">
        <span class="rk-heat-eyebrow">Od obliczenia do nastawy</span>
        <h2>Rysunek rur to tylko jedna część projektu</h2>
        <p class="rk-heat-intro">Dokumentacja musi odpowiedzieć wykonawcy, gdzie ułożyć rury, ale także wyjaśnić, dlaczego dana pętla ma taki rozstaw, długość i przepływ.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Element</th><th>Co powinno się znaleźć w projekcie</th><th>Do czego służy</th></tr></thead>
            <tbody>
              <tr><td data-label="Element">Założenia</td><td data-label="Zawartość">Temperatury pomieszczeń, warunki zewnętrzne, wentylacja, konstrukcje przegród i podłóg.</td><td data-label="Cel">Umożliwiają odtworzenie obliczeń i późniejszą aktualizację.</td></tr>
              <tr><td data-label="Element">Bilans cieplny</td><td data-label="Zawartość">Obciążenie budynku oraz każdego ogrzewanego pomieszczenia.</td><td data-label="Cel">Określa wymaganą moc źródła i powierzchni grzewczych.</td></tr>
              <tr><td data-label="Element">Rzut instalacji</td><td data-label="Zawartość">Pętle, rozstawy, strefy brzegowe, dobiegi, dylatacje i miejsca bez rur.</td><td data-label="Cel">Daje wykonawcy jednoznaczną geometrię ułożenia.</td></tr>
              <tr><td data-label="Element">Hydraulika</td><td data-label="Zawartość">Długości, przepływy, opory, obwód krytyczny, średnice i nastawy.</td><td data-label="Cel">Pozwala zrównoważyć rozdzielacze i sprawdzić pompę obiegową.</td></tr>
              <tr><td data-label="Element">Źródło i regulacja</td><td data-label="Zawartość">Parametry wody, charakterystyka pompy ciepła, minimalny przepływ i logika sterowania.</td><td data-label="Cel">Łączy odbiorniki z warunkami stabilnej pracy źródła.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Porównanie <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projektu „z głowy” z projektem opartym na obliczeniach</a> najlepiej pokazuje, czego nie da się dopisać już po wykonaniu wylewki. Rury można wyregulować tylko w zakresie, jaki pozostawiła ich geometria.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-warstwy">
        <span class="rk-heat-eyebrow">Jedna instalacja, cztery zależne modele</span>
        <h2>Projekt tworzą cztery warstwy: budynek, podłoga, hydraulika i źródło</h2>
        <div class="rk-pc-flow">
          <div><b>1. Bilans budynku</b><span>Ile watów traci każde pomieszczenie w punkcie projektowym?</span></div>
          <div><b>2. Powierzchnia grzewcza</b><span>Czy aktywna podłoga odda tę moc przy przyjętych temperaturach?</span></div>
          <div><b>3. Hydraulika</b><span>Jak podzielić rury na obwody i uzyskać potrzebne przepływy?</span></div>
          <div><b>4. Pompa ciepła</b><span>Czy źródło pokryje moc i zachowa wymagany przepływ?</span></div>
        </div>
        <p>Każda warstwa przekazuje dane kolejnej. Jeżeli obciążenie łazienki jest nieznane, nie da się odpowiedzialnie wybrać mocy podłogi. Jeżeli nie znamy długości i przepływu krytycznej pętli, nie sprawdzimy wymaganego podnoszenia pompy. Jeżeli źródło i odbiornik analizuje się osobno, łatwo przeoczyć przypadek, w którym <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">pompa ma moc, ale podłoga nie pokrywa obciążenia konkretnego pokoju</a>.</p>
        <div class="rk-heat-warning"><p><strong>Jedna wartość dla całego domu nie zastępuje obliczeń pomieszczeń.</strong> Suma mocy jest potrzebna do analizy źródła, lecz rozstaw rur i przepływ wyznacza się dla lokalnych warunków.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-dane">
        <span class="rk-heat-eyebrow">Jakość wyniku zaczyna się przed obliczeniami</span>
        <h2>Jakie dane trzeba przygotować do projektu?</h2>
        <p class="rk-heat-intro">Im wcześniej zbierzemy komplet informacji, tym mniej założeń trzeba przyjmować i tym mniejsze ryzyko zmian podczas montażu.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">A</span><h3>Architektura i przegrody</h3><p>Rzuty z wymiarami, przekroje, lokalizacja budynku, konstrukcje ścian, dachu, podłogi, okien oraz drzwi.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">I</span><h3>Instalacja i wnętrza</h3><p>Źródło ciepła, lokalizacje rozdzielaczy, pionów i urządzeń, stała zabudowa, dylatacje oraz planowane okładziny.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">T</span><h3>Temperatury i wentylacja</h3><p>Temperatury wewnętrzne, dane wentylacji lub rekuperacji, temperatura projektowa i oczekiwany sposób sterowania.</p></div>
        </div>
        <h3>Dane, których nie warto zgadywać</h3>
        <ul class="rk-heat-list">
          <li>Grubości i materiały przegród zamiast ogólnego określenia „dom dobrze ocieplony”.</li>
          <li>Opór cieplny całej okładziny z podkładem, a nie tylko rodzaj „panel” lub „płytka”.</li>
          <li>Rzeczywiste miejsca szaf, wysp kuchennych, wanien i innych trwałych elementów.</li>
          <li>Model pompy ciepła lub przynajmniej dane do późniejszego sprawdzenia jej charakterystyki.</li>
          <li>Planowane strefy zamykane siłownikami i wymagania dotyczące chłodzenia, jeżeli ma wystąpić.</li>
        </ul>
        <p>Jeżeli inwestor ma już wiarygodne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>, można wykorzystać wyniki pomieszczeń. Jeżeli nie — bilans trzeba opracować na podstawie aktualnej dokumentacji budynku.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-ozc">
        <span class="rk-heat-eyebrow">Moc wymagana w warunkach obliczeniowych</span>
        <h2>OZC każdego pomieszczenia jest punktem wyjścia do rozstawu rur</h2>
        <p>Obciążenie cieplne opisuje moc potrzebną do utrzymania założonej temperatury wewnętrznej przy warunkach projektowych. Obejmuje straty przez przegrody oraz wymianę powietrza. Nie jest rachunkiem rocznym ani prognozą miesięcznego zużycia energii.</p>
        <div class="rk-heat-formula"><strong>Φ<sub>HL</sub> = Φ<sub>T</sub> + Φ<sub>V</sub></strong><span>projektowe straty przez przenikanie oraz wentylację i infiltrację, obliczane dla właściwych warunków</span></div>
        <p>W osobnym poradniku pokazujemy krok po kroku, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne budynku</a>. Dla projektu wykonawczego istotne jest jednak nie tylko łącznych 6 czy 9 kW, ale przykładowo 540 W w sypialni, 1250 W w salonie i 780 W w łazience.</p>
        <h3>Założenia muszą być jawne</h3>
        <p>Metodyka oparta na <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">zasadach obliczeń według PN-EN 12831</a> wymaga spójnych temperatur i danych przegród. Znaczenie ma też lokalizacja, ponieważ <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/">warunki projektowe różnią się między strefami klimatycznymi</a>.</p>
        <div class="rk-heat-note"><p><strong>Kontrola projektu:</strong> suma mocy pomieszczeń, wynik całego budynku i założenia wentylacyjne powinny być ze sobą zgodne. Rozbieżności trzeba wyjaśnić przed doborem pompy.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-powierzchnia">
        <span class="rk-heat-eyebrow">Metry kwadratowe, które naprawdę grzeją</span>
        <h2>Powierzchnia czynna decyduje o wymaganej mocy podłogi</h2>
        <p class="rk-heat-intro">Moc pomieszczenia trzeba odnieść do fragmentu posadzki, na którym rzeczywiście można ułożyć działające rury.</p>
        <div class="rk-heat-formula"><strong>q<sub>wym</sub> = Q<sub>pomieszczenia</sub> / A<sub>czynna</sub></strong><span>wymagana moc jednostkowa [W/m²] = obciążenie pomieszczenia [W] / aktywna powierzchnia [m²]</span></div>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">20</span><h3>20 m² powierzchni czynnej</h3><p>Przy obciążeniu 1000 W wymaganie wynosi średnio 50 W/m².</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">12</span><h3>12 m² powierzchni czynnej</h3><p>Przy tym samym obciążeniu wymaganie rośnie do około 83 W/m².</p></div>
        </div>
        <p>Z tego powodu rzut musi wskazywać <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">miejsca, w których rur podłogówki nie należy układać</a>. Nie każdą szafkę trzeba wyłączać automatycznie, ale trwałą zabudowę, kominek, brodzik czy mocowania do podłoża należy uzgodnić przed wyznaczeniem pętli.</p>
        <h3>Mała łazienka może być trudniejsza od dużego salonu</h3>
        <p>Łazienka ma często wyższą temperaturę obliczeniową i jednocześnie mało wolnej podłogi. Jeżeli wymagana moc jednostkowa przekracza możliwości przyjętej konstrukcji i dopuszczalnej temperatury powierzchni, projekt powinien wskazać dodatkowy odbiornik albo zmianę założeń — nie tylko zagęścić rury.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-temperatury">
        <span class="rk-heat-eyebrow">Wspólny parametr źródła i odbiornika</span>
        <h2>Temperaturę zasilania i powrotu wyznacza wymagana wydajność</h2>
        <p>Podłogówka współpracuje z pompą ciepła korzystnie, gdy może pokryć obciążenia przy niskiej temperaturze wody. Nie oznacza to jednak, że każdemu budynkowi wolno z góry przypisać 35°C. Parametry wynikają z obciążeń, powierzchni czynnej, rozstawu, oporu podłogi i temperatur wewnętrznych.</p>
        <div class="rk-hp-equation">
          <div><code>θ<sub>m</sub> = (θ<sub>z</sub> + θ<sub>p</sub>) / 2</code><span>Średnia temperatura wody zależy od zasilania i powrotu.</span></div>
          <div><code>Δθ<sub>H</sub> = θ<sub>m</sub> − θ<sub>i</sub></code><span>Różnica względem wnętrza napędza wymianę ciepła przez podłogę.</span></div>
        </div>
        <p>Projekt określa wspólny punkt obliczeniowy, a następnie sprawdza, czy wszystkie pomieszczenia osiągną wymaganą moc. Szczegółowy wpływ <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatury między zasilaniem a powrotem</a> trzeba rozpatrywać razem z przepływem i długością pętli.</p>
        <div class="rk-heat-warning"><p><strong>Niższa temperatura nie jest celem samym w sobie.</strong> Najpierw musi zapewnić komfort przy mrozie, a dopiero później można optymalizować krzywą grzewczą i efektywność.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-rozstaw">
        <span class="rk-heat-eyebrow">Wynik obliczeń, nie etykieta źródła</span>
        <h2>Jak projekt dobiera rozstaw rur do pompy ciepła?</h2>
        <p class="rk-heat-intro">Źródło ciepła wpływa na pożądaną temperaturę wody, ale samo nie wyznacza rozstawu. Ta sama podłoga przy tych samych parametrach emituje podobną moc niezależnie od tego, co ogrzało wodę.</p>
        <p>Procedura dla każdego pomieszczenia wygląda następująco. Punktem odniesienia dla oceny systemu jest <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">metodyka obliczeń ogrzewania podłogowego EN 1264</a>, a nie katalogowa wartość mocy przypisana do samego rozstawu.</p>
        <ol>
          <li>odczytujemy projektowe obciążenie cieplne,</li>
          <li>wyznaczamy rzeczywistą powierzchnię czynną,</li>
          <li>ustalamy konstrukcję podłogi i opór okładziny,</li>
          <li>przyjmujemy temperaturę zasilania i powrotu wspólną dla systemu,</li>
          <li>sprawdzamy wydajność dostępnych rozstawów oraz temperaturę powierzchni,</li>
          <li>wybrany układ przenosimy na geometrię pętli i weryfikujemy hydraulicznie.</li>
        </ol>
        <p>Osobno opisujemy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">dobór rozstawu rur przy pompie ciepła</a> oraz praktyczne porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu 10 i 15 cm przy jednakowych warunkach</a>. W projekcie można zastosować różne rozstawy w jednym budynku, jeżeli wynika to z obciążeń i konstrukcji.</p>
        <h3>Strefy brzegowe i duże przeszklenia</h3>
        <p>Przy fasadach o większych stratach można lokalnie zmienić układ, ale strefa brzegowa nie może być automatycznym paskiem nanoszonym bez obliczeń. Zależności dla <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">podłogówki przy dużych przeszkleniach</a> obejmują także temperaturę powierzchni, głębokość strefy i rzeczywiste obciążenie przy elewacji.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-okladziny">
        <span class="rk-heat-eyebrow">Warstwa nad rurą ma znaczenie</span>
        <h2>Płytki, panele i drewno wchodzą do obliczeń przez opór cieplny</h2>
        <p>Projekt nie powinien przypisywać jednej wydajności wszystkim panelom ani każdej podłodze drewnianej. Potrzebny jest deklarowany opór kompletu: okładziny, podkładu, kleju lub innych warstw przewidzianych przez dostawcę systemu.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Dana</th><th>Dlaczego jest potrzebna</th><th>Co dzieje się po zmianie</th></tr></thead>
            <tbody>
              <tr><td data-label="Dane">Materiał wykończenia</td><td data-label="Znaczenie">Pomaga dobrać sposób montażu i ograniczenia eksploatacyjne.</td><td data-label="Skutek zmiany">Może zmienić bezwładność, sposób mocowania i dopuszczalną temperaturę.</td></tr>
              <tr><td data-label="Dane">Opór R [m²K/W]</td><td data-label="Znaczenie">Jest parametrem używanym do oceny przenikania ciepła przez wykończenie.</td><td data-label="Skutek zmiany">Wyższy opór zwykle wymaga większej różnicy temperatur dla tej samej mocy.</td></tr>
              <tr><td data-label="Dane">Limit temperatury</td><td data-label="Znaczenie">Chroni okładzinę i określa dopuszczalny sposób użytkowania.</td><td data-label="Skutek zmiany">Może ograniczyć dostępną moc powierzchni wcześniej niż sam system grzewczy.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Warto wcześniej sprawdzić, <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">jak okładzina wpływa na wydajność ogrzewania podłogowego</a> i jak interpretować <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny R w m²K/W</a>. Jeżeli materiał zostanie zmieniony po obliczeniach, należy sprawdzić pomieszczenie ponownie.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-petle">
        <span class="rk-heat-eyebrow">Geometria zamieniona na obwody</span>
        <h2>Podział na pętle uwzględnia pole grzewcze, dobiegi i dylatacje</h2>
        <p>Najpierw wyznacza się pola możliwe do ogrzewania, a później prowadzi obwody tak, aby obsłużyć wymagany rozstaw, nie przekroczyć przyjętych ograniczeń hydraulicznych i przejść przez dylatacje w uzgodniony sposób. Długość pętli obejmuje zarówno rurę w polu, jak i zasilający oraz powrotny dobieg do rozdzielacza.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">P</span><h3>Pole</h3><p>Powierzchnia oraz rozstaw wyznaczają orientacyjne zużycie rury w strefie grzewczej.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">D</span><h3>Dobieg</h3><p>Odległość od rozdzielacza może istotnie zmienić długość i opór konkretnego obwodu.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">R</span><h3>Różnica długości</h3><p>Pętle nie muszą być identyczne, ale ich przepływy i dostępne nastawy muszą być policzone.</p></div>
        </div>
        <p>Praktyczne zasady pokazuje poradnik o tym, <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak planować rozmieszczenie pętli grzewczych</a>. Z kolei <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli</a> nie jest jedną liczbą wynikającą wyłącznie ze średnicy rury — zależy również od przepływu, oporów dodatkowych i budżetu ciśnienia.</p>
        <div class="rk-heat-note"><p><strong>Kontrola na budowie:</strong> wykonawca powinien zapisać rzeczywiste długości. Jeśli wyraźnie różnią się od projektu, przepływy i nastawy mogą wymagać ponownego przeliczenia.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-hydraulika">
        <span class="rk-heat-eyebrow">Każdy obwód ma własny bilans</span>
        <h2>Przepływy, spadki ciśnienia i nastawy rozdzielacza</h2>
        <p class="rk-heat-intro">Moc pętli i przyjęta różnica temperatur pozwalają wyznaczyć przepływ. Długość, średnica, właściwości medium i armatura decydują o stracie ciśnienia.</p>
        <div class="rk-hp-equation">
          <div><code>V̇ ≈ Q / (1,163 × ΔT)</code><span>Dla wody: orientacyjny przepływ [l/h] z mocy [W] i różnicy temperatur [K].</span></div>
          <div><code>Δp<sub>obwodu</sub> = Δp<sub>rury</sub> + Δp<sub>armatury</sub></code><span>Opór pełnej drogi od belki zasilającej do powrotnej.</span></div>
        </div>
        <p>W tabeli projektu każda pętla powinna mieć własną moc i przepływ. Nastawa nie jest dzieleniem przepływu całego rozdzielacza po równo. Odczyt i regulację opisuje poradnik o <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach na rozdzielaczu</a>.</p>
        <h3>Obwód krytyczny wyznacza wymagania pompy</h3>
        <p>Pompa nie sumuje spadków wszystkich równoległych pętli. Musi pokonać opór najbardziej wymagającej czynnej drogi przy przepływie całej obsługiwanej instalacji. Projekt powinien więc wskazać obwód krytyczny, opory wspólnej magistrali i elementów dodatkowych.</p>
        <div class="rk-heat-warning"><p><strong>Nie wolno wyznaczać nastaw z samej długości.</strong> Dwie pętle po 80 m mogą przenosić inną moc, wymagać innego przepływu i mieć różne opory zaworów lub dobiegów.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-pompa-obiegowa">
        <span class="rk-heat-eyebrow">Wspólna część układu</span>
        <h2>Magistrala i pompa obiegowa muszą obsłużyć projektowy punkt pracy</h2>
        <p>Po zsumowaniu jednocześnie czynnych przepływów sprawdza się prędkość i spadek ciśnienia w przewodach zasilających rozdzielacze. Pomocniczo można porównać wynik z poradnikiem o <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnicy rury zasilającej rozdzielacz</a>.</p>
        <p>Punkt pracy pompy obiegowej tworzy przecięcie charakterystyki urządzenia z krzywą instalacji. Nie wybiera się jej tylko na podstawie liczby pętli ani powierzchni budynku. <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Analizator doboru pompy obiegowej</a> pomaga zrozumieć relację przepływu i podnoszenia, natomiast projekt korzysta z rzeczywistych oporów wszystkich elementów.</p>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">Q</span><h3>Przepływ całkowity</h3><p>Wynika z sumy obwodów pracujących w rozpatrywanym stanie, nie z maksimum pojedynczego rotametru.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">H</span><h3>Wymagane podnoszenie</h3><p>Wynika z krytycznej drogi wraz z magistralą, rozdzielaczem, zaworami i urządzeniami wspólnymi.</p></div>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-pc-zrodlo">
        <span class="rk-heat-eyebrow">Dopasowanie charakterystyki źródła</span>
        <h2>Dobór pompy ciepła wymaga mocy przy właściwym punkcie A/W</h2>
        <p class="rk-heat-intro">Moc w nazwie modelu lub wartość przy A7/W35 nie mówi jeszcze, ile urządzenie dostarczy podczas temperatury projektowej budynku i przy wodzie wymaganej przez instalację.</p>
        <p>Projekt porównuje OZC z charakterystyką urządzenia przy odpowiedniej temperaturze zewnętrznej i zasilaniu. Ustala także rolę grzałki lub drugiego źródła oraz sposób przygotowania ciepłej wody. Dążenie do <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskiej temperatury zasilania pompy ciepła</a> jest zasadne, ale jej wartość trzeba potwierdzić obliczeniami podłogi.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Pytanie</th><th>Wartość potrzebna do oceny</th><th>Czego nie używać zamiennie</th></tr></thead>
            <tbody>
              <tr><td data-label="Pytanie">Czy pompa pokryje moc?</td><td data-label="Potrzebna wartość">Moc grzewcza przy A<sub>proj</sub>/W<sub>proj</sub>.</td><td data-label="Nie zamieniaj">Moc nominalna z nazwy modelu.</td></tr>
              <tr><td data-label="Pytanie">Jaka będzie efektywność?</td><td data-label="Potrzebna wartość">COP lub dane sezonowe dla porównywalnych warunków.</td><td data-label="Nie zamieniaj">Pojedynczy COP z łagodnego punktu badania.</td></tr>
              <tr><td data-label="Pytanie">Czy instalacja odda moc?</td><td data-label="Potrzebna wartość">Wydajność podłogi przy rzeczywistym rozstawie i oporze.</td><td data-label="Nie zamieniaj">Ogólny limit mocy przypisany wszystkim podłogom.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Jeżeli obliczenia pokazują potrzebę wyższych parametrów, trzeba sprawdzić <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">ograniczenia temperatury zasilania podłogówki</a>, temperaturę powierzchni, okładzinę oraz wpływ punktu pracy na źródło.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-bufor">
        <span class="rk-heat-eyebrow">Stabilność przepływu i objętości</span>
        <h2>Bufor, minimalny przepływ i odszranianie sprawdza się funkcjonalnie</h2>
        <p>Nie każda instalacja z pompą ciepła wymaga bufora i nie ma jednej uniwersalnej pojemności na kilowat. Projekt powinien najpierw ustalić problem, który dodatkowy zbiornik ma rozwiązać: rozdzielenie hydrauliczne, zapewnienie minimalnej objętości, energię do odszraniania, stabilizację pracy czy współpracę z wieloma strefami.</p>
        <p>Analiza <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">funkcji bufora w ogrzewaniu podłogowym</a> powinna uwzględniać wymagania konkretnej pompy, pojemność rur, wielkość zładu, minimalny przepływ oraz to, ile obwodów może zostać zamkniętych.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">V</span><h3>Objętość czynna</h3><p>Liczy się część instalacji rzeczywiście dostępna dla źródła w danym stanie pracy.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">F</span><h3>Przepływ minimalny</h3><p>Zamykanie stref nie może odebrać pompie drogi przepływu wymaganej przez jej automatykę.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">D</span><h3>Defrost</h3><p>W pompach powietrznych trzeba przewidzieć zachowanie układu podczas odszraniania.</p></div>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-pc-sterowanie">
        <span class="rk-heat-eyebrow">Regulacja zgodna z bezwładnością podłogi</span>
        <h2>Krzywa grzewcza, strefy i siłowniki muszą tworzyć jedną logikę</h2>
        <p>Podstawą regulacji niskotemperaturowej instalacji jest zwykle dopasowanie temperatury wody do warunków zewnętrznych. <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">Krzywa grzewcza podłogówki</a> powinna zapewniać najniższą temperaturę, która utrzymuje komfort bez częstego przerywania pracy.</p>
        <p>Regulacja pomieszczeniowa może korygować zyski wewnętrzne i różne harmonogramy, ale masowe zamknięcie siłowników zmienia hydraulikę widzianą przez pompę. Dlatego decyzja, <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">czy montować sterowniki do ogrzewania podłogowego</a>, powinna wynikać z przeznaczenia pomieszczeń, bezwładności oraz wymagań źródła.</p>
        <div class="rk-heat-note"><p><strong>Projekt powinien opisać stan krytyczny.</strong> Trzeba wiedzieć, co dzieje się z minimalnym przepływem, gdy część stref jest zamknięta, i które obwody pozostają zawsze dostępne.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-audyt">
        <span class="rk-heat-eyebrow">Narzędzie przed zamówieniem obliczeń</span>
        <h2>Interaktywny audyt kompletności danych do projektu</h2>
        <p class="rk-heat-intro">Zaznacz, które materiały masz już przygotowane. Audyt nie projektuje instalacji — pokazuje, co można policzyć od razu, a co wymaga uzupełnienia lub potwierdzenia.</p>

        <div class="rk-heat-tool" id="rk-pc-tool">
          <div class="rk-heat-tool-head">
            <h3>Sprawdź gotowość danych w czterech warstwach</h3>
            <p>Dla każdego punktu wybierz „mam”, „częściowo” albo „brak”. Wynik aktualizuje się automatycznie i nie ocenia jakości technicznej samych dokumentów.</p>
          </div>
          <div class="rk-heat-tool-body">
            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">1</span><div><h4>Bilans cieplny budynku</h4><p>Dane potrzebne do wyznaczenia mocy całego domu i każdego pomieszczenia.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question is-critical"><label for="rk-pc-plan">Aktualne rzuty i przekroje z wymiarami</label><select id="rk-pc-plan" data-group="balance" data-label="aktualnych rzutów i przekrojów"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-envelope">Konstrukcje przegród, okna i współczynniki U albo pełne OZC</label><select id="rk-pc-envelope" data-group="balance" data-label="danych przegród lub pełnego OZC"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-temperatures">Temperatury projektowe pomieszczeń i lokalizacja budynku</label><select id="rk-pc-temperatures" data-group="balance" data-label="temperatur pomieszczeń i lokalizacji"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-ventilation">Projekt wentylacji, rekuperacji lub założenia wymiany powietrza</label><select id="rk-pc-ventilation" data-group="balance" data-label="danych wentylacji i odzysku ciepła"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
              </div>
            </div>

            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">2</span><div><h4>Podłoga i aktywna powierzchnia</h4><p>Dane potrzebne do oceny wydajności każdego pomieszczenia.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question is-critical"><label for="rk-pc-coverings">Okładziny i opór cieplny kompletu warstw</label><select id="rk-pc-coverings" data-group="floor" data-label="okładzin oraz ich oporu cieplnego"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-fixed">Stała zabudowa i wszystkie strefy bez rur</label><select id="rk-pc-fixed" data-group="floor" data-label="stałej zabudowy i stref bez rur"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-layers">Przekrój podłogi: izolacja, system rur i rodzaj jastrychu</label><select id="rk-pc-layers" data-group="floor" data-label="pełnego przekroju podłogi"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-dilatations">Dylatacje, progi, schody i elementy mocowane do podłoża</label><select id="rk-pc-dilatations" data-group="floor" data-label="dylatacji i kolizji budowlanych"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
              </div>
            </div>

            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">3</span><div><h4>Geometria i hydraulika</h4><p>Dane potrzebne do rozplanowania obwodów, magistrali i nastaw.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question is-critical"><label for="rk-pc-manifolds">Uzgodnione lokalizacje rozdzielaczy</label><select id="rk-pc-manifolds" data-group="hydraulics" data-label="lokalizacji rozdzielaczy"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-routes">Trasy zasilania rozdzielaczy i możliwe przejścia dobiegów</label><select id="rk-pc-routes" data-group="hydraulics" data-label="tras magistrali i dobiegów"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-source-place">Lokalizacja pompy ciepła, hydroboxu i pozostałej armatury</label><select id="rk-pc-source-place" data-group="hydraulics" data-label="lokalizacji źródła i armatury"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-special">Dodatkowe odbiorniki, obiegi mieszane lub chłodzenie</label><select id="rk-pc-special" data-group="hydraulics" data-label="informacji o dodatkowych obiegach"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
              </div>
            </div>

            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">4</span><div><h4>Pompa ciepła i sterowanie</h4><p>Dane potrzebne do sprawdzenia zgodności instalacji odbiorczej ze źródłem.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question"><label for="rk-pc-model">Wybrany model pompy albo wymagania do jej późniejszego doboru</label><select id="rk-pc-model" data-group="source" data-label="modelu pompy lub kryteriów doboru"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-performance">Moc i COP przy projektowym punkcie A/W</label><select id="rk-pc-performance" data-group="source" data-label="charakterystyki mocy i COP dla punktu A/W"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-minimums">Wymagany minimalny przepływ, objętość i zasady odszraniania</label><select id="rk-pc-minimums" data-group="source" data-label="minimalnego przepływu, objętości i wymagań defrostu"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-controls">Plan stref, termostatów, siłowników i regulacji pogodowej</label><select id="rk-pc-controls" data-group="source" data-label="koncepcji sterowania i stref"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
              </div>
            </div>

            <button class="rk-heat-tool-button" type="button" id="rk-pc-run">Aktualizuj audyt danych</button>

            <div class="rk-pc-summary" aria-live="polite">
              <div class="rk-pc-score" id="rk-pc-score">0/16</div>
              <div><h4 id="rk-pc-summary-title">Sprawdzamy kompletność danych</h4><p id="rk-pc-summary-text">Wynik pokaże gotowość czterech warstw projektu i listę informacji do uzupełnienia.</p></div>
            </div>

            <div class="rk-pc-stage-grid" aria-label="Dynamiczna mapa etapów projektu">
              <div class="rk-pc-stage" id="rk-pc-stage-balance"><b>1. Bilans cieplny</b><span id="rk-pc-status-balance">Blokuje część obliczeń</span></div>
              <div class="rk-pc-stage" id="rk-pc-stage-floor"><b>2. Powierzchnia grzewcza</b><span id="rk-pc-status-floor">Blokuje część obliczeń</span></div>
              <div class="rk-pc-stage" id="rk-pc-stage-hydraulics"><b>3. Hydraulika</b><span id="rk-pc-status-hydraulics">Blokuje część obliczeń</span></div>
              <div class="rk-pc-stage" id="rk-pc-stage-source"><b>4. Źródło i sterowanie</b><span id="rk-pc-status-source">Blokuje część obliczeń</span></div>
            </div>

            <div class="rk-pc-result-columns">
              <div class="rk-pc-result-box"><h4>Co można już rozpocząć</h4><ul id="rk-pc-ready-list"><li class="rk-pc-empty">Najpierw uzupełnij odpowiedzi audytu.</li></ul></div>
              <div class="rk-pc-result-box is-missing"><h4>Co trzeba uzupełnić lub potwierdzić</h4><ul id="rk-pc-missing-list"><li class="rk-pc-empty">Lista braków pojawi się po analizie.</li></ul></div>
            </div>
            <p class="rk-pc-tool-foot"><strong>Ważne:</strong> wynik opisuje kompletność zadeklarowanych materiałów. Nie sprawdza poprawności współczynników U, jakości OZC, nośności stropu, zgodności wybranej pompy ani faktycznych możliwości hydraulicznych pętli. Nie jest projektem ani odbiorem technicznym.</p>
          </div>
        </div>
      </section>

      <aside class="rk-heat-sales-cta" aria-label="Zaproszenie do zamówienia projektu po audycie">
        <div class="rk-hp-cta-limits"><strong>Audyt pokazał, które dane są już gotowe, ale nie wyznacza rozstawów, długości pętli ani nastaw rozdzielacza.</strong> Do tego trzeba przypisać obciążenia do konkretnych pomieszczeń, nanieść czynne pola grzewcze na rzut i sprawdzić hydraulikę każdego obwodu.</div>
        <h3>Zamień komplet danych w dokumentację wykonawczą</h3>
        <p>Projekt łączy obciążenia cieplne, układ rur, długości, przepływy, nastawy i parametry wody w jednym spójnym opracowaniu dla wykonawcy.</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>

      <section class="rk-heat-section" id="rk-pc-dokumentacja">
        <span class="rk-heat-eyebrow">Efekt pracy projektowej</span>
        <h2>Co klient powinien otrzymać w dokumentacji?</h2>
        <p class="rk-heat-intro">Zakres musi być opisany przed zamówieniem. Sam plik z liniami rur nie daje wszystkich danych potrzebnych do regulacji i weryfikacji instalacji.</p>
        <ol class="rk-pc-doc-list">
          <li><b>Założenia i bilans cieplny</b><span>Temperatury, warunki zewnętrzne, dane przegród, wentylacja oraz obciążenia pomieszczeń.</span></li>
          <li><b>Rzuty z geometrią pętli</b><span>Rozstawy, kierunki prowadzenia, strefy brzegowe, obszary bez rur, dylatacje, dobiegi i oznaczenia obwodów.</span></li>
          <li><b>Tabela obliczeniowa obwodów</b><span>Powierzchnie, moce, długości, przepływy, straty ciśnienia i parametry pracy.</span></li>
          <li><b>Dobór rozdzielaczy i magistrali</b><span>Liczba sekcji, przypisanie pętli, wymagane przepływy, średnice i obwód krytyczny.</span></li>
          <li><b>Nastawy uruchomieniowe</b><span>Wartości dla rotametrów lub zaworów oraz założona różnica temperatur.</span></li>
          <li><b>Opis współpracy z pompą ciepła</b><span>Projektowy punkt wody, wymagania przepływowe, założenia sterowania i elementy do potwierdzenia dla urządzenia.</span></li>
        </ol>
        <p>Warto przed zamówieniem sprawdzić także <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">co wpływa na cenę projektu ogrzewania podłogowego</a>. Liczy się zakres obliczeń, stopień skomplikowania budynku i jakość danych, a nie tylko liczba metrów kwadratowych.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-czytanie">
        <span class="rk-heat-eyebrow">Rzut i tabela muszą mówić tym samym językiem</span>
        <h2>Jak czytać oznaczenia pętli i tabelę nastaw?</h2>
        <p>Każdy obwód powinien mieć jednoznaczny symbol widoczny zarówno na rzucie, jak i w zestawieniu. Przykładowe oznaczenie R1/P3 może oznaczać trzecią pętlę pierwszego rozdzielacza, ale legenda projektu powinna wyjaśniać przyjęty system.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Pole tabeli</th><th>Jak je rozumieć</th><th>Co sprawdzić na budowie</th></tr></thead>
            <tbody>
              <tr><td data-label="Pole">Pomieszczenie / strefa</td><td data-label="Znaczenie">Obszar obsługiwany przez pętlę.</td><td data-label="Kontrola">Czy przebieg na rzucie odpowiada opisowi.</td></tr>
              <tr><td data-label="Pole">Rozstaw [cm]</td><td data-label="Znaczenie">Odległość między sąsiednimi osiami rur w danej strefie.</td><td data-label="Kontrola">Czy nie został samowolnie zmieniony.</td></tr>
              <tr><td data-label="Pole">Długość [m]</td><td data-label="Znaczenie">Rura pola grzewczego wraz z dobiegami.</td><td data-label="Kontrola">Rzeczywistą długość zapisaną po montażu.</td></tr>
              <tr><td data-label="Pole">Przepływ [l/min]</td><td data-label="Znaczenie">Wartość obliczona dla mocy pętli i przyjętej ΔT.</td><td data-label="Kontrola">Odczyt po odpowietrzeniu i ustabilizowaniu pracy.</td></tr>
              <tr><td data-label="Pole">Δp [kPa]</td><td data-label="Znaczenie">Spadek ciśnienia pełnej drogi obwodu.</td><td data-label="Kontrola">Czy pompa zapewnia punkt pracy dla krytycznej drogi.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Wylewkę, izolację i warunki montażu trzeba czytać razem z rzutem instalacji. Zmiana rodzaju <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewki na ogrzewanie podłogowe</a> albo grubości <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">izolacji pod podłogówką</a> może wymagać sprawdzenia przekroju, wysokości i parametrów cieplnych.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-scenariusze">
        <span class="rk-heat-eyebrow">Inne dane, ta sama kolejność obliczeń</span>
        <h2>Nowy dom, modernizacja i instalacja mieszana</h2>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">N</span><h3>Nowy budynek</h3><p>Najłatwiej skoordynować grubości podłogi, dylatacje, zabudowę i lokalizacje rozdzielaczy przed rozpoczęciem robót.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">M</span><h3>Modernizacja</h3><p>Trzeba sprawdzić rzeczywiste przegrody, dostępną wysokość, nośność, stan źródła i ograniczenia istniejących tras.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">2</span><h3>Podłoga i grzejniki</h3><p>Dwa typy odbiorników wymagają spójnych parametrów, prawidłowej hydrauliki i świadomej regulacji.</p></div>
        </div>
        <h3>Projekt przed wyborem modelu pompy</h3>
        <p>Można rozpocząć od bilansu i instalacji odbiorczej, a następnie wyznaczyć warunki, które musi spełnić źródło. Ostateczne sprawdzenie wymaga jednak charakterystyki konkretnego urządzenia: mocy w punkcie projektowym, zakresu modulacji, minimalnego przepływu oraz zaleceń hydraulicznych.</p>
        <h3>Projekt po wyborze pompy</h3>
        <p>Jeżeli model jest już kupiony, instalację należy policzyć bez naginania wyników do urządzenia. Gdy charakterystyka nie pasuje do obciążenia lub wymaganej temperatury, projekt powinien to jasno wskazać wraz z możliwymi zmianami.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-bledy">
        <span class="rk-heat-eyebrow">Jak rozpoznać niepełną usługę</span>
        <h2>Najczęstsze błędy w ofertach na „projekt podłogówki”</h2>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">1</span><h3>Rozstaw wszędzie taki sam</h3><p>Brak obciążeń pomieszczeń i oceny aktywnej powierzchni jest zastąpiony jedną regułą wykonawczą.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">2</span><h3>Brak dobiegów w długościach</h3><p>Pętle wyglądają poprawnie w tabeli, ale rzeczywista rura i opór rosną po doliczeniu drogi do rozdzielacza.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">3</span><h3>Równe przepływy dla wszystkich</h3><p>Nastawy nie wynikają z mocy poszczególnych obwodów ani przyjętej różnicy temperatur.</p></div>
          <div class="rk-heat-card is-purple"><span class="rk-heat-card-icon">4</span><h3>Brak punktu pracy pompy ciepła</h3><p>W dokumentacji widnieje 35°C, lecz nie sprawdzono mocy podłogi i źródła przy warunkach projektowych.</p></div>
        </div>
        <ul class="rk-heat-list">
          <li>Projekt powstał wyłącznie z powierzchni domu i informacji „pompa 8 kW”.</li>
          <li>Nie rozróżnia powierzchni całkowitej od czynnej.</li>
          <li>Nie podaje oporu okładzin ani ograniczeń ich temperatury.</li>
          <li>Nie pokazuje przepływów, strat ciśnienia i obwodu krytycznego.</li>
          <li>Nie koordynuje rur z dylatacjami i stałą zabudową.</li>
          <li>Nie opisuje minimalnego przepływu po zamknięciu stref.</li>
        </ul>
        <div class="rk-heat-warning"><p><strong>Ładny rzut nie dowodzi kompletności.</strong> Najważniejsza jest możliwość prześledzenia drogi od obciążenia pomieszczenia do ułożenia rur, przepływu i nastawy.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-checklista">
        <span class="rk-heat-eyebrow">Przed zleceniem i przed zalaniem rur</span>
        <h2>Checklista inwestora do projektu z pompą ciepła</h2>
        <ul class="rk-heat-checklist">
          <li>Rzuty i przekroje są aktualne, zwymiarowane i zgodne z budową.</li>
          <li>Konstrukcje przegród oraz dane wentylacji odpowiadają docelowemu stanowi.</li>
          <li>Podano temperaturę obliczeniową każdego pomieszczenia.</li>
          <li>OZC zawiera wyniki pomieszczeń, nie tylko sumę całego domu.</li>
          <li>Stała zabudowa i wszystkie strefy bez rur są uzgodnione.</li>
          <li>Znane są planowane okładziny i opory całego wykończenia.</li>
          <li>Rozdzielacze mają zaakceptowane, dostępne serwisowo lokalizacje.</li>
          <li>Rzut pokazuje rozstaw, przebieg i oznaczenie każdej pętli.</li>
          <li>Długości obejmują zasilający oraz powrotny dobieg.</li>
          <li>Tabela podaje moce, przepływy, opory i nastawy obwodów.</li>
          <li>Magistrala oraz pompa obiegowa są sprawdzone dla punktu pracy.</li>
          <li>Moc pompy ciepła jest oceniona dla właściwego punktu A/W.</li>
          <li>Zweryfikowano minimalny przepływ, objętość i zachowanie przy defroście.</li>
          <li>Logika stref nie odcina źródłu wymaganej drogi przepływu.</li>
          <li>Zmiany wykonawcze są nanoszone przed zakryciem instalacji.</li>
          <li>Po montażu zapisano długości, próbę, płukanie i nastawy uruchomieniowe.</li>
        </ul>
        <div class="rk-heat-success"><p><strong>Najlepszy moment na korektę to etap projektu.</strong> Po wykonaniu jastrychu pozostaje regulacja istniejącego układu, a nie swobodna zmiana jego geometrii i dostępnej powierzchni.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-faq">
        <span class="rk-heat-eyebrow">Najczęstsze pytania inwestorów</span>
        <h2>FAQ: projekt ogrzewania podłogowego z pompą ciepła</h2>
        <div class="rk-heat-faq">
          <details><summary>Czy do projektu podłogówki potrzebne jest OZC?</summary><div class="rk-heat-faq-answer"><p>Potrzebne są wiarygodne obciążenia cieplne poszczególnych pomieszczeń. Pełne OZC dostarcza te wyniki i założenia budynku. Sama suma mocy całego domu nie pozwala dobrać rozstawów i przepływów lokalnie.</p></div></details>
          <details><summary>Czy przy pompie ciepła wszędzie stosuje się rozstaw 10 cm?</summary><div class="rk-heat-faq-answer"><p>Nie. Rozstaw wynika z obciążenia pomieszczenia, aktywnej powierzchni, temperatur wody, konstrukcji podłogi i oporu okładziny. Źródło wpływa na preferowany zakres temperatur, ale nie wyznacza rozstawu samodzielnie.</p></div></details>
          <details><summary>Czy projekt zawsze przyjmuje zasilanie 35°C?</summary><div class="rk-heat-faq-answer"><p>Nie. To częsty punkt odniesienia dla niskotemperaturowej instalacji, lecz właściwe zasilanie i powrót wynikają z wymaganej wydajności. Projekt powinien sprawdzić wszystkie pomieszczenia przy wspólnych parametrach.</p></div></details>
          <details><summary>Czy jest jedna maksymalna długość pętli?</summary><div class="rk-heat-faq-answer"><p>Nie ma uniwersalnej wartości właściwej dla każdej instalacji. Dopuszczalna długość zależy od średnicy, przepływu, oporów rury i armatury, dostępnego budżetu ciśnienia, dobiegu oraz założeń regulacji.</p></div></details>
          <details><summary>Czy każda pompa ciepła potrzebuje bufora?</summary><div class="rk-heat-faq-answer"><p>Nie. Potrzeba i sposób włączenia bufora wynikają z funkcji, jaką ma pełnić, oraz z wymagań źródła: minimalnego przepływu, objętości, defrostu, modulacji i zachowania stref.</p></div></details>
          <details><summary>Czy można wykonać projekt przed wyborem pompy ciepła?</summary><div class="rk-heat-faq-answer"><p>Można policzyć obciążenia i zaprojektować instalację odbiorczą, a z wyników wyprowadzić wymagania dla źródła. Ostateczne sprawdzenie całego układu wymaga jednak danych konkretnego urządzenia.</p></div></details>
          <details><summary>Jakie pliki są potrzebne do projektu online?</summary><div class="rk-heat-faq-answer"><p>Najlepiej przygotować aktualne rzuty i przekroje, konstrukcje przegród, dane wentylacji, lokalizację, plan okładzin i stałej zabudowy, miejsca rozdzielaczy oraz dane wybranej pompy, jeżeli jest już określona.</p></div></details>
          <details><summary>Czy projekt można przygotować do modernizowanego domu?</summary><div class="rk-heat-faq-answer"><p>Tak, ale dane wejściowe muszą odzwierciedlać stan po modernizacji. Trzeba zweryfikować istniejące przegrody, dostępną wysokość podłogi, nośność, trasy oraz warunki pracy pozostawionych elementów instalacji.</p></div></details>
          <details><summary>Czy nastawy rotametrów wystarczy podać jednakowe?</summary><div class="rk-heat-faq-answer"><p>Nie. Przepływ powinien odpowiadać mocy przypisanej do danej pętli oraz przyjętej różnicy temperatur. Równe wartości mogą być przypadkiem, ale nie powinny wynikać z automatycznego podziału przepływu.</p></div></details>
          <details><summary>Czy wynik interaktywnego audytu jest projektem?</summary><div class="rk-heat-faq-answer"><p>Nie. Audyt porządkuje deklarowaną kompletność materiałów. Nie liczy obciążeń, temperatur powierzchni, rozstawów, długości, strat ciśnienia ani nastaw i nie weryfikuje dokumentacji konkretnej pompy.</p></div></details>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-pc-zrodla">
        <span class="rk-heat-eyebrow">Dokumenty instytucjonalne</span>
        <h2>Źródła wykorzystane do aktualizacji technicznej</h2>
        <p>Źródła zewnętrzne ograniczono do instytucji publicznych i organizacji normalizacyjnej. Dane konkretnego urządzenia trzeba dodatkowo potwierdzić w jego aktualnej dokumentacji technicznej.</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 — projektowa wydajność systemów powierzchniowych</a></strong><p>Norma opisuje metody wyznaczania mocy powierzchni grzewczych i chłodzących na podstawie parametrów systemu, temperatur i konstrukcji.</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</a></strong><p>Materiał rządowy omawia znaczenie strat ciepła, właściwego wymiarowania odbiorników i pracy pomp w chłodnych warunkach.</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 analizuje systemy dystrybucji ciepła, temperatury pracy oraz możliwość pokrycia obciążenia przez odbiorniki.</p></div>
          <div class="rk-heat-source"><strong><a href="https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-space-heaters_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — ekoprojekt i etykietowanie ogrzewaczy pomieszczeń</a></strong><p>Oficjalna strona gromadzi ramy i odniesienia dotyczące ekoprojektu oraz informacji energetycznych dla urządzeń grzewczych.</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 • POMPY CIEPŁA</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>„Projekt z pompą ciepła jest spójny dopiero wtedy, gdy obciążenie każdego pokoju prowadzi do konkretnej geometrii pętli, przepływu, nastawy i wspólnego punktu pracy źródła.”</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 dokumentacji łączy parametry przegród i wentylacji z rzeczywistą geometrią pomieszczeń, powierzchnią czynną, konstrukcją podłogi i wymaganiami źródła.</p>
              <p>Specjalizuje się w niskotemperaturowych instalacjach wodnych współpracujących z pompami ciepła. Przygotowuje rozstawy i przebiegi rur, podział na pętle, zestawienia długości, przepływów i strat ciśnienia oraz nastawy rozdzielaczy, które wykonawca może zweryfikować podczas uruchomienia.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-exp">
              <p>Praktyka projektowa pokazuje, że problemy najczęściej powstają na styku branż: zmienia się okładzina, zabudowa zmniejsza aktywną powierzchnię, rozdzielacz trafia w inne miejsce albo strefy odcinają przepływ wymagany przez pompę. Dlatego dokumentacja powinna ujawniać zależności, a nie tylko przedstawiać estetyczny rysunek.</p>
              <p>Doświadczenie obejmuje ocenę obciążeń pomieszczeń, systemów mokrych i suchych, instalacji mieszanych, dużych przeszkleń, ograniczeń modernizacyjnych oraz hydrauliki rozdzielaczy i wspólnych magistrali.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-method">
              <p>Metodyka zaczyna się od jawnych danych wejściowych. Kolejne wyniki — moc pomieszczenia, wymagana wydajność, rozstaw, długość, przepływ i opór — muszą tworzyć możliwy do prześledzenia łańcuch. Założenia odróżnia się od wartości obliczonych oraz danych konkretnego urządzenia.</p>
              <p>Interaktywne narzędzia na portalu mają funkcję edukacyjną: pomagają uporządkować dane i zrozumieć zależności. Nie zastępują dokumentacji wykonawczej, koordynacji budowlanej ani sprawdzenia aktualnych wymagań wybranego źródła.</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>Otrzymaj projekt, według którego można ułożyć i wyregulować podłogówkę</h3>
        <p>Przygotujemy dokumentację z obliczeniami pomieszczeń, układem pętli, rozstawami, długościami, przepływami, stratami ciśnienia i nastawami rozdzielacza — z uwzględnieniem współpracy z pompą ciepła.</p>
        <a class="rk-heat-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji 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",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "projektowe obciążenie cieplne",
        "hydraulika instalacji grzewczych",
        "dobór przepływów",
        "równoważenie hydrauliczne"
      ],
      "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/projekt-ogrzewania-podlogowego-z-pompa-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": "Projekt ogrzewania podłogowego z pompą ciepła",
          "item": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webpage",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/",
      "name": "Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika",
      "description": "Kompletny przewodnik po projekcie ogrzewania podłogowego z pompą ciepła: OZC, powierzchnia czynna, rozstawy, pętle, przepływy, temperatury i nastawy.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#breadcrumb" },
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article" },
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-07"
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/",
      "headline": "Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika",
      "description": "Jak połączyć OZC pomieszczeń, wydajność podłogi, geometrię pętli, hydraulikę oraz wymagania pompy ciepła w dokumentacji wykonawczej.",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webpage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-07",
      "inLanguage": "pl-PL",
      "proficiencyLevel": "Beginner to Expert",
      "about": [
        { "@type": "Thing", "name": "Projekt ogrzewania podłogowego" },
        { "@type": "Thing", "name": "Pompa ciepła" },
        { "@type": "Thing", "name": "Projektowe obciążenie cieplne" },
        { "@type": "Thing", "name": "Hydraulika instalacji grzewczej" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#audyt",
      "name": "Interaktywny audyt kompletności danych do projektu podłogówki z pompą ciepła",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#rk-pc-audyt",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "Narzędzie do weryfikacji kompletności danych projektowych",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Włączona obsługa JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "featureList": [
        "Ocena kompletności danych do bilansu cieplnego",
        "Ocena danych podłogi i powierzchni czynnej",
        "Ocena danych geometrii i hydrauliki",
        "Ocena danych pompy ciepła i sterowania",
        "Dynamiczna lista braków do uzupełnienia"
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#howto",
      "name": "Jak przygotować projekt ogrzewania podłogowego z pompą ciepła",
      "description": "Kolejność prac od danych budynku do dokumentacji wykonawczej i nastaw.",
      "inLanguage": "pl-PL",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Zbierz dokumentację budynku",
          "text": "Przygotuj rzuty, przekroje, konstrukcje przegród, dane wentylacji, temperatury i lokalizację."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Oblicz obciążenia cieplne",
          "text": "Wyznacz projektową moc całego budynku oraz każdego ogrzewanego pomieszczenia."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Wyznacz aktywne powierzchnie",
          "text": "Uwzględnij stałą zabudowę, strefy bez rur, okładziny i kompletną konstrukcję podłogi."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Dobierz układ rur",
          "text": "Sprawdź wydajność rozstawów przy wspólnych parametrach wody i rozplanuj pętle z dobiegami."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Policz hydraulikę",
          "text": "Wyznacz przepływy, spadki ciśnienia, obwód krytyczny, magistrale i nastawy rozdzielaczy."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Sprawdź współpracę ze źródłem",
          "text": "Porównaj moc pompy ciepła w projektowym punkcie A/W oraz wymagania przepływu, objętości i sterowania."
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy do projektu podłogówki potrzebne jest OZC?",
          "acceptedAnswer": { "@type": "Answer", "text": "Potrzebne są wiarygodne obciążenia cieplne poszczególnych pomieszczeń. Pełne OZC dostarcza te wyniki i założenia budynku. Sama suma mocy całego domu nie pozwala dobrać rozstawów i przepływów lokalnie." }
        },
        {
          "@type": "Question",
          "name": "Czy przy pompie ciepła wszędzie stosuje się rozstaw 10 cm?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Rozstaw wynika z obciążenia pomieszczenia, aktywnej powierzchni, temperatur wody, konstrukcji podłogi i oporu okładziny. Źródło wpływa na preferowany zakres temperatur, ale nie wyznacza rozstawu samodzielnie." }
        },
        {
          "@type": "Question",
          "name": "Czy projekt zawsze przyjmuje zasilanie 35°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. To częsty punkt odniesienia dla niskotemperaturowej instalacji, lecz właściwe zasilanie i powrót wynikają z wymaganej wydajności. Projekt powinien sprawdzić wszystkie pomieszczenia przy wspólnych parametrach." }
        },
        {
          "@type": "Question",
          "name": "Czy jest jedna maksymalna długość pętli?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie ma uniwersalnej wartości właściwej dla każdej instalacji. Dopuszczalna długość zależy od średnicy, przepływu, oporów rury i armatury, dostępnego budżetu ciśnienia, dobiegu oraz założeń regulacji." }
        },
        {
          "@type": "Question",
          "name": "Czy każda pompa ciepła potrzebuje bufora?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzeba i sposób włączenia bufora wynikają z funkcji, jaką ma pełnić, oraz z wymagań źródła: minimalnego przepływu, objętości, defrostu, modulacji i zachowania stref." }
        },
        {
          "@type": "Question",
          "name": "Czy można wykonać projekt przed wyborem pompy ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Można policzyć obciążenia i zaprojektować instalację odbiorczą, a z wyników wyprowadzić wymagania dla źródła. Ostateczne sprawdzenie całego układu wymaga jednak danych konkretnego urządzenia." }
        },
        {
          "@type": "Question",
          "name": "Jakie pliki są potrzebne do projektu online?",
          "acceptedAnswer": { "@type": "Answer", "text": "Najlepiej przygotować aktualne rzuty i przekroje, konstrukcje przegród, dane wentylacji, lokalizację, plan okładzin i stałej zabudowy, miejsca rozdzielaczy oraz dane wybranej pompy, jeżeli jest już określona." }
        },
        {
          "@type": "Question",
          "name": "Czy projekt można przygotować do modernizowanego domu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, ale dane wejściowe muszą odzwierciedlać stan po modernizacji. Trzeba zweryfikować istniejące przegrody, dostępną wysokość podłogi, nośność, trasy oraz warunki pracy pozostawionych elementów instalacji." }
        },
        {
          "@type": "Question",
          "name": "Czy nastawy rotametrów wystarczy podać jednakowe?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Przepływ powinien odpowiadać mocy przypisanej do danej pętli oraz przyjętej różnicy temperatur. Równe wartości mogą być przypadkiem, ale nie powinny wynikać z automatycznego podziału przepływu." }
        },
        {
          "@type": "Question",
          "name": "Czy wynik interaktywnego audytu jest projektem?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Audyt porządkuje deklarowaną kompletność materiałów. Nie liczy obciążeń, temperatur powierzchni, rozstawów, długości, strat ciśnienia ani nastaw i nie weryfikuje dokumentacji konkretnej pompy." }
        }
      ]
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var root = document.getElementById("rk-pc-tool");
  if (!root) {
    return;
  }

  var fields = root.querySelectorAll("select[data-group]");
  var button = document.getElementById("rk-pc-run");
  var scoreNode = document.getElementById("rk-pc-score");
  var titleNode = document.getElementById("rk-pc-summary-title");
  var textNode = document.getElementById("rk-pc-summary-text");
  var readyList = document.getElementById("rk-pc-ready-list");
  var missingList = document.getElementById("rk-pc-missing-list");

  var groupOrder = ["balance", "floor", "hydraulics", "source"];
  var groupNames = {
    balance: "Bilans cieplny",
    floor: "Powierzchnia grzewcza",
    hydraulics: "Hydraulika",
    source: "Źródło i sterowanie"
  };
  var groupCapabilities = {
    balance: "Można oprzeć bilans na zadeklarowanych materiałach i zweryfikować obciążenia pomieszczeń.",
    floor: "Można rozpocząć wyznaczanie powierzchni czynnych i wariantów wydajności podłogi.",
    hydraulics: "Można rozpocząć geometrię pętli, dobiegów, magistrali oraz obwodów krytycznych.",
    source: "Można rozpocząć sprawdzanie punktu A/W, minimalnego przepływu i logiki sterowania."
  };

  function clearNode(node) {
    while (node.firstChild) {
      node.removeChild(node.firstChild);
    }
  }

  function addListItem(list, textValue) {
    var item = document.createElement("li");
    item.textContent = textValue;
    list.appendChild(item);
  }

  function evaluateGroup(groupName) {
    var groupFields = root.querySelectorAll('select[data-group="' + groupName + '"]');
    var points = 0;
    var complete = 0;
    var criticalMissing = false;

    Array.prototype.forEach.call(groupFields, function (field) {
      var value = Number(field.value);
      points += value;
      if (value === 2) {
        complete += 1;
      }
      if (value === 0) {
        var question = field.closest(".rk-heat-question");
        if (question) {
          if (question.classList.contains("is-critical")) {
            criticalMissing = true;
          }
        }
      }
    });

    var maxPoints = groupFields.length * 2;
    var state = "blocked";
    var label = "Blokuje część obliczeń";

    if (points >= maxPoints - 1) {
      if (!criticalMissing) {
        state = "ready";
        label = "Gotowe do rozpoczęcia";
      }
    }
    if (state === "blocked") {
      if (!criticalMissing) {
        if (points >= Math.ceil(maxPoints / 2)) {
          state = "partial";
          label = "Wymaga uzupełnienia";
        }
      }
    }

    return {
      state: state,
      label: label,
      points: points,
      maxPoints: maxPoints,
      complete: complete
    };
  }

  function paintStage(groupName, result) {
    var card = document.getElementById("rk-pc-stage-" + groupName);
    var status = document.getElementById("rk-pc-status-" + groupName);
    if (!card) {
      return;
    }
    card.classList.remove("is-ready", "is-partial");
    if (result.state === "ready") {
      card.classList.add("is-ready");
    } else if (result.state === "partial") {
      card.classList.add("is-partial");
    }
    if (status) {
      status.textContent = result.label + " • " + result.points + "/" + result.maxPoints + " pkt";
    }
  }

  function runAudit() {
    var totalPoints = 0;
    var totalMax = fields.length * 2;
    var completeCount = 0;
    var readyGroups = 0;
    var blockedGroups = 0;
    var results = {};

    groupOrder.forEach(function (groupName) {
      var result = evaluateGroup(groupName);
      results[groupName] = result;
      totalPoints += result.points;
      completeCount += result.complete;
      if (result.state === "ready") {
        readyGroups += 1;
      }
      if (result.state === "blocked") {
        blockedGroups += 1;
      }
      paintStage(groupName, result);
    });

    var percent = Math.round((totalPoints / totalMax) * 100);
    scoreNode.textContent = percent + "%";
    scoreNode.setAttribute("aria-label", percent + " procent punktów kompletności; " + completeCount + " z " + fields.length + " pozycji ma status komplet");
    scoreNode.style.borderColor = "#ff8b7f";

    if (percent >= 75) {
      scoreNode.style.borderColor = "#ffd568";
    }
    if (percent >= 90) {
      scoreNode.style.borderColor = "#4cd7ac";
    }

    if (readyGroups === groupOrder.length) {
      titleNode.textContent = "Wszystkie cztery warstwy mają komplet deklarowanych danych";
      textNode.textContent = "Można przejść do szczegółowej weryfikacji jakości materiałów i właściwych obliczeń projektowych.";
    } else if (blockedGroups > 0) {
      titleNode.textContent = "Braki blokują część obliczeń projektowych";
      textNode.textContent = "Kompletne odpowiedzi: " + completeCount + " z " + fields.length + ". Najpierw uzupełnij pozycje oznaczone jako brak, zwłaszcza dane krytyczne.";
    } else {
      titleNode.textContent = "Materiały pozwalają zacząć, ale wymagają potwierdzenia";
      textNode.textContent = "Kompletne odpowiedzi: " + completeCount + " z " + fields.length + ". Pozycje częściowe mogą wymagać pytań i jawnych założeń.";
    }

    clearNode(readyList);
    clearNode(missingList);

    groupOrder.forEach(function (groupName) {
      var result = results[groupName];
      if (result.state === "ready") {
        addListItem(readyList, groupCapabilities[groupName]);
      } else if (result.state === "partial") {
        addListItem(readyList, groupNames[groupName] + ": można rozpocząć pracę wstępną, ale wynik pozostanie warunkowy.");
      }
    });

    if (!readyList.firstChild) {
      addListItem(readyList, "Na tym etapie warto zacząć od uporządkowania dokumentacji bazowej.");
    }

    Array.prototype.forEach.call(fields, function (field) {
      var value = Number(field.value);
      var itemLabel = field.getAttribute("data-label");
      if (value === 0) {
        addListItem(missingList, "Brak: " + itemLabel + ".");
      } else if (value === 1) {
        addListItem(missingList, "Do potwierdzenia: " + itemLabel + ".");
      }
    });

    if (!missingList.firstChild) {
      addListItem(missingList, "Brak zadeklarowanych luk. Kolejny krok to kontrola jakości i aktualności danych.");
    }
  }

  Array.prototype.forEach.call(fields, function (field) {
    field.addEventListener("change", runAudit);
  });

  if (button) {
    button.addEventListener("click", runAudit);
  }

  runAudit();
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
