<?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 temperatura zasilania - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/temperatura-zasilania/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/temperatura-zasilania/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Mon, 14 Sep 2026 15:00:34 +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 temperatura zasilania - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/temperatura-zasilania/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?</title>
		<link>https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 23 Apr 2026 07:09:15 +0000</pubDate>
				<category><![CDATA[Błędy wykonawcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Modernizacja instalacji]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Wymiennik płytowy]]></category>
		<category><![CDATA[Zabezpieczenia instalacji]]></category>
		<category><![CDATA[awarie instalacji]]></category>
		<category><![CDATA[jastrych cementowy]]></category>
		<category><![CDATA[kocioł na paliwo stałe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opory hydrauliczne]]></category>
		<category><![CDATA[pex]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[przepływ przeciwprądowy]]></category>
		<category><![CDATA[rozdzielacz podłogowy]]></category>
		<category><![CDATA[separacja hydrauliczna]]></category>
		<category><![CDATA[sprzęgło hydrauliczne]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[wymiennik płytowy]]></category>
		<category><![CDATA[zawór trójdrogowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4369</guid>

					<description><![CDATA[<p>Zastanawiasz się, jak bezpiecznie połączyć nowoczesny system płaszczyznowy ze starszym kotłem stałopalnym lub gazowym, który generuje bardzo wysokie temperatury? Odpowiedzią na to wyzwanie inżynieryjne jest prawidłowo dobrany wymiennik płytowy w ogrzewaniu podłogowym. To stosunkowo niewielkie, ale absolutnie kluczowe urządzenie pełni funkcję głównego strażnika całej instalacji. Skutecznie obniża temperaturę wody zasilającej, chroniąc rury PEX przed przyspieszonym starzeniem oraz wylewkę przed pękaniem. W naszym najnowszym artykule dokładnie analizujemy, kiedy jego montaż jest konieczny, a w jakich sytuacjach (np. przy nowoczesnych pompach ciepła) można z niego zrezygnować. Poznaj zasady przepływu przeciwprądowego, naucz się samodzielnie obliczać opory hydrauliczne i zobacz na konkretnych przykładach, jak uniknąć krytycznych błędów, które mogą kosztować Cię nawet kilkadziesiąt tysięcy złotych za kucie zniszczonej posadzki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-phe {
    --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-phe,
  #rk-phe *,
  #rk-phe *::before,
  #rk-phe *::after{box-sizing:border-box}
  #rk-phe [hidden]{display:none!important}
  #rk-phe img,
  #rk-phe svg{display:block;max-width:100%}
  #rk-phe button,
  #rk-phe input,
  #rk-phe select,
  #rk-phe summary{font:inherit}
  #rk-phe button{cursor:pointer;-webkit-tap-highlight-color:transparent}
  #rk-phe a{color:#007fae;font-weight:760;text-decoration-thickness:1.4px;text-underline-offset:3px}
  #rk-phe a:hover{color:#005d82}
  #rk-phe a:focus-visible,
  #rk-phe button:focus-visible,
  #rk-phe input:focus-visible,
  #rk-phe select:focus-visible,
  #rk-phe summary:focus-visible{outline:3px solid rgba(37,199,216,.5);outline-offset:3px}
  #rk-phe h2,
  #rk-phe h3,
  #rk-phe h4,
  #rk-phe p,
  #rk-phe ul,
  #rk-phe ol,
  #rk-phe blockquote{margin-top:0}
  #rk-phe h2,
  #rk-phe h3,
  #rk-phe h4{color:var(--rk-dark);line-height:1.18}
  #rk-phe h2{margin-bottom:18px;font-size:clamp(1.7rem,3.6vw,2.55rem);font-weight:920;letter-spacing:-.035em}
  #rk-phe h3{margin:28px 0 12px;font-size:clamp(1.16rem,2.2vw,1.46rem);font-weight:880;letter-spacing:-.02em}
  #rk-phe h4{margin:20px 0 8px;font-size:1.04rem}
  #rk-phe p{margin-bottom:18px;color:var(--rk-text)}
  #rk-phe strong{color:var(--rk-ink)}
  #rk-phe ul,
  #rk-phe ol{margin-bottom:22px;padding-left:1.3em;color:var(--rk-text)}
  #rk-phe li{margin-bottom:8px}
  #rk-phe section[id]{scroll-margin-top:24px}
  #rk-phe .rk-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-phe .rk-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-phe .rk-hero::before,
  #rk-phe .rk-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-phe .rk-hero::before{right:-115px;bottom:-185px;width:390px;height:390px}
  #rk-phe .rk-hero::after{right:125px;bottom:-238px;width:290px;height:290px}
  #rk-phe .rk-kicker,
  #rk-phe .rk-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-phe .rk-hero-title{max-width:1120px;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-phe .rk-hero-title span{color:#63e5f2!important}
  #rk-phe .rk-lead{max-width:1060px;margin-bottom:24px;color:#dceef2!important;font-size:clamp(1.03rem,2vw,1.31rem);line-height:1.62}
  #rk-phe .rk-tags,
  #rk-phe .rk-byline{display:flex;flex-wrap:wrap;gap:10px 12px}
  #rk-phe .rk-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-phe .rk-byline{margin-top:23px;color:#e2f1f4!important;font-size:.82rem;font-weight:760}
  #rk-phe .rk-byline span,
  #rk-phe .rk-byline strong,
  #rk-phe .rk-byline a{color:#fff!important}
  #rk-phe .rk-hero-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:34px}
  #rk-phe .rk-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-phe .rk-hero-metric b{display:block;margin-bottom:7px;color:#fff!important;font-size:1rem;line-height:1.35}
  #rk-phe .rk-hero-metric span{display:block;color:#dceef2!important;font-size:.91rem;line-height:1.55}

  #rk-phe .rk-nav{padding:22px clamp(18px,4vw,48px) 24px;border-bottom:1px solid var(--rk-line);background:#f4fafc}
  #rk-phe .rk-nav-label{display:block;margin-bottom:11px;color:var(--rk-dark);font-size:.74rem;font-weight:950;letter-spacing:.12em;text-transform:uppercase}
  #rk-phe .rk-nav-track{display:flex;flex-wrap:wrap;gap:8px;overflow:visible}
  #rk-phe .rk-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;white-space:normal}
  #rk-phe .rk-nav a:hover{border-color:#7fc8d8;background:var(--rk-cyan-soft);color:#075d78}

  #rk-phe .rk-section{padding:clamp(42px,7vw,78px) clamp(22px,6vw,72px);border-bottom:1px solid var(--rk-line)}
  #rk-phe .rk-section:last-child{border-bottom:0}
  #rk-phe .rk-section-soft{background:var(--rk-soft)}
  #rk-phe .rk-section-dark{background:var(--rk-dark)}
  #rk-phe .rk-section-dark h2,
  #rk-phe .rk-section-dark h3,
  #rk-phe .rk-section-dark p,
  #rk-phe .rk-section-dark li{color:#fff}
  #rk-phe .rk-intro{max-width:980px;font-size:1.06rem}
  #rk-phe .rk-answer{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:24px;align-items:stretch}
  #rk-phe .rk-answer-main{padding:28px;border:1px solid #b9e4eb;border-radius:22px;background:linear-gradient(135deg,#e7fbfd,#f7ffff)}
  #rk-phe .rk-answer-main p:last-child{margin-bottom:0}
  #rk-phe .rk-verdict{display:grid;gap:13px}
  #rk-phe .rk-verdict-item{padding:18px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-phe .rk-verdict-item b{display:block;margin-bottom:5px}
  #rk-phe .rk-verdict-item span{display:block;color:var(--rk-text);font-size:.9rem;line-height:1.55}
  #rk-phe .rk-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
  #rk-phe .rk-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
  #rk-phe .rk-grid-4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
  #rk-phe .rk-card{min-width:0;padding:23px;border:1px solid var(--rk-line);border-radius:20px;background:#fff}
  #rk-phe .rk-card h3,
  #rk-phe .rk-card h4{margin-top:0}
  #rk-phe .rk-card p:last-child,
  #rk-phe .rk-card ul:last-child{margin-bottom:0}
  #rk-phe .rk-card-accent{border-color:#bce6ed;background:var(--rk-cyan-soft)}
  #rk-phe .rk-card-warn{border-color:#f1d492;background:var(--rk-yellow-soft)}
  #rk-phe .rk-card-green{border-color:#bfe5d8;background:var(--rk-green-soft)}
  #rk-phe .rk-card-red{border-color:#e5b5ae;background:var(--rk-red-soft)}
  #rk-phe .rk-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-phe .rk-note.warn{border-color:#e0a12b;background:var(--rk-yellow-soft)}
  #rk-phe .rk-note.error{border-color:var(--rk-red);background:var(--rk-red-soft)}
  #rk-phe .rk-note p:last-child{margin-bottom:0}
  #rk-phe .rk-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-phe .rk-number-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;counter-reset:rkstep}
  #rk-phe .rk-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-phe .rk-number{display:grid;place-items:center;flex:0 0 48px;width:48px;height:48px;margin:0;padding:0;border-radius:50%;background:#d8f4f8;color:#135671;font-size:1rem;font-weight:950;line-height:1;text-align:center;transform:none}
  #rk-phe .rk-number::before{display:block;content:counter(rkstep);line-height:1}
  #rk-phe .rk-number-copy{min-width:0}
  #rk-phe .rk-number-copy h3{margin:2px 0 7px;font-size:1.02rem}
  #rk-phe .rk-number-copy p{margin:0;font-size:.91rem;line-height:1.58}

  #rk-phe .rk-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-phe .rk-tool-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:25px}
  #rk-phe .rk-tool-head h3{margin:0 0 8px}
  #rk-phe .rk-tool-head p{margin:0;max-width:790px;font-size:.91rem}
  #rk-phe .rk-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-phe .rk-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
  #rk-phe .rk-control{min-width:0}
  #rk-phe .rk-control label{display:block;margin-bottom:7px;color:var(--rk-dark);font-size:.82rem;font-weight:850;line-height:1.35}
  #rk-phe .rk-control small{display:block;margin-top:5px;color:var(--rk-muted);font-size:.72rem;line-height:1.42}
  #rk-phe .rk-input-wrap{display:flex;align-items:stretch;width:100%;border:1px solid #bdd5df;border-radius:12px;background:#fff;overflow:hidden}
  #rk-phe .rk-input-wrap:focus-within{border-color:var(--rk-blue);box-shadow:0 0 0 3px rgba(7,143,190,.12)}
  #rk-phe .rk-input-wrap input,
  #rk-phe .rk-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-phe .rk-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-phe .rk-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-phe .rk-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-phe .rk-reset:hover{background:var(--rk-cyan-soft)}
  #rk-phe .rk-results{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:24px}
  #rk-phe .rk-result{min-width:0;padding:18px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-phe .rk-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-phe .rk-result span{display:block;color:var(--rk-muted);font-size:.75rem;font-weight:760;line-height:1.42}
  #rk-phe .rk-result.primary{border-color:#7fd0dc;background:linear-gradient(135deg,#e8fbfd,#fff)}
  #rk-phe .rk-result.good{border-color:#a9dccb;background:var(--rk-green-soft)}
  #rk-phe .rk-result.warn{border-color:#efcf89;background:var(--rk-yellow-soft)}
  #rk-phe .rk-result.bad{border-color:#e5aaa5;background:var(--rk-red-soft)}
  #rk-phe .rk-result-wide{grid-column:span 2}
  #rk-phe .rk-driver{margin-top:16px;padding:18px 20px;border:1px solid #c6dde5;border-radius:17px;background:#fff}
  #rk-phe .rk-driver b{display:block;margin-bottom:6px}
  #rk-phe .rk-driver p{margin:0;font-size:.88rem;line-height:1.55}

  #rk-phe .rk-tabs{display:flex;flex-wrap:wrap;gap:9px;margin:22px 0 16px}
  #rk-phe .rk-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-phe .rk-tab[aria-pressed="true"]{border-color:var(--rk-blue);background:var(--rk-blue);color:#fff}
  #rk-phe .rk-flow-status{margin:0 0 20px;padding:14px 18px;border-radius:14px;background:#edf8fb;color:#315564;font-size:.9rem}
  #rk-phe .rk-flow{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
  #rk-phe .rk-flow-card{position:relative;min-width:0;padding:18px 14px;border:1px solid var(--rk-line);border-radius:18px;background:#fff}
  #rk-phe .rk-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:attr(data-arrow)}
  #rk-phe .rk-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.15rem;font-weight:950;line-height:1}
  #rk-phe .rk-flow-card h3{margin:0 0 8px;font-size:.98rem}
  #rk-phe .rk-flow-card p{margin:0;font-size:.78rem;line-height:1.52}
  #rk-phe .rk-flow-mini{display:block;margin-top:9px;padding:7px;border-radius:9px;background:#f2f7f9;color:#44606e;font-size:.72rem;line-height:1.4}
  #rk-phe .rk-pass-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:20px}
  #rk-phe .rk-pass-card{padding:19px;border:1px solid var(--rk-line);border-radius:17px;background:#fff}
  #rk-phe .rk-pass-card b{display:block;margin-bottom:7px}
  #rk-phe .rk-pass-card p{margin:0;font-size:.84rem;line-height:1.55}

  #rk-phe .rk-chart-card{margin-top:20px;padding:18px;border:1px solid var(--rk-line);border-radius:20px;background:#fff}
  #rk-phe .rk-chart-wrap{width:100%;min-height:360px;overflow:hidden}
  #rk-phe .rk-chart-wrap svg{width:100%;height:auto;min-height:330px}
  #rk-phe .rk-chart-legend{display:flex;flex-wrap:wrap;gap:10px 18px;margin-top:12px;color:var(--rk-text);font-size:.78rem;font-weight:780}
  #rk-phe .rk-legend{display:inline-flex;align-items:center;gap:7px}
  #rk-phe .rk-legend::before{width:24px;height:4px;border-radius:9px;background:var(--rk-orange);content:""}
  #rk-phe .rk-legend.cold::before{background:var(--rk-blue)}
  #rk-phe .rk-legend.zero::before{height:2px;background:#8195a0}
  #rk-phe .rk-chart-note{margin:13px 0 0;font-size:.78rem;line-height:1.5}

  #rk-phe .rk-table-wrap{width:100%;margin:24px 0;border:1px solid var(--rk-line);border-radius:20px;overflow:hidden;background:#fff}
  #rk-phe table{width:100%;border-collapse:collapse;table-layout:fixed}
  #rk-phe th,
  #rk-phe 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-phe th:last-child,
  #rk-phe td:last-child{border-right:0}
  #rk-phe tr:last-child td{border-bottom:0}
  #rk-phe thead th{background:var(--rk-navy);color:#fff;font-size:.82rem;font-weight:900}
  #rk-phe tbody td{color:var(--rk-text);font-size:.86rem;line-height:1.55}
  #rk-phe tbody tr:nth-child(even){background:#f7fafb}
  #rk-phe .rk-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-phe .rk-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-phe .rk-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-phe .rk-cta .rk-eyebrow{color:#ff9a78}
  #rk-phe .rk-cta-title{max-width:920px;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-phe .rk-cta p{max-width:950px;color:#dceef2!important}
  #rk-phe .rk-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-phe .rk-cta-button:hover{background:#e8572f;color:#fff!important}

  #rk-phe .rk-sources{margin-bottom:22px}
  #rk-phe .rk-sources li{margin-bottom:11px}
  #rk-phe .rk-responsibility{padding:20px 22px;border:1px solid var(--rk-line);border-radius:17px;background:#f8fbfc}
  #rk-phe .rk-responsibility p{margin-bottom:9px;font-size:.82rem;line-height:1.55}
  #rk-phe .rk-responsibility p:last-child{margin-bottom:0}
  #rk-phe .rk-faq{display:grid;gap:12px}
  #rk-phe .rk-faq details{border:1px solid var(--rk-line);border-radius:15px;background:#fff}
  #rk-phe .rk-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-phe .rk-faq summary::-webkit-details-marker{display:none}
  #rk-phe .rk-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-phe .rk-faq details[open] summary::after{content:"−"}
  #rk-phe .rk-faq-answer{padding:0 19px 18px}
  #rk-phe .rk-faq-answer p{margin:0;font-size:.91rem}

  #rk-phe .rk-author{overflow:hidden;border:1px solid rgba(255,255,255,.15);border-radius:25px;background:linear-gradient(120deg,#102f42,#174e5d);color:#fff}
  #rk-phe .rk-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-phe .rk-author-head .rk-eyebrow{color:#65e8f3}
  #rk-phe .rk-author-head h2{margin:0 0 10px;color:#fff!important}
  #rk-phe .rk-author-head p{max-width:810px;margin:0;color:#e0f0f3!important}
  #rk-phe .rk-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-phe .rk-author-layout{display:grid;grid-template-columns:310px minmax(0,1fr)}
  #rk-phe .rk-author-side{padding:38px 32px;border-right:1px solid rgba(255,255,255,.13);text-align:center}
  #rk-phe .rk-author-photo{width:144px;height:144px;margin:0 auto 19px;padding:7px;border-radius:50%;background:rgba(255,255,255,.14)}
  #rk-phe .rk-author-photo img{width:100%;height:100%;border-radius:50%;object-fit:cover}
  #rk-phe .rk-author-name{font-size:1.22rem;font-weight:920}
  #rk-phe .rk-author-name a{color:#fff;text-decoration:none}
  #rk-phe .rk-author-role{margin:8px 0 20px;color:#dceef2!important;font-size:.83rem;line-height:1.5}
  #rk-phe .rk-author-social-label,
  #rk-phe .rk-author-mini-label{margin-bottom:10px;color:#64e6f2;font-size:.68rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}
  #rk-phe .rk-author-social{display:flex;justify-content:center;gap:10px}
  #rk-phe .rk-author-social a{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff}
  #rk-phe .rk-author-social svg{width:20px;height:20px;fill:currentColor}
  #rk-phe .rk-author-main{padding:38px 42px}
  #rk-phe .rk-author-quote{position:relative;margin:0 0 28px;padding:11px 0 0 57px;border:0}
  #rk-phe .rk-author-quote::before{position:absolute;top:-8px;left:0;color:#64e6f2;font-size:4rem;font-weight:950;line-height:1;content:"“"}
  #rk-phe .rk-author-quote p{margin:0;color:#fff!important;font-size:clamp(1.05rem,2vw,1.3rem);font-weight:830;font-style:italic;line-height:1.65}
  #rk-phe .rk-author-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
  #rk-phe .rk-author-card{min-width:0;padding:20px;border-radius:16px;background:rgba(255,255,255,.085)}
  #rk-phe .rk-author-card b{display:block;margin-bottom:8px;color:#63e5f2;font-size:.81rem}
  #rk-phe .rk-author-card p{margin:0;color:#e0f0f3!important;font-size:.76rem;line-height:1.55}
  #rk-phe .rk-author-mini-label{margin-top:25px}
  #rk-phe .rk-portals{display:flex;flex-wrap:wrap;gap:10px}
  #rk-phe .rk-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-phe .rk-answer{grid-template-columns:1fr}
    #rk-phe .rk-grid-3,
    #rk-phe .rk-grid-4{grid-template-columns:1fr 1fr}
    #rk-phe .rk-controls{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-phe .rk-results{grid-template-columns:repeat(2,minmax(0,1fr))}
    #rk-phe .rk-flow{grid-template-columns:1fr}
    #rk-phe .rk-flow-card{display:grid;grid-template-columns:48px minmax(0,1fr);column-gap:13px;align-items:start}
    #rk-phe .rk-flow-icon{grid-row:1/4;margin:0}
    #rk-phe .rk-flow-card:not(:last-child)::after{top:auto;right:auto;bottom:-17px;left:25px;transform:rotate(90deg)}
    #rk-phe .rk-author-layout{grid-template-columns:250px minmax(0,1fr)}
    #rk-phe .rk-author-cards{grid-template-columns:1fr}
  }
  @media (max-width:760px){
    #rk-phe{font-size:16px}
    #rk-phe .rk-shell{border-radius:20px}
    #rk-phe .rk-hero{border-radius:19px 19px 0 0}
    #rk-phe .rk-hero-metrics,
    #rk-phe .rk-grid-2,
    #rk-phe .rk-grid-3,
    #rk-phe .rk-grid-4,
    #rk-phe .rk-number-grid,
    #rk-phe .rk-pass-grid{grid-template-columns:1fr}
    #rk-phe .rk-controls{grid-template-columns:1fr}
    #rk-phe .rk-results{grid-template-columns:1fr}
    #rk-phe .rk-result-wide{grid-column:auto}
    #rk-phe .rk-tool-head{display:block}
    #rk-phe .rk-tool-head .rk-reset{margin-top:14px}
    #rk-phe .rk-chart-wrap{min-height:290px}
    #rk-phe .rk-chart-wrap svg{min-height:270px}
    #rk-phe .rk-table-wrap{border:0;border-radius:0;background:transparent;overflow:visible}
    #rk-phe .rk-table-summary{margin-bottom:12px;border:1px solid var(--rk-line);border-radius:14px;background:#edf8fb}
    #rk-phe table,
    #rk-phe thead,
    #rk-phe tbody,
    #rk-phe tr,
    #rk-phe th,
    #rk-phe td{display:block;width:100%}
    #rk-phe thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
    #rk-phe tbody{display:grid;gap:12px}
    #rk-phe tbody tr{padding:9px 14px;border:1px solid var(--rk-line);border-radius:15px;background:#fff!important}
    #rk-phe 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-phe tbody td:last-child{border-bottom:0}
    #rk-phe tbody td::before{content:attr(data-label);color:var(--rk-dark);font-size:.73rem;font-weight:900;line-height:1.45}
    #rk-phe .rk-author-head{display:block;padding:28px 24px}
    #rk-phe .rk-author-mark{margin-top:18px}
    #rk-phe .rk-author-layout{grid-template-columns:1fr}
    #rk-phe .rk-author-side{border-right:0;border-bottom:1px solid rgba(255,255,255,.13)}
    #rk-phe .rk-author-main{padding:30px 24px}
    #rk-phe .rk-author-quote{padding-left:42px}
    #rk-phe .rk-cta-button{width:100%}
  }
  @media (max-width:460px){
    #rk-phe .rk-section{padding-left:17px;padding-right:17px}
    #rk-phe .rk-hero{padding-left:20px;padding-right:20px}
    #rk-phe .rk-nav{padding-left:15px;padding-right:15px}
    #rk-phe .rk-nav a{font-size:.69rem}
    #rk-phe .rk-number-card{gap:12px;padding:17px}
    #rk-phe .rk-number{flex-basis:42px;width:42px;height:42px}
    #rk-phe tbody td{grid-template-columns:1fr;gap:3px}
  }
  @media (prefers-reduced-motion:reduce){
    #rk-phe *,#rk-phe *::before,#rk-phe *::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}
  }
</style>

<div id="rk-phe">
  <article class="rk-shell" aria-label="Wymiennik płytowy w ogrzewaniu podłogowym — poradnik, grafika i kalkulatory">
    <header class="rk-hero">
      <span class="rk-kicker">Separacja obiegów bez upraszczania hydrauliki</span>
      <div class="rk-hero-title">Wymiennik płytowy w <span>ogrzewaniu podłogowym</span></div>
      <p class="rk-lead">Wymiennik przekazuje ciepło przez stalowe płyty i rozdziela dwa media, ale sam nie ustala temperatury zasilania podłogówki. Zobacz, kiedy separacja ma techniczne uzasadnienie, policz przepływy, LMTD i wymagane UA, a następnie sprawdź opory pomp oraz dodatkowy koszt pracy całego układu.</p>
      <div class="rk-tags" aria-label="Zakres poradnika">
        <span class="rk-tag">zasada działania</span>
        <span class="rk-tag">kalkulator LMTD</span>
        <span class="rk-tag">dwa obiegi</span>
        <span class="rk-tag">straty ciśnienia</span>
        <span class="rk-tag">koszt pomp</span>
      </div>
      <div class="rk-byline">
        <span>Autor: <a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></span>
        <span>Czas czytania: około 27 minut</span>
        <span>Aktualizacja techniczna: 13 września 2026 r.</span>
      </div>
      <div class="rk-hero-metrics">
        <div class="rk-hero-metric"><b>Przekazuje energię</b><span>Ciepło przechodzi przez cienkie płyty, ale ciecze z obu stron nie powinny się mieszać.</span></div>
        <div class="rk-hero-metric"><b>Nie reguluje temperatury</b><span>Temperaturę wtórnego obiegu ustalają źródło, automatyka, przepływy lub osobny układ mieszający.</span></div>
        <div class="rk-hero-metric"><b>Wymaga dwóch bilansów</b><span>Każda strona ma własny przepływ, opory, pompę, zabezpieczenia i warunki pracy.</span></div>
      </div>
    </header>

    <nav class="rk-nav" aria-label="Na skróty">
      <span class="rk-nav-label">Na skróty — wszystkie części poradnika</span>
      <div class="rk-nav-track">
        <a href="#rk-phe-answer">Odpowiedź w skrócie</a>
        <a href="#rk-phe-operation">Zasada działania</a>
        <a href="#rk-phe-separation">Co jest rozdzielone?</a>
        <a href="#rk-phe-graphic">Grafika interaktywna</a>
        <a href="#rk-phe-limits">Czego nie reguluje?</a>
        <a href="#rk-phe-when">Kiedy może być potrzebny?</a>
        <a href="#rk-phe-when-not">Kiedy może przeszkadzać?</a>
        <a href="#rk-phe-comparison">Wymiennik czy inne urządzenie?</a>
        <a href="#rk-phe-inputs">Dane do doboru</a>
        <a href="#rk-phe-thermal-tool">Kalkulator cieplno-hydrauliczny</a>
        <a href="#rk-phe-reading">Jak czytać wynik?</a>
        <a href="#rk-phe-hydraulics">Przepływy i pompy</a>
        <a href="#rk-phe-control">Regulacja i zabezpieczenia</a>
        <a href="#rk-phe-heat-pump">Pompa ciepła</a>
        <a href="#rk-phe-solid-fuel">Kocioł na paliwo stałe</a>
        <a href="#rk-phe-cost-tool">Kalkulator kosztów</a>
        <a href="#rk-phe-maintenance">Zabrudzenie i serwis</a>
        <a href="#rk-phe-errors">Najczęstsze błędy</a>
        <a href="#rk-phe-commissioning">Uruchomienie instalacji</a>
        <a href="#rk-phe-conclusion">Wnioski</a>
        <a href="#rk-phe-sources">Źródła</a>
        <a href="#rk-phe-faq">FAQ</a>
        <a href="#rk-phe-author">Autor</a>
      </div>
    </nav>

    <section class="rk-section" id="rk-phe-answer">
      <span class="rk-eyebrow">Najkrótsza poprawna odpowiedź</span>
      <h2>Wymiennik płytowy w podłogówce — odpowiedź w skrócie</h2>
      <div class="rk-answer" id="rk-phe-direct-answer">
        <div class="rk-answer-main">
          <p><strong>Wymiennik płytowy przekazuje ciepło między dwoma oddzielonymi obiegami, nie dopuszczając w normalnych warunkach do mieszania ich mediów.</strong> Może rozdzielić instalację otwartą od zamkniętej, wodę od roztworu glikolu albo nową podłogówkę od starego, zanieczyszczonego obiegu.</p>
          <p>Nie jest jednak regulatorem temperatury. To, że po stronie pierwotnej płynie woda o temperaturze 70°C, a podłogówka ma pracować przy 35–40°C, nie oznacza, że dowolny wymiennik automatycznie wykona takie zadanie. Potrzebne są właściwe przepływy, powierzchnia wymiany, automatyka źródła lub układ mieszający oraz niezależne zabezpieczenie przed przekroczeniem dopuszczalnej temperatury.</p>
          <p>O potrzebie zastosowania wymiennika decyduje <strong>funkcja separacji</strong>, a nie sama wysoka temperatura źródła. Jeżeli oba obiegi mogą pracować z tym samym medium i ciśnieniem, czasem korzystniejszy jest układ bezpośredni, <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>, <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> lub prawidłowo zaprojektowany <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a>.</p>
        </div>
        <div class="rk-verdict" aria-label="Trzy najważniejsze wnioski">
          <div class="rk-verdict-item"><b>Tak — pełna separacja</b><span>Woda, glikol, ciśnienie i zanieczyszczenia pozostają po swoich stronach wymiennika.</span></div>
          <div class="rk-verdict-item"><b>Nie — automatyczna regulacja</b><span>Wymiennik nie jest zaworem i nie utrzymuje sam zadanej temperatury zasilania.</span></div>
          <div class="rk-verdict-item"><b>Dobór — dla konkretnego punktu</b><span>Moc z nazwy handlowej i liczba płyt nie zastępują temperatur, przepływów oraz strat ciśnienia.</span></div>
        </div>
      </div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-operation">
      <span class="rk-eyebrow">Ciepło przechodzi, media pozostają osobno</span>
      <h2>Jak działa wymiennik płytowy w ogrzewaniu podłogowym?</h2>
      <p class="rk-intro">W lutowanym wymienniku płytowym cienkie, profilowane płyty tworzą naprzemienne kanały. Medium strony pierwotnej przepływa co drugim kanałem, a medium strony wtórnej kanałami sąsiednimi. Ciepło przechodzi przez metalową przegrodę na drodze konwekcja–przewodzenie–konwekcja, lecz obie ciecze pozostają fizycznie rozdzielone.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Strona pierwotna</h3><p>To obieg połączony ze źródłem ciepła lub istniejącą instalacją. Ma własny przepływ, ciśnienie robocze, medium, zabezpieczenia i zwykle własną pompę.</p></div>
        <div class="rk-card rk-card-accent"><h3>Pakiet płyt</h3><p>Profil płyt zwiększa powierzchnię kontaktu i intensyfikuje wymianę ciepła. Ten sam profil powoduje jednak opór hydrauliczny, który musi zostać odczytany dla konkretnego przepływu.</p></div>
        <div class="rk-card"><h3>Strona wtórna</h3><p>To zamknięty obieg rozdzielacza i <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczych</a>. Jego przepływ wynika z mocy oraz przyjętej różnicy między zasilaniem a powrotem.</p></div>
      </div>
      <div class="rk-formula">Q = U · A · ΔT<sub>lm</sub> &nbsp;&nbsp;oraz&nbsp;&nbsp; Q = ρ · V̇ · c<sub>p</sub> · ΔT</div>
      <p>Pierwsze równanie łączy przekazywaną moc z całkowitym współczynnikiem przenikania, powierzchnią płyt i średnią logarytmiczną różnicą temperatur. Drugie opisuje energię przenoszoną przez przepływ medium. W praktyce oba warunki muszą zostać spełnione jednocześnie. Pojęcie średniej logarytmicznej różnicy temperatur i bilans strumienia ciepła opisuje materiał dydaktyczny <a href="https://web.mit.edu/16.unified/www/FALL/thermodynamics/notes/node131.html" target="_blank" rel="nofollow noopener noreferrer">MIT — Heat Exchangers</a>.</p>
      <div class="rk-note"><p><strong>Dlaczego przeciwprąd?</strong> W typowym wymienniku oba media są prowadzone w przeciwnych kierunkach, dzięki czemu użyteczna różnica temperatur utrzymuje się na całej długości płyt. Nie oznacza to „100% odzysku” ani stałej przewagi procentowej — efekt zależy od UA, strumieni pojemności cieplnej i temperatur wejściowych.</p></div>
    </section>

    <section class="rk-section" id="rk-phe-separation">
      <span class="rk-eyebrow">Cztery różne funkcje instalacji</span>
      <h2>Co przechodzi przez wymiennik, a co pozostaje rozdzielone?</h2>
      <p>Określenie „separacja hydrauliczna” bywa mylone z regulacją temperatury. Wymiennik rzeczywiście tworzy dwa niezależne obiegi, ale nie wykonuje wszystkich zadań hydraulicznych i regulacyjnych za inne urządzenia.</p>
      <div class="rk-table-wrap">
        <div class="rk-table-summary">Najważniejsze rozróżnienie: przez nieuszkodzony wymiennik przechodzi energia cieplna, a nie medium robocze.</div>
        <table aria-label="Co przechodzi przez wymiennik płytowy">
          <thead><tr><th>Wielkość lub zjawisko</th><th>Czy przechodzi na drugą stronę?</th><th>Co to oznacza w instalacji?</th></tr></thead>
          <tbody>
            <tr><td data-label="Wielkość"><strong>Energia cieplna</strong></td><td data-label="Przechodzi?">Tak</td><td data-label="Znaczenie">Ciepło jest przekazywane przez metalowe płyty zgodnie z aktualną różnicą temperatur.</td></tr>
            <tr><td data-label="Wielkość"><strong>Woda lub glikol</strong></td><td data-label="Przechodzi?">Nie</td><td data-label="Znaczenie">Każda strona może mieć inne medium, o ile dopuszcza je konstrukcja i dobór urządzenia.</td></tr>
            <tr><td data-label="Wielkość"><strong>Ciśnienie statyczne</strong></td><td data-label="Przechodzi?">Nie</td><td data-label="Znaczenie">Każdy obieg wymaga własnego sposobu stabilizacji ciśnienia i zabezpieczenia.</td></tr>
            <tr><td data-label="Wielkość"><strong>Zanieczyszczenia i tlen</strong></td><td data-label="Przechodzi?">Nie przez płyty</td><td data-label="Znaczenie">Nowy obieg może zostać odseparowany od starego medium, lecz jego własna jakość wody nadal ma znaczenie.</td></tr>
            <tr><td data-label="Wielkość"><strong>Temperatura zadana</strong></td><td data-label="Przechodzi?">Nie jest kopiowana</td><td data-label="Znaczenie">Temperatury wyjściowe wynikają z bilansu, UA i przepływów; nie z samego istnienia wymiennika.</td></tr>
            <tr><td data-label="Wielkość"><strong>Przepływ objętościowy</strong></td><td data-label="Przechodzi?">Nie</td><td data-label="Znaczenie">Strony mogą mieć różne przepływy i różne ΔT, mimo przekazywania tej samej mocy.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Jeżeli jedna strona jest układem otwartym, druga strona nie staje się przez to układem otwartym. Musi jednak otrzymać własne <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynie wzbiorcze</a>, zawór bezpieczeństwa, odpowietrzenie, uzupełnianie medium i kontrolę ciśnienia odpowiednią dla zaprojektowanego obiegu.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-graphic">
      <span class="rk-eyebrow">Modułowa grafika edukacyjna</span>
      <h2>Interaktywna grafika: jeden obieg czy dwa obiegi z wymiennikiem?</h2>
      <p>Przełącz widok, aby zobaczyć, co zmienia dodanie wymiennika. Moduł pokazuje funkcje elementów, a nie schemat wykonawczy konkretnej kotłowni. Na telefonie wszystkie części ustawiają się pionowo, dlatego opisy i kierunki przepływu pozostają czytelne.</p>
      <div class="rk-tool" id="rk-phe-graphic-tool">
        <div class="rk-tool-head">
          <div><h3>Droga energii i granica między obiegami</h3><p>Każdy widok odpowiada na inne pytanie: gdzie płynie wspólne medium, gdzie następuje pełna separacja oraz dlaczego temperatury po obu stronach zmieniają się w przeciwprądzie.</p></div>
          <span class="rk-badge">grafika interaktywna</span>
        </div>
        <div class="rk-tabs" role="group" aria-label="Wybór widoku grafiki">
          <button type="button" class="rk-tab rk-flow-tab" data-mode="direct" aria-pressed="false">Jeden wspólny obieg</button>
          <button type="button" class="rk-tab rk-flow-tab" data-mode="separated" aria-pressed="true">Dwa obiegi z wymiennikiem</button>
          <button type="button" class="rk-tab rk-flow-tab" data-mode="counter" aria-pressed="false">Przeciwprąd i temperatury</button>
        </div>
        <p class="rk-flow-status" id="rk-phe-flow-status" aria-live="polite">Energia przechodzi przez płyty, ale obieg źródła i obieg podłogówki mają oddzielne media, ciśnienia oraz przepływy.</p>
        <div class="rk-flow" id="rk-phe-flow-cards">
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-1" aria-hidden="true">A</span><h3 id="rk-phe-flow-title-1">Źródło ciepła</h3><p id="rk-phe-flow-text-1">Wytwarza ciepło i pracuje w warunkach obiegu pierwotnego.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-1">medium A · ciśnienie A</span></div>
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-2" aria-hidden="true">P1</span><h3 id="rk-phe-flow-title-2">Pompa pierwotna</h3><p id="rk-phe-flow-text-2">Zapewnia przepływ przez źródło, rurociągi i pierwszą stronę wymiennika.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-2">V̇A z mocy i ΔTA</span></div>
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-3" aria-hidden="true">HX</span><h3 id="rk-phe-flow-title-3">Wymiennik płytowy</h3><p id="rk-phe-flow-text-3">Przekazuje energię przez płyty bez mieszania obu mediów.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-3">granica obiegów</span></div>
          <div class="rk-flow-card" data-arrow="→"><span class="rk-flow-icon" id="rk-phe-flow-icon-4" aria-hidden="true">P2</span><h3 id="rk-phe-flow-title-4">Pompa i regulacja</h3><p id="rk-phe-flow-text-4">Budują przepływ wtórny i współpracują z regulacją temperatury.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-4">V̇B z mocy i ΔTB</span></div>
          <div class="rk-flow-card"><span class="rk-flow-icon" id="rk-phe-flow-icon-5" aria-hidden="true">B</span><h3 id="rk-phe-flow-title-5">Podłogówka</h3><p id="rk-phe-flow-text-5">Rozdzielacz przekazuje wodę do pętli obiegu wtórnego.</p><span class="rk-flow-mini" id="rk-phe-flow-mini-5">medium B · ciśnienie B</span></div>
        </div>
        <div class="rk-pass-grid">
          <div class="rk-pass-card"><b>Co przechodzi?</b><p id="rk-phe-pass-yes">Energia cieplna — zależnie od różnicy temperatur, UA i przepływów.</p></div>
          <div class="rk-pass-card"><b>Co nie przechodzi?</b><p id="rk-phe-pass-no">Woda lub glikol, ciśnienie robocze, zanieczyszczenia oraz sam przepływ objętościowy.</p></div>
        </div>
      </div>
      <p>Wymiennik może więc ochronić nową instalację przed medium starego obiegu, ale nie zwalnia z zadbania o <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">prawidłowe napełnienie podłogówki</a>, odpowietrzenie ani uzdatnienie wody po stronie wtórnej.</p>
    </section>

    <section class="rk-section" id="rk-phe-limits">
      <span class="rk-eyebrow">Najważniejsze sprostowanie starego wpisu</span>
      <h2>Czego wymiennik płytowy nie reguluje i przed czym sam nie zabezpiecza?</h2>
      <div class="rk-grid-4">
        <div class="rk-card rk-card-warn"><h3>Temperatura zasilania</h3><p>Wymiennik nie ma wartości zadanej. Bez właściwego sterowania temperatura wtórna zmienia się wraz ze źródłem, przepływami i odbiorem ciepła.</p></div>
        <div class="rk-card"><h3>Przepływ w pętlach</h3><p>Nie równoważy rozdzielacza i nie ustawia <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów</a>. Wymagane przepływy wynikają z obciążeń pomieszczeń i długości pętli.</p></div>
        <div class="rk-card"><h3>Minimalny przepływ źródła</h3><p>Nie gwarantuje warunków wymaganych przez kocioł albo pompę ciepła. Obieg pierwotny musi zostać obliczony niezależnie.</p></div>
        <div class="rk-card rk-card-red"><h3>Temperatura graniczna</h3><p>Do ochrony podłogi potrzebne są prawidłowa regulacja i niezależne zabezpieczenie reagujące na temperaturę, a nie sama metalowa przegroda.</p></div>
      </div>
      <p>Wysokotemperaturowe źródło można połączyć z niskotemperaturowym odbiornikiem również bez wymiennika, jeżeli układ jest zgodny pod względem medium i ciśnienia oraz ma poprawnie zaprojektowane mieszanie albo regulację źródła. Zasady ograniczania temperatury omawia osobny poradnik o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>.</p>
      <div class="rk-note error"><p><strong>Nie należy dobierać wymiennika jako „bezpiecznika na gorącą wodę”.</strong> Jeżeli automatyka lub zawór dopuści niewłaściwe warunki po stronie wtórnej, prawidłowo działający wymiennik nadal będzie przekazywał ciepło.</p></div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-when">
      <span class="rk-eyebrow">Najpierw funkcja, później urządzenie</span>
      <h2>Kiedy wymiennik płytowy może być potrzebny w podłogówce?</h2>
      <p>Wymiennik ma sens wtedy, gdy istnieje konkretna potrzeba oddzielenia obiegów. Nie należy zaczynać od pytania „ile płyt?”, lecz od ustalenia, dlaczego media nie mogą pracować we wspólnym układzie.</p>
      <div class="rk-grid-2">
        <div class="rk-card rk-card-accent"><h3>Instalacja otwarta i zamknięta</h3><p>W starszej kotłowni źródło może pracować w obiegu otwartym, a nowa podłogówka w zamkniętym. Wymiennik tworzy fizyczną granicę, ale oba obiegi nadal muszą mieć komplet własnych zabezpieczeń zgodnych z projektem oraz instrukcjami urządzeń.</p></div>
        <div class="rk-card"><h3>Dwa różne media</h3><p>Przykładem jest krótki obieg z roztworem niezamarzającym i oddzielny wodny obieg budynku. Trzeba uwzględnić rzeczywiste właściwości <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikolu w instalacji</a>, ponieważ zmienia przepływ, opory i wymianę ciepła.</p></div>
        <div class="rk-card"><h3>Stara instalacja i nowy obieg</h3><p>Separacja może ograniczyć przenoszenie zanieczyszczeń ze starego zładu do nowych pętli. Nie zastępuje jednak płukania, filtracji ani <a href="https://projekt-ogrzewania.pl/separator-zanieczyszczen-i-powietrza-w-ogrzewaniu-podlogowym-dobor-schemat-montazu-spadek-cisnienia-i-normy/">separatora zanieczyszczeń i powietrza</a> po właściwej stronie.</p></div>
        <div class="rk-card"><h3>Wymóg konkretnego układu</h3><p>Producent źródła, administrator sieci lub dokumentacja modernizacji może wymagać fizycznego rozdzielenia mediów. Taki warunek trzeba sprawdzić dla konkretnego urządzenia — nie przenosić automatycznie na wszystkie instalacje.</p></div>
      </div>
      <p>Przy <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">kotle na paliwo stałe i ogrzewaniu podłogowym</a> decyzja zależy m.in. od konstrukcji kotłowni, wymaganej ochrony powrotu, bufora, rodzaju zabezpieczenia źródła i dopuszczalnego układu pracy. Sama nazwa paliwa nie rozstrzyga jeszcze schematu.</p>
    </section>

    <section class="rk-section" id="rk-phe-when-not">
      <span class="rk-eyebrow">Każda przegroda ma cenę techniczną</span>
      <h2>Kiedy wymiennik może być zbędny albo pogarszać warunki pracy?</h2>
      <p>W nowej, czystej instalacji zamkniętej, w której źródło i podłogówka mogą pracować na tym samym medium oraz ciśnieniu, wymiennik często nie wnosi potrzebnej funkcji. Dodaje natomiast kolejne opory, drugi obieg pompowy i różnicę temperatur niezbędną do przekazywania ciepła.</p>
      <div class="rk-grid-3">
        <div class="rk-card rk-card-warn"><h3>Dodatkowe podejście temperaturowe</h3><p>Temperatura źródła musi być wyższa od wymaganej temperatury wtórnej. Im mniejsza różnica na końcu wymiennika, tym większego UA zwykle potrzeba.</p></div>
        <div class="rk-card"><h3>Dodatkowy opór</h3><p>Każda strona wymiennika ma charakterystykę Δp zależną od przepływu i właściwości medium. Opór musi znaleźć się w obliczeniach właściwej pompy.</p></div>
        <div class="rk-card"><h3>Więcej elementów</h3><p>Dochodzi druga pompa, armatura, odpowietrzenie, naczynie, sterowanie oraz miejsca wymagające uruchomienia i późniejszej kontroli.</p></div>
      </div>
      <p>Ma to szczególne znaczenie przy <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie podłogówki z pompą ciepła</a>. Jeżeli separacja wymusza podniesienie temperatury zasilania źródła, może zmienić jego sezonową efektywność. Skali tej zmiany nie wolno przyjmować jako jednego procentu dla wszystkich urządzeń — trzeba oprzeć ją na danych konkretnej pompy i punkcie pracy.</p>
      <div class="rk-note warn"><p><strong>Wymiennik nie jest urządzeniem obowiązkowym tylko dlatego, że źródło potrafi wytworzyć więcej niż 55°C.</strong> O temperaturze dostarczanej do podłogi decyduje cały układ regulacji, a o separacji — zgodność mediów, ciśnień i wymagań urządzeń.</p></div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-comparison">
      <span class="rk-eyebrow">Urządzenia nie są zamiennikami jednej funkcji</span>
      <h2>Wymiennik, sprzęgło, bufor czy zawór mieszający?</h2>
      <p>Te elementy mogą występować osobno albo razem, ale rozwiązują inne problemy. Najczęstszy błąd polega na traktowaniu każdego z nich jako sposobu „na obniżenie temperatury”.</p>
      <div class="rk-table-wrap">
        <div class="rk-table-summary">Wybierz funkcję, której faktycznie wymaga instalacja — nie nazwę najpopularniejszego elementu kotłowni.</div>
        <table aria-label="Porównanie wymiennika, sprzęgła, bufora i zaworu mieszającego">
          <thead><tr><th>Element</th><th>Oddziela media?</th><th>Rozdziela przepływy?</th><th>Magazynuje ciepło?</th><th>Reguluje temperaturę?</th></tr></thead>
          <tbody>
            <tr><td data-label="Element"><strong>Wymiennik płytowy</strong></td><td data-label="Media">Tak, fizycznie</td><td data-label="Przepływy">Tak — dwa obiegi</td><td data-label="Magazyn">Praktycznie nie</td><td data-label="Regulacja">Nie samodzielnie</td></tr>
            <tr><td data-label="Element"><strong>Sprzęgło hydrauliczne</strong></td><td data-label="Media">Nie</td><td data-label="Przepływy">Tak, przy wspólnym medium</td><td data-label="Magazyn">Nie jest jego główną funkcją</td><td data-label="Regulacja">Nie samodzielnie</td></tr>
            <tr><td data-label="Element"><strong>Bufor ciepła</strong></td><td data-label="Media">Zwykle nie</td><td data-label="Przepływy">Może, zależnie od wpięcia</td><td data-label="Tak</td><td data-label="Nie samodzielnie</td></tr>
            <tr><td data-label="Element"><strong>Zawór mieszający</strong></td><td data-label="Media">Nie</td><td data-label="Przepływy">Steruje podziałem i mieszaniem</td><td data-label="Nie</td><td data-label="Tak, z napędem i automatyką</td></tr>
          </tbody>
        </table>
      </div>
      <p><a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">Sprzęgło hydrauliczne w podłogówce</a> rozdziela hydraulicznie obiegi, ale zachowuje wspólne medium. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">Bufor w ogrzewaniu podłogowym</a> dodaje zład i może pełnić funkcję rozdziału przepływów. Zawór mieszający reguluje temperaturę przez mieszanie, lecz nie oddziela wody ani ciśnienia.</p>
    </section>

    <section class="rk-section" id="rk-phe-inputs">
      <span class="rk-eyebrow">Dobór zaczyna się od danych</span>
      <h2>Jakie dane są potrzebne do doboru wymiennika płytowego?</h2>
      <p>Hasło „wymiennik 30 kW” nie opisuje jednego, niezmiennego punktu pracy. Ten sam model przeniesie inną moc przy 80/60–40/30°C, a inną przy 45/38–35/30°C. Do sprawdzenia konkretnego urządzenia potrzebny jest pełny zestaw danych dla obu stron.</p>
      <div class="rk-number-grid" aria-label="Osiem danych potrzebnych do doboru wymiennika">
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Projektowa moc</h3><p>Moc przekazywana w punkcie obliczeniowym, wynikająca z bilansu odbiorników i <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego OZC</a>.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Temperatury strony A</h3><p>Temperatura wejściowa i wyjściowa obiegu źródła przy tej samej projektowej mocy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Temperatury strony B</h3><p>Wymagane zasilanie i powrót podłogówki, ustalone na podstawie mocy, konstrukcji i okładziny.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Rodzaj obu mediów</h3><p>Woda, rodzaj oraz stężenie glikolu, zakres temperatur i dane właściwości cieplnych.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Wymagane przepływy</h3><p>Osobno dla każdej strony, ponieważ ich różnice temperatur i pojemności cieplne mogą być inne.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Dopuszczalne straty ciśnienia</h3><p>Budżet oporów dla wymiennika po stronie A i B, zgodny z dostępnym sprężem pomp.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Rezerwa na zabrudzenie</h3><p>Warunki jakości wody, filtracji i serwisu zamiast jednego stałego procentu doliczanego do mocy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Ograniczenia urządzenia</h3><p>Dopuszczalne ciśnienie, temperatura, materiał płyt i lutu, króćce oraz wymagania producenta.</p></div></div>
      </div>
      <p>Projektowa moc nie powinna być automatycznie zwiększana o 15–20%. Jeżeli wymagana jest rezerwa, trzeba określić, co ma pokrywać i czy źródło, odbiorniki oraz hydraulika również mogą pracować w takim punkcie. Podstawą pozostają <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczenia strat ciepła budynku</a>, a nie powierzchnia domu pomnożona przez orientacyjny wskaźnik.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-thermal-tool">
      <span class="rk-eyebrow">Główne narzędzie techniczne</span>
      <h2>Kalkulator wymiennika: przepływy, LMTD, UA i opory obu obiegów</h2>
      <p>Wprowadź jeden spójny punkt pracy. Kalkulator oblicza przepływ potrzebny po każdej stronie, różnice końcowe, LMTD i wymagane UA. Po podaniu katalogowych oporów wybranego wymiennika oraz pozostałych oporów pokazuje również orientacyjną wysokość podnoszenia dla obu pomp.</p>
      <div class="rk-tool" id="rk-phe-thermal-calculator">
        <div class="rk-tool-head">
          <div><h3>Dane cieplne i hydrauliczne strony A oraz B</h3><p>Wartości początkowe są wyłącznie przykładem. Właściwości mieszanin glikolowych są orientacyjne — finalny dobór wykonaj na danych producenta dla rzeczywistego stężenia i temperatur.</p></div>
          <button type="button" class="rk-reset" id="rk-phe-thermal-reset">Przywróć przykład</button>
        </div>
        <div class="rk-controls">
          <div class="rk-subhead">Wspólna moc przekazywana</div>
          <div class="rk-control"><label for="rk-phe-power">Projektowa moc wymiennika</label><div class="rk-input-wrap"><input id="rk-phe-power" type="number" min="0.1" max="200" step="0.1" value="10" inputmode="decimal"><span>kW</span></div><small>Moc dla bieżącego punktu temperatur.</small></div>

          <div class="rk-subhead">Strona A — obieg gorący / pierwotny</div>
          <div class="rk-control"><label for="rk-phe-hot-in">Temperatura wejściowa A</label><div class="rk-input-wrap"><input id="rk-phe-hot-in" type="number" min="-20" max="150" step="0.5" value="70" inputmode="decimal"><span>°C</span></div><small>Gorące medium wpływające do wymiennika.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-out">Temperatura wyjściowa A</label><div class="rk-input-wrap"><input id="rk-phe-hot-out" type="number" min="-20" max="150" step="0.5" value="55" inputmode="decimal"><span>°C</span></div><small>Musi być niższa od wejściowej dla trybu grzania.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-fluid">Medium strony A</label><div class="rk-input-wrap"><select id="rk-phe-hot-fluid"><option value="1.163" selected>Woda</option><option value="1.070">Glikol propylenowy ok. 20%</option><option value="1.020">Glikol propylenowy ok. 30%</option><option value="0.970">Glikol propylenowy ok. 40%</option></select></div><small>Orientacyjna objętościowa pojemność cieplna.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-hx-dp">Opór wymiennika A</label><div class="rk-input-wrap"><input id="rk-phe-hot-hx-dp" type="number" min="0" max="200" step="0.5" value="12" inputmode="decimal"><span>kPa</span></div><small>Z karty modelu przy obliczonym przepływie.</small></div>
          <div class="rk-control"><label for="rk-phe-hot-other-dp">Pozostałe opory obiegu A</label><div class="rk-input-wrap"><input id="rk-phe-hot-other-dp" type="number" min="0" max="300" step="0.5" value="8" inputmode="decimal"><span>kPa</span></div><small>Źródło, rury, armatura i zawory na drodze krytycznej.</small></div>

          <div class="rk-subhead">Strona B — obieg ogrzewania podłogowego</div>
          <div class="rk-control"><label for="rk-phe-cold-in">Temperatura wejściowa B</label><div class="rk-input-wrap"><input id="rk-phe-cold-in" type="number" min="-20" max="100" step="0.5" value="30" inputmode="decimal"><span>°C</span></div><small>Powrót podłogówki wpływający do wymiennika.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-out">Temperatura wyjściowa B</label><div class="rk-input-wrap"><input id="rk-phe-cold-out" type="number" min="-20" max="100" step="0.5" value="38" inputmode="decimal"><span>°C</span></div><small>Zasilanie wychodzące w stronę rozdzielacza.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-fluid">Medium strony B</label><div class="rk-input-wrap"><select id="rk-phe-cold-fluid"><option value="1.163" selected>Woda</option><option value="1.070">Glikol propylenowy ok. 20%</option><option value="1.020">Glikol propylenowy ok. 30%</option><option value="0.970">Glikol propylenowy ok. 40%</option></select></div><small>Do ostatecznego doboru użyj danych konkretnej mieszaniny.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-hx-dp">Opór wymiennika B</label><div class="rk-input-wrap"><input id="rk-phe-cold-hx-dp" type="number" min="0" max="200" step="0.5" value="16" inputmode="decimal"><span>kPa</span></div><small>Z karty modelu przy obliczonym przepływie.</small></div>
          <div class="rk-control"><label for="rk-phe-cold-other-dp">Pozostałe opory obiegu B</label><div class="rk-input-wrap"><input id="rk-phe-cold-other-dp" type="number" min="0" max="300" step="0.5" value="25" inputmode="decimal"><span>kPa</span></div><small>Krytyczna pętla, rozdzielacz, rury i armatura.</small></div>
        </div>

        <div class="rk-results" aria-live="polite">
          <div class="rk-result"><b id="rk-phe-hot-flow">—</b><span>wymagany przepływ strony A</span></div>
          <div class="rk-result"><b id="rk-phe-cold-flow">—</b><span>wymagany przepływ strony B</span></div>
          <div class="rk-result"><b id="rk-phe-hot-approach">—</b><span>różnica na gorącym końcu: A wej. − B wyj.</span></div>
          <div class="rk-result"><b id="rk-phe-cold-approach">—</b><span>różnica na zimnym końcu: A wyj. − B wej.</span></div>
          <div class="rk-result primary"><b id="rk-phe-lmtd">—</b><span>średnia logarytmiczna różnica temperatur LMTD</span></div>
          <div class="rk-result primary"><b id="rk-phe-ua">—</b><span>minimalne wymagane UA dla wpisanego punktu</span></div>
          <div class="rk-result"><b id="rk-phe-hot-head">—</b><span>suma oporów i wysokość podnoszenia strony A</span></div>
          <div class="rk-result"><b id="rk-phe-cold-head">—</b><span>suma oporów i wysokość podnoszenia strony B</span></div>
        </div>
        <div class="rk-driver" id="rk-phe-thermal-driver"><b>Ocena wprowadzonego punktu</b><p id="rk-phe-thermal-message">—</p></div>

        <div class="rk-chart-card">
          <div class="rk-chart-wrap"><svg id="rk-phe-temperature-chart" viewBox="0 0 900 410" role="img" aria-labelledby="rk-phe-temp-title rk-phe-temp-desc"><title id="rk-phe-temp-title">Profile temperatur w przeciwprądowym wymienniku płytowym</title><desc id="rk-phe-temp-desc">Wykres aktualizuje temperatury strony gorącej i chłodniejszej po zmianie danych kalkulatora.</desc></svg></div>
          <div class="rk-chart-legend"><span class="rk-legend">Strona A — medium gorące, przepływ od lewej</span><span class="rk-legend cold">Strona B — medium ogrzewane, przepływ od prawej</span></div>
          <p class="rk-chart-note" id="rk-phe-temperature-note">Linie są edukacyjnym profilem między czterema temperaturami granicznymi. Rzeczywisty przebieg zależy od konstrukcji wymiennika i strumieni pojemności cieplnej.</p>
        </div>
      </div>
      <noscript><div class="rk-note warn"><p>Do działania kalkulatora i wykresu potrzebna jest obsługa JavaScript. Treść poradnika pozostaje dostępna bez skryptów.</p></div></noscript>
    </section>

    <section class="rk-section" id="rk-phe-reading">
      <span class="rk-eyebrow">Wynik to punkt doboru, nie nazwa produktu</span>
      <h2>Jak interpretować LMTD, podejście temperaturowe i wymagane UA?</h2>
      <div class="rk-grid-3">
        <div class="rk-card rk-card-accent"><h3>LMTD</h3><p>Średnia logarytmiczna różnica temperatur opisuje napęd cieplny na całej długości wymiennika. Nie jest ani sprawnością, ani temperaturą zasilania.</p></div>
        <div class="rk-card"><h3>Podejście temperaturowe</h3><p>To różnica temperatur między mediami na danym końcu. Bardzo mała wartość jest możliwa tylko przy odpowiednio dużym UA i właściwych przepływach.</p></div>
        <div class="rk-card"><h3>UA</h3><p>Iloczyn całkowitego współczynnika przenikania i powierzchni. Kalkulator wyznacza wymagane UA, ale nie zna geometrii ani rzeczywistego współczynnika konkretnego modelu.</p></div>
      </div>
      <h3>Dlaczego kalkulator nie podaje liczby płyt?</h3>
      <p>Dwie konstrukcje z taką samą liczbą płyt mogą mieć inną powierzchnię, profil kanałów, szerokość szczeliny, opory i dopuszczalne media. Dlatego liczba płyt bez oznaczenia modelu nie jest parametrem projektowym. Wynik trzeba przenieść do programu producenta albo tabel dla konkretnych temperatur, przepływów, mediów i dopuszczalnego Δp.</p>
      <div class="rk-note"><p><strong>Przykład interpretacji:</strong> jeżeli kalkulator pokazuje 1,08 m³/h po stronie podłogówki, nie oznacza to, że każda pętla ma otrzymać taki przepływ. Jest to suma dla obiegu wtórnego. Podział na rozdzielaczu wynika z mocy poszczególnych pomieszczeń, co szerzej wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obiegu grzewczym w wodnej podłogówce</a>.</p></div>

      <div class="rk-cta">
        <span class="rk-eyebrow">Od wyniku kalkulatora do działającego układu</span>
        <div class="rk-cta-title">Wymiennik rozdziela obiegi. Projekt musi jeszcze połączyć temperatury, przepływy i pompy.</div>
        <p>Kalkulator pokazuje bilans cieplny, LMTD, wymagane przepływy, UA i orientacyjne opory. Nie wyznacza charakterystyki konkretnego wymiennika, pomp, zabezpieczeń, regulacji ani parametrów pętli. Te elementy trzeba policzyć razem dla źródła i całej podłogówki.</p>
        <a class="rk-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-section rk-section-soft" id="rk-phe-hydraulics">
      <span class="rk-eyebrow">Dwa zamknięte bilanse przepływu</span>
      <h2>Przepływy, straty ciśnienia i dwie pompy obiegowe</h2>
      <p>Po dodaniu wymiennika przepływ strony pierwotnej nie przechodzi do podłogówki. Pompa A pokonuje opory swojego obiegu, a pompa B — opory wymiennika po stronie wtórnej, armatury, magistrali, rozdzielacza i krytycznej pętli. Obu wysokości podnoszenia nie dodaje się do jednej pompy.</p>
      <div class="rk-formula">V̇ [m³/h] = Q [kW] ÷ (C<sub>v</sub> [kWh/(m³·K)] · ΔT [K]) &nbsp;&nbsp; | &nbsp;&nbsp; H [m H₂O] ≈ Δp [kPa] ÷ 9,81</div>
      <div class="rk-table-wrap">
        <div class="rk-table-summary">Każda pompa pracuje w punkcie przecięcia własnej charakterystyki z charakterystyką własnego obiegu.</div>
        <table aria-label="Zakres oporów obu pomp obiegowych">
          <thead><tr><th>Obieg</th><th>Co wyznacza przepływ?</th><th>Jakie opory należy zsumować?</th><th>Czego nie należy robić?</th></tr></thead>
          <tbody>
            <tr><td data-label="Obieg"><strong>Strona A</strong></td><td data-label="Przepływ">Moc, ΔT strony A i właściwości jej medium</td><td data-label="Opory">Źródło, strona A wymiennika, rury i armatura zamkniętej drogi</td><td data-label="Błąd">Nie dodawać oporów pętli podłogowych</td></tr>
            <tr><td data-label="Obieg"><strong>Strona B</strong></td><td data-label="Przepływ">Suma mocy podłogówki, jej ΔT i medium strony B</td><td data-label="Opory">Strona B wymiennika, rury, armatura, rozdzielacz i krytyczna pętla</td><td data-label="Błąd">Nie mnożyć oporu jednej pętli przez liczbę pętli równoległych</td></tr>
          </tbody>
        </table>
      </div>
      <p>Oznaczenie „25-60” nie jest wynikiem doboru, lecz nazwą rodziny pomp o określonych możliwościach. Potrzebny jest punkt Q–H, dostępne tryby regulacji i sprawdzenie minimalnych przepływów. Zobacz osobno, jak działa <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w ogrzewaniu podłogowym</a> oraz jak korzystać z <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy Q–H</a>.</p>
      <p>Straty wymiennika podane w karcie katalogowej trzeba odczytać przy przepływie i medium bliskim obliczeniowym. Jeżeli zmienisz wodę na glikol albo zwiększysz przepływ, Δp także się zmieni. Na wynik wpływają ponadto <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur w ogrzewaniu podłogowym</a> i średnica magistrali zasilającej rozdzielacze.</p>
    </section>

    <section class="rk-section" id="rk-phe-control">
      <span class="rk-eyebrow">Wymiana ciepła nie jest automatyką</span>
      <h2>Jak regulować i zabezpieczyć temperaturę za wymiennikiem?</h2>
      <p>Temperatura wtórna może być sterowana na kilka sposobów. Właściwy wariant zależy od źródła, zakresu jego modulacji, wymaganej temperatury powrotu, pojemności układu i sposobu pracy odbiorników. Nie istnieje jedna uniwersalna logika „poniżej 35°C otwórz, powyżej zamknij”.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Regulacja źródła</h3><p>Jeżeli źródło może stabilnie pracować z temperaturą potrzebną przed wymiennikiem, automatyka pogodowa może korygować ją wraz z temperaturą zewnętrzną. Każdy kelwin podejścia wymiennika trzeba dodać do wymagania strony wtórnej.</p></div>
        <div class="rk-card rk-card-accent"><h3>Układ mieszający</h3><p>Przy źródle utrzymującym wyższe parametry zawór z siłownikiem może regulować temperaturę obiegu. Miejsce zaworu i czujników wynika ze schematu, a nie z zasady „zawsze za wymiennikiem”.</p></div>
        <div class="rk-card rk-card-warn"><h3>Niezależne ograniczenie</h3><p>Ogranicznik lub termostat bezpieczeństwa powinien zatrzymać dopływ energii albo pompę zgodnie z projektem, gdy regulacja podstawowa nie utrzyma dopuszczalnej temperatury.</p></div>
      </div>
      <p>Krzywa pogodowa powinna uwzględniać wymagania budynku, odbiorników i podejście wymiennika. Zobacz, jak działa <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza podłogówki</a> oraz czym różni się <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowanie pogodowe</a> od doraźnego zamykania stref.</p>
      <div class="rk-note warn"><p><strong>Czujnik musi mierzyć właściwe miejsce.</strong> Temperatura za wymiennikiem bez informacji o przepływie, temperaturze powrotu i stanie pomp nie opisuje całego procesu. Zabezpieczenie powinno działać także przy błędzie komunikacji lub awarii elementu wykonawczego.</p></div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-heat-pump">
      <span class="rk-eyebrow">Separacja ma wpływ na punkt pracy</span>
      <h2>Wymiennik płytowy z pompą ciepła — kiedy ma sens?</h2>
      <p>W typowej nowej instalacji zamkniętej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a> może często zasilać wodną podłogówkę bezpośrednio. Wymiennik warto rozważyć dopiero wtedy, gdy rozwiązuje konkretny problem: oddziela glikol, obieg zewnętrzny, instalację o innej jakości medium albo układy wymagające fizycznej separacji.</p>
      <div class="rk-grid-2">
        <div class="rk-card rk-card-green"><h3>Możliwe uzasadnienie</h3><ul><li>oddzielenie krótkiego obiegu niezamarzającego od wody w budynku,</li><li>ochrona nowego źródła przed medium starej instalacji,</li><li>wymóg producenta albo projektowanej topologii,</li><li>separacja obiegów o różnych dopuszczalnych ciśnieniach.</li></ul></div>
        <div class="rk-card rk-card-warn"><h3>Koszt techniczny</h3><ul><li>dodatkowa różnica temperatur między źródłem a podłogówką,</li><li>straty ciśnienia po obu stronach,</li><li>dodatkowa pompa i energia pomocnicza,</li><li>ryzyko zabrudzenia i potrzeba kontroli przepływu.</li></ul></div>
      </div>
      <p>Podłogówka korzysta z możliwości pracy przy niskiej temperaturze. Artykuł o <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskiej temperaturze zasilania pompy ciepła</a> wyjaśnia, dlaczego nie należy bez potrzeby podnosić parametrów źródła. Kalkulator kosztów poniżej nie zakłada stałego spadku COP — pozwala wpisać osobny SCOP wariantu bez wymiennika i z wymiennikiem.</p>
    </section>

    <section class="rk-section" id="rk-phe-solid-fuel">
      <span class="rk-eyebrow">Modernizacja wymaga analizy całej kotłowni</span>
      <h2>Wymiennik przy kotle na paliwo stałe i starszej instalacji</h2>
      <p>W starszych instalacjach wymiennik jest często stosowany do połączenia chronionego obiegu źródła z nową instalacją zamkniętą. Nie wolno jednak sprowadzać projektu do samego wymiennika. Kocioł może wymagać ochrony temperatury powrotu, odpowiedniego zładu, bufora i określonego sposobu zabezpieczenia przed przegrzaniem.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Strona kotłowa</h3><p>Należy sprawdzić dopuszczalny układ pracy kotła, wymagany przepływ, zabezpieczenia, ochronę powrotu i zachowanie przy braku zasilania elektrycznego.</p></div>
        <div class="rk-card rk-card-accent"><h3>Przeniesienie mocy</h3><p>Wymiennik musi przenieść projektową moc przy realnych temperaturach, również wtedy, gdy źródło i odbiorniki nie pracują w katalogowym punkcie.</p></div>
        <div class="rk-card"><h3>Strona podłogowa</h3><p>Potrzebuje własnej stabilizacji ciśnienia, zaworu bezpieczeństwa, pompy, odpowietrzenia, regulacji i zabezpieczenia temperatury.</p></div>
      </div>
      <p>Jeżeli kocioł ma współpracować z buforem, kolejność elementów i punkty włączenia pomp powinny wynikać ze schematu hydraulicznego. Większy <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/">zład wody w instalacji</a> może realizować inną funkcję niż wymiennik. Nie można więc uznać, że jeden element automatycznie zastępuje drugi.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-cost-tool">
      <span class="rk-eyebrow">Koszt wynika z całego dodatkowego obiegu</span>
      <h2>Kalkulator kosztów eksploatacji wymiennika i separacji obiegów</h2>
      <p>Sam wymiennik nie pobiera prądu i nie ma stałej „straty 5%”. Dodatkowy koszt może wynikać ze zmiany sprawności źródła, energii dwóch pomp, większych oporów, serwisu oraz nakładu na kompletny zespół separacji. Kalkulator porównuje układ bezpośredni z układem rozdzielonym przy tej samej ilości użytecznego ciepła.</p>
      <div class="rk-tool" id="rk-phe-cost-calculator">
        <div class="rk-tool-head">
          <div><h3>Dodatkowy koszt źródła, pomp i kompletnej separacji</h3><p>Wartości startowe są przykładem dla pompy ciepła. Wpisz własne ceny, rzeczywiste moce elektryczne pomp i sezonowe współczynniki dla porównywanych wariantów.</p></div>
          <button type="button" class="rk-reset" id="rk-phe-cost-reset">Przywróć przykład</button>
        </div>
        <div class="rk-controls">
          <div class="rk-subhead">Ciepło i źródło</div>
          <div class="rk-control"><label for="rk-phe-cost-heat">Użyteczne ciepło roczne</label><div class="rk-input-wrap"><input id="rk-phe-cost-heat" type="number" min="0" max="200000" step="100" value="12000" inputmode="decimal"><span>kWh/rok</span></div><small>Ta sama ilość oddana do budynku w obu wariantach.</small></div>
          <div class="rk-control"><label for="rk-phe-source-type">Rodzaj źródła</label><div class="rk-input-wrap"><select id="rk-phe-source-type"><option value="heatpump" selected>Pompa ciepła — współczynnik SCOP</option><option value="gas">Kocioł gazowy — sprawność sezonowa</option><option value="electric">Źródło elektryczne — sprawność</option><option value="solid">Kocioł na paliwo stałe — sprawność sezonowa</option></select></div><small>Wybór zmienia opis współczynnika, nie narzuca ceny paliwa.</small></div>
          <div class="rk-control"><label for="rk-phe-factor-direct" id="rk-phe-factor-direct-label">SCOP bez wymiennika</label><div class="rk-input-wrap"><input id="rk-phe-factor-direct" type="number" min="0.3" max="8" step="0.01" value="3.80" inputmode="decimal"><span id="rk-phe-factor-direct-unit">—</span></div><small id="rk-phe-factor-direct-help">Sezonowy współczynnik całego wariantu bez separacji.</small></div>
          <div class="rk-control"><label for="rk-phe-factor-separated" id="rk-phe-factor-separated-label">SCOP z wymiennikiem</label><div class="rk-input-wrap"><input id="rk-phe-factor-separated" type="number" min="0.3" max="8" step="0.01" value="3.60" inputmode="decimal"><span id="rk-phe-factor-separated-unit">—</span></div><small id="rk-phe-factor-separated-help">Wpisz wartość dla wyższej temperatury źródła i rzeczywistego sterowania.</small></div>
          <div class="rk-control"><label for="rk-phe-source-price">Cena energii źródła</label><div class="rk-input-wrap"><input id="rk-phe-source-price" type="number" min="0" max="10" step="0.01" value="1.00" inputmode="decimal"><span>zł/kWh</span></div><small>Dla prądu albo energii chemicznej paliwa — zgodnie z wpisanym współczynnikiem.</small></div>
          <div class="rk-control"><label for="rk-phe-electricity-price">Cena energii elektrycznej pomp</label><div class="rk-input-wrap"><input id="rk-phe-electricity-price" type="number" min="0" max="10" step="0.01" value="1.00" inputmode="decimal"><span>zł/kWh</span></div><small>Łączna zmienna stawka właściwa dla czasu pracy.</small></div>

          <div class="rk-subhead">Pompy obiegowe</div>
          <div class="rk-control"><label for="rk-phe-direct-pump">Pompa w układzie bezpośrednim</label><div class="rk-input-wrap"><input id="rk-phe-direct-pump" type="number" min="0" max="1000" step="1" value="35" inputmode="decimal"><span>W</span></div><small>Średni pobór w godzinach przyjętych do kalkulacji.</small></div>
          <div class="rk-control"><label for="rk-phe-primary-pump">Pompa strony A</label><div class="rk-input-wrap"><input id="rk-phe-primary-pump" type="number" min="0" max="1000" step="1" value="35" inputmode="decimal"><span>W</span></div><small>Nie moc maksymalna z tabliczki, jeśli pracuje modulacyjnie.</small></div>
          <div class="rk-control"><label for="rk-phe-secondary-pump">Pompa strony B</label><div class="rk-input-wrap"><input id="rk-phe-secondary-pump" type="number" min="0" max="1000" step="1" value="45" inputmode="decimal"><span>W</span></div><small>Średni pobór w analizowanym profilu pracy.</small></div>
          <div class="rk-control"><label for="rk-phe-pump-hours">Czas pracy pomp</label><div class="rk-input-wrap"><input id="rk-phe-pump-hours" type="number" min="0" max="8760" step="50" value="3500" inputmode="decimal"><span>h/rok</span></div><small>Wspólny czas dla uproszczonego porównania.</small></div>

          <div class="rk-subhead">Nakład, utrzymanie i okres</div>
          <div class="rk-control"><label for="rk-phe-separation-capex">Dodatkowy nakład na separację</label><div class="rk-input-wrap"><input id="rk-phe-separation-capex" type="number" min="0" max="200000" step="100" value="3500" inputmode="decimal"><span>zł</span></div><small>Wymiennik, pompa, armatura, zabezpieczenia, sterowanie i montaż ponad wariant bazowy.</small></div>
          <div class="rk-control"><label for="rk-phe-service-cost">Dodatkowe utrzymanie</label><div class="rk-input-wrap"><input id="rk-phe-service-cost" type="number" min="0" max="20000" step="10" value="150" inputmode="decimal"><span>zł/rok</span></div><small>Rezerwa na kontrolę, czyszczenie i elementy dodatkowego obiegu.</small></div>
          <div class="rk-control"><label for="rk-phe-cost-years">Okres analizy</label><div class="rk-input-wrap"><select id="rk-phe-cost-years"><option value="5">5 lat</option><option value="10">10 lat</option><option value="15" selected>15 lat</option><option value="20">20 lat</option><option value="25">25 lat</option></select></div><small>Wykres obejmuje nakład w roku 0 i koszty kolejnych lat.</small></div>
          <div class="rk-control"><label for="rk-phe-price-growth">Wzrost cen energii</label><div class="rk-input-wrap"><input id="rk-phe-price-growth" type="number" min="-10" max="20" step="0.1" value="2.0" inputmode="decimal"><span>%/rok</span></div><small>Edytowalny scenariusz, nie prognoza.</small></div>
        </div>

        <div class="rk-results" aria-live="polite">
          <div class="rk-result"><b id="rk-phe-source-direct-energy">—</b><span>energia źródła bez wymiennika / rok</span></div>
          <div class="rk-result"><b id="rk-phe-source-separated-energy">—</b><span>energia źródła z wymiennikiem / rok</span></div>
          <div class="rk-result"><b id="rk-phe-extra-pump-energy">—</b><span>różnica energii pomp / rok</span></div>
          <div class="rk-result"><b id="rk-phe-cost-direct-year">—</b><span>koszt energii wariantu bezpośredniego w 1. roku</span></div>
          <div class="rk-result"><b id="rk-phe-cost-separated-year">—</b><span>koszt energii i utrzymania separacji w 1. roku</span></div>
          <div class="rk-result primary"><b id="rk-phe-cost-difference-year">—</b><span>różnica kosztu eksploatacji w 1. roku</span></div>
          <div class="rk-result"><b id="rk-phe-tco-direct">—</b><span>koszt wariantu bazowego w okresie</span></div>
          <div class="rk-result primary"><b id="rk-phe-tco-separated">—</b><span>koszt wariantu z separacją wraz z dodatkowym nakładem</span></div>
          <div class="rk-result rk-result-wide"><b id="rk-phe-tco-difference">—</b><span>łączna różnica kosztu po wybranym okresie</span></div>
          <div class="rk-result rk-result-wide"><b id="rk-phe-cost-driver">—</b><span>największa składowa różnicy w pierwszym roku</span></div>
        </div>
        <div class="rk-driver"><b>Jak czytać porównanie?</b><p id="rk-phe-cost-message">—</p></div>

        <div class="rk-chart-card">
          <div class="rk-chart-wrap"><svg id="rk-phe-cost-chart" viewBox="0 0 900 410" role="img" aria-labelledby="rk-phe-cost-chart-title rk-phe-cost-chart-desc"><title id="rk-phe-cost-chart-title">Skumulowana różnica kosztu układu z wymiennikiem</title><desc id="rk-phe-cost-chart-desc">Wykres pokazuje dodatkowy albo niższy skumulowany koszt separacji w kolejnych latach.</desc></svg></div>
          <div class="rk-chart-legend"><span class="rk-legend">Skumulowana różnica: układ z wymiennikiem minus układ bezpośredni</span><span class="rk-legend zero">Poziom 0 zł</span></div>
          <p class="rk-chart-note" id="rk-phe-cost-chart-note">Wartość dodatnia oznacza wyższy koszt wariantu z separacją, a ujemna — niższy koszt przy wprowadzonych założeniach.</p>
        </div>

        <div class="rk-table-wrap">
          <div class="rk-table-summary" id="rk-phe-cost-table-summary">Koszt skumulowany obu wariantów i różnica w wybranych latach.</div>
          <table aria-label="Koszt skumulowany instalacji bez wymiennika i z wymiennikiem">
            <thead><tr><th>Rok</th><th>Bez wymiennika</th><th>Z wymiennikiem</th><th>Różnica</th></tr></thead>
            <tbody id="rk-phe-cost-table"></tbody>
          </table>
        </div>
      </div>
      <p>Wymagania dotyczące efektywności energetycznej pomp obiegowych i powiązanych metod wyznaczania EEI opisują materiały <a href="https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-circulators_en" target="_blank" rel="nofollow noopener noreferrer">Komisji Europejskiej dotyczące ekoprojektu pomp obiegowych</a>. Do kalkulatora należy jednak wpisać średni pobór rzeczywistego urządzenia w swoim punkcie pracy, a nie samą wartość EEI.</p>
      <noscript><div class="rk-note warn"><p>Do działania kalkulatora kosztów i wykresu potrzebna jest obsługa JavaScript. Założenia oraz ograniczenia narzędzia pozostają opisane w treści.</p></div></noscript>
    </section>

    <section class="rk-section" id="rk-phe-maintenance">
      <span class="rk-eyebrow">Spadek mocy często zaczyna się od oporu</span>
      <h2>Zabrudzenie wymiennika, jakość wody i konserwacja</h2>
      <p>Osad na płytach tworzy dodatkowy opór cieplny, a zwężenie kanałów zwiększa stratę ciśnienia. W efekcie ta sama pompa może zapewniać mniejszy przepływ, a wymiennik przekazywać mniejszą moc. Nie wolno wtedy automatycznie zwiększać biegu pompy bez ustalenia przyczyny.</p>
      <div class="rk-grid-3">
        <div class="rk-card"><h3>Objawy po stronie cieplnej</h3><p>Przy podobnych warunkach źródła temperatura wtórna jest niższa, rośnie wymagane podejście, a instalacja nie osiąga wcześniejszej mocy.</p></div>
        <div class="rk-card"><h3>Objawy po stronie hydraulicznej</h3><p>Maleje przepływ, rośnie różnica ciśnień, pompa pracuje bliżej ograniczenia albo pojawiają się hałas i problemy z równoważeniem.</p></div>
        <div class="rk-card rk-card-accent"><h3>Weryfikacja</h3><p>Porównuje się temperatury, przepływy i spadki ciśnienia po obu stronach z wartościami z uruchomienia oraz kartą konkretnego modelu.</p></div>
      </div>
      <h3>Czy wymiennik płytowy trzeba czyścić co kilka lat?</h3>
      <p>Nie ma jednego terminu odpowiedniego dla każdej instalacji. Częstotliwość zależy od jakości medium, uzupełniania wody, materiałów, temperatury, filtracji i zaleceń producenta. W obiegu zamkniętym napełnionym poprawnie warunki mogą być zupełnie inne niż w układzie często uzupełnianym twardą wodą.</p>
      <p>Wymiennik lutowany czyści się metodą dopuszczoną przez producenta i z użyciem środka zgodnego z materiałem płyt oraz lutu. Przed płukaniem trzeba potwierdzić, czy problemem rzeczywiście jest osad, a nie zapowietrzenie, zamknięty zawór albo niewłaściwy punkt pracy pompy. Pomocna może być diagnostyka <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawów zapowietrzenia podłogówki</a>.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-errors">
      <span class="rk-eyebrow">Błąd jednej strony zmienia cały punkt pracy</span>
      <h2>Najczęstsze błędy przy wymienniku płytowym do podłogówki</h2>
      <div class="rk-number-grid" aria-label="Najczęstsze błędy przy wymienniku płytowym">
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Dobór po liczbie płyt</h3><p>Bez geometrii, temperatur, mediów i przepływów liczba płyt nie mówi, czy urządzenie osiągnie wymagany punkt.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Dobór po „mocy maksymalnej”</h3><p>Moc katalogowa dotyczy określonych parametrów. Przy mniejszej różnicy temperatur rzeczywista zdolność przekazywania ciepła może być inna.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Brak kontroli temperatury</h3><p>Traktowanie wymiennika jak zaworu regulacyjnego pozostawia podłogówkę bez prawidłowej automatyki i ograniczenia.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Jedna pompa dla dwóch obiegów</h3><p>Po fizycznym rozdzieleniu mediów pompa jednej strony nie wymusza przepływu po drugiej stronie płyt.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Pominięcie oporu wymiennika</h3><p>Spadek ciśnienia musi zostać uwzględniony osobno dla każdej strony i dla rzeczywistego przepływu.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Zamiana przepływu sumarycznego na pętlę</h3><p>Przepływ obiegu B jest sumą pracujących gałęzi. Każda pętla wymaga własnej nastawy wynikającej z jej mocy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Brak zabezpieczeń strony wtórnej</h3><p>Oddzielony obieg nie dziedziczy naczynia ani zaworu bezpieczeństwa strony pierwotnej.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Brak pomiarów przy uruchomieniu</h3><p>Bez temperatur, przepływów i ciśnień odniesienia trudno później odróżnić zabrudzenie od błędnej regulacji.</p></div></div>
      </div>
      <p>Do tej listy dochodzą typowe <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">błędy montażu ogrzewania podłogowego</a>: niewłaściwe długości pętli, przypadkowe rozstawy, źle dobrane średnice i brak próby szczelności. Wymiennik nie kompensuje takich problemów.</p>
    </section>

    <section class="rk-section" id="rk-phe-commissioning">
      <span class="rk-eyebrow">Pomiar zamiast oceny „rura jest ciepła”</span>
      <h2>Jak sprawdzić wymiennik i oba obiegi podczas uruchomienia?</h2>
      <p>Uruchomienie powinno potwierdzić założony punkt pracy, a nie tylko obecność ciepła. Wyniki warto zapisać, ponieważ tworzą bazę do późniejszego serwisu i oceny ewentualnego zabrudzenia.</p>
      <div class="rk-number-grid" aria-label="Procedura sprawdzenia wymiennika podczas uruchomienia">
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Sprawdź kierunki przepływu</h3><p>Potwierdź króćce, przeciwprąd i kierunek pracy obu pomp według dokumentacji urządzenia.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Napełnij obiegi oddzielnie</h3><p>Ustal właściwe medium, ciśnienie napełnienia, odpowietrzenie i działanie zabezpieczeń każdej strony.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Uruchom przepływy</h3><p>Zweryfikuj przepływ strony A oraz sumę przepływów strony B przy otwartych obiegach przewidzianych do testu.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Zmierz cztery temperatury</h3><p>Zapisz wejście i wyjście strony gorącej oraz wejście i wyjście strony wtórnej po ustabilizowaniu pracy.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Porównaj bilans mocy</h3><p>Oblicz moc z przepływu i ΔT po obu stronach. Niewielkie różnice pomiarowe są normalne, ale duża rozbieżność wymaga diagnostyki.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Sprawdź opory i pompy</h3><p>Porównaj punkt Q–H z nastawą pomp, zaworami oraz danymi wymiennika przy aktualnym medium.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Przetestuj regulację</h3><p>Zmień zapotrzebowanie i sprawdź reakcję źródła, mieszania, czujników oraz ograniczenia temperatury.</p></div></div>
        <div class="rk-number-card"><span class="rk-number" aria-hidden="true"></span><div class="rk-number-copy"><h3>Zapisz stan odniesienia</h3><p>Zachowaj temperatury, przepływy, ciśnienia, nastawy i pobór pomp do kolejnych przeglądów.</p></div></div>
      </div>
      <p>Przed przykryciem instalacji należy również wykonać właściwą <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbę szczelności ogrzewania podłogowego</a>. Próba pętli nie zastępuje jednak osobnego sprawdzenia szczelności, ciśnienia i połączeń zespołu wymiennika.</p>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-conclusion">
      <span class="rk-eyebrow">Wniosek projektowy</span>
      <h2>Czy warto stosować wymiennik płytowy w ogrzewaniu podłogowym?</h2>
      <div class="rk-answer" id="rk-phe-conclusion-answer">
        <div class="rk-answer-main">
          <p><strong>Tak — jeżeli instalacja rzeczywiście wymaga fizycznej separacji mediów, ciśnień albo starego i nowego obiegu.</strong> W takim przypadku prawidłowo dobrany wymiennik jest skutecznym elementem całego rozwiązania.</p>
          <p><strong>Nie — jeżeli ma jedynie „zbić temperaturę”, a oba obiegi mogą bezpiecznie pracować razem.</strong> Temperaturę należy regulować źródłem lub odpowiednim układem mieszającym. Dodanie wymiennika bez funkcjonalnej potrzeby zwiększa liczbę elementów, opory i koszt eksploatacji.</p>
          <p>Dobór powinien obejmować moc z obliczeń, cztery temperatury, oba media, przepływy, dopuszczalne straty ciśnienia, charakterystyki pomp i automatykę. Dopiero z takimi danymi można zweryfikować konkretny model urządzenia.</p>
        </div>
        <div class="rk-verdict">
          <div class="rk-verdict-item"><b>Najpierw OZC i odbiorniki</b><span>Ustal wymaganą moc oraz temperaturę podłogówki dla rzeczywistej powierzchni czynnej.</span></div>
          <div class="rk-verdict-item"><b>Potem punkt wymiennika</b><span>Sprawdź LMTD, UA, przepływy, media i Δp konkretnego modelu.</span></div>
          <div class="rk-verdict-item"><b>Na końcu cały układ</b><span>Dobierz pompy, zabezpieczenia, regulację, naczynia i nastawy rozdzielacza.</span></div>
        </div>
      </div>

      <div class="rk-cta">
        <span class="rk-eyebrow">Projekt zamiast doboru pojedynczego elementu</span>
        <div class="rk-cta-title">Podłogówka musi zadziałać jako jeden układ — od źródła po najdalszą pętlę.</div>
        <p>W projekcie łączymy obciążenie każdego pomieszczenia, powierzchnię czynną, temperaturę zasilania, rozstaw i długość pętli, przepływy, opory, rozdzielacze oraz źródło ciepła. Jeżeli wymiennik jest potrzebny, jego parametry i obie pompy muszą zostać włączone do tego samego bilansu.</p>
        <a class="rk-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego</a>
      </div>
    </section>

    <section class="rk-section" id="rk-phe-sources">
      <span class="rk-eyebrow">Materiały publiczne i podstawa obliczeń</span>
      <h2>Źródła oficjalne i materiały techniczne</h2>
      <ul class="rk-sources">
        <li><a href="https://web.mit.edu/16.unified/www/FALL/thermodynamics/notes/node131.html" target="_blank" rel="nofollow noopener noreferrer">Massachusetts Institute of Technology — Heat Exchangers</a>: bilans energii, współczynnik przenikania, przeciwprąd i średnia logarytmiczna różnica temperatur.</li>
        <li><a href="https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-circulators_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — Ecodesign and energy labelling: circulators</a>: przepisy i zestawienie norm dotyczących efektywności energetycznej pomp obiegowych.</li>
        <li><a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32009R0641" target="_blank" rel="nofollow noopener noreferrer">EUR-Lex — rozporządzenie Komisji (WE) nr 641/2009</a>: wymagania ekoprojektu dla pomp bezdławnicowych.</li>
        <li><a href="https://energy.ec.europa.eu/topics/energy-efficiency/heat-pumps_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — Heat pumps</a>: zasada działania i rola efektywności pomp ciepła w ogrzewaniu budynków.</li>
      </ul>
      <p>W projekcie instalacji płaszczyznowej należy dodatkowo stosować właściwe wydania norm i dokumentacji technicznej, w tym zakres obliczeń obciążenia cieplnego, projektowania ogrzewania podłogowego, zabezpieczeń źródła oraz instrukcje producentów wymiennika, pomp i automatyki. Zobacz również omówienie <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831 dla obciążenia cieplnego</a> i <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">EN 1264 dla ogrzewania podłogowego</a>.</p>
      <div class="rk-responsibility">
        <p><strong>Stan źródeł:</strong> odnośniki sprawdzono 13 września 2026 r. Strony publiczne nie zastępują pełnej dokumentacji konkretnego urządzenia ani aktualnej treści norm.</p>
        <p><strong>Wartości początkowe:</strong> temperatury, ceny, SCOP, sprawności, opory, moce pomp i koszty w kalkulatorach są edytowalnymi przykładami, a nie zaleceniami dla dowolnego domu.</p>
        <p><strong>Odpowiedzialność:</strong> artykuł i narzędzia mają charakter edukacyjny. Nie są projektem wykonawczym, doborem handlowym, instrukcją zabezpieczenia kotła ani prognozą cen energii.</p>
      </div>
    </section>

    <section class="rk-section rk-section-soft" id="rk-phe-faq">
      <span class="rk-eyebrow">Najczęstsze pytania inwestorów i instalatorów</span>
      <h2>FAQ: wymiennik płytowy w ogrzewaniu podłogowym</h2>
      <div class="rk-faq">
        <details><summary>Czy wymiennik płytowy obniża temperaturę wody?</summary><div class="rk-faq-answer"><p>Wymiennik nie reguluje temperatury do zadanej wartości. Temperatury wyjściowe wynikają z temperatur wejściowych, przepływów, właściwości mediów i UA. Stabilną temperaturę podłogówki zapewnia odpowiednio zaprojektowana regulacja oraz zabezpieczenie.</p></div></details>
        <details><summary>Czy zawór mieszający może zastąpić wymiennik?</summary><div class="rk-faq-answer"><p>Tylko w funkcji regulowania temperatury, jeśli nie jest potrzebne fizyczne oddzielenie mediów i ciśnień. Zawór miesza przepływy we wspólnym obiegu, a wymiennik tworzy dwa osobne obiegi.</p></div></details>
        <details><summary>Jak dobrać moc wymiennika płytowego do podłogówki?</summary><div class="rk-faq-answer"><p>Trzeba znać projektową moc, cztery temperatury, oba media, wymagane przepływy i dopuszczalne straty ciśnienia. Moc z nazwy handlowej lub sama liczba płyt nie wystarczają do doboru konkretnego modelu.</p></div></details>
        <details><summary>Jaki przepływ powinien być przez wymiennik płytowy?</summary><div class="rk-faq-answer"><p>Przepływ każdej strony wynika z przekazywanej mocy, różnicy temperatur i objętościowej pojemności cieplnej medium. Strony mogą mieć różne przepływy, mimo że w stanie ustalonym przekazują zbliżoną moc.</p></div></details>
        <details><summary>Dlaczego przy wymienniku najczęściej potrzebne są dwie pompy?</summary><div class="rk-faq-answer"><p>Płyty fizycznie rozdzielają media, dlatego pompa strony pierwotnej nie wywołuje przepływu po stronie wtórnej. Każda pompa musi pokonać opory własnego, zamkniętego obiegu.</p></div></details>
        <details><summary>Jaka różnica temperatur na końcu wymiennika jest prawidłowa?</summary><div class="rk-faq-answer"><p>Nie ma jednej wartości dla wszystkich instalacji. Mniejsze podejście temperaturowe wymaga zwykle większego UA, a jego wykonalność trzeba sprawdzić dla konkretnego modelu, przepływów, mediów i dopuszczalnego spadku ciśnienia.</p></div></details>
        <details><summary>Czy wymiennik płytowy jest potrzebny przy pompie ciepła?</summary><div class="rk-faq-answer"><p>Nie automatycznie. Może być uzasadniony koniecznością oddzielenia glikolu, starej instalacji, innego ciśnienia lub wymaganiem producenta. W nowej wspólnej instalacji wodnej może niepotrzebnie zwiększać temperaturę źródła, opory i zużycie pomp.</p></div></details>
        <details><summary>Czy kocioł na paliwo stałe zawsze wymaga wymiennika?</summary><div class="rk-faq-answer"><p>Nie można odpowiedzieć wyłącznie na podstawie rodzaju paliwa. Trzeba sprawdzić konstrukcję kotłowni, układ otwarty lub zamknięty, wymagania producenta, zabezpieczenia, ochronę powrotu, bufor i sposób regulacji podłogówki.</p></div></details>
        <details><summary>Czy wymiennik lutowany wymaga regularnego czyszczenia?</summary><div class="rk-faq-answer"><p>Częstotliwość zależy od jakości medium, uzupełniania wody, filtracji, temperatury i zaleceń producenta. Czyszczenie powinno wynikać z pomiarów lub objawów, a użyta metoda musi być zgodna z materiałem płyt i lutu.</p></div></details>
        <details><summary>Czy kalkulatory dobierają gotowy wymiennik i pompy?</summary><div class="rk-faq-answer"><p>Nie. Kalkulator cieplno-hydrauliczny wyznacza punkt pracy, a kalkulator kosztów porównuje wpisane założenia. Konkretny wymiennik trzeba sprawdzić w danych producenta, a pompy dobrać z charakterystyk Q–H całych obiegów.</p></div></details>
      </div>
    </section>

    <section class="rk-section rk-section-dark" id="rk-phe-author" aria-labelledby="rk-phe-author-heading">
      <div class="rk-author">
        <div class="rk-author-head">
          <div>
            <span class="rk-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
            <h2 id="rk-phe-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Treść przygotowana z perspektywy projektowania cieplnego, hydrauliki obu obiegów i rzeczywistego uruchomienia wodnego ogrzewania podłogowego.</p>
          </div>
          <span class="rk-author-mark">Aktualizacja: 13.09.2026</span>
        </div>
        <div class="rk-author-layout">
          <aside class="rk-author-side">
            <div class="rk-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-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
            <p class="rk-author-role">Projektant instalacji sanitarnych i specjalista HVAC</p>
            <div class="rk-author-social-label">Profile branżowe</div>
            <div class="rk-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" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 3.4A2.2 2.2 0 1 1 5.2 7.8a2.2 2.2 0 0 1 0-4.4ZM3.3 9h3.8v11.7H3.3V9Zm6.1 0h3.6v1.6h.1c.5-1 1.8-2.1 3.7-2.1 4 0 4.7 2.6 4.7 6v6.2h-3.8v-5.5c0-1.3 0-3-1.9-3s-2.2 1.4-2.2 2.9v5.6H9.8V9Z"/></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="M13.7 21v-8h2.7l.4-3.1h-3.1V8c0-.9.3-1.5 1.6-1.5H17V3.7c-.3 0-1.3-.1-2.5-.1-2.5 0-4.2 1.5-4.2 4.3v2H7.5V13h2.8v8h3.4Z"/></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Profil X Projekt HVAC"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 3h4.6l4.2 5.6L17.8 3H20l-6.2 7.1L20.7 21h-4.6l-4.7-6.3L5.9 21H3.7l6.7-7.7L4 3Zm3.5 1.7 9.4 14.6h1.9L9.4 4.7H7.5Z"/></svg></a>
            </div>
          </aside>
          <div class="rk-author-main">
            <blockquote class="rk-author-quote"><p>Moim zdaniem wymiennika płytowego nie dobiera się po samej mocy ani liczbie płyt. Najpierw ustalam rzeczywiste temperatury, przepływy i dopuszczalne opory po obu stronach, a następnie sprawdzam konkretny model w danych producenta.</p></blockquote>
            <div class="rk-author-cards">
              <div class="rk-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-author-card"><b>Metoda</b><p>Oddzielny bilans strony pierwotnej i wtórnej, cztery temperatury, LMTD, wymagane UA, opory i charakterystyki pomp.</p></div>
              <div class="rk-author-card"><b>Zakres aktualizacji</b><p>Usunięto kategoryczne reguły, symulator degradacji i dobór po liczbie płyt; dodano grafikę, dwa kalkulatory, wykresy i ograniczenia.</p></div>
            </div>
            <div class="rk-author-mini-label">Portale autora</div>
            <div class="rk-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-phe");
  if (!root) return;

  function byId(id){ return document.getElementById(id); }
  function readNumber(id){
    var el = byId(id);
    if (!el) return NaN;
    var value = parseFloat(String(el.value).replace(",","."));
    return Number.isFinite(value) ? value : NaN;
  }
  function write(id,value){
    var el = byId(id);
    if (el) el.textContent = value;
  }
  function clamp(value,min,max){ return Math.min(max,Math.max(min,value)); }
  function formatNumber(value,digits){
    if (!Number.isFinite(value)) return "—";
    return value.toLocaleString("pl-PL",{minimumFractionDigits:digits,maximumFractionDigits:digits});
  }
  function formatMoney(value){
    if (!Number.isFinite(value)) return "—";
    return Math.round(value).toLocaleString("pl-PL") + " zł";
  }
  function formatSignedMoney(value){
    if (!Number.isFinite(value)) return "—";
    if (Math.abs(value) < 0.5) return "0 zł";
    return (value > 0 ? "+" : "−") + Math.round(Math.abs(value)).toLocaleString("pl-PL") + " zł";
  }
  function setResultState(id,state){
    var output = byId(id);
    if (!output || !output.parentElement) return;
    output.parentElement.classList.remove("good","warn","bad");
    if (state) output.parentElement.classList.add(state);
  }
  function svgText(value){
    var encoder=document.createElement("span");
    encoder.textContent=String(value);
    return encoder.innerHTML;
  }

  /* Modułowa grafika edukacyjna */
  var flowModes = {
    direct:{
      status:"Źródło i podłogówka pracują ze wspólnym medium oraz wspólnym ciśnieniem statycznym. Regulacja temperatury nadal może wymagać automatyki lub mieszania.",
      yes:"Wspólne medium przenosi energię i przepływa przez elementy jednego obiegu.",
      no:"Nie ma fizycznej granicy oddzielającej jakość wody ani ciśnienie części źródłowej od odbiorczej.",
      arrows:["→","→","→","→"],
      cards:[
        ["Ź","Źródło ciepła","Wytwarza ciepło zgodnie ze swoją regulacją i ograniczeniami.","temperatura źródła"],
        ["P","Pompa obiegowa","Wymusza przepływ w zamkniętej drodze wspólnego obiegu.","jeden bilans Q–H"],
        ["H₂O","Wspólne medium","Ta sama woda znajduje się po stronie źródła i rozdzielacza.","wspólne ciśnienie"],
        ["R","Rozdzielacz","Dzieli przepływ pomiędzy równoległe pętle i umożliwia ich równoważenie.","suma przepływów pętli"],
        ["OP","Podłogówka","Oddaje ciepło do pomieszczeń przy parametrach wynikających z projektu.","powrót do źródła"]
      ]
    },
    separated:{
      status:"Energia przechodzi przez płyty, ale obieg źródła i obieg podłogówki mają oddzielne media, ciśnienia oraz przepływy.",
      yes:"Energia cieplna — zależnie od różnicy temperatur, UA i przepływów.",
      no:"Woda lub glikol, ciśnienie robocze, zanieczyszczenia oraz sam przepływ objętościowy.",
      arrows:["→","→","→","→"],
      cards:[
        ["A","Źródło ciepła","Wytwarza ciepło i pracuje w warunkach obiegu pierwotnego.","medium A · ciśnienie A"],
        ["P1","Pompa pierwotna","Zapewnia przepływ przez źródło, rurociągi i pierwszą stronę wymiennika.","V̇A z mocy i ΔTA"],
        ["HX","Wymiennik płytowy","Przekazuje energię przez płyty bez mieszania obu mediów.","granica obiegów"],
        ["P2","Pompa i regulacja","Budują przepływ wtórny i współpracują z regulacją temperatury.","V̇B z mocy i ΔTB"],
        ["B","Podłogówka","Rozdzielacz przekazuje wodę do pętli obiegu wtórnego.","medium B · ciśnienie B"]
      ]
    },
    counter:{
      status:"Na rysunku medium A płynie z lewej na prawą, a medium B z prawej na lewą. Profile temperatur trzeba porównywać na tych samych końcach wymiennika.",
      yes:"Ciepło płynie lokalnie od cieplejszej strony A do chłodniejszej strony B na całej długości płyt.",
      no:"Temperatura wejściowa jednej strony nie jest kopiowana jako temperatura wyjściowa drugiej strony.",
      arrows:["→","→","←","←"],
      cards:[
        ["70°","A wpływa","Gorące medium pierwotne wpływa przy przykładowej temperaturze 70°C.","kierunek A →"],
        ["55°","A wypływa","Po oddaniu mocy medium A wypływa chłodniejsze, przykładowo 55°C.","ΔTA = 15 K"],
        ["HX","Przekaz przez płyty","Lokalna różnica temperatur napędza przekazywanie energii.","Q = UA · LMTD"],
        ["38°","B wypływa","Ogrzane medium wtórne opuszcza wymiennik, przykładowo przy 38°C.","ΔTB = 8 K"],
        ["30°","B wpływa","Powrót podłogówki wpływa z przeciwnej strony przy przykładowej temperaturze 30°C.","kierunek B ←"]
      ]
    }
  };

  function renderFlow(mode){
    var data = flowModes[mode] || flowModes.separated;
    write("rk-phe-flow-status",data.status);
    write("rk-phe-pass-yes",data.yes);
    write("rk-phe-pass-no",data.no);
    var cards = root.querySelectorAll("#rk-phe-flow-cards .rk-flow-card");
    data.cards.forEach(function(card,index){
      write("rk-phe-flow-icon-"+(index+1),card[0]);
      write("rk-phe-flow-title-"+(index+1),card[1]);
      write("rk-phe-flow-text-"+(index+1),card[2]);
      write("rk-phe-flow-mini-"+(index+1),card[3]);
      if (cards[index]){
        if (index < 4) cards[index].setAttribute("data-arrow",data.arrows[index]);
      }
    });
    root.querySelectorAll(".rk-flow-tab").forEach(function(button){
      button.setAttribute("aria-pressed",button.getAttribute("data-mode") === mode ? "true" : "false");
    });
  }

  root.querySelectorAll(".rk-flow-tab").forEach(function(button){
    button.addEventListener("click",function(){ renderFlow(button.getAttribute("data-mode")); });
  });

  /* Kalkulator cieplno-hydrauliczny */
  var thermalDefaults = {
    "rk-phe-power":"10",
    "rk-phe-hot-in":"70",
    "rk-phe-hot-out":"55",
    "rk-phe-hot-fluid":"1.163",
    "rk-phe-hot-hx-dp":"12",
    "rk-phe-hot-other-dp":"8",
    "rk-phe-cold-in":"30",
    "rk-phe-cold-out":"38",
    "rk-phe-cold-fluid":"1.163",
    "rk-phe-cold-hx-dp":"16",
    "rk-phe-cold-other-dp":"25"
  };

  function clearThermalOutputs(){
    ["rk-phe-hot-flow","rk-phe-cold-flow","rk-phe-hot-approach","rk-phe-cold-approach","rk-phe-lmtd","rk-phe-ua","rk-phe-hot-head","rk-phe-cold-head"].forEach(function(id){ write(id,"—"); setResultState(id,""); });
  }

  function renderTemperatureChart(values){
    var svg = byId("rk-phe-temperature-chart");
    if (!svg) return;
    if (!values){
      svg.innerHTML = '<title id="rk-phe-temp-title">Profile temperatur w przeciwprądowym wymienniku płytowym</title><desc id="rk-phe-temp-desc">Nie można narysować wykresu dla niespójnych danych.</desc><rect x="0" y="0" width="900" height="410" rx="18" fill="#f8fcfd"/><text x="450" y="205" text-anchor="middle" fill="#c7443a" font-size="18" font-weight="800">Popraw temperatury, aby wyświetlić wykres</text>';
      return;
    }
    var w=900,h=410,left=76,right=36,top=36,bottom=62;
    var plotW=w-left-right,plotH=h-top-bottom;
    var minRaw=Math.min(values.hotIn,values.hotOut,values.coldIn,values.coldOut);
    var maxRaw=Math.max(values.hotIn,values.hotOut,values.coldIn,values.coldOut);
    var minT=Math.floor((minRaw-5)/5)*5;
    var maxT=Math.ceil((maxRaw+5)/5)*5;
    if (maxT-minT<10){ maxT=minT+10; }
    function x(t){ return left+t*plotW; }
    function y(temp){ return top+(maxT-temp)/(maxT-minT)*plotH; }
    var parts=[];
    parts.push('<title id="rk-phe-temp-title">Profile temperatur w przeciwprądowym wymienniku płytowym</title>');
    parts.push('<desc id="rk-phe-temp-desc">Strona A płynie od lewej do prawej, a strona B od prawej do lewej. Różnice końcowe wynoszą '+svgText(formatNumber(values.approachHot,1))+' i '+svgText(formatNumber(values.approachCold,1))+' kelwina.</desc>');
    parts.push('<rect x="0" y="0" width="900" height="410" rx="18" fill="#ffffff"/>');
    for(var i=0;i<=5;i++){
      var temp=minT+(maxT-minT)*i/5;
      var yy=y(temp);
      parts.push('<line x1="'+left+'" y1="'+yy+'" x2="'+(w-right)+'" y2="'+yy+'" stroke="#dce8ed" stroke-width="1"/>');
      parts.push('<text x="'+(left-12)+'" y="'+(yy+5)+'" text-anchor="end" fill="#607783" font-size="13">'+svgText(formatNumber(temp,0))+'°C</text>');
    }
    parts.push('<line x1="'+left+'" y1="'+top+'" x2="'+left+'" y2="'+(h-bottom)+'" stroke="#8ca1ab" stroke-width="1.5"/>');
    parts.push('<line x1="'+left+'" y1="'+(h-bottom)+'" x2="'+(w-right)+'" y2="'+(h-bottom)+'" stroke="#8ca1ab" stroke-width="1.5"/>');
    var hotPoints=[],coldPoints=[];
    for(var s=0;s<=20;s++){
      var t=s/20;
      var hot=values.hotIn+(values.hotOut-values.hotIn)*t;
      var cold=values.coldOut+(values.coldIn-values.coldOut)*t;
      hotPoints.push(x(t)+","+y(hot));
      coldPoints.push(x(t)+","+y(cold));
    }
    parts.push('<polyline points="'+hotPoints.join(" ")+'" fill="none" stroke="#ff6a3d" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>');
    parts.push('<polyline points="'+coldPoints.join(" ")+'" fill="none" stroke="#078fbe" stroke-width="6" stroke-linecap="round" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>');
    [[0,values.hotIn,"#ff6a3d"],[1,values.hotOut,"#ff6a3d"],[0,values.coldOut,"#078fbe"],[1,values.coldIn,"#078fbe"]].forEach(function(point){
      parts.push('<circle cx="'+x(point[0])+'" cy="'+y(point[1])+'" r="7" fill="'+point[2]+'" stroke="#fff" stroke-width="3" vector-effect="non-scaling-stroke"/>');
    });
    parts.push('<text x="'+(left+10)+'" y="'+(y(values.hotIn)-13)+'" fill="#b83f1d" font-size="14" font-weight="800">A wej. '+svgText(formatNumber(values.hotIn,1))+'°C</text>');
    parts.push('<text x="'+(w-right-10)+'" y="'+(y(values.hotOut)-13)+'" text-anchor="end" fill="#b83f1d" font-size="14" font-weight="800">A wyj. '+svgText(formatNumber(values.hotOut,1))+'°C</text>');
    parts.push('<text x="'+(left+10)+'" y="'+(y(values.coldOut)+25)+'" fill="#006e99" font-size="14" font-weight="800">B wyj. '+svgText(formatNumber(values.coldOut,1))+'°C</text>');
    parts.push('<text x="'+(w-right-10)+'" y="'+(y(values.coldIn)+25)+'" text-anchor="end" fill="#006e99" font-size="14" font-weight="800">B wej. '+svgText(formatNumber(values.coldIn,1))+'°C</text>');
    parts.push('<text x="'+left+'" y="'+(h-24)+'" fill="#607783" font-size="13">gorący koniec · ΔT '+svgText(formatNumber(values.approachHot,1))+' K</text>');
    parts.push('<text x="'+(w-right)+'" y="'+(h-24)+'" text-anchor="end" fill="#607783" font-size="13">zimny koniec · ΔT '+svgText(formatNumber(values.approachCold,1))+' K</text>');
    parts.push('<text x="'+(w/2)+'" y="'+(h-24)+'" text-anchor="middle" fill="#102536" font-size="14" font-weight="900">LMTD '+svgText(formatNumber(values.lmtd,1))+' K</text>');
    svg.innerHTML=parts.join("");
  }

  function calculateThermal(){
    var q=readNumber("rk-phe-power");
    var hotIn=readNumber("rk-phe-hot-in");
    var hotOut=readNumber("rk-phe-hot-out");
    var coldIn=readNumber("rk-phe-cold-in");
    var coldOut=readNumber("rk-phe-cold-out");
    var hotCv=readNumber("rk-phe-hot-fluid");
    var coldCv=readNumber("rk-phe-cold-fluid");
    var hotHxDp=readNumber("rk-phe-hot-hx-dp");
    var hotOtherDp=readNumber("rk-phe-hot-other-dp");
    var coldHxDp=readNumber("rk-phe-cold-hx-dp");
    var coldOtherDp=readNumber("rk-phe-cold-other-dp");
    var dHot=hotIn-hotOut;
    var dCold=coldOut-coldIn;
    var approachHot=hotIn-coldOut;
    var approachCold=hotOut-coldIn;
    var values=[q,hotIn,hotOut,coldIn,coldOut,hotCv,coldCv,hotHxDp,hotOtherDp,coldHxDp,coldOtherDp];
    var thermalChecks=[
      values.every(Number.isFinite),
      q>0,
      hotCv>0,
      coldCv>0,
      dHot>0,
      dCold>0,
      approachHot>0,
      approachCold>0,
      hotHxDp>=0,
      hotOtherDp>=0,
      coldHxDp>=0,
      coldOtherDp>=0
    ];
    var valid=thermalChecks.every(function(check){return check;});
    if(!valid){
      clearThermalOutputs();
      write("rk-phe-thermal-message","Dla trybu grzania temperatura A musi maleć, temperatura B rosnąć, a strona A musi być cieplejsza od strony B na obu końcach wymiennika. Uzupełnij również nieujemne opory.");
      renderTemperatureChart(null);
      return;
    }
    var lmtd;
    if(Math.abs(approachHot-approachCold)<0.000001){ lmtd=approachHot; }
    else { lmtd=(approachHot-approachCold)/Math.log(approachHot/approachCold); }
    if(!Number.isFinite(lmtd) || lmtd<=0){
      clearThermalOutputs();
      write("rk-phe-thermal-message","Nie można obliczyć dodatniego LMTD dla podanych temperatur. Sprawdź kierunki i cztery wartości graniczne.");
      renderTemperatureChart(null);
      return;
    }
    var hotFlow=q/(hotCv*dHot);
    var coldFlow=q/(coldCv*dCold);
    var ua=q*1000/lmtd;
    var hotDp=hotHxDp+hotOtherDp;
    var coldDp=coldHxDp+coldOtherDp;
    var hotHead=hotDp/9.80665;
    var coldHead=coldDp/9.80665;
    write("rk-phe-hot-flow",formatNumber(hotFlow,2)+" m³/h");
    write("rk-phe-cold-flow",formatNumber(coldFlow,2)+" m³/h");
    write("rk-phe-hot-approach",formatNumber(approachHot,1)+" K");
    write("rk-phe-cold-approach",formatNumber(approachCold,1)+" K");
    write("rk-phe-lmtd",formatNumber(lmtd,1)+" K");
    write("rk-phe-ua",formatNumber(ua,0)+" W/K");
    write("rk-phe-hot-head",formatNumber(hotDp,1)+" kPa · "+formatNumber(hotHead,2)+" m");
    write("rk-phe-cold-head",formatNumber(coldDp,1)+" kPa · "+formatNumber(coldHead,2)+" m");
    var minApproach=Math.min(approachHot,approachCold);
    var state="good";
    var message="Temperatury tworzą możliwy do obliczenia punkt przeciwprądowy. Przekaż producentowi moc, cztery temperatury, przepływy, media, wymagane UA i dopuszczalne opory — nie samą liczbę płyt.";
    if(minApproach<2){
      state="bad";
      message="Najmniejsze podejście jest mniejsze niż 2 K. Taki punkt może wymagać bardzo dużego UA i dokładnego sprawdzenia w programie producenta; nie zakładaj, że standardowy model go osiągnie.";
    }else if(minApproach<5){
      state="warn";
      message="Najmniejsze podejście jest poniżej 5 K. Punkt może być wykonalny, ale dobór będzie wrażliwy na powierzchnię, przepływy, zabrudzenie i dopuszczalny spadek ciśnienia.";
    }
    ["rk-phe-hot-approach","rk-phe-cold-approach","rk-phe-lmtd","rk-phe-ua"].forEach(function(id){ setResultState(id,state); });
    write("rk-phe-thermal-message",message);
    renderTemperatureChart({hotIn:hotIn,hotOut:hotOut,coldIn:coldIn,coldOut:coldOut,approachHot:approachHot,approachCold:approachCold,lmtd:lmtd});
  }

  Object.keys(thermalDefaults).forEach(function(id){
    var el=byId(id);
    if(el){ el.addEventListener("input",calculateThermal); el.addEventListener("change",calculateThermal); }
  });
  var thermalReset=byId("rk-phe-thermal-reset");
  if(thermalReset){
    thermalReset.addEventListener("click",function(){
      Object.keys(thermalDefaults).forEach(function(id){ if(byId(id)) byId(id).value=thermalDefaults[id]; });
      calculateThermal();
    });
  }

  /* Kalkulator kosztów dodatkowej separacji */
  var costDefaults = {
    "rk-phe-cost-heat":"12000",
    "rk-phe-source-type":"heatpump",
    "rk-phe-factor-direct":"3.80",
    "rk-phe-factor-separated":"3.60",
    "rk-phe-source-price":"1.00",
    "rk-phe-electricity-price":"1.00",
    "rk-phe-direct-pump":"35",
    "rk-phe-primary-pump":"35",
    "rk-phe-secondary-pump":"45",
    "rk-phe-pump-hours":"3500",
    "rk-phe-separation-capex":"3500",
    "rk-phe-service-cost":"150",
    "rk-phe-cost-years":"15",
    "rk-phe-price-growth":"2.0"
  };
  var factorPresets={
    heatpump:{direct:"3.80",separated:"3.60",name:"SCOP",helpDirect:"Sezonowy współczynnik całego wariantu bez separacji.",helpSeparated:"Wpisz SCOP dla wyższej temperatury źródła i rzeczywistego sterowania."},
    gas:{direct:"0.94",separated:"0.92",name:"Sprawność sezonowa",helpDirect:"Wpisz sprawność jako liczbę dziesiętną, np. 0,94.",helpSeparated:"Uwzględnij temperatury, powrót, taktowanie i energię pomocniczą zgodnie z przyjętą granicą bilansu."},
    electric:{direct:"0.99",separated:"0.98",name:"Sprawność sezonowa",helpDirect:"Wpisz sprawność przekazania energii do obiegu jako liczbę dziesiętną.",helpSeparated:"Nie odejmuj drugi raz energii pomp — jest liczona w osobnych polach."},
    solid:{direct:"0.82",separated:"0.80",name:"Sprawność sezonowa",helpDirect:"Wpisz sezonową sprawność źródła i całej przyjętej granicy bilansu.",helpSeparated:"Uwzględnij rzeczywisty sposób pracy kotła, bufora i temperatury powrotu."}
  };

  function updateFactorLabels(usePreset){
    var type=byId("rk-phe-source-type") ? byId("rk-phe-source-type").value : "heatpump";
    var preset=factorPresets[type] || factorPresets.heatpump;
    write("rk-phe-factor-direct-label",preset.name+" bez wymiennika");
    write("rk-phe-factor-separated-label",preset.name+" z wymiennikiem");
    write("rk-phe-factor-direct-help",preset.helpDirect);
    write("rk-phe-factor-separated-help",preset.helpSeparated);
    if(usePreset){
      byId("rk-phe-factor-direct").value=preset.direct;
      byId("rk-phe-factor-separated").value=preset.separated;
    }
  }

  function niceStep(span){
    if(!Number.isFinite(span) || span<=0) return 1;
    var raw=span/5;
    var power=Math.pow(10,Math.floor(Math.log10(raw)));
    var value=raw/power;
    var nice=value<=1 ? 1 : value<=2 ? 2 : value<=5 ? 5 : 10;
    return nice*power;
  }

  function renderCostChart(data){
    var svg=byId("rk-phe-cost-chart");
    if(!svg) return;
    if(!data || !data.length){
      svg.innerHTML='<title id="rk-phe-cost-chart-title">Skumulowana różnica kosztu układu z wymiennikiem</title><desc id="rk-phe-cost-chart-desc">Nie można narysować wykresu.</desc><rect width="900" height="410" rx="18" fill="#fff"/><text x="450" y="205" text-anchor="middle" fill="#c7443a" font-size="18" font-weight="800">Uzupełnij poprawne dane kosztowe</text>';
      return;
    }
    var w=900,h=410,left=90,right=34,top=34,bottom=60;
    var plotW=w-left-right,plotH=h-top-bottom;
    var vals=data.map(function(d){return d.diff;}); vals.push(0);
    var min=Math.min.apply(null,vals),max=Math.max.apply(null,vals);
    if(min===max){ min-=1000; max+=1000; }
    var step=niceStep(max-min);
    min=Math.floor(min/step)*step;
    max=Math.ceil(max/step)*step;
    if(min===max) max=min+step;
    function x(year){ return left+(year/data[data.length-1].year)*plotW; }
    function y(value){ return top+(max-value)/(max-min)*plotH; }
    var parts=[];
    parts.push('<title id="rk-phe-cost-chart-title">Skumulowana różnica kosztu układu z wymiennikiem</title>');
    parts.push('<desc id="rk-phe-cost-chart-desc">Wartość dodatnia oznacza wyższy koszt wariantu z wymiennikiem, a ujemna niższy koszt.</desc>');
    parts.push('<rect width="900" height="410" rx="18" fill="#fff"/>');
    for(var i=0;i<=5;i++){
      var val=min+(max-min)*i/5,yy=y(val);
      parts.push('<line x1="'+left+'" y1="'+yy+'" x2="'+(w-right)+'" y2="'+yy+'" stroke="#dce8ed" stroke-width="1"/>');
      parts.push('<text x="'+(left-12)+'" y="'+(yy+5)+'" text-anchor="end" fill="#607783" font-size="12">'+svgText(Math.round(val).toLocaleString("pl-PL"))+' zł</text>');
    }
    var zeroY=y(0);
    parts.push('<line x1="'+left+'" y1="'+zeroY+'" x2="'+(w-right)+'" y2="'+zeroY+'" stroke="#8195a0" stroke-width="2" stroke-dasharray="8 7" vector-effect="non-scaling-stroke"/>');
    var pts=data.map(function(d){return x(d.year)+","+y(d.diff);});
    var areaPts=[x(0)+","+zeroY].concat(pts).concat([x(data[data.length-1].year)+","+zeroY]);
    parts.push('<polygon points="'+areaPts.join(" ")+'" fill="rgba(255,106,61,.10)"/>');
    parts.push('<polyline points="'+pts.join(" ")+'" fill="none" stroke="#ff6a3d" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" vector-effect="non-scaling-stroke"/>');
    data.forEach(function(d,index){
      if(index===0 || index===data.length-1 || d.year%5===0){
        parts.push('<circle cx="'+x(d.year)+'" cy="'+y(d.diff)+'" r="5" fill="#ff6a3d" stroke="#fff" stroke-width="2" vector-effect="non-scaling-stroke"/>');
        parts.push('<text x="'+x(d.year)+'" y="'+(h-26)+'" text-anchor="middle" fill="#607783" font-size="12">'+d.year+'</text>');
      }
    });
    parts.push('<text x="'+left+'" y="18" fill="#102536" font-size="13" font-weight="900">różnica skumulowana</text>');
    parts.push('<text x="'+(w-right)+'" y="'+(h-26)+'" text-anchor="end" fill="#607783" font-size="12">rok</text>');
    svg.innerHTML=parts.join("");
  }

  function renderCostTable(rows,years){
    var tbody=byId("rk-phe-cost-table");
    if(!tbody) return;
    var picks=[0,1,5,10,15,20,25].filter(function(y){return y<=years;});
    if(picks.indexOf(years)===-1) picks.push(years);
    picks.sort(function(a,b){return a-b;});
    tbody.innerHTML=picks.map(function(year){
      var row=rows[year];
      return '<tr><td data-label="Rok"><strong>'+year+'</strong></td><td data-label="Bez wymiennika">'+svgText(formatMoney(row.direct))+'</td><td data-label="Z wymiennikiem">'+svgText(formatMoney(row.separated))+'</td><td data-label="Różnica">'+svgText(formatSignedMoney(row.diff))+'</td></tr>';
    }).join("");
  }

  function clearCostOutputs(){
    ["rk-phe-source-direct-energy","rk-phe-source-separated-energy","rk-phe-extra-pump-energy","rk-phe-cost-direct-year","rk-phe-cost-separated-year","rk-phe-cost-difference-year","rk-phe-tco-direct","rk-phe-tco-separated","rk-phe-tco-difference","rk-phe-cost-driver"].forEach(function(id){write(id,"—");setResultState(id,"");});
    write("rk-phe-cost-message","Uzupełnij dodatnie współczynniki źródła, nieujemne koszty oraz prawidłowy okres analizy.");
    var tbody=byId("rk-phe-cost-table"); if(tbody) tbody.innerHTML="";
    renderCostChart(null);
  }

  function calculateCosts(){
    var heat=readNumber("rk-phe-cost-heat");
    var factorDirect=readNumber("rk-phe-factor-direct");
    var factorSeparated=readNumber("rk-phe-factor-separated");
    var sourcePrice=readNumber("rk-phe-source-price");
    var electricityPrice=readNumber("rk-phe-electricity-price");
    var directPump=readNumber("rk-phe-direct-pump");
    var primaryPump=readNumber("rk-phe-primary-pump");
    var secondaryPump=readNumber("rk-phe-secondary-pump");
    var hours=readNumber("rk-phe-pump-hours");
    var capex=readNumber("rk-phe-separation-capex");
    var service=readNumber("rk-phe-service-cost");
    var years=Math.round(readNumber("rk-phe-cost-years"));
    var growth=readNumber("rk-phe-price-growth")/100;
    var inputs=[heat,factorDirect,factorSeparated,sourcePrice,electricityPrice,directPump,primaryPump,secondaryPump,hours,capex,service,years,growth];
    var costChecks=[
      inputs.every(Number.isFinite),
      heat>=0,
      factorDirect>0,
      factorSeparated>0,
      sourcePrice>=0,
      electricityPrice>=0,
      directPump>=0,
      primaryPump>=0,
      secondaryPump>=0,
      hours>=0,
      hours<=8760,
      capex>=0,
      service>=0,
      years>=1,
      years<=50,
      growth>-1
    ];
    var valid=costChecks.every(function(check){return check;});
    if(!valid){ clearCostOutputs(); return; }
    var sourceDirectEnergy=heat/factorDirect;
    var sourceSeparatedEnergy=heat/factorSeparated;
    var directPumpEnergy=directPump*hours/1000;
    var separatedPumpEnergy=(primaryPump+secondaryPump)*hours/1000;
    var extraPumpEnergy=separatedPumpEnergy-directPumpEnergy;
    var sourceDirectCost1=sourceDirectEnergy*sourcePrice;
    var sourceSeparatedCost1=sourceSeparatedEnergy*sourcePrice;
    var pumpDirectCost1=directPumpEnergy*electricityPrice;
    var pumpSeparatedCost1=separatedPumpEnergy*electricityPrice;
    var directYear1=sourceDirectCost1+pumpDirectCost1;
    var separatedYear1=sourceSeparatedCost1+pumpSeparatedCost1+service;
    var diffYear1=separatedYear1-directYear1;
    var rows=[{year:0,direct:0,separated:capex,diff:capex}];
    var directTotal=0,separatedTotal=capex;
    for(var year=1;year<=years;year++){
      var priceFactor=Math.pow(1+growth,year-1);
      var directAnnual=(sourceDirectCost1+pumpDirectCost1)*priceFactor;
      var separatedAnnual=(sourceSeparatedCost1+pumpSeparatedCost1)*priceFactor+service;
      directTotal+=directAnnual;
      separatedTotal+=separatedAnnual;
      rows.push({year:year,direct:directTotal,separated:separatedTotal,diff:separatedTotal-directTotal});
    }
    var totalDiff=separatedTotal-directTotal;
    var sourceComponent=sourceSeparatedCost1-sourceDirectCost1;
    var pumpComponent=pumpSeparatedCost1-pumpDirectCost1;
    var components=[{name:"zmiana energii źródła",value:sourceComponent},{name:"różnica energii pomp",value:pumpComponent},{name:"dodatkowe utrzymanie",value:service}];
    components.sort(function(a,b){return Math.abs(b.value)-Math.abs(a.value);});
    write("rk-phe-source-direct-energy",formatNumber(sourceDirectEnergy,0)+" kWh");
    write("rk-phe-source-separated-energy",formatNumber(sourceSeparatedEnergy,0)+" kWh");
    write("rk-phe-extra-pump-energy",(extraPumpEnergy>=0?"+":"−")+formatNumber(Math.abs(extraPumpEnergy),0)+" kWh");
    write("rk-phe-cost-direct-year",formatMoney(directYear1));
    write("rk-phe-cost-separated-year",formatMoney(separatedYear1));
    write("rk-phe-cost-difference-year",formatSignedMoney(diffYear1));
    write("rk-phe-tco-direct",formatMoney(directTotal));
    write("rk-phe-tco-separated",formatMoney(separatedTotal));
    write("rk-phe-tco-difference",formatSignedMoney(totalDiff));
    write("rk-phe-cost-driver",components[0].name+": "+formatSignedMoney(components[0].value)+" / rok");
    var state=totalDiff>0.5?"warn":totalDiff<-0.5?"good":"";
    setResultState("rk-phe-cost-difference-year",diffYear1>0.5?"warn":diffYear1<-0.5?"good":"");
    setResultState("rk-phe-tco-difference",state);
    var message;
    if(totalDiff>0.5){
      message="Przy wpisanych założeniach układ z wymiennikiem kosztuje po "+years+" latach o "+formatMoney(totalDiff)+" więcej. To nie dowodzi, że separacja jest zbędna — pokazuje cenę funkcji, jeśli jest technicznie wymagana.";
    }else if(totalDiff<-0.5){
      message="Przy wpisanych założeniach układ z wymiennikiem kosztuje po "+years+" latach o "+formatMoney(Math.abs(totalDiff))+" mniej. Sprawdź, z czego wynika poprawa współczynnika źródła lub poboru pomp; sam wymiennik nie tworzy oszczędności energii.";
    }else{
      message="Przy wpisanych założeniach różnica kosztu po "+years+" latach jest pomijalna. Warto sprawdzić kilka scenariuszy sprawności, godzin pracy i cen energii.";
    }
    write("rk-phe-cost-message",message);
    renderCostChart(rows.map(function(r){return {year:r.year,diff:r.diff};}));
    renderCostTable(rows,years);
    write("rk-phe-cost-table-summary","Koszt skumulowany przez "+years+" lat; wariant z wymiennikiem obejmuje dodatkowy nakład "+formatMoney(capex)+" w roku 0.");
  }

  Object.keys(costDefaults).forEach(function(id){
    var el=byId(id);
    if(!el) return;
    if(id==="rk-phe-source-type"){
      el.addEventListener("change",function(){updateFactorLabels(true);calculateCosts();});
    }else{
      el.addEventListener("input",calculateCosts);
      el.addEventListener("change",calculateCosts);
    }
  });
  var costReset=byId("rk-phe-cost-reset");
  if(costReset){
    costReset.addEventListener("click",function(){
      Object.keys(costDefaults).forEach(function(id){if(byId(id))byId(id).value=costDefaults[id];});
      updateFactorLabels(false);
      calculateCosts();
    });
  }

  renderFlow("separated");
  calculateThermal();
  updateFactorLabels(false);
  calculateCosts();
})();
</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",
      "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://www.linkedin.com/in/robert-kucharski-38069b48/",
        "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/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#primaryimage",
      "url":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.webp",
      "contentUrl":"https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.webp",
      "width":900,
      "height":900,
      "encodingFormat":"image/webp",
      "caption":"Wymiennik płytowy w ogrzewaniu podłogowym — zasada działania, dobór i koszty"
    },
    {
      "@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",
        "wymienniki płytowe",
        "hydraulika instalacji",
        "pompy obiegowe",
        "obliczenia OZC",
        "średnia logarytmiczna różnica temperatur LMTD",
        "dobór źródeł ciepła",
        "automatyka ogrzewania",
        "pompy ciepła",
        "kotły na paliwo stałe"
      ],
      "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/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#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":"Wymiennik płytowy w ogrzewaniu podłogowym","item":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/"}
      ]
    },
    {
      "@type":"WebPage",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#webpage",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/",
      "name":"Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?",
      "description":"Jak działa wymiennik płytowy do podłogówki? Policz przepływy, LMTD, opory i koszty pracy pomp. Sprawdź, kiedy rzeczywiście potrzebna jest separacja obiegów.",
      "inLanguage":"pl-PL",
      "isPartOf":{"@id":"https://projekt-ogrzewania.pl/#website"},
      "breadcrumb":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#breadcrumb"},
      "primaryImageOfPage":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#primaryimage"},
      "datePublished":"2026-04-23T07:09:15+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/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#article"},
      "speakable":{"@type":"SpeakableSpecification","cssSelector":["#rk-phe-direct-answer","#rk-phe-conclusion-answer"]}
    },
    {
      "@type":"TechArticle",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#article",
      "headline":"Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?",
      "alternativeHeadline":"Wymiennik płytowy do podłogówki — zasada działania, LMTD, przepływy, opory i koszt separacji",
      "description":"Techniczne wyjaśnienie działania i doboru wymiennika płytowego wraz z grafiką dwóch obiegów, kalkulatorem LMTD i UA, wykresem temperatur oraz kalkulatorem kosztów separacji.",
      "image":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#primaryimage"},
      "mainEntityOfPage":{"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#webpage"},
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher":{"@id":"https://projekt-ogrzewania.pl/#organization"},
      "datePublished":"2026-04-23T07:09:15+00:00",
      "dateModified":"2026-09-13T00:00:00+00:00",
      "inLanguage":"pl-PL",
      "articleSection":[
        "Wymienniki płytowe",
        "Ogrzewanie podłogowe",
        "Instalacje hydrauliczne",
        "Pompy obiegowe",
        "Modernizacja ogrzewania",
        "Kalkulatory"
      ],
      "keywords":[
        "wymiennik płytowy w ogrzewaniu podłogowym",
        "jak działa wymiennik płytowy do podłogówki",
        "jak dobrać wymiennik płytowy do ogrzewania podłogowego",
        "wymiennik płytowy do podłogówki jaka moc",
        "jaki przepływ przez wymiennik płytowy",
        "spadek ciśnienia na wymienniku płytowym",
        "LMTD wymiennika płytowego kalkulator",
        "czy wymiennik płytowy obniża temperaturę",
        "wymiennik płytowy a zawór mieszający",
        "wymiennik płytowy a sprzęgło hydrauliczne",
        "wymiennik płytowy z pompą ciepła",
        "wymiennik płytowy do kotła na paliwo stałe",
        "koszt eksploatacji wymiennika płytowego"
      ],
      "about":[
        {"@type":"Thing","name":"Wymiennik płytowy"},
        {"@type":"Thing","name":"Ogrzewanie podłogowe"},
        {"@type":"Thing","name":"Separacja hydrauliczna"},
        {"@type":"Thing","name":"Pompa obiegowa"},
        {"@type":"Thing","name":"Przeciwprąd"}
      ],
      "mentions":[
        {"@type":"DefinedTerm","name":"LMTD","description":"Średnia logarytmiczna różnica temperatur w wymienniku"},
        {"@type":"DefinedTerm","name":"UA","description":"Iloczyn całkowitego współczynnika przenikania ciepła i powierzchni wymiany"},
        {"@type":"DefinedTerm","name":"Podejście temperaturowe","description":"Różnica temperatur pomiędzy mediami na określonym końcu wymiennika"},
        {"@type":"DefinedTerm","name":"Strona pierwotna","description":"Obieg źródła ciepła po jednej stronie wymiennika"},
        {"@type":"DefinedTerm","name":"Strona wtórna","description":"Oddzielony obieg ogrzewania podłogowego"}
      ],
      "hasPart":[
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#thermal-calculator"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#cost-calculator"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#interactive-graphic"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#howto"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#selection-inputs"},
        {"@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#faq-schema"}
      ],
      "citation":[
        "https://web.mit.edu/16.unified/www/FALL/thermodynamics/notes/node131.html",
        "https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-circulators_en",
        "https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32009R0641",
        "https://energy.ec.europa.eu/topics/energy-efficiency/heat-pumps_en"
      ]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#thermal-calculator",
      "name":"Kalkulator wymiennika płytowego: przepływy, LMTD, UA i opory",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-thermal-calculator",
      "description":"Oblicza przepływy strony pierwotnej i wtórnej, różnice końcowe, LMTD, wymagane UA, sumy oporów oraz orientacyjne wysokości podnoszenia obu pomp.",
      "applicationCategory":"UtilitiesApplication",
      "applicationSubCategory":"Plate heat exchanger thermal and hydraulic 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":[
        "projektowa moc wymiennika",
        "cztery temperatury graniczne",
        "woda i orientacyjne mieszaniny glikolu",
        "przepływ strony A i B",
        "podejście temperaturowe na obu końcach",
        "średnia logarytmiczna różnica temperatur LMTD",
        "wymagane UA",
        "opory wymiennika i pozostałej instalacji",
        "wysokość podnoszenia każdej pompy",
        "walidacja niemożliwych temperatur",
        "interaktywny wykres profili temperatur"
      ]
    },
    {
      "@type":"WebApplication",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#cost-calculator",
      "name":"Kalkulator dodatkowych kosztów wymiennika i separacji obiegów",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-cost-calculator",
      "description":"Porównuje energię źródła, energię pomp, koszt pierwszego roku i koszt skumulowany instalacji bez wymiennika oraz z kompletnym zespołem separacji.",
      "applicationCategory":"FinanceApplication",
      "applicationSubCategory":"Heating system operating 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":[
        "wspólne użyteczne ciepło obu wariantów",
        "SCOP lub sprawność sezonowa źródła",
        "cena energii źródła i pomp",
        "średnia moc pomp obiegowych",
        "czas pracy pomp",
        "dodatkowy nakład inwestycyjny",
        "dodatkowe utrzymanie",
        "scenariusz wzrostu cen energii",
        "koszt skumulowany od 5 do 25 lat",
        "wykres i tabela różnicy kosztów",
        "identyfikacja największej składowej różnicy"
      ]
    },
    {
      "@type":"LearningResource",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#interactive-graphic",
      "name":"Interaktywna grafika działania wymiennika płytowego",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-graphic-tool",
      "description":"Porównuje wspólny obieg, dwa obiegi oddzielone wymiennikiem oraz kierunki i temperatury w przepływie przeciwprądowym.",
      "learningResourceType":"Interactive graphic",
      "educationalUse":"Explanation and comparison",
      "interactivityType":"active",
      "isAccessibleForFree":true,
      "inLanguage":"pl-PL",
      "author":{"@id":"https://projekt-ogrzewania.pl/#robert-kucharski"},
      "about":{"@type":"Thing","name":"Plate heat exchanger"}
    },
    {
      "@type":"HowTo",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#howto",
      "name":"Jak sprawdzić wymiennik płytowy i oba obiegi podczas uruchomienia",
      "description":"Osiem kroków od sprawdzenia kierunków i napełnienia obu obiegów po pomiary temperatur, przepływów, pomp, regulacji i zapis stanu odniesienia.",
      "totalTime":"PT90M",
      "supply":[
        {"@type":"HowToSupply","name":"Dokumentacja wymiennika i źródła ciepła"},
        {"@type":"HowToSupply","name":"Projekt hydrauliczny obu obiegów"},
        {"@type":"HowToSupply","name":"Właściwe media robocze"},
        {"@type":"HowToSupply","name":"Protokół uruchomienia"}
      ],
      "tool":[
        {"@type":"HowToTool","name":"Pomiar temperatur na czterech króćcach"},
        {"@type":"HowToTool","name":"Pomiar lub odczyt przepływów"},
        {"@type":"HowToTool","name":"Pomiar ciśnienia i danych pracy pomp"},
        {"@type":"HowToTool","name":"Kalkulator cieplno-hydrauliczny w artykule"}
      ],
      "step":[
        {"@type":"HowToStep","position":1,"name":"Sprawdź kierunki przepływu","text":"Potwierdź króćce, przeciwprąd i kierunek pracy obu pomp według dokumentacji urządzenia."},
        {"@type":"HowToStep","position":2,"name":"Napełnij obiegi oddzielnie","text":"Ustal właściwe medium, ciśnienie napełnienia, odpowietrzenie i działanie zabezpieczeń każdej strony."},
        {"@type":"HowToStep","position":3,"name":"Uruchom przepływy","text":"Zweryfikuj przepływ strony A oraz sumę przepływów strony B przy otwartych obiegach przewidzianych do testu."},
        {"@type":"HowToStep","position":4,"name":"Zmierz cztery temperatury","text":"Zapisz wejście i wyjście strony gorącej oraz wejście i wyjście strony wtórnej po ustabilizowaniu pracy."},
        {"@type":"HowToStep","position":5,"name":"Porównaj bilans mocy","text":"Oblicz moc z przepływu i różnicy temperatur po obu stronach i wyjaśnij większe rozbieżności."},
        {"@type":"HowToStep","position":6,"name":"Sprawdź opory i pompy","text":"Porównaj punkt Q–H z nastawą pomp, zaworami i danymi wymiennika dla aktualnego medium."},
        {"@type":"HowToStep","position":7,"name":"Przetestuj regulację","text":"Zmień zapotrzebowanie i sprawdź reakcję źródła, mieszania, czujników oraz ograniczenia temperatury."},
        {"@type":"HowToStep","position":8,"name":"Zapisz stan odniesienia","text":"Zachowaj temperatury, przepływy, ciśnienia, nastawy i pobór pomp do kolejnych przeglądów."}
      ]
    },
    {
      "@type":"ItemList",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#selection-inputs",
      "name":"Dane potrzebne do doboru wymiennika płytowego",
      "numberOfItems":8,
      "itemListOrder":"https://schema.org/ItemListOrderAscending",
      "itemListElement":[
        {"@type":"ListItem","position":1,"name":"Projektowa moc"},
        {"@type":"ListItem","position":2,"name":"Temperatury strony A"},
        {"@type":"ListItem","position":3,"name":"Temperatury strony B"},
        {"@type":"ListItem","position":4,"name":"Rodzaj obu mediów"},
        {"@type":"ListItem","position":5,"name":"Wymagane przepływy"},
        {"@type":"ListItem","position":6,"name":"Dopuszczalne straty ciśnienia"},
        {"@type":"ListItem","position":7,"name":"Warunki zabrudzenia i jakości medium"},
        {"@type":"ListItem","position":8,"name":"Ograniczenia konkretnego urządzenia"}
      ]
    },
    {
      "@type":"FAQPage",
      "@id":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#faq-schema",
      "url":"https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/#rk-phe-faq",
      "inLanguage":"pl-PL",
      "mainEntity":[
        {"@type":"Question","name":"Czy wymiennik płytowy obniża temperaturę wody?","acceptedAnswer":{"@type":"Answer","text":"Wymiennik nie reguluje temperatury do zadanej wartości. Temperatury wyjściowe wynikają z temperatur wejściowych, przepływów, właściwości mediów i UA. Stabilną temperaturę podłogówki zapewnia odpowiednio zaprojektowana regulacja oraz zabezpieczenie."}},
        {"@type":"Question","name":"Czy zawór mieszający może zastąpić wymiennik?","acceptedAnswer":{"@type":"Answer","text":"Tylko w funkcji regulowania temperatury, jeśli nie jest potrzebne fizyczne oddzielenie mediów i ciśnień. Zawór miesza przepływy we wspólnym obiegu, a wymiennik tworzy dwa osobne obiegi."}},
        {"@type":"Question","name":"Jak dobrać moc wymiennika płytowego do podłogówki?","acceptedAnswer":{"@type":"Answer","text":"Trzeba znać projektową moc, cztery temperatury, oba media, wymagane przepływy i dopuszczalne straty ciśnienia. Moc z nazwy handlowej lub sama liczba płyt nie wystarczają do doboru konkretnego modelu."}},
        {"@type":"Question","name":"Jaki przepływ powinien być przez wymiennik płytowy?","acceptedAnswer":{"@type":"Answer","text":"Przepływ każdej strony wynika z przekazywanej mocy, różnicy temperatur i objętościowej pojemności cieplnej medium. Strony mogą mieć różne przepływy, mimo że w stanie ustalonym przekazują zbliżoną moc."}},
        {"@type":"Question","name":"Dlaczego przy wymienniku najczęściej potrzebne są dwie pompy?","acceptedAnswer":{"@type":"Answer","text":"Płyty fizycznie rozdzielają media, dlatego pompa strony pierwotnej nie wywołuje przepływu po stronie wtórnej. Każda pompa musi pokonać opory własnego, zamkniętego obiegu."}},
        {"@type":"Question","name":"Jaka różnica temperatur na końcu wymiennika jest prawidłowa?","acceptedAnswer":{"@type":"Answer","text":"Nie ma jednej wartości dla wszystkich instalacji. Mniejsze podejście temperaturowe wymaga zwykle większego UA, a jego wykonalność trzeba sprawdzić dla konkretnego modelu, przepływów, mediów i dopuszczalnego spadku ciśnienia."}},
        {"@type":"Question","name":"Czy wymiennik płytowy jest potrzebny przy pompie ciepła?","acceptedAnswer":{"@type":"Answer","text":"Nie automatycznie. Może być uzasadniony koniecznością oddzielenia glikolu, starej instalacji, innego ciśnienia lub wymaganiem producenta. W nowej wspólnej instalacji wodnej może niepotrzebnie zwiększać temperaturę źródła, opory i zużycie pomp."}},
        {"@type":"Question","name":"Czy kocioł na paliwo stałe zawsze wymaga wymiennika?","acceptedAnswer":{"@type":"Answer","text":"Nie można odpowiedzieć wyłącznie na podstawie rodzaju paliwa. Trzeba sprawdzić konstrukcję kotłowni, układ otwarty lub zamknięty, wymagania producenta, zabezpieczenia, ochronę powrotu, bufor i sposób regulacji podłogówki."}},
        {"@type":"Question","name":"Czy wymiennik lutowany wymaga regularnego czyszczenia?","acceptedAnswer":{"@type":"Answer","text":"Częstotliwość zależy od jakości medium, uzupełniania wody, filtracji, temperatury i zaleceń producenta. Czyszczenie powinno wynikać z pomiarów lub objawów, a użyta metoda musi być zgodna z materiałem płyt i lutu."}},
        {"@type":"Question","name":"Czy kalkulatory dobierają gotowy wymiennik i pompy?","acceptedAnswer":{"@type":"Answer","text":"Nie. Kalkulator cieplno-hydrauliczny wyznacza punkt pracy, a kalkulator kosztów porównuje wpisane założenia. Konkretny wymiennik trzeba sprawdzić w danych producenta, a pompy dobrać z charakterystyk Q–H całych obiegów."}}
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">Wymiennik płytowy w ogrzewaniu podłogowym – jak działa i jak go dobrać?</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>Czy ogrzewanie podłogowe można podłączyć do grzejników?</title>
		<link>https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 04 Apr 2026 06:13:10 +0000</pubDate>
				<category><![CDATA[Błędy instalacyjne]]></category>
		<category><![CDATA[Błędy wykonawcze]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Modernizacja budynków]]></category>
		<category><![CDATA[Modernizacja domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[błędy instalatorów]]></category>
		<category><![CDATA[grupa pompowa]]></category>
		<category><![CDATA[instalacja mieszana]]></category>
		<category><![CDATA[modernizacja ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opór cieplny]]></category>
		<category><![CDATA[podłogówka i grzejniki]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[sprzęgło hydrauliczne]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[zapotrzebowanie na ciepło]]></category>
		<category><![CDATA[zawór mieszający]]></category>
		<category><![CDATA[zawór trójdrogowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4089</guid>

					<description><![CDATA[<p>Wielu inwestorów planujących modernizację starego domu lub budowę nowego, w którym część pomieszczeń ma być ogrzewana tradycyjnie, zastanawia się, czy ogrzewanie podłogowe można podłączyć do grzejników. Rozwiązanie to jest jak najbardziej wykonalne, jednak wymaga ogromnej precyzji, odpowiedniego projektu oraz zastosowania układów mieszających. Bezpośrednie wpięcie podłogówki w obieg grzejnikowy to najszybsza droga do zniszczenia posadzki i przegrzania pomieszczeń. Dowiedz się, jak krok po kroku zaprojektować bezpieczną i wydajną instalację mieszaną, unikając najdroższych błędów montażowych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">Czy ogrzewanie podłogowe można podłączyć do grzejników?</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>
  /* Analizator instalacji mieszanej: pełna szerokość i jeden przebieg pionowy. */
  #rk-heat-guide .rk-mix-control-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 13px;
  }
  #rk-heat-guide .rk-mix-control {
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 14px;
    background: rgba(255, 255, 255, .04);
  }
  #rk-heat-guide .rk-mix-control.is-critical { border-left: 4px solid var(--rk-orange); }
  #rk-heat-guide .rk-mix-control label {
    display: block;
    min-height: 48px;
    margin-bottom: 8px;
    color: #e8f6fa;
    font-size: .68rem;
    font-weight: 880;
    line-height: 1.42;
  }
  #rk-heat-guide .rk-mix-control select {
    width: 100%;
    min-height: 46px;
    padding: 10px 12px;
    border: 1px solid #b8cbd3;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .75rem;
    font-weight: 740;
  }
  #rk-heat-guide .rk-mix-control select:focus {
    outline: 3px solid rgba(37, 199, 216, .25);
    border-color: var(--rk-cyan);
  }
  #rk-heat-guide .rk-mix-map {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 11px;
    margin: 18px 0;
  }
  #rk-heat-guide .rk-mix-route {
    position: relative;
    min-width: 0;
    padding: 17px;
    border: 1px solid rgba(136, 202, 220, .24);
    border-radius: 14px;
    opacity: .62;
    background: rgba(255, 255, 255, .035);
    transition: opacity .25s ease, border-color .25s ease, transform .25s ease;
  }
  #rk-heat-guide .rk-mix-route::before {
    display: block;
    width: 42px;
    height: 7px;
    margin-bottom: 13px;
    border-radius: 999px;
    background: #5e7f8e;
    content: "";
  }
  #rk-heat-guide .rk-mix-route.is-active {
    border-color: var(--rk-cyan);
    opacity: 1;
    background: rgba(37, 199, 216, .09);
    transform: translateY(-3px);
  }
  #rk-heat-guide .rk-mix-route.is-active::before { background: var(--rk-cyan); }
  #rk-heat-guide .rk-mix-route.is-warning.is-active {
    border-color: #ffd568;
    background: rgba(214, 154, 22, .11);
  }
  #rk-heat-guide .rk-mix-route.is-warning.is-active::before { background: #ffd568; }
  #rk-heat-guide .rk-mix-route b { display: block; color: var(--rk-white); font-size: .73rem; }
  #rk-heat-guide .rk-mix-route span { display: block; margin-top: 6px; color: #bcd7e1; font-size: .61rem; line-height: 1.46; }
  #rk-heat-guide .rk-mix-result {
    padding: 21px;
    border: 1px solid rgba(136, 202, 220, .27);
    border-radius: 16px;
    background: rgba(255, 255, 255, .045);
  }
  #rk-heat-guide .rk-mix-result-kicker {
    display: block;
    margin-bottom: 6px;
    color: #78efff;
    font-size: .59rem;
    font-weight: 950;
    letter-spacing: .065em;
    text-transform: uppercase;
  }
  #rk-heat-guide .rk-mix-result h4 { margin-bottom: 8px; color: var(--rk-white); font-size: 1.23rem; }
  #rk-heat-guide .rk-mix-result > p { color: #d3e7ed; font-size: .73rem; }
  #rk-heat-guide .rk-mix-schematic {
    display: grid;
    grid-template-columns: minmax(120px, .8fr) 40px minmax(0, 1fr);
    gap: 12px;
    align-items: stretch;
    margin: 17px 0;
  }
  #rk-heat-guide .rk-mix-source-box,
  #rk-heat-guide .rk-mix-branch-box {
    display: grid;
    place-items: center;
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(136, 202, 220, .3);
    border-radius: 13px;
    color: var(--rk-white);
    text-align: center;
    background: #17384a;
    font-size: .68rem;
    font-weight: 900;
  }
  #rk-heat-guide .rk-mix-arrow {
    display: grid;
    place-items: center;
    color: var(--rk-cyan);
    font-size: 1.5rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-mix-branches {
    display: grid;
    gap: 9px;
  }
  #rk-heat-guide .rk-mix-branch-box.is-radiator { border-left: 5px solid var(--rk-orange); }
  #rk-heat-guide .rk-mix-branch-box.is-floor { border-left: 5px solid var(--rk-cyan); }
  #rk-heat-guide .rk-mix-output-stack {
    display: grid;
    gap: 11px;
    margin-top: 16px;
  }
  #rk-heat-guide .rk-mix-output {
    padding: 16px;
    border: 1px solid rgba(136, 202, 220, .24);
    border-radius: 13px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-mix-output h4 { margin-bottom: 8px; color: var(--rk-white); font-size: .82rem; }
  #rk-heat-guide .rk-mix-output ul { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
  #rk-heat-guide .rk-mix-output li {
    position: relative;
    margin: 0;
    padding: 8px 9px 8px 31px;
    border-radius: 8px;
    color: #d9eaf0;
    background: rgba(255, 255, 255, .04);
    font-size: .64rem;
    line-height: 1.45;
  }
  #rk-heat-guide .rk-mix-output li::before {
    position: absolute;
    top: 8px;
    left: 10px;
    color: var(--rk-cyan);
    content: "✓";
    font-weight: 950;
  }
  #rk-heat-guide .rk-mix-output.is-check li::before { color: #ffd568; content: "!"; }
  #rk-heat-guide .rk-mix-tool-note {
    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-mix-tool-note strong { color: #fff7dd; }
  #rk-heat-guide .rk-mix-variant-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 13px;
    margin: 25px 0;
  }
  #rk-heat-guide .rk-mix-variant {
    min-width: 0;
    padding: 19px;
    border: 1px solid var(--rk-line);
    border-top: 6px solid var(--rk-cyan);
    border-radius: 15px;
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-mix-variant:nth-child(2) { border-top-color: var(--rk-orange); }
  #rk-heat-guide .rk-mix-variant:nth-child(3) { border-top-color: var(--rk-green); }
  #rk-heat-guide .rk-mix-variant:nth-child(4) { border-top-color: var(--rk-purple); }
  #rk-heat-guide .rk-mix-variant h3 { font-size: 1rem; }
  #rk-heat-guide .rk-mix-variant p { margin: 0; color: var(--rk-text); font-size: .74rem; }
  #rk-heat-guide .rk-mix-decision-flow {
    counter-reset: rk-mix-step;
    display: grid;
    gap: 10px;
    margin: 24px 0;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-mix-decision-flow li {
    position: relative;
    min-height: 64px;
    margin: 0;
    padding: 15px 16px 15px 65px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-mix-decision-flow li::before {
    position: absolute;
    top: 13px;
    left: 15px;
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    color: var(--rk-white);
    background: var(--rk-blue);
    counter-increment: rk-mix-step;
    content: counter(rk-mix-step);
    font-size: .72rem;
    font-weight: 950;
  }
  @media (max-width: 900px) {
    #rk-heat-guide .rk-mix-control-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-heat-guide .rk-mix-map,
    #rk-heat-guide .rk-mix-variant-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 720px) {
    #rk-heat-guide .rk-mix-control-grid,
    #rk-heat-guide .rk-mix-map,
    #rk-heat-guide .rk-mix-variant-grid { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-mix-schematic { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-mix-arrow { transform: rotate(90deg); }
    #rk-heat-guide .rk-mix-control label { min-height: 0; }
    #rk-heat-guide .rk-mix-route.is-active { transform: none; }
  }
</style>

<div id="rk-heat-guide">
  <article class="rk-heat-shell">
    <header class="rk-heat-hero">
      <span class="rk-heat-kicker">Instalacja mieszana • podłogówka i grzejniki • aktualizacja 2026</span>
      <p class="rk-heat-hero-title">Podłogówka i grzejniki mogą pracować razem — <span>ale nie zawsze według tego samego schematu</span></p>
      <p class="rk-heat-lead">Najpierw trzeba sprawdzić, czy oba rodzaje odbiorników pokryją obciążenia przy tej samej temperaturze wody. Dopiero potem wybiera się wspólny obieg, grupę pompowo-mieszającą, lokalne RTL albo uzasadnione rozdzielenie hydrauliczne.</p>
      <div class="rk-heat-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-heat-hero-tag">wspólny niski parametr</span>
        <span class="rk-heat-hero-tag">dwa obiegi temperaturowe</span>
        <span class="rk-heat-hero-tag">RTL</span>
        <span class="rk-heat-hero-tag">mieszacz i pompy</span>
        <span class="rk-heat-hero-tag">sprzęgło lub bufor</span>
      </div>
      <div class="rk-heat-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 27 minut</span>
        <span>Aktualizacja techniczna: 7 września 2026 r.</span>
      </div>
      <div class="rk-heat-hero-metrics" aria-label="Trzy pytania przed wyborem schematu">
        <div class="rk-heat-hero-metric"><b>Czy wystarczy jedna temperatura?</b><span>Jeżeli grzejniki pokrywają straty przy parametrze podłogi, mieszanie może być zbędne.</span></div>
        <div class="rk-heat-hero-metric"><b>Jaka jest skala podłogówki?</b><span>Jedna mała pętla w łazience wymaga innego podejścia niż cały rozdzielacz na kondygnacji.</span></div>
        <div class="rk-heat-hero-metric"><b>Jak zachowuje się źródło?</b><span>Minimalny przepływ, ochrona powrotu i regulacja decydują o potrzebie dodatkowych elementów.</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-mix-szybka">Szybka odpowiedź</a>
        <a href="#rk-mix-rozroznienie">Co naprawdę łączymy?</a>
        <a href="#rk-mix-warianty">Cztery warianty</a>
        <a href="#rk-mix-wspolny">Wspólny obieg</a>
        <a href="#rk-mix-dwa-obiegi">Dwa parametry</a>
        <a href="#rk-mix-rtl">Pętla z RTL</a>
        <a href="#rk-mix-rozdzielenie">Sprzęgło i bufor</a>
        <a href="#rk-mix-temperatury">Moc grzejników</a>
        <a href="#rk-mix-podloga">Moc podłogi</a>
        <a href="#rk-mix-hydraulika">Przepływy</a>
        <a href="#rk-mix-pompy">Pompy obiegowe</a>
        <a href="#rk-mix-zawor">Zawór mieszający</a>
        <a href="#rk-mix-zrodla">Źródła ciepła</a>
        <a href="#rk-mix-sterowanie">Sterowanie</a>
        <a href="#rk-mix-analizator">Analizator schematu</a>
        <a href="#rk-mix-scenariusze">Przykłady</a>
        <a href="#rk-mix-projekt">Zakres projektu</a>
        <a href="#rk-mix-bledy">Błędy</a>
        <a href="#rk-mix-checklista">Checklista</a>
        <a href="#rk-mix-faq">FAQ</a>
        <a href="#rk-mix-zrodla-oficjalne">Ź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-mix-szybka">
        <span class="rk-heat-eyebrow">Odpowiedź w 30 sekund</span>
        <h2>Czy ogrzewanie podłogowe można podłączyć do grzejników?</h2>
        <div class="rk-heat-answer">
          <p><strong>Tak — podłogówka i grzejniki mogą pracować w jednej instalacji oraz z jednym źródłem ciepła.</strong> Nie oznacza to jednak, że rurę podłogową wolno zawsze wpiąć szeregowo w powrót dowolnego grzejnika. Poprawny schemat zależy przede wszystkim od wymaganych temperatur, mocy odbiorników, przepływów i sposobu regulacji.</p>
        </div>
        <p>Jeżeli grzejniki pokrywają obciążenie pomieszczeń przy tym samym niskim parametrze co podłoga, możliwy jest wspólny obieg bez mieszacza. Jeżeli wymagają wyższej temperatury, podłogówka otrzymuje własny obieg z kontrolą temperatury. Pojedyncza mała pętla może czasem pracować z RTL, ale nie jest to zamiennik pełnego rozdzielacza.</p>
        <p>Szczególnym przypadkiem jest <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">połączenie pompy ciepła, podłogówki i grzejników</a>. W takim układzie najpierw warto sprawdzić możliwość obniżenia parametrów grzejników, zamiast automatycznie produkować gorętszą wodę i później ją mieszać.</p>
        <div class="rk-heat-warning"><p><strong>Najważniejsze:</strong> „w jednej instalacji” nie znaczy „jeden za drugim”. Podłogówka i grzejniki są zwykle odbiornikami równoległymi, którym trzeba zapewnić właściwą temperaturę i przepływ.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-rozroznienie">
        <span class="rk-heat-eyebrow">Najpierw precyzyjne pytanie</span>
        <h2>Wspólne źródło, wspólna temperatura czy połączenie szeregowe?</h2>
        <p class="rk-heat-intro">Pod jednym pytaniem inwestorzy rozumieją trzy zupełnie różne rozwiązania. Bez ich rozdzielenia każda krótka odpowiedź będzie myląca.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Co inwestor chce zrobić?</th><th>Czy jest to możliwe?</th><th>Co trzeba sprawdzić?</th></tr></thead>
            <tbody>
              <tr><td data-label="Zamiar">Jedno źródło dla podłogówki i grzejników</td><td data-label="Ocena">Tak, to typowa instalacja mieszana.</td><td data-label="Warunki">Moce odbiorników, temperatury, przepływy, regulację i wymagania źródła.</td></tr>
              <tr><td data-label="Zamiar">Jedna temperatura dla obu rodzajów odbiorników</td><td data-label="Ocena">Tak, jeżeli grzejniki są wystarczające przy niskim parametrze.</td><td data-label="Warunki">Ich rzeczywistą moc przy projektowym zasilaniu i powrocie.</td></tr>
              <tr><td data-label="Zamiar">Osobna temperatura grzejników i podłogi</td><td data-label="Ocena">Tak, przez odpowiednio zaprojektowane obiegi.</td><td data-label="Warunki">Mieszanie, pompy, hydraulikę i sterowanie każdą gałęzią.</td></tr>
              <tr><td data-label="Zamiar">Pętla podłogówki szeregowo za grzejnikiem</td><td data-label="Ocena">Tylko jako ściśle ograniczony wariant lokalny, nie dowolny schemat domu.</td><td data-label="Warunki">Moc, długość, przepływ, kontrolę temperatury i zachowanie grzejnika.</td></tr>
            </tbody>
          </table>
        </div>
        <p>W instalacji wodnej każdy <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obieg grzewczy</a> musi otrzymać przepływ odpowiadający przenoszonej mocy. Samo połączenie trójnikami nie gwarantuje, że woda podzieli się zgodnie z zapotrzebowaniem.</p>
      </section>

      <section class="rk-heat-section" id="rk-mix-warianty">
        <span class="rk-heat-eyebrow">Nie jeden obowiązkowy schemat</span>
        <h2>Cztery warianty połączenia podłogówki z grzejnikami</h2>
        <div class="rk-mix-variant-grid">
          <div class="rk-mix-variant"><h3>Wspólny niski parametr</h3><p>Podłoga i odpowiednio dobrane grzejniki pracują równolegle przy tej samej temperaturze zasilania.</p></div>
          <div class="rk-mix-variant"><h3>Dwa obiegi temperaturowe</h3><p>Grzejniki otrzymują wyższy parametr, a grupa mieszająca przygotowuje chłodniejszą wodę dla podłogi.</p></div>
          <div class="rk-mix-variant"><h3>Mała pętla z RTL</h3><p>Lokalne rozwiązanie modernizacyjne, w którym ograniczana jest temperatura powrotu pojedynczej pętli.</p></div>
          <div class="rk-mix-variant"><h3>Rozdzielenie hydrauliczne</h3><p>Sprzęgło, bufor albo wymiennik pojawia się z konkretnego powodu, a nie z samego faktu użycia dwóch odbiorników.</p></div>
        </div>
        <p>Wybór powinien wynikać z obliczeń i schematu całej instalacji. <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">Profesjonalny projekt ogrzewania podłogowego</a> pokazuje nie tylko przebieg rur, ale również parametry obu obiegów, przepływy, opory i logikę sterowania.</p>
        <ol class="rk-mix-decision-flow">
          <li><strong>Policz obciążenia pomieszczeń.</strong> Bez nich nie wiadomo, jakiej mocy potrzebują podłoga i grzejniki.</li>
          <li><strong>Sprawdź odbiorniki przy wspólnym niskim parametrze.</strong> Jeżeli wystarczają, nie twórz drugiej temperatury bez potrzeby.</li>
          <li><strong>Jeżeli temperatury muszą się różnić, rozdziel funkcje obiegów.</strong> Dobierz mieszanie i przepływy do rzeczywistych wartości.</li>
          <li><strong>Dopiero na końcu oceń sprzęgło, bufor lub wymiennik.</strong> Każdy z tych elementów rozwiązuje inny problem.</li>
        </ol>
      </section>

      <section class="rk-heat-section" id="rk-mix-wspolny">
        <span class="rk-heat-eyebrow">Najprostszy układ bywa najlepszy</span>
        <h2>Kiedy podłogówka i grzejniki mogą pracować na jednej temperaturze?</h2>
        <p>Wspólny parametr jest możliwy, gdy oba typy odbiorników pokrywają projektowe obciążenie pomieszczeń przy tej samej temperaturze zasilania i powrotu. Grzejniki mogą być większe, przewymiarowane względem dawnego kotła albo specjalnie dobrane do pracy niskotemperaturowej.</p>
        <div class="rk-hp-equation">
          <div><code>Φ<sub>grzejnika</sub>(T<sub>z</sub>/T<sub>p</sub>/T<sub>i</sub>) ≥ Φ<sub>pomieszczenia</sub></code><span>Grzejnik musi pokryć stratę pokoju przy rzeczywistych parametrach projektu.</span></div>
          <div><code>q<sub>podłogi</sub> × A<sub>czynna</sub> ≥ Φ<sub>pomieszczenia</sub></code><span>Podłoga musi przekazać wymaganą moc z aktywnej powierzchni.</span></div>
        </div>
        <p>Takie podejście szczególnie dobrze współpracuje z <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskotemperaturowym źródłem ciepła</a>. Jedna krzywa grzewcza, brak zbędnego mieszania i mniejsza liczba pomp upraszczają instalację, ale tylko wtedy, gdy moc wszystkich odbiorników została potwierdzona.</p>
        <h3>Czy potrzebna jest jedna pompa?</h3>
        <p>Może wystarczyć jedna pompa, jeżeli jej punkt pracy obejmuje wymagany przepływ całej instalacji i opór najbardziej wymagającej drogi. O liczbie pomp nie decyduje sama obecność grzejników oraz podłogówki, lecz architektura hydrauliczna i sposób sterowania.</p>
        <div class="rk-heat-success"><p><strong>Najpierw sprawdź możliwość wspólnego parametru.</strong> Dodawanie mieszacza tylko dlatego, że w budynku są dwa rodzaje odbiorników, może niepotrzebnie skomplikować układ.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-dwa-obiegi">
        <span class="rk-heat-eyebrow">Gdy odbiorniki wymagają innych warunków</span>
        <h2>Dwa obiegi temperaturowe z grupą pompowo-mieszającą</h2>
        <p class="rk-heat-intro">Jeżeli grzejniki potrzebują wyższej temperatury niż podłoga, źródło może zasilać obieg grzejnikowy bezpośrednio, a chłodniejszy parametr dla podłogówki przygotowuje obieg mieszany.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">G</span><h3>Obieg grzejnikowy</h3><p>Pracuje przy temperaturze wynikającej z mocy grzejników i obciążeń obsługiwanych pomieszczeń.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">M</span><h3>Układ mieszający</h3><p>Łączy gorący strumień ze źródła z chłodniejszym powrotem podłogi, aby uzyskać zadane zasilanie.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">P</span><h3>Obieg podłogowy</h3><p>Ma własny projektowy przepływ, opory i regulację odpowiednią dla bezwładnej powierzchni grzewczej.</p></div>
        </div>
        <p>Pełną funkcję i warianty włączenia omawia poradnik o <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworze mieszającym w ogrzewaniu podłogowym</a>. Sam zawór nie rozwiązuje jednak hydrauliki: trzeba jeszcze określić kierunek przepływu, miejsce pompy, zachowanie zaworu przy zamkniętych strefach oraz dostępne ciśnienia po obu stronach.</p>
        <div class="rk-heat-warning"><p><strong>Dwa parametry nie oznaczają dwóch dowolnych nastaw.</strong> Obie krzywe powinny wynikać z mocy odbiorników przy zmiennej temperaturze zewnętrznej.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-rtl">
        <span class="rk-heat-eyebrow">Rozwiązanie lokalne, nie uniwersalne</span>
        <h2>Czy małą pętlę podłogówki można podłączyć przez RTL?</h2>
        <p>Ogranicznik temperatury powrotu może być rozważany dla pojedynczej, niewielkiej pętli — często w modernizowanej łazience. RTL reaguje na temperaturę wody opuszczającej pętlę. Nie utrzymuje wprost stałej temperatury zasilania i nie działa jak zawór mieszający z osobną pompą.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Warunek</th><th>Dlaczego ma znaczenie</th><th>Czerwona flaga</th></tr></thead>
            <tbody>
              <tr><td data-label="Warunek">Mała, jednoznaczna powierzchnia</td><td data-label="Znaczenie">Ułatwia kontrolę mocy i długości pojedynczej pętli.</td><td data-label="Czerwona flaga">Kilka pomieszczeń lub cały rozdzielacz na RTL.</td></tr>
              <tr><td data-label="Warunek">Policzone obciążenie</td><td data-label="Znaczenie">Pozwala sprawdzić, czy podłoga pokryje wymaganą moc.</td><td data-label="Czerwona flaga">Dobór wyłącznie według metrów kwadratowych.</td></tr>
              <tr><td data-label="Warunek">Kontrolowana temperatura</td><td data-label="Znaczenie">Chroni komfort, okładzinę i konstrukcję podłogi.</td><td data-label="Czerwona flaga">Wysoka temperatura źródła bez żadnego ograniczenia.</td></tr>
              <tr><td data-label="Warunek">Dostępny przepływ</td><td data-label="Znaczenie">Pętla i grzejnik wpływają na siebie hydraulicznie.</td><td data-label="Czerwona flaga">Założenie, że pompa „jakoś przepchnie” wodę.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Granice temperatury trzeba sprawdzić tak samo jak w pełnym systemie. Pomocny jest poradnik o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>, lecz właściwa wartość nadal zależy od projektu i ograniczeń okładziny.</p>
        <div class="rk-heat-note"><p><strong>RTL nie jest z definicji błędem.</strong> Błędem jest użycie go bez sprawdzenia mocy, długości, przepływu i temperatury albo traktowanie jako zamiennika dużej instalacji rozdzielaczowej.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-rozdzielenie">
        <span class="rk-heat-eyebrow">Element musi mieć określoną funkcję</span>
        <h2>Sprzęgło, bufor i wymiennik płytowy nie są tym samym</h2>
        <p class="rk-heat-intro">Obecność dwóch rodzajów odbiorników nie jest jeszcze argumentem za automatycznym rozdzieleniem hydraulicznym. Najpierw trzeba wskazać problem, który dodatkowy element ma rozwiązać.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">S</span><h3>Sprzęgło hydrauliczne</h3><p>Rozdziela ciśnieniowo obieg źródła i obiegi instalacji. Wymaga zbilansowania przepływów oraz oceny wpływu temperatury mieszania.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">B</span><h3>Bufor</h3><p>Może zwiększać objętość, stabilizować przepływ lub magazynować energię, ale jego funkcję trzeba nazwać przed doborem.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">W</span><h3>Wymiennik płytowy</h3><p>Oddziela obiegi także pod względem medium i ciśnienia, wprowadzając własny opór oraz różnicę temperatur.</p></div>
        </div>
        <p>Szczegółowe zasady omawiamy osobno dla <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgła hydraulicznego</a>, <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufora ciepła</a> oraz <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">wymiennika płytowego</a>. Żaden z tych elementów nie powinien być dopisywany do schematu wyłącznie „na wszelki wypadek”.</p>
        <h3>Kiedy rozdzielenie jest uzasadnione?</h3>
        <ul class="rk-heat-list">
          <li>Obieg źródła i instalacji wymagają niezależnych przepływów.</li>
          <li>Źródło potrzebuje minimalnego przepływu, którego strefy odbiorcze nie gwarantują.</li>
          <li>Trzeba chronić źródło przed niewłaściwą temperaturą powrotu.</li>
          <li>Po obu stronach występują różne media, ciśnienia albo wymagania formalne.</li>
          <li>Układ ma wiele obiegów o odmiennych trybach pracy i sterowaniu.</li>
        </ul>
      </section>

      <section class="rk-heat-section" id="rk-mix-temperatury">
        <span class="rk-heat-eyebrow">Grzejnik nie ma jednej stałej mocy</span>
        <h2>Jak zmienia się moc grzejników po obniżeniu temperatury?</h2>
        <p>Moc katalogowa dotyczy określonych temperatur zasilania, powrotu i pomieszczenia. Po obniżeniu parametrów spada średnia różnica temperatur między grzejnikiem a wnętrzem, dlatego ten sam odbiornik oddaje mniej ciepła. Nie wolno jednak przyjmować jednego spadku procentowego dla wszystkich modeli.</p>
        <div class="rk-heat-formula"><strong>Φ = Φ<sub>N</sub> × (Δθ / Δθ<sub>N</sub>)<sup>n</sup></strong><span>Przeliczenie wymaga mocy nominalnej, średniej różnicy temperatur oraz wykładnika n właściwego dla danego grzejnika.</span></div>
        <p>Wykładnik i warunki nominalne powinny pochodzić z wiarygodnych danych konkretnego odbiornika. Jeżeli ich nie ma, można wykonać analizę wariantową, ale wynik trzeba opisać jako założenie.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Pytanie projektowe</th><th>Dana potrzebna do odpowiedzi</th><th>Czego nie robić</th></tr></thead>
            <tbody>
              <tr><td data-label="Pytanie">Czy grzejnik wystarczy?</td><td data-label="Potrzebna dana">Obciążenie pokoju i moc przy projektowym parametrze.</td><td data-label="Nie rób">Nie oceniaj po długości lub wysokości samego grzejnika.</td></tr>
              <tr><td data-label="Pytanie">Czy można obniżyć zasilanie?</td><td data-label="Potrzebna dana">Charakterystyka odbiornika i zapas względem straty ciepła.</td><td data-label="Nie rób">Nie przyjmuj automatycznie spadku 20%, 50% ani 80%.</td></tr>
              <tr><td data-label="Pytanie">Czy wystarczy wspólna krzywa?</td><td data-label="Potrzebna dana">Zachowanie grzejników i podłogi w całym zakresie pogody.</td><td data-label="Nie rób">Nie porównuj tylko jednego łagodnego dnia.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Temperatura powinna wynikać z bilansu, a nie z przyzwyczajenia. Osobno wyjaśniamy, jaka jest <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">optymalna temperatura ogrzewania podłogowego</a> i dlaczego jej nie wybiera się wyłącznie z nazwy źródła.</p>
      </section>

      <section class="rk-heat-section" id="rk-mix-podloga">
        <span class="rk-heat-eyebrow">Drugi odbiornik też wymaga obliczeń</span>
        <h2>Podłogówka musi pokryć obciążenie bez przegrzewania powierzchni</h2>
        <p class="rk-heat-intro">To, że podłoga jest „niskotemperaturowa”, nie mówi jeszcze, ile watów odda w konkretnym pokoju. Potrzebne są obciążenie, aktywna powierzchnia i parametry całej konstrukcji.</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²] wynika z projektowej straty i rzeczywiście ogrzewanej powierzchni</span></div>
        <p>Na możliwą moc wpływają między innymi temperatura wody, rozstaw rur, warstwy nad rurą, opór okładziny oraz dopuszczalna temperatura powierzchni. Metodykę omawia poradnik o <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">obliczeniach ogrzewania podłogowego według EN 1264</a>.</p>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">A</span><h3>Duża powierzchnia czynna</h3><p>Ta sama moc rozkłada się na więcej metrów kwadratowych, więc wymaganie jednostkowe jest mniejsze.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">q</span><h3>Mała powierzchnia czynna</h3><p>Stała zabudowa może podnieść wymaganie tak mocno, że sama podłoga nie wystarczy.</p></div>
        </div>
        <p>Jeżeli wydajność podłogi jest niewystarczająca, grzejnik może pełnić funkcję odbiornika uzupełniającego. Jego moc i sposób regulacji trzeba jednak uwzględnić w bilansie tego samego pomieszczenia.</p>
      </section>

      <section class="rk-heat-section" id="rk-mix-hydraulika">
        <span class="rk-heat-eyebrow">Moc trzeba przenieść wodą</span>
        <h2>Przepływy i różnica temperatur w instalacji mieszanej</h2>
        <p>Dla wody orientacyjny przepływ można wyznaczyć z mocy i różnicy temperatur. Poprawne jednostki są kluczowe — dla pętli o mocy 1200 W i ΔT równej 10 K wynik wynosi około 103 l/h, czyli 1,72 l/min, a nie 1,03 m³/h.</p>
        <div class="rk-heat-formula"><strong>V̇ [l/h] ≈ Q [W] / (1,163 × ΔT [K])</strong><span>1200 / (1,163 × 10) ≈ 103 l/h = 0,103 m³/h</span></div>
        <p>Projektowa <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnica między temperaturą zasilania i powrotu</a> może być inna dla obiegu grzejnikowego i podłogowego. Nie należy automatycznie przypisywać każdej podłogówce ΔT = 10 K.</p>
        <h3>Równoległe gałęzie nie dzielą przepływu po równo</h3>
        <p>Woda wybiera drogi zgodnie z ich oporami. Każda pętla i każdy grzejnik wymagają właściwego równoważenia. Na rozdzielaczu wartości ustawia się według obliczonej mocy obwodów, a nie przez podzielenie przepływu całkowitego przez ich liczbę. Służy temu między innymi prawidłowa regulacja <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów ogrzewania podłogowego</a>.</p>
        <div class="rk-heat-warning"><p><strong>Przepływ źródła, przepływ grzejników i przepływ podłogówki nie zawsze są tą samą wartością.</strong> Przy mieszaniu oraz rozdzieleniu hydraulicznym trzeba rozpisać bilans każdego fragmentu.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-pompy">
        <span class="rk-heat-eyebrow">Q i H zamiast symbolu 25-40</span>
        <h2>Czy do grzejników i podłogówki potrzebne są dwie pompy?</h2>
        <p class="rk-heat-intro">Czasem tak, czasem nie. Liczba pomp wynika ze schematu, wymaganych przepływów, oporów oraz sposobu regulacji — nie z samego występowania dwóch rodzajów odbiorników.</p>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">1</span><h3>Jedna pompa</h3><p>Może obsłużyć wspólny niskotemperaturowy układ, jeżeli zapewnia projektowy przepływ i pokonuje opór drogi krytycznej.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">2</span><h3>Osobne pompy obiegów</h3><p>Są typowe przy aktywnym mieszaniu lub rozdzieleniu hydraulicznym, gdy obie gałęzie wymagają niezależnych przepływów.</p></div>
        </div>
        <p>Podstawy wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompie obiegowej w podłogówce</a>. Punkt pracy można edukacyjnie sprawdzić w <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatorze doboru pompy obiegowej</a>, ale finalny dobór musi korzystać z oporów konkretnego układu.</p>
        <h3>Obwód krytyczny, a nie suma wszystkich pętli</h3>
        <p>Pompa obsługująca równoległe obwody musi pokonać stratę ciśnienia najbardziej wymagającej czynnej drogi przy całkowitym przepływie swojej części instalacji. Nie sumuje się strat wszystkich pętli jedna za drugą.</p>
        <p>Po zsumowaniu przepływów trzeba także sprawdzić <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnicę przewodu zasilającego rozdzielacz</a>, prędkość wody i opory wspólnej magistrali.</p>
      </section>

      <section class="rk-heat-section" id="rk-mix-zawor">
        <span class="rk-heat-eyebrow">Bilans temperatur to nie położenie trzpienia</span>
        <h2>Jak dobiera się zawór mieszający i współczynnik Kv?</h2>
        <p>Z bilansu energii można wyznaczyć teoretyczny udział gorącego strumienia potrzebny do uzyskania temperatury mieszanej. Nie oznacza to jednak, że wynik 25% odpowiada dokładnie 25% skali siłownika.</p>
        <div class="rk-hp-equation">
          <div><code>x = (T<sub>m</sub> − T<sub>p</sub>) / (T<sub>g</sub> − T<sub>p</sub>)</code><span>Teoretyczny udział gorącego strumienia w idealnym bilansie temperatur.</span></div>
          <div><code>Kv = V̇ / √Δp</code><span>Uproszczona relacja dla wody; przepływ w m³/h i spadek na zaworze w barach.</span></div>
        </div>
        <p>Rzeczywista pozycja zaworu zależy od jego charakterystyki, autorytetu, różnic ciśnienia i zachowania obu gałęzi. Dlatego Kv nie powinno być wybierane jako „10–20% więcej od przepływu”. Należy przyjąć projektowy przepływ, zaplanować spadek ciśnienia na zaworze i sprawdzić jakość regulacji.</p>
        <ul class="rk-heat-list">
          <li>Zbyt mały zawór zwiększa opór i może ograniczyć przepływ.</li>
          <li>Zbyt duży zawór może pracować na niewielkim zakresie skoku i utrudniać stabilną regulację.</li>
          <li>Charakterystyka siłownika i zaworu musi pasować do regulatora.</li>
          <li>Czujnik temperatury powinien mierzyć parametr reprezentatywny dla obiegu podłogowego.</li>
        </ul>
        <div class="rk-heat-note"><p><strong>Nie istnieje uniwersalny „najstabilniejszy” zakres otwarcia 20–40%.</strong> Poprawna pozycja jest wynikiem konkretnego zaworu, przepływów i warunków pracy.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-zrodla">
        <span class="rk-heat-eyebrow">Ten sam odbiornik, inne wymagania źródła</span>
        <h2>Kocioł gazowy, pellet i pompa ciepła — jak zmienia się schemat?</h2>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">G</span><h3>Kocioł kondensacyjny</h3><p>Może zasilać wspólny niski parametr albo dwa obiegi. Niska temperatura powrotu sprzyja kondensacji, ale minimalna moc kotła i przepływ nadal wymagają sprawdzenia.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">P</span><h3>Kocioł na pellet lub paliwo stałe</h3><p>Źródło może wymagać ochrony temperatury powrotu, stabilnej pracy i sposobu odbioru nadmiaru energii. Rozwiązanie zależy od konkretnego kotła.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">PC</span><h3>Pompa ciepła</h3><p>Najpierw dąży się do wspólnego, możliwie niskiego parametru. Trzeba zachować minimalny przepływ, objętość i warunki odszraniania.</p></div>
          <div class="rk-heat-card is-purple"><span class="rk-heat-card-icon">S</span><h3>Sieć lub inne źródło</h3><p>Wymiennik, dopuszczalne temperatury i ciśnienia oraz warunki dostawcy mogą narzucać osobną architekturę.</p></div>
        </div>
        <p>Osobne opracowania pokazują wymagania dla <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kotła gazowego</a>, <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/">kotła na pellet</a>, <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">kotłów na paliwa stałe z podłogówką</a> oraz <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>. W każdym przypadku ostateczny schemat musi odpowiadać aktualnej dokumentacji urządzenia.</p>
        <div class="rk-heat-warning"><p><strong>Nie projektuj odbiorników pod błędnie założony parametr źródła.</strong> Najpierw policz wymaganą moc grzejników i podłogi, a później sprawdź, czy źródło zapewni ją w warunkach projektowych.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-sterowanie">
        <span class="rk-heat-eyebrow">Dwie bezwładności i możliwe dwie krzywe</span>
        <h2>Jak sterować grzejnikami i ogrzewaniem podłogowym?</h2>
        <p>Podłoga reaguje wolniej niż grzejnik, dlatego oba odbiorniki nie powinny być traktowane identycznie tylko dlatego, że korzystają z jednego źródła. Regulacja ma utrzymywać możliwie niską temperaturę wody, zapewniając jednocześnie wymaganą moc.</p>
        <p>Podstawą jest odpowiednio ustawiona <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza</a>. W układzie z dwoma parametrami regulator może prowadzić oddzielne krzywe obiegów, korzystając nawet z jednego prawidłowo umieszczonego czujnika zewnętrznego. Więcej wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowaniu pogodowym podłogówki</a>.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">K</span><h3>Krzywa źródła</h3><p>Wyznacza temperaturę wymaganą przez obieg bezpośredni albo najwyższy parametr instalacji.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">M</span><h3>Regulacja mieszacza</h3><p>Przygotowuje parametr podłogi zgodnie z jej własną krzywą i ograniczeniami temperatury.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">Z</span><h3>Strefy pomieszczeń</h3><p>Korygują zyski i harmonogramy, ale nie mogą odbierać źródłu wymaganego przepływu.</p></div>
        </div>
        <p>Przed masowym zamykaniem obwodów warto sprawdzić zasady <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowania strefowego</a> i sposób pracy <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych na rozdzielaczu</a>. Przy pompie ciepła oraz kotle o małej modulacji układ musi zachować wymagany przepływ także wtedy, gdy część pomieszczeń osiągnie temperaturę.</p>
      </section>

      <section class="rk-heat-section" id="rk-mix-analizator">
        <span class="rk-heat-eyebrow">Narzędzie do wyboru kierunku, nie projekt</span>
        <h2>Interaktywny analizator schematu podłogówki i grzejników</h2>
        <p class="rk-heat-intro">Odpowiedz na sześć pytań. Narzędzie wskaże najbardziej prawdopodobny kierunek koncepcji oraz obliczenia, których nadal nie wolno pominąć.</p>

        <div class="rk-heat-tool" id="rk-mix-tool">
          <div class="rk-heat-tool-head">
            <h3>Wspólna temperatura, mieszanie, RTL czy rozdzielenie?</h3>
            <p>Wybór jest edukacyjny. Nie zastępuje obliczeń mocy odbiorników, hydrauliki ani weryfikacji konkretnego źródła.</p>
          </div>
          <div class="rk-heat-tool-body">
            <div class="rk-heat-step">
              <div class="rk-heat-step-title"><b>1</b><h4>Warunki odbiorników</h4></div>
              <div class="rk-mix-control-grid">
                <div class="rk-mix-control is-critical">
                  <label for="rk-mix-radiator-check">Czy moc grzejników została sprawdzona przy planowanej niskiej temperaturze?</label>
                  <select id="rk-mix-radiator-check">
                    <option value="unknown" selected="">Nie wiem / nie sprawdzono</option>
                    <option value="yes">Tak, pokrywają obciążenia</option>
                    <option value="no">Tak, ale są za słabe</option>
                  </select>
                </div>
                <div class="rk-mix-control is-critical">
                  <label for="rk-mix-temperature-relation">Jak wyglądają wymagane temperatury obu odbiorników?</label>
                  <select id="rk-mix-temperature-relation">
                    <option value="unknown" selected="">Jeszcze nie ustalono</option>
                    <option value="same">Mogą pracować na tym samym parametrze</option>
                    <option value="different">Grzejniki potrzebują wyższej temperatury</option>
                  </select>
                </div>
                <div class="rk-mix-control">
                  <label for="rk-mix-floor-scope">Jaki jest zakres planowanej podłogówki?</label>
                  <select id="rk-mix-floor-scope">
                    <option value="single">Jedna mała pętla / jedno pomieszczenie</option>
                    <option value="manifold" selected="">Rozdzielacz i kilka pętli</option>
                    <option value="whole">Większość budynku lub cała kondygnacja</option>
                  </select>
                </div>
              </div>
            </div>

            <div class="rk-heat-step">
              <div class="rk-heat-step-title"><b>2</b><h4>Źródło i sposób pracy</h4></div>
              <div class="rk-mix-control-grid">
                <div class="rk-mix-control">
                  <label for="rk-mix-source">Jakie źródło zasila instalację?</label>
                  <select id="rk-mix-source">
                    <option value="heatpump">Pompa ciepła</option>
                    <option value="condensing" selected="">Kocioł kondensacyjny</option>
                    <option value="solid">Pellet / inne paliwo stałe</option>
                    <option value="district">Sieć ciepłownicza / wymiennik</option>
                    <option value="other">Inne lub jeszcze nie wybrane</option>
                  </select>
                </div>
                <div class="rk-mix-control">
                  <label for="rk-mix-zones">Czy grzejniki i podłoga mają pracować jako niezależne strefy?</label>
                  <select id="rk-mix-zones">
                    <option value="yes" selected="">Tak, niezależne temperatury lub harmonogramy</option>
                    <option value="no">Nie, wspólna regulacja</option>
                    <option value="unknown">Jeszcze nie ustalono</option>
                  </select>
                </div>
                <div class="rk-mix-control is-critical">
                  <label for="rk-mix-source-requirements">Czy znasz minimalny przepływ, ochronę powrotu i wymagania źródła?</label>
                  <select id="rk-mix-source-requirements">
                    <option value="known">Tak, są sprawdzone</option>
                    <option value="unknown" selected="">Nie / wymagają sprawdzenia</option>
                  </select>
                </div>
              </div>
              <button class="rk-heat-tool-button" type="button" id="rk-mix-run">Pokaż kierunek schematu</button>
            </div>

            <div class="rk-mix-map" aria-label="Cztery możliwe kierunki schematu">
              <div class="rk-mix-route" id="rk-mix-route-calculate"><b>Najpierw obliczenia</b><span>Nie znamy jeszcze parametrów, więc wybór urządzeń byłby zgadywaniem.</span></div>
              <div class="rk-mix-route" id="rk-mix-route-direct"><b>Wspólny niski parametr</b><span>Równoległe odbiorniki bez niepotrzebnego obniżania temperatury.</span></div>
              <div class="rk-mix-route" id="rk-mix-route-mixed"><b>Osobny obieg mieszany</b><span>Wyższy parametr grzejników i kontrolowane zasilanie podłogi.</span></div>
              <div class="rk-mix-route is-warning" id="rk-mix-route-special"><b>RTL lub rozdzielenie</b><span>Wariant lokalny albo rozwiązanie wymagające dodatkowej funkcji hydraulicznej.</span></div>
            </div>

            <div class="rk-mix-result" aria-live="polite">
              <span class="rk-mix-result-kicker">Najbardziej prawdopodobny kierunek</span>
              <h4 id="rk-mix-result-title">Najpierw sprawdź moc odbiorników</h4>
              <p id="rk-mix-result-text">Bez mocy grzejników przy planowanej temperaturze i bez obciążeń pomieszczeń nie można odpowiedzialnie wybrać schematu.</p>

              <div class="rk-mix-schematic" aria-label="Dynamiczny schemat koncepcyjny">
                <div class="rk-mix-source-box" id="rk-mix-source-box">Źródło ciepła</div>
                <div class="rk-mix-arrow" aria-hidden="true">→</div>
                <div class="rk-mix-branches">
                  <div class="rk-mix-branch-box is-radiator" id="rk-mix-radiator-box">Obieg grzejnikowy — parametr do obliczenia</div>
                  <div class="rk-mix-branch-box is-floor" id="rk-mix-floor-box">Obieg podłogowy — parametr do obliczenia</div>
                </div>
              </div>

              <div class="rk-mix-output-stack">
                <div class="rk-mix-output"><h4>Dlaczego ten kierunek?</h4><ul id="rk-mix-reasons"><li>Brakuje danych do porównania odbiorników.</li></ul></div>
                <div class="rk-mix-output is-check"><h4>Co nadal trzeba policzyć lub potwierdzić?</h4><ul id="rk-mix-checks"><li>Obciążenia cieplne pomieszczeń.</li></ul></div>
              </div>
              <p class="rk-mix-tool-note"><strong>Ważne:</strong> analizator nie wyznacza Kv zaworu, punktu pracy pomp, średnic, mocy grzejników, wydajności podłogi, pojemności bufora ani nastaw rozdzielacza. Nie jest schematem wykonawczym.</p>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-heat-sales-cta" aria-label="Zaproszenie do zamówienia projektu po analizatorze">
        <div class="rk-hp-cta-limits"><strong>Analizator wskazał najbardziej prawdopodobny kierunek schematu, ale nie zna obciążeń pomieszczeń, charakterystyki grzejników, długości pętli, przepływów ani oporów instalacji.</strong> Dopiero ich obliczenie pokaże, czy wystarczy wspólna niska temperatura, czy podłogówka wymaga osobnego obiegu z mieszaniem i dodatkową pompą.</div>
        <h3>Połącz oba rodzaje ogrzewania w jednym policzonym projekcie</h3>
        <p>Dokumentacja może uwzględnić moc odbiorników, rozstawy i pętle podłogówki, przepływy, opory, nastawy oraz schemat współpracy ze źródłem.</p>
        <a class="rk-heat-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji podłogówki i grzejników</a>
      </aside>

      <section class="rk-heat-section" id="rk-mix-scenariusze">
        <span class="rk-heat-eyebrow">Trzy sytuacje, trzy różne decyzje</span>
        <h2>Przykłady połączenia podłogówki i grzejników</h2>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">A</span><h3>Nowy dom z pompą ciepła</h3><p>Grzejniki w łazienkach dobieramy do wspólnego niskiego parametru. Najpierw sprawdzamy wariant bez mieszacza i dodatkowej pompy.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">B</span><h3>Modernizacja z kotłem</h3><p>Istniejące grzejniki wymagają wyższej temperatury, a nowa podłogówka zajmuje całą kondygnację. Rozważamy osobny obieg mieszany.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">C</span><h3>Jedna łazienka w starym domu</h3><p>Mała pętla może być kandydatem do RTL, ale dopiero po sprawdzeniu obciążenia, długości, przepływu i temperatury powierzchni.</p></div>
        </div>
        <p>Przy przebudowie warto zacząć od ograniczeń istniejącego obiektu. Poradnik o <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">ogrzewaniu podłogowym w remontowanym budynku</a> pokazuje, dlaczego wysokość podłogi, stan przegród i dostępne trasy mogą zmienić wybór systemu.</p>
        <div class="rk-heat-note"><p><strong>Przykłady są kierunkowe.</strong> Dwa domy z takim samym źródłem mogą wymagać innych schematów z powodu mocy grzejników, powierzchni czynnej, średnic i sposobu strefowania.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-projekt">
        <span class="rk-heat-eyebrow">Od straty ciepła do nastawy</span>
        <h2>Co powinien zawierać projekt instalacji mieszanej?</h2>
        <p class="rk-heat-intro">Rysunek z trójnikami i symbolem mieszacza nie jest jeszcze projektem. Dokumentacja powinna umożliwić wykonanie, uruchomienie i kontrolę obu obiegów.</p>
        <ol class="rk-mix-decision-flow">
          <li><strong>Bilans cieplny.</strong> Obciążenie całego budynku oraz każdego pomieszczenia osobno.</li>
          <li><strong>Sprawdzenie grzejników.</strong> Moc przy projektowych temperaturach zasilania, powrotu i wnętrza.</li>
          <li><strong>Projekt podłogi.</strong> Powierzchnia czynna, rozstawy, długości pętli, okładziny i temperatury powierzchni.</li>
          <li><strong>Schemat hydrauliczny.</strong> Rozdział obiegów, kierunki przepływu, zawory, pompy i ewentualne rozdzielenie.</li>
          <li><strong>Obliczenia przepływowo-oporowe.</strong> Przepływy, obwody krytyczne, średnice, Kv i punkty pracy pomp.</li>
          <li><strong>Automatyka.</strong> Krzywe grzewcze, czujniki, siłowniki, priorytety i stan przy zamknięciu stref.</li>
        </ol>
        <p>Punktem wyjścia jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>. Jeżeli chcesz zrozumieć jego składniki, zobacz również, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty ciepła w budynku</a>.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Na rzucie i schemacie</th><th>W tabeli obliczeniowej</th><th>W opisie regulacji</th></tr></thead>
            <tbody>
              <tr><td data-label="Rzut">Pętle, grzejniki, rozdzielacze, źródło, armatura i trasy.</td><td data-label="Tabela">Moce, temperatury, przepływy, długości i opory.</td><td data-label="Regulacja">Nastawy, krzywe, strefy i ograniczenia temperatury.</td></tr>
              <tr><td data-label="Rzut">Oznaczenia obwodów i miejsca pomiaru.</td><td data-label="Tabela">Obwód krytyczny, Kv oraz wymagany punkt pracy pomp.</td><td data-label="Regulacja">Zachowanie układu przy częściowym obciążeniu.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-mix-bledy">
        <span class="rk-heat-eyebrow">Czerwone flagi techniczne</span>
        <h2>Najczęstsze błędy przy łączeniu podłogówki z grzejnikami</h2>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">1</span><h3>„Sprzęgło zawsze”</h3><p>Element pojawia się bez bilansu przepływów i bez wskazania funkcji, którą ma pełnić.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">2</span><h3>„Pompa 25-60 uciągnie”</h3><p>Dobór odbywa się bez całkowitego przepływu, oporu drogi krytycznej i charakterystyki urządzenia.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">3</span><h3>„Zawór jeden cal pasuje”</h3><p>Średnica przyłącza zastępuje obliczenie Kv, spadku ciśnienia i autorytetu zaworu.</p></div>
          <div class="rk-heat-card is-purple"><span class="rk-heat-card-icon">4</span><h3>„Każda pętla maksymalnie 120 m”</h3><p>Jedna długość zastępuje analizę średnicy, przepływu, oporów dodatkowych i dostępnego podnoszenia.</p></div>
        </div>
        <p>Nie ma jednej maksymalnej długości właściwej dla każdej instalacji. Wyjaśnia to szczegółowo poradnik o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli podłogówki</a>.</p>
        <ul class="rk-heat-list">
          <li>Wpięcie pętli bez kontroli temperatury i bez sprawdzenia przepływu.</li>
          <li>Obniżenie temperatury całego układu bez przeliczenia mocy grzejników.</li>
          <li>Mieszanie mimo możliwości pracy wszystkich odbiorników na wspólnym parametrze.</li>
          <li>Identyczne nastawy pętli i grzejników niezależnie od ich mocy.</li>
          <li>Brak analizy minimalnego przepływu źródła po zamknięciu stref.</li>
          <li>Przyjęcie położenia zaworu jako równego udziałowi gorącej wody.</li>
          <li>Brak aktualizacji obliczeń po zmianie grzejników, okładziny lub lokalizacji rozdzielacza.</li>
        </ul>
      </section>

      <section class="rk-heat-section" id="rk-mix-checklista">
        <span class="rk-heat-eyebrow">Przed zakupem armatury</span>
        <h2>Checklista instalacji podłogowej i grzejnikowej</h2>
        <ul class="rk-heat-checklist">
          <li>Znamy obciążenie cieplne każdego pomieszczenia.</li>
          <li>Grzejniki są przeliczone dla planowanej temperatury wody.</li>
          <li>Podłoga pokrywa swoją część mocy z powierzchni czynnej.</li>
          <li>Ustalono, czy odbiorniki mogą pracować na wspólnym parametrze.</li>
          <li>Wiadomo, czy RTL obsługuje tylko jedną odpowiednią pętlę.</li>
          <li>Mieszacz ma obliczony przepływ, spadek ciśnienia i Kv.</li>
          <li>Każda pompa ma określony punkt Q/H i obsługiwaną drogę.</li>
          <li>Magistrale są sprawdzone pod względem średnicy, prędkości i oporów.</li>
          <li>Sprzęgło, bufor lub wymiennik ma jasno opisaną funkcję.</li>
          <li>Zweryfikowano minimalny przepływ i wymagania źródła.</li>
          <li>Regulator obsługuje potrzebną liczbę obiegów i krzywych.</li>
          <li>Zamykane strefy nie destabilizują źródła ani pozostałych odbiorników.</li>
          <li>Rzut, schemat hydrauliczny i tabela nastaw używają tych samych oznaczeń.</li>
          <li>Zmiany wykonawcze są nanoszone przed zakryciem rur.</li>
        </ul>
        <div class="rk-heat-success"><p><strong>Jeżeli nie znamy jeszcze wymaganych temperatur odbiorników, nie zamawiamy w ciemno grupy mieszającej ani sprzęgła.</strong> Najpierw obliczenia, później armatura.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-mix-faq">
        <span class="rk-heat-eyebrow">Pytania inwestorów</span>
        <h2>FAQ: podłogówka i grzejniki w jednej instalacji</h2>
        <div class="rk-heat-faq">
          <details><summary>Czy podłogówka i grzejniki mogą działać z jedną pompą?</summary><div class="rk-heat-faq-answer"><p>Tak, jeżeli pracują w odpowiednio zaprojektowanym wspólnym obiegu, a pompa zapewnia całkowity przepływ i pokonuje opór drogi krytycznej. Przy aktywnym mieszaniu lub rozdzieleniu hydraulicznym mogą być potrzebne osobne pompy.</p></div></details>
          <details><summary>Czy zawsze potrzebny jest zawór trójdrogowy?</summary><div class="rk-heat-faq-answer"><p>Nie. Jeżeli grzejniki i podłoga pokrywają obciążenia przy tej samej temperaturze, mieszanie może być zbędne. Zawór jest potrzebny wtedy, gdy obieg podłogowy rzeczywiście wymaga niższego parametru.</p></div></details>
          <details><summary>Czy można zasilić podłogówkę z powrotu grzejnika?</summary><div class="rk-heat-faq-answer"><p>Można rozważyć ograniczony wariant z RTL dla pojedynczej małej pętli, ale nie jest to uniwersalny sposób zasilania całej podłogówki. Trzeba policzyć moc, długość, przepływ i temperaturę powierzchni.</p></div></details>
          <details><summary>Czy RTL obniża temperaturę zasilania podłogówki?</summary><div class="rk-heat-faq-answer"><p>Nie bezpośrednio. RTL ogranicza temperaturę wody powracającej z pętli. Nie działa tak samo jak zawór mieszający utrzymujący zadany parametr zasilania za pomocą dwóch strumieni.</p></div></details>
          <details><summary>Czy instalacja mieszana zawsze wymaga sprzęgła?</summary><div class="rk-heat-faq-answer"><p>Nie. Sprzęgło stosuje się, gdy potrzebne jest rozdzielenie hydrauliczne obiegu źródła i odbiorników. Jego zasadność wynika z przepływów, oporów, pomp i wymagań źródła, a nie z samej obecności grzejników.</p></div></details>
          <details><summary>Czy pompa ciepła może zasilać podłogówkę i grzejniki?</summary><div class="rk-heat-faq-answer"><p>Tak. Najkorzystniej, gdy grzejniki są wystarczające przy możliwie niskiej temperaturze wspólnej z podłogą. Jeżeli wymagają wyższego parametru, trzeba ocenić wpływ na moc i efektywność pompy oraz zaprojektować hydraulikę.</p></div></details>
          <details><summary>Jak policzyć przepływ pętli o mocy 1200 W?</summary><div class="rk-heat-faq-answer"><p>Dla wody i różnicy temperatur 10 K orientacyjny przepływ wynosi 1200 podzielone przez 11,63, czyli około 103 l/h albo 1,72 l/min. Rzeczywista projektowa różnica temperatur nie musi jednak wynosić 10 K.</p></div></details>
          <details><summary>Czy grzejnik przy 45°C zawsze traci 70–80% mocy?</summary><div class="rk-heat-faq-answer"><p>Nie. Wynik zależy od jego mocy nominalnej, temperatur zasilania, powrotu i pomieszczenia oraz wykładnika charakterystyki. Każdy model i pomieszczenie trzeba sprawdzić dla konkretnego punktu pracy.</p></div></details>
          <details><summary>Czy zawór mieszający dobiera się o 10–20% większy od przepływu?</summary><div class="rk-heat-faq-answer"><p>Nie jest to poprawna uniwersalna reguła. Kv dobiera się z przepływu i założonego spadku ciśnienia, a następnie sprawdza autorytet oraz charakterystykę regulacyjną zaworu.</p></div></details>
          <details><summary>Czy wynik analizatora jest projektem hydraulicznym?</summary><div class="rk-heat-faq-answer"><p>Nie. Narzędzie wskazuje kierunek koncepcji na podstawie deklarowanych odpowiedzi. Nie liczy mocy odbiorników, przepływów, oporów, Kv, średnic, punktu pracy pomp ani nastaw rozdzielacza.</p></div></details>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-mix-zrodla-oficjalne">
        <span class="rk-heat-eyebrow">Dokumenty instytucjonalne</span>
        <h2>Źródła wykorzystane do aktualizacji technicznej</h2>
        <p>Odnośniki zewnętrzne prowadzą wyłącznie do instytucji publicznych i organizacji normalizacyjnej. Dane urządzeń i odbiorników trzeba dodatkowo sprawdzić w aktualnej dokumentacji konkretnego modelu, bez kierowania artykułu do producentów lub sklepów.</p>
        <div class="rk-heat-sources">
          <div class="rk-heat-source"><strong><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wyznaczanie projektowej mocy systemów powierzchniowych</a></strong><p>Zakres obejmuje zależność wydajności powierzchni grzewczej od temperatur, konstrukcji i warunków projektowych.</p></div>
          <div class="rk-heat-source"><strong><a href="https://assets.publishing.service.gov.uk/media/662a2e3e55e1582b6ca7e592/Approved_Document_L__Conservation_of_fuel_and_power__Volume_1_Dwellings__2021_edition_incorporating_2023_amendments.pdf" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Approved Document L, Volume 1</a></strong><p>Rządowy dokument omawia projektowanie niskotemperaturowych instalacji wodnych, wymagania regulacji ogrzewania podłogowego i ograniczanie strat dystrybucji.</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 — Domestic Heat Distribution Systems: Evidence Gathering</a></strong><p>Raport analizuje możliwość pracy istniejących instalacji grzejnikowych przy niższych temperaturach oraz znaczenie obciążeń i wielkości odbiorników.</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 zawiera ramy oraz odniesienia do wymagań dotyczących urządzeń grzewczych i informacji energetycznych.</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 • GRZEJNIKI • HYDRAULIKA</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 grzewczych 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>„Najlepszy schemat instalacji mieszanej nie zaczyna się od sprzęgła ani zaworu. Zaczyna się od pytania, jakiej mocy i temperatury naprawdę potrzebują oba rodzaje odbiorników.”</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 instalacji grzewczych dla budynków nowych i modernizowanych. Łączy obliczenia strat ciepła, dobór powierzchni grzewczych, analizę grzejników i hydraulikę obiegów, aby każdy element pracował przy parametrach wynikających z rzeczywistego obciążenia.</p>
              <p>Specjalizuje się w ogrzewaniu podłogowym, instalacjach niskotemperaturowych oraz układach współpracujących z pompami ciepła, kotłami kondensacyjnymi i źródłami wymagającymi ochrony powrotu. Przygotowuje układy pętli, przepływy, straty ciśnienia, nastawy rozdzielaczy i schematy współpracy obiegów.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-exp">
              <p>W instalacjach mieszanych najwięcej problemów powstaje na styku dwóch różnych charakterystyk: szybszych grzejników i bezwładnej podłogi. Przewymiarowana pompa nie naprawi źle dobranego zaworu, a sprzęgło nie zwiększy mocy zbyt małego grzejnika.</p>
              <p>Doświadczenie projektowe obejmuje ocenę modernizowanych instalacji, dobór wspólnych parametrów niskotemperaturowych, rozdzielenie obiegów o różnych temperaturach oraz analizę działania przy częściowym zamknięciu stref.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-method">
              <p>Metodyka zaczyna się od obciążeń cieplnych pomieszczeń. Następnie sprawdzana jest moc grzejników i podłogi przy wspólnym parametrze. Dopiero gdy taki wariant nie pokrywa potrzeb, projekt przechodzi do mieszania, dodatkowych pomp lub uzasadnionego rozdzielenia hydraulicznego.</p>
              <p>Każde narzędzie na portalu ma charakter edukacyjny. Pomaga porządkować decyzje i wykrywać brakujące dane, ale nie zastępuje obliczeń wykonawczych ani aktualnej dokumentacji urządzeń.</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>Nie dobieraj mieszacza i pomp przed obliczeniem odbiorników</h3>
        <p>Projekt może połączyć obciążenia pomieszczeń, moc grzejników, układ pętli, temperatury, przepływy, opory, nastawy oraz schemat współpracy z jednym źródłem ciepła.</p>
        <a class="rk-heat-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </article>
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "inLanguage": "pl-PL",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "instalacje mieszane podłogowe i grzejnikowe",
        "obliczenia cieplne",
        "hydraulika instalacji grzewczych",
        "dobór pomp obiegowych",
        "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/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#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": "Czy ogrzewanie podłogowe można podłączyć do grzejników?",
          "item": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#webpage",
      "url": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/",
      "name": "Czy ogrzewanie podłogowe można podłączyć do grzejników? Schemat instalacji mieszanej",
      "description": "Czy podłogówkę można połączyć z grzejnikami? Porównaj wspólny obieg, grupę mieszającą, RTL i sprzęgło. Sprawdź temperatury, przepływy i sterowanie.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#breadcrumb" },
      "primaryImageOfPage": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"
      },
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-07"
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#article",
      "url": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#webpage" },
      "headline": "Czy ogrzewanie podłogowe można podłączyć do grzejników? Schemat instalacji mieszanej",
      "description": "Techniczny przewodnik po łączeniu ogrzewania podłogowego z grzejnikami: wspólny niski parametr, obieg mieszany, RTL, hydraulika, sterowanie i wymagania źródła.",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-07",
      "inLanguage": "pl-PL",
      "proficiencyLevel": "Intermediate",
      "about": [
        "ogrzewanie podłogowe i grzejniki w jednej instalacji",
        "instalacja mieszana",
        "grupa pompowo-mieszająca",
        "zawór RTL",
        "równoważenie hydrauliczne"
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#analizator" },
        { "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#faq" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#analizator",
      "name": "Interaktywny analizator schematu podłogówki i grzejników",
      "url": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#rk-mix-analizator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "description": "Edukacyjne narzędzie porównujące kierunki koncepcji: wspólny niski parametr, obieg mieszany, lokalne RTL oraz potrzebę dalszych obliczeń.",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#howto",
      "name": "Jak wybrać schemat połączenia podłogówki z grzejnikami",
      "description": "Kolejność sprawdzeń potrzebna przed wyborem wspólnego obiegu, mieszania, RTL albo rozdzielenia hydraulicznego.",
      "totalTime": "PT1H",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Oblicz obciążenia cieplne", "text": "Wyznacz obciążenie cieplne całego budynku i każdego pomieszczenia osobno." },
        { "@type": "HowToStep", "position": 2, "name": "Sprawdź moc grzejników", "text": "Przelicz moc grzejników dla planowanych temperatur zasilania, powrotu i wnętrza." },
        { "@type": "HowToStep", "position": 3, "name": "Sprawdź wydajność podłogi", "text": "Zweryfikuj powierzchnię czynną, konstrukcję, okładzinę, temperaturę powierzchni i wymaganą moc podłogi." },
        { "@type": "HowToStep", "position": 4, "name": "Porównaj temperatury projektowe", "text": "Ustal, czy oba rodzaje odbiorników mogą pokryć obciążenia przy tej samej temperaturze wody." },
        { "@type": "HowToStep", "position": 5, "name": "Policz hydraulikę i wybierz schemat", "text": "Wyznacz przepływy, opory, średnice, Kv i punkty pracy pomp, a następnie wybierz wspólny obieg, mieszanie, RTL lub uzasadnione rozdzielenie." },
        { "@type": "HowToStep", "position": 6, "name": "Skonfiguruj sterowanie", "text": "Ustal krzywe grzewcze, strefy, ograniczenia temperatury oraz zachowanie instalacji przy częściowym obciążeniu." }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy podłogówka i grzejniki mogą działać z jedną pompą?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, jeżeli pracują w odpowiednio zaprojektowanym wspólnym obiegu, a pompa zapewnia całkowity przepływ i pokonuje opór drogi krytycznej. Przy aktywnym mieszaniu lub rozdzieleniu hydraulicznym mogą być potrzebne osobne pompy." }
        },
        {
          "@type": "Question",
          "name": "Czy zawsze potrzebny jest zawór trójdrogowy?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Jeżeli grzejniki i podłoga pokrywają obciążenia przy tej samej temperaturze, mieszanie może być zbędne. Zawór jest potrzebny wtedy, gdy obieg podłogowy rzeczywiście wymaga niższego parametru." }
        },
        {
          "@type": "Question",
          "name": "Czy można zasilić podłogówkę z powrotu grzejnika?",
          "acceptedAnswer": { "@type": "Answer", "text": "Można rozważyć ograniczony wariant z RTL dla pojedynczej małej pętli, ale nie jest to uniwersalny sposób zasilania całej podłogówki. Trzeba policzyć moc, długość, przepływ i temperaturę powierzchni." }
        },
        {
          "@type": "Question",
          "name": "Czy RTL obniża temperaturę zasilania podłogówki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie bezpośrednio. RTL ogranicza temperaturę wody powracającej z pętli. Nie działa tak samo jak zawór mieszający utrzymujący zadany parametr zasilania za pomocą dwóch strumieni." }
        },
        {
          "@type": "Question",
          "name": "Czy instalacja mieszana zawsze wymaga sprzęgła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Sprzęgło stosuje się, gdy potrzebne jest rozdzielenie hydrauliczne obiegu źródła i odbiorników. Jego zasadność wynika z przepływów, oporów, pomp i wymagań źródła, a nie z samej obecności grzejników." }
        },
        {
          "@type": "Question",
          "name": "Czy pompa ciepła może zasilać podłogówkę i grzejniki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak. Najkorzystniej, gdy grzejniki są wystarczające przy możliwie niskiej temperaturze wspólnej z podłogą. Jeżeli wymagają wyższego parametru, trzeba ocenić wpływ na moc i efektywność pompy oraz zaprojektować hydraulikę." }
        },
        {
          "@type": "Question",
          "name": "Jak policzyć przepływ pętli o mocy 1200 W?",
          "acceptedAnswer": { "@type": "Answer", "text": "Dla wody i różnicy temperatur 10 K orientacyjny przepływ wynosi 1200 podzielone przez 11,63, czyli około 103 l/h albo 1,72 l/min. Rzeczywista projektowa różnica temperatur nie musi jednak wynosić 10 K." }
        },
        {
          "@type": "Question",
          "name": "Czy grzejnik przy 45°C zawsze traci 70–80% mocy?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Wynik zależy od jego mocy nominalnej, temperatur zasilania, powrotu i pomieszczenia oraz wykładnika charakterystyki. Każdy model i pomieszczenie trzeba sprawdzić dla konkretnego punktu pracy." }
        },
        {
          "@type": "Question",
          "name": "Czy zawór mieszający dobiera się o 10–20% większy od przepływu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie jest to poprawna uniwersalna reguła. Kv dobiera się z przepływu i założonego spadku ciśnienia, a następnie sprawdza autorytet oraz charakterystykę regulacyjną zaworu." }
        },
        {
          "@type": "Question",
          "name": "Czy wynik analizatora jest projektem hydraulicznym?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Narzędzie wskazuje kierunek koncepcji na podstawie deklarowanych odpowiedzi. Nie liczy mocy odbiorników, przepływów, oporów, Kv, średnic, punktu pracy pomp ani nastaw rozdzielacza." }
        }
      ]
    }
  ]
}
</script>

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

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

  var controlIds = [
    "rk-mix-radiator-check",
    "rk-mix-temperature-relation",
    "rk-mix-floor-scope",
    "rk-mix-source",
    "rk-mix-zones",
    "rk-mix-source-requirements"
  ];
  var routeIds = {
    calculate: "rk-mix-route-calculate",
    direct: "rk-mix-route-direct",
    mixed: "rk-mix-route-mixed",
    special: "rk-mix-route-special"
  };
  var sourceNames = {
    heatpump: "Pompa ciepła",
    condensing: "Kocioł kondensacyjny",
    solid: "Kocioł na pellet / paliwo stałe",
    district: "Sieć ciepłownicza / wymiennik",
    other: "Źródło do potwierdzenia"
  };

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

  function writeList(id, items) {
    var list = document.getElementById(id);
    var i;
    if (!list) { return; }
    while (list.firstChild) { list.removeChild(list.firstChild); }
    for (i = 0; i < items.length; i += 1) {
      var item = document.createElement("li");
      item.textContent = items[i];
      list.appendChild(item);
    }
  }

  function activateRoute(route) {
    var key;
    for (key in routeIds) {
      if (Object.prototype.hasOwnProperty.call(routeIds, key)) {
        var card = document.getElementById(routeIds[key]);
        if (card) { card.classList.remove("is-active"); }
      }
    }
    var selected = document.getElementById(routeIds[route]);
    if (selected) { selected.classList.add("is-active"); }
  }

  function updateAnalyzer() {
    var radiatorCheck = getValue("rk-mix-radiator-check");
    var temperatureRelation = getValue("rk-mix-temperature-relation");
    var floorScope = getValue("rk-mix-floor-scope");
    var source = getValue("rk-mix-source");
    var zones = getValue("rk-mix-zones");
    var sourceRequirements = getValue("rk-mix-source-requirements");
    var route = "calculate";
    var title = "Najpierw sprawdź moc odbiorników";
    var text = "Bez mocy grzejników przy planowanej temperaturze i bez obciążeń pomieszczeń nie można odpowiedzialnie wybrać schematu.";
    var radiatorLabel = "Obieg grzejnikowy — parametr do obliczenia";
    var floorLabel = "Obieg podłogowy — parametr do obliczenia";
    var reasons = [];
    var checks = [];

    if (radiatorCheck === "unknown") {
      reasons.push("Nie sprawdzono mocy grzejników przy planowanej temperaturze wody.");
    }
    if (temperatureRelation === "unknown") {
      reasons.push("Nie ustalono, czy oba rodzaje odbiorników mogą pracować na jednym parametrze.");
    }

    if (radiatorCheck !== "unknown") {
      if (temperatureRelation !== "unknown") {
        if (temperatureRelation === "same") {
          if (radiatorCheck === "yes") {
            route = "direct";
            title = "Najpierw rozważ wspólny niski parametr";
            text = "Jeżeli obliczenia potwierdzają moc obu odbiorników przy tej samej temperaturze, osobne mieszanie nie jest potrzebne tylko dlatego, że część pomieszczeń ma grzejniki.";
            radiatorLabel = "Grzejniki — wspólna niska temperatura";
            floorLabel = "Podłogówka — wspólna niska temperatura";
            reasons.push("Grzejniki pokrywają obciążenia przy parametrze akceptowalnym dla podłogi.");
            reasons.push("Odbiorniki mogą być połączone równolegle i zrównoważone hydraulicznie.");
          } else {
            route = "calculate";
            title = "Założenia są ze sobą sprzeczne — wróć do doboru odbiorników";
            text = "Jeżeli grzejniki są za słabe przy wspólnej temperaturze, nie można uznać wspólnego parametru za potwierdzony. Trzeba zwiększyć ich moc albo przejść do dwóch temperatur.";
            radiatorLabel = "Grzejniki — za mała moc przy niskim parametrze";
            floorLabel = "Podłogówka — temperatura do weryfikacji";
            reasons.push("Deklarowana wspólna temperatura nie zapewnia wymaganej mocy grzejników.");
          }
        } else {
          if (floorScope === "single") {
            route = "special";
            title = "Mała pętla może być kandydatem do ograniczenia RTL";
            text = "Przy jednej małej pętli można przeanalizować lokalne RTL. To nie jest automatyczna zgoda na wpięcie podłogówki w powrót grzejnika i nie zastępuje obliczeń.";
            radiatorLabel = "Obieg grzejnikowy — wyższa temperatura";
            floorLabel = "Jedna mała pętla — wariant RTL do sprawdzenia";
            reasons.push("Odbiorniki wymagają różnych temperatur, ale zakres podłogówki jest lokalny.");
            reasons.push("RTL może ograniczać temperaturę powrotu pojedynczej odpowiedniej pętli.");
          } else {
            route = "mixed";
            title = "Rozważ osobny obieg podłogowy z kontrolą temperatury";
            text = "Jeżeli grzejniki potrzebują wyższego parametru, a podłogówka obejmuje kilka pętli, typowym kierunkiem jest równoległy obieg z mieszaniem i hydrauliką dobraną obliczeniowo.";
            radiatorLabel = "Obieg grzejnikowy — wyższa temperatura";
            floorLabel = "Obieg podłogowy — mieszanie i własny przepływ";
            reasons.push("Wymagane temperatury grzejników i podłogi są różne.");
            reasons.push("Zakres podłogówki jest zbyt duży, aby traktować go jak pojedynczą lokalną pętlę.");
          }
        }
      }
    }

    checks.push("Obciążenia cieplne pomieszczeń i moc każdego odbiornika w punkcie projektowym.");
    checks.push("Przepływy, opory dróg krytycznych, średnice oraz równoważenie obu gałęzi.");
    checks.push("Temperaturę powierzchni podłogi, długości pętli i nastawy rozdzielacza.");

    if (route === "mixed") {
      checks.push("Kv i autorytet zaworu mieszającego oraz punkt pracy pompy obiegu podłogowego.");
    }
    if (route === "special") {
      checks.push("Dopuszczalny zakres RTL, temperaturę powrotu, przepływ i moc pojedynczej pętli.");
    }
    if (route === "direct") {
      checks.push("Czy wspólna pompa zapewnia wymagany przepływ i pokonuje opór drogi krytycznej.");
    }

    if (source === "heatpump") {
      checks.push("Minimalny przepływ, wymaganą objętość układu i warunki odszraniania pompy ciepła.");
    } else if (source === "condensing") {
      checks.push("Minimalną moc kotła, zakres modulacji i wymagany przepływ przez wymiennik.");
    } else if (source === "solid") {
      reasons.push("Źródło na paliwo stałe może wymagać ochrony powrotu i stabilizacji odbioru ciepła.");
      checks.push("Ochronę temperatury powrotu, pojemność wodną oraz ewentualną funkcję bufora.");
    } else if (source === "district") {
      reasons.push("Warunki dostawcy lub wymiennika mogą narzucać odrębne temperatury, ciśnienia i separację.");
      checks.push("Parametry przyłącza, wymiennik oraz dopuszczalne temperatury i ciśnienia po obu stronach.");
    } else {
      checks.push("Pełne wymagania wybranego źródła i jego dokumentację techniczną.");
    }

    if (zones === "yes") {
      checks.push("Logikę niezależnych stref i zachowanie źródła po zamknięciu części odbiorników.");
    } else if (zones === "unknown") {
      checks.push("Zakres stref, harmonogramów i siłowników przed wyborem automatyki.");
    }
    if (sourceRequirements === "unknown") {
      checks.push("Minimalny przepływ, ochronę powrotu i pozostałe warunki producenta lub dostawcy źródła.");
    }
    if (reasons.length === 0) {
      reasons.push("Wybrany kierunek wynika z relacji wymaganych temperatur i skali podłogówki.");
    }

    var titleNode = document.getElementById("rk-mix-result-title");
    var textNode = document.getElementById("rk-mix-result-text");
    var sourceNode = document.getElementById("rk-mix-source-box");
    var radiatorNode = document.getElementById("rk-mix-radiator-box");
    var floorNode = document.getElementById("rk-mix-floor-box");
    if (titleNode) { titleNode.textContent = title; }
    if (textNode) { textNode.textContent = text; }
    if (sourceNode) { sourceNode.textContent = sourceNames[source] || sourceNames.other; }
    if (radiatorNode) { radiatorNode.textContent = radiatorLabel; }
    if (floorNode) { floorNode.textContent = floorLabel; }
    writeList("rk-mix-reasons", reasons);
    writeList("rk-mix-checks", checks);
    activateRoute(route);
  }

  var i;
  for (i = 0; i < controlIds.length; i += 1) {
    var control = document.getElementById(controlIds[i]);
    if (control) { control.addEventListener("change", updateAnalyzer); }
  }
  var button = document.getElementById("rk-mix-run");
  if (button) { button.addEventListener("click", updateAnalyzer); }
  updateAnalyzer();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">Czy ogrzewanie podłogowe można podłączyć do grzejników?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Opór cieplny R [m²K/W] – kalkulator dla ogrzewania podłogowego</title>
		<link>https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 01 Feb 2026 08:32:23 +0000</pubDate>
				<category><![CDATA[Fizyka budowli]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Projekty grzewcze]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Projekty instalacyjne]]></category>
		<category><![CDATA[Projekty ogrzewania]]></category>
		<category><![CDATA[Projekty techniczne]]></category>
		<category><![CDATA[efektywność ogrzewania]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opór cieplny r]]></category>
		<category><![CDATA[panele na ogrzewanie podłogowe]]></category>
		<category><![CDATA[płytki gresowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3358</guid>

					<description><![CDATA[<p>Dlaczego jedne instalacje ogrzewania podłogowego działają sprawnie i tanio, a inne wymagają wysokiej temperatury zasilania i generują duże koszty? Odpowiedź bardzo często kryje się w parametrach warstw podłogi. Opór cieplny R [m²K/W]: Klucz do efektywnego ogrzewania podłogowego to temat, który w praktyce decyduje o komforcie cieplnym, bezwładności systemu i jego opłacalności. W artykule w przystępny, ale technicznie rzetelny sposób wyjaśniamy, jak czytać wartości R, jak liczyć opór warstw i dlaczego granica 0,15 m²K/W ma tak duże znaczenie dla pracy instalacji.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">Opór cieplny R [m²K/W] – kalkulator dla ogrzewania podłogowego</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
#po-r-article,
#po-r-article * {
  box-sizing: border-box;
}

#po-r-article {
  --po-ink: #102c3a;
  --po-muted: #526a75;
  --po-deep: #0c2f40;
  --po-deep-2: #15566a;
  --po-cyan: #50d9eb;
  --po-cyan-soft: #e9fbfe;
  --po-orange: #ff6b43;
  --po-orange-soft: #fff1ec;
  --po-green: #1f9d76;
  --po-green-soft: #eaf8f3;
  --po-red: #b83f3f;
  --po-red-soft: #fff0f0;
  --po-line: #dbe5e9;
  --po-bg: #f5f8f9;
  --po-radius: 22px;
  --po-shadow: 0 18px 50px rgba(12, 47, 64, 0.09);
  max-width: 1180px;
  margin: 0 auto;
  color: var(--po-ink);
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 17px;
  line-height: 1.72;
}

#po-r-article a {
  color: #087c96;
  font-weight: 700;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}

#po-r-article a:hover {
  color: #075e73;
}

#po-r-article p,
#po-r-article ul,
#po-r-article ol {
  margin-top: 0;
  margin-bottom: 1.15em;
}

#po-r-article h2,
#po-r-article h3,
#po-r-article h4 {
  color: var(--po-deep);
  line-height: 1.2;
  letter-spacing: -0.025em;
}

#po-r-article h2 {
  margin: 2.7em 0 0.75em;
  font-size: clamp(1.7rem, 3vw, 2.35rem);
  scroll-margin-top: 30px;
}

#po-r-article h3 {
  margin: 1.8em 0 0.65em;
  font-size: clamp(1.22rem, 2vw, 1.5rem);
}

#po-r-article h4 {
  margin: 1.35em 0 0.45em;
  font-size: 1.05rem;
}

#po-r-article strong {
  color: var(--po-deep);
}

#po-r-article .po-r-section {
  padding: 0 clamp(2px, 2.8vw, 34px);
}

#po-r-article .po-r-hero {
  position: relative;
  overflow: hidden;
  padding: clamp(34px, 7vw, 78px);
  border-radius: 30px;
  color: #fff;
  background:
    radial-gradient(circle at 88% 20%, rgba(80, 217, 235, 0.23), transparent 32%),
    linear-gradient(135deg, #0b2b3b 0%, #10485b 62%, #17677a 100%);
  box-shadow: var(--po-shadow);
}

#po-r-article .po-r-hero::after {
  content: "";
  position: absolute;
  right: -120px;
  bottom: -240px;
  width: 360px;
  height: 360px;
  border: 52px solid rgba(255, 255, 255, 0.045);
  border-radius: 50%;
}

#po-r-article .po-r-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #9af2fb;
  font-size: 0.82rem;
  font-weight: 900;
  letter-spacing: 0.105em;
  text-transform: uppercase;
}

#po-r-article .po-r-eyebrow::before {
  content: "";
  flex: 0 0 10px;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: var(--po-orange);
  box-shadow: 0 0 0 7px rgba(255, 107, 67, 0.15);
}

#po-r-article .po-r-display {
  max-width: 920px;
  margin: 22px 0 20px;
  color: #fff;
  font-size: clamp(2.15rem, 6vw, 4.6rem);
  font-weight: 950;
  line-height: 0.99;
  letter-spacing: -0.06em;
}

#po-r-article .po-r-display span {
  color: var(--po-cyan);
}

#po-r-article .po-r-lead {
  max-width: 860px;
  color: #e1f1f4;
  font-size: clamp(1.02rem, 2vw, 1.23rem);
}

#po-r-article .po-r-hero-facts {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 30px;
}

#po-r-article .po-r-hero-fact {
  padding: 18px;
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.075);
}

#po-r-article .po-r-hero-fact b {
  display: block;
  margin-bottom: 4px;
  color: var(--po-cyan);
  font-size: 1.08rem;
}

#po-r-article .po-r-hero-fact span {
  color: #e2f0f3;
  font-size: 0.92rem;
}

#po-r-article .po-r-meta {
  position: relative;
  z-index: 1;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-top: 24px;
  color: #c9e1e6;
  font-size: 0.85rem;
}

#po-r-article .po-r-quick {
  margin: 28px clamp(2px, 2.8vw, 34px) 0;
  padding: 22px;
  border: 1px solid var(--po-line);
  border-radius: 20px;
  background: #fff;
}

#po-r-article .po-r-quick-title {
  margin: 0 0 13px;
  color: var(--po-deep);
  font-weight: 900;
}

#po-r-article .po-r-quick-links {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}

#po-r-article .po-r-quick-links a {
  display: inline-flex;
  align-items: center;
  min-height: 38px;
  padding: 7px 12px;
  border: 1px solid #cfe1e6;
  border-radius: 999px;
  color: #15495b;
  background: #f8fbfc;
  font-size: 0.83rem;
  text-decoration: none;
}

#po-r-article .po-r-quick-links a:hover {
  border-color: var(--po-cyan);
  background: var(--po-cyan-soft);
}

#po-r-article .po-r-answer {
  display: grid;
  grid-template-columns: minmax(200px, 0.75fr) minmax(0, 1.55fr);
  gap: 22px;
  align-items: stretch;
  margin: 24px 0;
}

#po-r-article .po-r-formula {
  display: grid;
  place-items: center;
  min-height: 190px;
  padding: 26px;
  border-radius: var(--po-radius);
  color: #fff;
  background: var(--po-deep);
  text-align: center;
}

#po-r-article .po-r-formula b {
  color: var(--po-cyan);
  font-family: Georgia, serif;
  font-size: clamp(2.35rem, 6vw, 4.2rem);
  font-weight: 800;
  letter-spacing: -0.04em;
}

#po-r-article .po-r-formula small {
  display: block;
  color: #d3e7eb;
}

#po-r-article .po-r-answer-copy {
  padding: 25px;
  border: 1px solid var(--po-line);
  border-radius: var(--po-radius);
  background: var(--po-bg);
}

#po-r-article .po-r-note,
#po-r-article .po-r-warning,
#po-r-article .po-r-success {
  margin: 22px 0;
  padding: 19px 21px;
  border-radius: 16px;
}

#po-r-article .po-r-note {
  border-left: 5px solid var(--po-cyan);
  background: var(--po-cyan-soft);
}

#po-r-article .po-r-warning {
  border-left: 5px solid var(--po-orange);
  background: var(--po-orange-soft);
}

#po-r-article .po-r-success {
  border-left: 5px solid var(--po-green);
  background: var(--po-green-soft);
}

#po-r-article .po-r-tool {
  margin: 28px 0;
  overflow: hidden;
  border: 1px solid #cfe0e5;
  border-radius: 28px;
  background: #fff;
  box-shadow: var(--po-shadow);
}

#po-r-article .po-r-tool-head {
  padding: clamp(24px, 4vw, 38px);
  color: #fff;
  background: linear-gradient(135deg, #0d3547, #176479);
}

#po-r-article .po-r-tool-head h3 {
  margin: 0 0 10px;
  color: #fff;
}

#po-r-article .po-r-tool-head p {
  margin-bottom: 0;
  color: #d9edf1;
}

#po-r-article .po-r-tool-body {
  padding: clamp(18px, 4vw, 38px);
}

#po-r-article .po-r-demo-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}

#po-r-article button {
  font: inherit;
}

#po-r-article .po-r-btn {
  appearance: none;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 43px;
  padding: 9px 15px;
  border: 1px solid #bcd3da;
  border-radius: 12px;
  color: var(--po-deep);
  background: #fff;
  font-size: 0.88rem;
  font-weight: 850;
  cursor: pointer;
}

#po-r-article .po-r-btn:hover,
#po-r-article .po-r-btn:focus-visible {
  border-color: #0a849e;
  background: var(--po-cyan-soft);
  outline: none;
}

#po-r-article .po-r-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

#po-r-article .po-r-field label,
#po-r-article .po-r-field-label {
  color: #294957;
  font-size: 0.78rem;
  font-weight: 850;
  line-height: 1.35;
}

#po-r-article .po-r-field input,
#po-r-article .po-r-field select {
  width: 100%;
  min-height: 44px;
  padding: 9px 11px;
  border: 1px solid #b8cbd2;
  border-radius: 10px;
  color: var(--po-ink);
  background: #fff;
}

#po-r-article .po-r-field input:focus,
#po-r-article .po-r-field select:focus {
  border-color: #0888a1;
  box-shadow: 0 0 0 3px rgba(80, 217, 235, 0.22);
  outline: none;
}

#po-r-article .po-r-q-box {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(190px, 0.5fr);
  gap: 16px;
  align-items: end;
  margin: 20px 0 24px;
  padding: 18px;
  border-radius: 16px;
  background: var(--po-bg);
}

#po-r-article .po-r-q-box p {
  margin: 0;
  color: var(--po-muted);
  font-size: 0.88rem;
}

#po-r-article .po-r-zone {
  margin: 20px 0;
  overflow: hidden;
  border: 1px solid var(--po-line);
  border-radius: 19px;
}

#po-r-article .po-r-zone[data-zone="finish"] {
  border-top: 5px solid #18a7c1;
}

#po-r-article .po-r-zone[data-zone="construction"] {
  border-top: 5px solid var(--po-orange);
}

#po-r-article .po-r-zone[data-zone="insulation"] {
  border-top: 5px solid var(--po-green);
}

#po-r-article .po-r-zone-head {
  padding: 19px 20px 13px;
  background: #fbfdfe;
}

#po-r-article .po-r-zone-head h4 {
  margin: 0 0 4px;
}

#po-r-article .po-r-zone-head p {
  margin: 0;
  color: var(--po-muted);
  font-size: 0.87rem;
}

#po-r-article .po-r-rows {
  padding: 4px 15px 10px;
}

#po-r-article .po-r-layer-row {
  display: grid;
  grid-template-columns: minmax(155px, 1.2fr) minmax(155px, 0.9fr) minmax(225px, 1.35fr) 115px 44px;
  gap: 10px;
  align-items: end;
  padding: 14px 0;
  border-top: 1px dashed #d8e3e7;
}

#po-r-article .po-r-layer-row:first-child {
  border-top: 0;
}

#po-r-article .po-r-value-fields {
  min-width: 0;
}

#po-r-article .po-r-fields-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

#po-r-article .po-r-layer-row [data-source-field] {
  display: none;
}

#po-r-article .po-r-layer-row[data-method="r"] [data-source-field="r"],
#po-r-article .po-r-layer-row[data-method="lambda"] [data-source-field="lambda"],
#po-r-article .po-r-layer-row[data-method="tog"] [data-source-field="tog"] {
  display: block;
}

#po-r-article .po-r-row-result {
  display: flex;
  min-height: 44px;
  align-items: center;
  justify-content: center;
  padding: 8px;
  border-radius: 10px;
  color: var(--po-deep);
  background: #edf4f6;
  font-weight: 900;
  text-align: center;
}

#po-r-article .po-r-remove {
  width: 44px;
  min-height: 44px;
  padding: 0;
  border: 1px solid #e1c5c5;
  border-radius: 10px;
  color: var(--po-red);
  background: #fff;
  font-weight: 950;
  cursor: pointer;
}

#po-r-article .po-r-remove:hover,
#po-r-article .po-r-remove:focus-visible {
  background: var(--po-red-soft);
  outline: none;
}

#po-r-article .po-r-zone-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 15px;
  padding: 13px 16px;
  border-top: 1px solid var(--po-line);
  background: #f8fbfc;
}

#po-r-article .po-r-zone-total {
  font-size: 0.9rem;
  font-weight: 900;
}

#po-r-article .po-r-results {
  margin-top: 28px;
  padding: clamp(20px, 4vw, 30px);
  border-radius: 22px;
  color: #fff;
  background: #0e3344;
}

#po-r-article .po-r-results h4 {
  margin-top: 0;
  color: #fff;
}

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

#po-r-article .po-r-result-card {
  min-height: 126px;
  padding: 16px;
  border: 1px solid rgba(255, 255, 255, 0.13);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.07);
}

#po-r-article .po-r-result-card span {
  display: block;
  color: #bed9df;
  font-size: 0.76rem;
  font-weight: 800;
  line-height: 1.35;
}

#po-r-article .po-r-result-card strong {
  display: block;
  margin: 9px 0 3px;
  color: var(--po-cyan);
  font-size: clamp(1.4rem, 3vw, 2rem);
  line-height: 1;
}

#po-r-article .po-r-result-card small {
  color: #d7e8eb;
  font-size: 0.74rem;
  line-height: 1.35;
}

#po-r-article .po-r-gauge {
  margin-top: 18px;
}

#po-r-article .po-r-gauge-label {
  display: flex;
  justify-content: space-between;
  gap: 15px;
  margin-bottom: 7px;
  color: #d7e8eb;
  font-size: 0.78rem;
}

#po-r-article .po-r-gauge-track {
  height: 13px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.15);
}

#po-r-article .po-r-gauge-fill {
  width: 0;
  height: 100%;
  border-radius: inherit;
  background: var(--po-cyan);
  transition: width 0.25s ease, background 0.25s ease;
}

#po-r-article .po-r-status {
  margin: 16px 0 0;
  padding: 14px 16px;
  border-radius: 13px;
  color: #f1fbfd;
  background: rgba(80, 217, 235, 0.12);
}

#po-r-article .po-r-status[data-level="warning"] {
  background: rgba(255, 183, 58, 0.14);
}

#po-r-article .po-r-status[data-level="alert"] {
  background: rgba(255, 107, 67, 0.17);
}

#po-r-article .po-r-live {
  min-height: 24px;
  margin-top: 8px;
  color: #7b3d00;
  font-size: 0.84rem;
  font-weight: 700;
}

#po-r-article .po-r-table-wrap {
  margin: 22px 0;
  overflow: hidden;
  border: 1px solid var(--po-line);
  border-radius: 18px;
}

#po-r-article .po-r-table {
  width: 100%;
  margin: 0;
  border-collapse: collapse;
}

#po-r-article .po-r-table th,
#po-r-article .po-r-table td {
  padding: 14px 15px;
  border-bottom: 1px solid var(--po-line);
  vertical-align: top;
  text-align: left;
}

#po-r-article .po-r-table th {
  color: #fff;
  background: var(--po-deep);
  font-size: 0.82rem;
}

#po-r-article .po-r-table tr:last-child td {
  border-bottom: 0;
}

#po-r-article .po-r-table tbody tr:nth-child(even) {
  background: #f8fbfc;
}

#po-r-article .po-r-result-table-wrap {
  margin-top: 18px;
  border-color: rgba(255, 255, 255, 0.17);
}

#po-r-article .po-r-result-table th {
  background: rgba(255, 255, 255, 0.1);
}

#po-r-article .po-r-result-table td {
  border-bottom-color: rgba(255, 255, 255, 0.12);
  color: #f1f8fa;
}

#po-r-article .po-r-result-table tbody tr:nth-child(even) {
  background: rgba(255, 255, 255, 0.045);
}

#po-r-article .po-r-cards {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin: 22px 0;
}

#po-r-article .po-r-card {
  padding: 21px;
  border: 1px solid var(--po-line);
  border-radius: 18px;
  background: #fff;
}

#po-r-article .po-r-card h3 {
  margin-top: 0;
}

#po-r-article .po-r-card p:last-child {
  margin-bottom: 0;
}

#po-r-article .po-r-card-accent {
  border-top: 5px solid var(--po-cyan);
}

#po-r-article .po-r-card-orange {
  border-top: 5px solid var(--po-orange);
}

#po-r-article .po-r-card-green {
  border-top: 5px solid var(--po-green);
}

#po-r-article .po-r-cta {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 22px;
  align-items: center;
  margin: 32px 0;
  padding: clamp(24px, 4vw, 36px);
  border-radius: 24px;
  color: #fff;
  background: linear-gradient(135deg, #0c3041, #155c70);
  box-shadow: var(--po-shadow);
}

#po-r-article .po-r-cta h3 {
  margin: 0 0 9px;
  color: #fff;
}

#po-r-article .po-r-cta p {
  margin-bottom: 0;
  color: #dcecf0;
}

#po-r-article .po-r-cta a {
  display: inline-flex;
  justify-content: center;
  align-items: center;
  min-height: 52px;
  max-width: 320px;
  padding: 12px 20px;
  border-radius: 13px;
  color: #fff;
  background: var(--po-orange);
  font-weight: 900;
  line-height: 1.25;
  text-align: center;
  text-decoration: none;
}

#po-r-article .po-r-cta a:hover {
  color: #fff;
  background: #e95631;
}

#po-r-article .po-r-steps {
  margin: 24px 0;
  padding: clamp(20px, 4vw, 32px);
  border-radius: 24px;
  background: var(--po-bg);
}

#po-r-article .po-r-step-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 13px;
}

#po-r-article .po-r-step {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  width: 100%;
  min-height: 104px;
  padding: 15px;
  border: 1px solid #ccdde2;
  border-radius: 16px;
  color: var(--po-ink);
  background: #fff;
  text-align: left;
  cursor: pointer;
}

#po-r-article .po-r-step:hover,
#po-r-article .po-r-step:focus-visible,
#po-r-article .po-r-step[aria-selected="true"] {
  border-color: #118da6;
  background: var(--po-cyan-soft);
  outline: none;
}

#po-r-article .po-r-step-number {
  display: inline-flex;
  width: 42px;
  height: 42px;
  flex: 0 0 42px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #fff;
  background: var(--po-deep);
  font-weight: 950;
  line-height: 1;
}

#po-r-article .po-r-step b {
  display: block;
  color: var(--po-deep);
}

#po-r-article .po-r-step small {
  display: block;
  margin-top: 3px;
  color: var(--po-muted);
  line-height: 1.35;
}

#po-r-article .po-r-step-detail {
  margin-top: 16px;
  padding: 22px;
  border-left: 5px solid var(--po-orange);
  border-radius: 15px;
  background: #fff;
}

#po-r-article .po-r-step-detail h3 {
  margin-top: 0;
}

#po-r-article .po-r-step-detail[hidden] {
  display: none;
}

#po-r-article .po-r-eq {
  display: block;
  margin: 18px 0;
  padding: 17px;
  border-radius: 13px;
  color: var(--po-deep);
  background: #edf5f7;
  font-family: Georgia, serif;
  font-size: clamp(1.2rem, 3vw, 1.65rem);
  font-weight: 800;
  text-align: center;
}

#po-r-article .po-r-checklist {
  counter-reset: po-check;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  padding: 0;
  list-style: none;
}

#po-r-article .po-r-checklist li {
  counter-increment: po-check;
  position: relative;
  min-height: 96px;
  margin: 0;
  padding: 18px 18px 18px 64px;
  border: 1px solid var(--po-line);
  border-radius: 16px;
  background: #fff;
}

#po-r-article .po-r-checklist li::before {
  content: counter(po-check);
  position: absolute;
  top: 18px;
  left: 17px;
  display: flex;
  width: 32px;
  height: 32px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #fff;
  background: var(--po-deep);
  font-size: 0.82rem;
  font-weight: 950;
  line-height: 1;
}

#po-r-article .po-r-faq {
  display: grid;
  gap: 10px;
}

#po-r-article .po-r-faq details {
  border: 1px solid var(--po-line);
  border-radius: 15px;
  background: #fff;
}

#po-r-article .po-r-faq summary {
  position: relative;
  padding: 17px 50px 17px 18px;
  color: var(--po-deep);
  font-weight: 900;
  cursor: pointer;
  list-style: none;
}

#po-r-article .po-r-faq summary::-webkit-details-marker {
  display: none;
}

#po-r-article .po-r-faq summary::after {
  content: "+";
  position: absolute;
  top: 50%;
  right: 18px;
  color: var(--po-orange);
  font-size: 1.5rem;
  transform: translateY(-50%);
}

#po-r-article .po-r-faq details[open] summary::after {
  content: "–";
}

#po-r-article .po-r-faq-answer {
  padding: 0 18px 17px;
}

#po-r-article .po-r-sources {
  padding: 22px 25px;
  border-radius: 18px;
  background: #f2f6f7;
}

#po-r-article .po-r-small {
  color: var(--po-muted);
  font-size: 0.82rem;
}

/* AUTOR I WERYFIKACJA MERYTORYCZNA */
#po-r-article .po-r-author-verify {
  margin: 44px 0 14px;
  overflow: hidden;
  border-radius: 30px;
  color: #fff;
  background:
    radial-gradient(circle at 92% 12%, rgba(80, 217, 235, 0.11), transparent 30%),
    linear-gradient(135deg, #0c2d3e 0%, #123f51 55%, #194f60 100%);
  box-shadow: var(--po-shadow);
}

#po-r-article .po-r-author-verify strong {
  color: #fff;
}

#po-r-article .po-r-author-verify-head {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 26px;
  align-items: end;
  padding: clamp(30px, 5vw, 48px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

#po-r-article .po-r-author-verify-eyebrow {
  margin: 0 0 13px;
  color: #65e9f5;
  font-size: 0.79rem;
  font-weight: 950;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

#po-r-article .po-r-author-verify-head h2 {
  margin: 0 0 12px;
  color: #fff;
  font-size: clamp(2rem, 4.7vw, 3.55rem);
  letter-spacing: -0.05em;
}

#po-r-article .po-r-author-verify-intro {
  max-width: 850px;
  margin: 0;
  color: #e2f0f3;
  font-size: clamp(1rem, 2vw, 1.19rem);
}

#po-r-article .po-r-author-date {
  align-self: center;
  padding: 10px 17px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 999px;
  color: #fff;
  font-size: 0.78rem;
  font-weight: 900;
  white-space: nowrap;
}

#po-r-article .po-r-author-verify-body {
  display: grid;
  grid-template-columns: 290px minmax(0, 1fr);
}

#po-r-article .po-r-author-profile {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: clamp(28px, 4vw, 46px) 25px;
  border-right: 1px solid rgba(255, 255, 255, 0.12);
  text-align: center;
}

#po-r-article .po-r-author-photo-link {
  display: block;
  border-radius: 50%;
  text-decoration: none;
}

#po-r-article .po-r-author-photo {
  display: block;
  width: 154px;
  height: 154px;
  border: 6px solid rgba(255, 255, 255, 0.18);
  border-radius: 50%;
  background: #f3f6f7;
  object-fit: cover;
  filter: grayscale(1);
}

#po-r-article .po-r-author-profile h3 {
  margin: 20px 0 7px;
  color: #fff;
  font-size: 1.34rem;
}

#po-r-article .po-r-author-profile h3 a {
  color: #fff;
  text-decoration: none;
}

#po-r-article .po-r-author-profile h3 a:hover {
  color: #65e9f5;
}

#po-r-article .po-r-author-profile-role {
  margin: 0;
  color: #d2e5e9;
  font-size: 0.88rem;
  line-height: 1.55;
}

#po-r-article .po-r-author-social-label {
  margin: 25px 0 10px;
  color: #65e9f5;
  font-size: 0.73rem;
  font-weight: 950;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

#po-r-article .po-r-author-socials {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 9px;
}

#po-r-article .po-r-author-socials a {
  display: inline-flex;
  width: 45px;
  height: 45px;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: 50%;
  color: #fff;
  background: rgba(255, 255, 255, 0.11);
  font-size: 1rem;
  font-weight: 950;
  line-height: 1;
  text-decoration: none;
}

#po-r-article .po-r-author-socials a:hover,
#po-r-article .po-r-author-socials a:focus-visible {
  border-color: #65e9f5;
  color: #65e9f5;
  background: rgba(101, 233, 245, 0.09);
  outline: none;
}

#po-r-article .po-r-author-content {
  min-width: 0;
  padding: clamp(28px, 4vw, 46px);
}

#po-r-article .po-r-author-main-quote {
  position: relative;
  margin: 0;
  padding: 10px 0 22px 74px;
  border: 0;
  color: #fff;
  background: transparent;
  font-size: clamp(1.08rem, 2vw, 1.29rem);
  font-style: italic;
  font-weight: 800;
  line-height: 1.72;
}

#po-r-article .po-r-author-main-quote::before {
  content: "“";
  position: absolute;
  top: -12px;
  left: 0;
  color: #65e9f5;
  font-family: Georgia, serif;
  font-size: 5rem;
  font-style: normal;
  font-weight: 900;
  line-height: 1;
}

#po-r-article .po-r-author-proof-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 14px;
  margin-top: 10px;
}

#po-r-article .po-r-author-proof {
  min-height: 180px;
  padding: 20px;
  border: 1px solid rgba(255, 255, 255, 0.04);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.09);
}

#po-r-article .po-r-author-proof h3 {
  margin: 0 0 9px;
  color: #65e9f5;
  font-size: 0.89rem;
  letter-spacing: -0.01em;
}

#po-r-article .po-r-author-proof p {
  margin: 0;
  color: #edf6f8;
  font-size: 0.86rem;
  line-height: 1.58;
}

#po-r-article .po-r-author-portals {
  margin-top: 26px;
}

#po-r-article .po-r-author-portals-title {
  margin: 0 0 11px;
  color: #65e9f5;
  font-size: 0.74rem;
  font-weight: 950;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

#po-r-article .po-r-author-portal-links {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}

#po-r-article .po-r-author-portal-links a {
  display: inline-flex;
  align-items: center;
  min-height: 42px;
  padding: 8px 15px;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 999px;
  color: #fff;
  background: transparent;
  font-size: 0.78rem;
  font-weight: 900;
  text-decoration: none;
}

#po-r-article .po-r-author-portal-links a:hover,
#po-r-article .po-r-author-portal-links a:focus-visible {
  border-color: #65e9f5;
  color: #65e9f5;
  background: rgba(101, 233, 245, 0.08);
  outline: none;
}

@media (max-width: 980px) {
  #po-r-article .po-r-layer-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #po-r-article .po-r-result-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #po-r-article .po-r-author-verify-body {
    grid-template-columns: 235px minmax(0, 1fr);
  }

  #po-r-article .po-r-author-proof-grid {
    grid-template-columns: 1fr;
  }

  #po-r-article .po-r-author-proof {
    min-height: 0;
  }
}

@media (max-width: 760px) {
  #po-r-article {
    font-size: 16px;
  }

  #po-r-article .po-r-hero {
    border-radius: 22px;
  }

  #po-r-article .po-r-hero-facts,
  #po-r-article .po-r-answer,
  #po-r-article .po-r-cards,
  #po-r-article .po-r-step-grid,
  #po-r-article .po-r-checklist,
  #po-r-article .po-r-cta,
  #po-r-article .po-r-q-box {
    grid-template-columns: 1fr;
  }

  #po-r-article .po-r-cta a {
    max-width: none;
  }

  #po-r-article .po-r-table-wrap {
    overflow: visible;
    border: 0;
  }

  #po-r-article .po-r-table thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
  }

  #po-r-article .po-r-table,
  #po-r-article .po-r-table tbody,
  #po-r-article .po-r-table tr,
  #po-r-article .po-r-table td {
    display: block;
    width: 100%;
  }

  #po-r-article .po-r-table tr {
    margin-bottom: 12px;
    overflow: hidden;
    border: 1px solid var(--po-line);
    border-radius: 14px;
    background: #fff;
  }

  #po-r-article .po-r-table td {
    display: grid;
    grid-template-columns: minmax(108px, 0.8fr) minmax(0, 1.2fr);
    gap: 12px;
    border-bottom: 1px solid var(--po-line);
  }

  #po-r-article .po-r-table td::before {
    content: attr(data-label);
    color: var(--po-muted);
    font-size: 0.76rem;
    font-weight: 900;
    text-transform: uppercase;
  }

  #po-r-article .po-r-result-table tr {
    border-color: rgba(255, 255, 255, 0.16);
    background: rgba(255, 255, 255, 0.05);
  }

  #po-r-article .po-r-result-table td::before {
    color: #bcd6dc;
  }

  #po-r-article .po-r-author-verify-head,
  #po-r-article .po-r-author-verify-body {
    grid-template-columns: 1fr;
  }

  #po-r-article .po-r-author-date {
    justify-self: start;
  }

  #po-r-article .po-r-author-profile {
    border-right: 0;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  }

  #po-r-article .po-r-author-main-quote {
    padding: 58px 0 18px;
  }

  #po-r-article .po-r-author-main-quote::before {
    top: -7px;
  }
}

@media (max-width: 560px) {
  #po-r-article .po-r-layer-row,
  #po-r-article .po-r-result-grid {
    grid-template-columns: 1fr;
  }

  #po-r-article .po-r-fields-pair {
    grid-template-columns: 1fr;
  }

  #po-r-article .po-r-remove {
    width: 100%;
  }

  #po-r-article .po-r-zone-foot {
    align-items: stretch;
    flex-direction: column;
  }
}

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

<article id="po-r-article">
  <header class="po-r-hero">
    <div class="po-r-eyebrow">
      Od karty technicznej do danych projektowych
    </div>

    <p class="po-r-display">
      Opór cieplny podłogi <span>bez mieszania warstw</span>
    </p>

    <p class="po-r-lead">
      Opór okładziny, jastrych i izolacja pod rurami nie są jednym
      parametrem. Ten poradnik pokazuje, jak prawidłowo obliczyć R,
      co naprawdę oznacza 0,15 m²K/W i dlaczego z samego wyniku
      nie wolno wyznaczać temperatury zasilania.
    </p>

    <div class="po-r-hero-facts" aria-label="Najważniejsze informacje">
      <div class="po-r-hero-fact">
        <b>R = d / λ</b>
        <span>Wzór pomocniczy dla jednorodnej warstwy materiału.</span>
      </div>

      <div class="po-r-hero-fact">
        <b>0,15 m²K/W</b>
        <span>Dotyczy kompletnego wykończenia, a nie całej podłogi.</span>
      </div>

      <div class="po-r-hero-fact">
        <b>R ≠ temperatura wody</b>
        <span>Do temperatury zasilania potrzebne są obliczenia systemu.</span>
      </div>
    </div>

    <div class="po-r-meta">
      <span>Autor: Robert Kucharski</span>
      <span>Aktualizacja techniczna: 14 września 2026 r.</span>
      <span>Czas czytania: około 17 minut</span>
    </div>
  </header>

  <nav class="po-r-quick" aria-label="Na skróty">
    <p class="po-r-quick-title">Na skróty</p>

    <div class="po-r-quick-links">
      <a href="#r-szybka-odpowiedz">Szybka odpowiedź</a>
      <a href="#r-kalkulator">Kalkulator R</a>
      <a href="#r-interpretacja">Interpretacja</a>
      <a href="#r-limit-015">Co oznacza 0,15?</a>
      <a href="#r-parametry">R, λ, U i TOG</a>
      <a href="#r-warstwy">Które warstwy sumować?</a>
      <a href="#r-kierunki">Nad i pod rurami</a>
      <a href="#r-grafika">Grafika edukacyjna</a>
      <a href="#r-karta-techniczna">Karta techniczna</a>
      <a href="#r-przyklady">Przykłady</a>
      <a href="#r-wplyw">Wpływ na moc</a>
      <a href="#r-projekt">R a projekt</a>
      <a href="#r-bledy">Najczęstsze błędy</a>
      <a href="#r-checklista">Checklista</a>
      <a href="#r-faq">FAQ</a>
      <a href="#r-zrodla">Źródła</a>
      <a href="#r-podsumowanie">Podsumowanie</a>
      <a href="#r-autor">Autor</a>
    </div>
  </nav>

  <div class="po-r-section">
    <section id="r-szybka-odpowiedz">
      <h2>Opór cieplny R – szybka odpowiedź</h2>

      <div class="po-r-answer">
        <div class="po-r-formula" aria-label="R równa się d podzielone przez lambda">
          <div>
            <b>R = d / λ</b>
            <small>R [m²K/W] · d [m] · λ [W/(mK)]</small>
          </div>
        </div>

        <div class="po-r-answer-copy">
          <p>
            <strong>
              Opór cieplny R mówi, jak bardzo warstwa utrudnia przepływ ciepła.
            </strong>
            Im większe R, tym większa różnica temperatur jest potrzebna
            do przekazania tego samego strumienia ciepła.
          </p>

          <p>
            W ogrzewaniu podłogowym niski opór wykończenia nad jastrychem
            ułatwia oddawanie ciepła do pomieszczenia. Pod rurami potrzebna
            jest natomiast izolacja ograniczająca przepływ w dół.
          </p>
        </div>
      </div>

      <p>
        Dla warstwy o grubości 12 mm i przewodności λ = 0,15 W/(mK)
        najpierw zamieniamy 12 mm na 0,012 m, a następnie dzielimy
        0,012 przez 0,15. Otrzymujemy R = 0,080 m²K/W.
      </p>

      <div class="po-r-warning">
        <strong>Najważniejsze zastrzeżenie:</strong>
        wzór jest właściwy dla jednorodnej warstwy i wiarygodnej wartości λ.
        Dla panelu wielowarstwowego, wykładziny, podkładu lub gotowego systemu
        lepiej użyć R zadeklarowanego przez producenta.
      </div>

      <p>
        Jeżeli chcesz uporządkować cały proces przekazywania ciepła od rury
        do pomieszczenia, zobacz
        <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">
          jak działa ogrzewanie podłogowe
        </a>.
      </p>
    </section>

    <section id="r-kalkulator">
      <h2>Kalkulator oporu cieplnego podłogi</h2>

      <p>
        Kalkulator rozdziela wykończenie, konstrukcję grzewczą i izolację
        pod rurami. Nie tworzy jednej przypadkowej sumy, której nie da się
        później poprawnie zinterpretować.
      </p>

      <div class="po-r-tool" data-r-calculator="">
        <div class="po-r-tool-head">
          <h3>Policz R każdej warstwy i właściwe sumy</h3>

          <p>
            Wprowadź opór z karty produktu, grubość i lambdę albo wartość
            TOG. Wszystkie wyniki są przeliczane na m²K/W.
          </p>
        </div>

        <div class="po-r-tool-body">
          <div class="po-r-demo-row" aria-label="Przykładowe zestawy">
            <span class="po-r-field-label">Wczytaj przykład:</span>

            <button class="po-r-btn" type="button" data-demo="panel">
              Panel + podkład
            </button>

            <button class="po-r-btn" type="button" data-demo="tile">
              Płytka + klej
            </button>

            <button class="po-r-btn" type="button" data-demo="clear">
              Wyczyść dane
            </button>
          </div>

          <div class="po-r-q-box">
            <p>
              <strong>Opcjonalna interpretacja.</strong>
              Wpisz wymagany strumień ciepła, aby zobaczyć orientacyjny
              spadek temperatury tylko na komplecie wykończenia.
              To nadal nie jest temperatura zasilania instalacji.
            </p>

            <div class="po-r-field">
              <label for="po-r-heat-flux">
                Strumień ciepła q [W/m²]
              </label>

              <input id="po-r-heat-flux" type="text" inputmode="decimal" value="50" aria-describedby="po-r-q-help">

              <span id="po-r-q-help" class="po-r-small">
                Wynika z obciążenia pomieszczenia i powierzchni czynnej.
              </span>
            </div>
          </div>

          <div class="po-r-zone" data-zone="finish">
            <div class="po-r-zone-head">
              <h4>1. Wykończenie nad jastrychem – Rλ,B</h4>

              <p>
                Panel i podkład albo płytka i klej. Tylko ta suma jest
                porównywana z wartością 0,15 m²K/W.
              </p>
            </div>

            <div class="po-r-rows" data-rows="finish"></div>

            <div class="po-r-zone-foot">
              <button class="po-r-btn" type="button" data-add-row="finish">
                + Dodaj warstwę wykończenia
              </button>

              <span class="po-r-zone-total">
                Suma Rλ,B:
                <output data-zone-total="finish">0,000</output> m²K/W
              </span>
            </div>
          </div>

          <div class="po-r-zone" data-zone="construction">
            <div class="po-r-zone-head">
              <h4>2. Konstrukcja grzewcza – wynik informacyjny</h4>

              <p>
                Jastrych, płyta gipsowo-włóknowa lub element systemu.
                Wynik nie jest dodawany do Rλ,B i nie zastępuje
                charakterystyki systemu.
              </p>
            </div>

            <div class="po-r-rows" data-rows="construction"></div>

            <div class="po-r-zone-foot">
              <button class="po-r-btn" type="button" data-add-row="construction">
                + Dodaj warstwę konstrukcji
              </button>

              <span class="po-r-zone-total">
                Suma pomocnicza:
                <output data-zone-total="construction">0,000</output> m²K/W
              </span>
            </div>
          </div>

          <div class="po-r-zone" data-zone="insulation">
            <div class="po-r-zone-head">
              <h4>3. Izolacja pod rurami – Rλ,ins</h4>

              <p>
                Ta wartość ogranicza przepływ w dół. Nie obowiązuje dla niej
                limit 0,15 m²K/W dotyczący wykończenia.
              </p>
            </div>

            <div class="po-r-rows" data-rows="insulation"></div>

            <div class="po-r-zone-foot">
              <button class="po-r-btn" type="button" data-add-row="insulation">
                + Dodaj warstwę izolacji
              </button>

              <span class="po-r-zone-total">
                Suma Rλ,ins:
                <output data-zone-total="insulation">0,000</output> m²K/W
              </span>
            </div>
          </div>

          <div class="po-r-live" data-live="" aria-live="polite"></div>

          <div class="po-r-results" aria-live="polite">
            <h4>Wynik obliczeń</h4>

            <div class="po-r-result-grid">
              <div class="po-r-result-card">
                <span>Wykończenie Rλ,B</span>
                <strong data-result="finish">0,000</strong>
                <small>m²K/W · okładzina i warstwa montażowa</small>
              </div>

              <div class="po-r-result-card">
                <span>Konstrukcja</span>
                <strong data-result="construction">0,000</strong>
                <small>m²K/W · wynik pomocniczy</small>
              </div>

              <div class="po-r-result-card">
                <span>Izolacja Rλ,ins</span>
                <strong data-result="insulation">0,000</strong>
                <small>m²K/W · warstwy pod systemem</small>
              </div>

              <div class="po-r-result-card">
                <span>Spadek na wykończeniu</span>
                <strong data-result="drop">0,0 K</strong>
                <small>ΔθB = q × Rλ,B</small>
              </div>
            </div>

            <div class="po-r-gauge" aria-label="Porównanie oporu wykończenia z wartością 0,15">
              <div class="po-r-gauge-label">
                <span>0,000 m²K/W</span>
                <span>Punkt odniesienia: 0,150 m²K/W</span>
              </div>

              <div class="po-r-gauge-track">
                <div class="po-r-gauge-fill" data-gauge-fill=""></div>
              </div>
            </div>

            <p class="po-r-status" data-status="" data-level="neutral">
              Wprowadź warstwy wykończenia, aby otrzymać interpretację Rλ,B.
            </p>

            <div class="po-r-table-wrap po-r-result-table-wrap">
              <table class="po-r-table po-r-result-table">
                <thead>
                  <tr>
                    <th>Warstwa</th>
                    <th>Grupa</th>
                    <th>Metoda</th>
                    <th>Wynik R</th>
                  </tr>
                </thead>

                <tbody data-result-rows="">
                  <tr>
                    <td data-label="Warstwa">Brak danych</td>
                    <td data-label="Grupa">—</td>
                    <td data-label="Metoda">—</td>
                    <td data-label="Wynik R">—</td>
                  </tr>
                </tbody>
              </table>
            </div>

            <p class="po-r-small">
              Kalkulator nie wyznacza dokładnej mocy podłogi, temperatury
              zasilania, współczynnika U podłogi na gruncie ani zgodności
              produktu z instrukcją producenta.
            </p>
          </div>
        </div>
      </div>
    </section>

    <section id="r-interpretacja">
      <h2>Jak interpretować wynik kalkulatora?</h2>

      <div class="po-r-cards">
        <article class="po-r-card po-r-card-accent">
          <h3>Rλ,B wykończenia</h3>

          <p>
            Suma warstw nad jastrychem: okładziny, podkładu, kleju
            oraz innych rzeczywiście występujących elementów.
          </p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>Konstrukcja grzewcza</h3>

          <p>
            Jej opór można policzyć pomocniczo, ale emisja zależy też
            od położenia rur, rozstawu i sposobu rozprowadzania ciepła.
          </p>
        </article>

        <article class="po-r-card po-r-card-green">
          <h3>Rλ,ins izolacji</h3>

          <p>
            Opisuje izolację pod systemem. Wymagany poziom zależy od rodzaju
            i temperatury przestrzeni znajdującej się poniżej.
          </p>
        </article>
      </div>

      <p>
        Jeżeli panel ma R = 0,070 m²K/W, a podkład R = 0,030 m²K/W,
        kompletne wykończenie ma Rλ,B = 0,100 m²K/W. Nie należy
        dopisywać do tej sumy jastrychu ani styropianu pod rurami.
      </p>

      <p>
        Wynik poniżej 0,15 m²K/W nie potwierdza jeszcze, że konkretne
        pomieszczenie zostanie ogrzane. Szczegółowy wpływ dwóch wariantów
        można porównać w
        <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">
          analizatorze okładzin na ogrzewanie podłogowe
        </a>.
      </p>
    </section>

    <aside class="po-r-cta" aria-label="Projekt ogrzewania podłogowego">
      <div>
        <h3>
          Policzyłeś opór wykończenia. Teraz trzeba sprawdzić,
          czy podłoga odda wymaganą moc.
        </h3>

        <p>
          Wartość R nie uwzględnia strat konkretnego pomieszczenia,
          aktywnej powierzchni podłogi, rozstawu rur, temperatury
          powierzchni ani hydrauliki pętli.
        </p>
      </div>

      <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">
        Sprawdź zakres indywidualnego projektu podłogówki
      </a>
    </aside>

    <section id="r-limit-015">
      <h2>Czy 0,15 m²K/W obejmuje również wylewkę?</h2>

      <p>
        <strong>
          Nie. W metodzie projektowej Rλ,B oznacza opór cieplny
          wykończenia powierzchni.
        </strong>
        Grubość i przewodność jastrychu nad rurą są oddzielnymi
        parametrami konstrukcji systemu.
      </p>

      <div class="po-r-table-wrap">
        <table class="po-r-table">
          <thead>
            <tr>
              <th>Element</th>
              <th>Czy dodawać do Rλ,B?</th>
              <th>Jak jest traktowany?</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td data-label="Element">
                Panel, deska, płytka lub wykładzina
              </td>
              <td data-label="Czy dodawać?"><strong>Tak</strong></td>
              <td data-label="Sposób">Jako opór okładziny.</td>
            </tr>

            <tr>
              <td data-label="Element">Podkład pod panel</td>
              <td data-label="Czy dodawać?"><strong>Tak</strong></td>
              <td data-label="Sposób">
                Jeżeli nie został ujęty w deklaracji panelu.
              </td>
            </tr>

            <tr>
              <td data-label="Element">Klej lub warstwa montażowa</td>
              <td data-label="Czy dodawać?"><strong>Tak</strong></td>
              <td data-label="Sposób">
                Według rzeczywistej grubości lub deklarowanego R.
              </td>
            </tr>

            <tr>
              <td data-label="Element">Jastrych nad rurą</td>
              <td data-label="Czy dodawać?"><strong>Nie</strong></td>
              <td data-label="Sposób">
                Osobny parametr konstrukcji grzewczej.
              </td>
            </tr>

            <tr>
              <td data-label="Element">Izolacja pod rurami</td>
              <td data-label="Czy dodawać?"><strong>Nie</strong></td>
              <td data-label="Sposób">Osobny opór Rλ,ins.</td>
            </tr>
          </tbody>
        </table>
      </div>

      <div class="po-r-note">
        <strong>0,15 m²K/W nie jest magicznym progiem fizycznym.</strong>
        Jest górną wartością oporu okładziny stosowaną w polu
        charakterystyk normowych. R = 0,14 nie gwarantuje wymaganej
        mocy, a R = 0,16 nie oznacza nagłego zatrzymania ciepła.
      </div>

      <p>
        Szersze omówienie metodyki znajdziesz w artykule o
        <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">
          PN-EN 1264 i parametrach ogrzewania podłogowego
        </a>.
      </p>
    </section>

    <section id="r-parametry">
      <h2>R, λ, U i TOG – cztery różne parametry</h2>

      <div class="po-r-table-wrap">
        <table class="po-r-table">
          <thead>
            <tr>
              <th>Parametr</th>
              <th>Jednostka</th>
              <th>Co opisuje?</th>
              <th>Jak go używać?</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td data-label="Parametr">
                <strong>λ</strong> – przewodność
              </td>
              <td data-label="Jednostka">W/(mK)</td>
              <td data-label="Znaczenie">
                Właściwość konkretnego materiału.
              </td>
              <td data-label="Zastosowanie">
                Razem z grubością służy do obliczenia R.
              </td>
            </tr>

            <tr>
              <td data-label="Parametr">
                <strong>d</strong> – grubość
              </td>
              <td data-label="Jednostka">m</td>
              <td data-label="Znaczenie">
                Drogę przewodzenia przez warstwę.
              </td>
              <td data-label="Zastosowanie">
                Milimetry dzielimy przez 1000.
              </td>
            </tr>

            <tr>
              <td data-label="Parametr">
                <strong>R</strong> – opór cieplny
              </td>
              <td data-label="Jednostka">m²K/W</td>
              <td data-label="Znaczenie">
                Jak silnie warstwa utrudnia przepływ ciepła.
              </td>
              <td data-label="Zastosowanie">
                Opory kolejnych warstw można sumować.
              </td>
            </tr>

            <tr>
              <td data-label="Parametr">
                <strong>U</strong> – przenikanie
              </td>
              <td data-label="Jednostka">W/(m²K)</td>
              <td data-label="Znaczenie">
                Przenikanie przez kompletną przegrodę.
              </td>
              <td data-label="Zastosowanie">
                1/R produktu nie jest U całej podłogi.
              </td>
            </tr>

            <tr>
              <td data-label="Parametr"><strong>TOG</strong></td>
              <td data-label="Jednostka">TOG</td>
              <td data-label="Znaczenie">
                Jednostkę używaną przy dywanach i podkładach.
              </td>
              <td data-label="Zastosowanie">1 TOG = 0,1 m²K/W.</td>
            </tr>
          </tbody>
        </table>
      </div>

    </section>

    <section id="r-warstwy">
      <h2>Które warstwy okładziny należy sumować?</h2>

      <p>
        Sumujemy wszystkie rzeczywiste warstwy znajdujące się pomiędzy
        górną powierzchnią jastrychu a pomieszczeniem. Nie liczymy
        dwukrotnie parametrów ujętych już w deklaracji producenta.
      </p>

      <div class="po-r-cards">
        <article class="po-r-card po-r-card-accent">
          <h3>Podłoga pływająca</h3>

          <p>
            Panel lub deska warstwowa oraz osobny podkład. Przy podkładzie
            zintegrowanym trzeba sprawdzić zakres deklarowanego R.
          </p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>Podłoga klejona</h3>

          <p>
            Płytka, winyl albo deska wraz z rzeczywistą warstwą kleju.
          </p>
        </article>

        <article class="po-r-card po-r-card-green">
          <h3>Wykładzina i dywan</h3>

          <p>
            Liczy się cały zestaw wraz z podkładem. Preferuj R lub TOG
            deklarowane przez producenta.
          </p>
        </article>
      </div>

      <p>
        Przy wyborze wykończenia zobacz:
        <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">
          panele czy płytki
        </a>,
        <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">
          drewno czy panele laminowane
        </a>
        oraz
        <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">
          analizator drewna na podłogówkę
        </a>.
      </p>
    </section>

    <section id="r-kierunki">
      <h2>Opór nad rurami, konstrukcja grzewcza i izolacja pod rurami</h2>

      <div class="po-r-cards">
        <article class="po-r-card po-r-card-accent">
          <h3>Nad jastrychem</h3>

          <p>
            Niski opór wykończenia ogranicza dodatkową różnicę
            temperatur potrzebną do przekazania ciepła.
          </p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>W konstrukcji</h3>

          <p>
            Liczą się grubość, λ, położenie rur, rozstaw, średnica
            i kontakt rur z materiałem.
          </p>
        </article>

        <article class="po-r-card po-r-card-green">
          <h3>Pod systemem</h3>

          <p>
            Izolacja ogranicza niepożądany przepływ ciepła w dół.
          </p>
        </article>
      </div>

      <p>
        Budowę warstwy grzewczej rozwija poradnik o
        <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">
          wylewce na ogrzewanie podłogowe
        </a>
        oraz analiza
        <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">
          grubości wylewki betonowej
        </a>.
        Sprawdź też,
        <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">
          ile styropianu zastosować
        </a>
        i
        <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/">
          jak dobrać izolację
        </a>.
      </p>

      <div class="po-r-warning">
        Kalkulator nie oblicza współczynnika U podłogi na gruncie.
        Wymagania dla przegród określają
        <a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20130000926/O/D20130926.pdf" target="_blank" rel="nofollow noopener noreferrer">
          Warunki Techniczne
        </a>.
      </div>
    </section>

    <section id="r-grafika">
      <h2>Od karty technicznej do założenia projektowego</h2>

      <p>
        Kliknij jeden z sześciu etapów. Moduł pokazuje, gdzie pojawia
        się dany parametr i jaki błąd najczęściej zmienia wynik.
      </p>

      <div class="po-r-steps" data-r-steps="">
        <div class="po-r-step-grid" role="tablist" aria-label="Etapy obliczania oporu cieplnego">
          <button class="po-r-step" type="button" role="tab" aria-selected="true" aria-controls="po-r-step-detail-1" id="po-r-step-1" data-step="1">
            <span class="po-r-step-number">1</span>
            <span>
              <b>Zbierz dane</b>
              <small>R produktu albo d i λ</small>
            </span>
          </button>

          <button class="po-r-step" type="button" role="tab" aria-selected="false" aria-controls="po-r-step-detail-2" id="po-r-step-2" data-step="2">
            <span class="po-r-step-number">2</span>
            <span>
              <b>Sprawdź zakres</b>
              <small>Produkt czy cały zestaw?</small>
            </span>
          </button>

          <button class="po-r-step" type="button" role="tab" aria-selected="false" aria-controls="po-r-step-detail-3" id="po-r-step-3" data-step="3">
            <span class="po-r-step-number">3</span>
            <span>
              <b>Przelicz jednostki</b>
              <small>Milimetry na metry</small>
            </span>
          </button>

          <button class="po-r-step" type="button" role="tab" aria-selected="false" aria-controls="po-r-step-detail-4" id="po-r-step-4" data-step="4">
            <span class="po-r-step-number">4</span>
            <span>
              <b>Policz warstwy</b>
              <small>R = d / λ</small>
            </span>
          </button>

          <button class="po-r-step" type="button" role="tab" aria-selected="false" aria-controls="po-r-step-detail-5" id="po-r-step-5" data-step="5">
            <span class="po-r-step-number">5</span>
            <span>
              <b>Rozdziel sumy</b>
              <small>Rλ,B ≠ Rλ,ins</small>
            </span>
          </button>

          <button class="po-r-step" type="button" role="tab" aria-selected="false" aria-controls="po-r-step-detail-6" id="po-r-step-6" data-step="6">
            <span class="po-r-step-number">6</span>
            <span>
              <b>Połącz z projektem</b>
              <small>R to nie temperatura wody</small>
            </span>
          </button>
        </div>

        <div class="po-r-step-detail" id="po-r-step-detail-1" role="tabpanel" aria-labelledby="po-r-step-1" data-step-detail="1">
          <h3>1. Zbierz dane dokładnego produktu</h3>

          <p>
            Najlepszym źródłem jest karta techniczna panelu, podkładu,
            deski, wykładziny lub płytki. Jeżeli producent podaje R
            kompletnego produktu, użyj tej wartości.
          </p>
        </div>

        <div class="po-r-step-detail" id="po-r-step-detail-2" role="tabpanel" aria-labelledby="po-r-step-2" data-step-detail="2" hidden="">
          <h3>2. Sprawdź zakres deklarowanej wartości</h3>

          <p>
            R może dotyczyć samego panelu, panelu z warstwą zintegrowaną
            albo całego zestawu. Nie licz tej samej warstwy dwa razy.
          </p>
        </div>

        <div class="po-r-step-detail" id="po-r-step-detail-3" role="tabpanel" aria-labelledby="po-r-step-3" data-step-detail="3" hidden="">
          <h3>3. Przelicz grubość na metry</h3>

          <p>
            We wzorze R = d/λ grubość podajemy w metrach. Dlatego
            8 mm to 0,008 m, a 12 mm to 0,012 m.
          </p>
        </div>

        <div class="po-r-step-detail" id="po-r-step-detail-4" role="tabpanel" aria-labelledby="po-r-step-4" data-step-detail="4" hidden="">
          <h3>4. Oblicz R jednorodnych warstw</h3>

          <p>
            Dzielimy grubość przez wiarygodną przewodność λ.
            Dla produktów złożonych deklarowane R ma pierwszeństwo.
          </p>
        </div>

        <div class="po-r-step-detail" id="po-r-step-detail-5" role="tabpanel" aria-labelledby="po-r-step-5" data-step-detail="5" hidden="">
          <h3>5. Nie twórz jednej sumy całej podłogi</h3>

          <p>
            Osobno zapisujemy Rλ,B wykończenia, konstrukcję grzewczą
            i Rλ,ins izolacji.
          </p>
        </div>

        <div class="po-r-step-detail" id="po-r-step-detail-6" role="tabpanel" aria-labelledby="po-r-step-6" data-step-detail="6" hidden="">
          <h3>6. Połącz R z zadaniem pomieszczenia</h3>

          <p>
            Projekt musi uwzględniać obciążenie cieplne, powierzchnię
            czynną, temperaturę posadzki, rozstaw rur i charakterystykę systemu.
          </p>
        </div>
      </div>
    </section>

    <section id="r-karta-techniczna">
      <h2>Jak odczytać R z karty technicznej produktu?</h2>

      <p>
        Szukaj pozycji „opór cieplny”, „thermal resistance”,
        „R-value” albo „TOG”. Sama informacja, że produkt nadaje
        się na ogrzewanie podłogowe, nie wystarcza do projektu.
      </p>

      <div class="po-r-table-wrap">
        <table class="po-r-table">
          <thead>
            <tr>
              <th>Informacja</th>
              <th>Co zrobić?</th>
              <th>Na co uważać?</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td data-label="Informacja">Podano R w m²K/W</td>
              <td data-label="Działanie">Wprowadź je bezpośrednio.</td>
              <td data-label="Uwaga">
                Sprawdź, czy obejmuje zintegrowany podkład.
              </td>
            </tr>

            <tr>
              <td data-label="Informacja">Podano grubość i λ</td>
              <td data-label="Działanie">Oblicz R = d/λ.</td>
              <td data-label="Uwaga">
                Lambda musi dotyczyć dokładnego materiału.
              </td>
            </tr>

            <tr>
              <td data-label="Informacja">Podano TOG</td>
              <td data-label="Działanie">Pomnóż TOG przez 0,1.</td>
              <td data-label="Uwaga">
                Dodaj opór pozostałych elementów zestawu.
              </td>
            </tr>

            <tr>
              <td data-label="Informacja">Tylko „UFH compatible”</td>
              <td data-label="Działanie">
                Poproś o pełną kartę techniczną.
              </td>
              <td data-label="Uwaga">
                Hasło marketingowe nie zastępuje R.
              </td>
            </tr>
          </tbody>
        </table>
      </div>
    </section>

    <section id="r-przyklady">
      <h2>Przykładowe obliczenia oporu cieplnego</h2>

      <p>
        Poniższe liczby pokazują metodę. Przy wyborze posadzki należy
        podstawić parametry rzeczywistych produktów.
      </p>

      <h3>Przykład 1: panel i podkład</h3>

      <ul>
        <li>panel: R = 0,070 m²K/W,</li>
        <li>podkład: R = 0,030 m²K/W,</li>
        <li>suma: Rλ,B = 0,100 m²K/W.</li>
      </ul>

      <span class="po-r-eq">
        Rλ,B = 0,070 + 0,030 = 0,100 m²K/W
      </span>

      <p>
        Przy strumieniu 50 W/m² orientacyjny spadek temperatury
        na wykończeniu wynosi 5 K. Nie oznacza to, że temperatura
        wody ma być automatycznie o 5°C wyższa.
      </p>

      <h3>Przykład 2: płytka i klej</h3>

      <ul>
        <li>płytka 9 mm, λ = 1,5 W/(mK): R = 0,006 m²K/W,</li>
        <li>klej 4 mm, λ = 1,0 W/(mK): R = 0,004 m²K/W,</li>
        <li>suma: Rλ,B = 0,010 m²K/W.</li>
      </ul>

      <span class="po-r-eq">
        Rλ,B = 0,009 / 1,5 + 0,004 / 1,0 = 0,010 m²K/W
      </span>
    </section>

    <section id="r-wplyw">
      <h2>Jak opór wykończenia wpływa na moc podłogi?</h2>

      <p>
        W ustalonym przepływie jednowymiarowym spadek temperatury
        na wykończeniu można orientacyjnie opisać zależnością:
      </p>

      <span class="po-r-eq">ΔθB ≈ q × Rλ,B</span>

      <p>
        Dla tej samej wymaganej mocy większy opór oznacza większą
        różnicę temperatur pomiędzy spodem wykończenia a jego powierzchnią.
      </p>

      <div class="po-r-note">
        <strong>
          Nie istnieje uniwersalna tabela „płytka = 100 W/m²,
          panel = 65 W/m²”.
        </strong>
        Moc zależy od temperatury pomieszczenia, powierzchni czynnej,
        rozstawu rur, konstrukcji, Rλ,B, temperatury wody oraz
        ograniczenia temperatury powierzchni.
      </div>

      <p>
        Najpierw należy określić
        <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">
          projektowe obciążenie cieplne pomieszczenia
        </a>.
        Pomocniczym punktem startowym może być
        <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">
          kalkulator strat ciepła budynku
        </a>.
      </p>
    </section>

    <section id="r-projekt">
      <h2>Dlaczego R nie wyznacza temperatury zasilania?</h2>

      <p>Do wyznaczenia parametrów potrzebne są:</p>

      <ul>
        <li>projektowa strata ciepła pomieszczenia [W],</li>
        <li>rzeczywiście ogrzewana powierzchnia [m²],</li>
        <li>wymagana moc powierzchniowa [W/m²],</li>
        <li>Rλ,B kompletnego wykończenia,</li>
        <li>rodzaj konstrukcji i warstwa nad rurą,</li>
        <li>rozstaw, średnica i sposób ułożenia rur,</li>
        <li>limit temperatury powierzchni,</li>
        <li>przepływ oraz różnica temperatur zasilania i powrotu.</li>
      </ul>

      <p>
        Dlatego zmiana okładziny nie uzasadnia automatycznie
        podniesienia krzywej grzewczej. Trzeba sprawdzić
        <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">
          maksymalną temperaturę zasilania
        </a>,
        <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">
          optymalną temperaturę podłogówki
        </a>
        i
        <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">
          rozstaw rur 10 lub 15 cm
        </a>.
      </p>

      <h3>Opór cieplny a pompa ciepła</h3>

      <p>
        Większy opór może wymagać wyższej temperatury po ciepłej
        stronie posadzki, co zwykle pogarsza warunki pracy pompy ciepła.
      </p>

      <p>
        Zobacz, dlaczego
        <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">
          niska temperatura zasilania jest korzystna
        </a>
        oraz jak wygląda
        <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">
          projekt podłogówki z pompą ciepła
        </a>.
      </p>

      <h3>Opór cieplny a czas nagrzewania</h3>

      <p>
        Niski R wykończenia może zmniejszyć opóźnienie po jego stronie,
        lecz szybkość reakcji całej podłogi zależy głównie od masy,
        grubości i położenia warstwy grzewczej. Więcej wyjaśnia artykuł o
        <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">
          bezwładności cieplnej podłogówki
        </a>.
      </p>
    </section>

    <section id="r-bledy">
      <h2>Najczęstsze błędy przy obliczaniu R podłogi</h2>

      <div class="po-r-cards">
        <article class="po-r-card po-r-card-orange">
          <h3>1. Dodawanie wylewki do 0,15</h3>
          <p>Jastrych nie jest częścią Rλ,B wykończenia.</p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>2. Liczenie tylko panelu</h3>
          <p>Osobny podkład może wnosić znaczną część oporu.</p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>3. Podwójne liczenie podkładu</h3>
          <p>Deklarowane R może już obejmować warstwę zintegrowaną.</p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>4. Przypadkowa wartość lambda</h3>
          <p>
            Wartość podobnego materiału nie musi opisywać konkretnego produktu.
          </p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>5. Automatyczna zgoda przy R = 0,14</h3>
          <p>Niski opór nie potwierdza wymaganej mocy.</p>
        </article>

        <article class="po-r-card po-r-card-orange">
          <h3>6. Wyznaczanie temperatury wody z R</h3>
          <p>Bez W/m² i charakterystyki systemu wynik jest pozornie dokładny.</p>
        </article>
      </div>

      <p>
        Zobacz,
        <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">
          jak wygląda profesjonalny projekt ogrzewania podłogowego
        </a>
        i
        <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">
          dlaczego sama długość i rozstaw rur nie tworzą projektu
        </a>.
      </p>
    </section>

    <section id="r-checklista">
      <h2>Checklista przed zakupem posadzki</h2>

      <ol class="po-r-checklist">
        <li>
          <strong>Dokładna nazwa produktu.</strong><br>
          Nie tylko ogólne określenie „panel”.
        </li>

        <li>
          <strong>Deklarowane R produktu.</strong><br>
          Sprawdź zakres deklaracji.
        </li>

        <li>
          <strong>Opór podkładu lub kleju.</strong><br>
          Użyj danych rzeczywistego produktu.
        </li>

        <li>
          <strong>Suma Rλ,B.</strong><br>
          Dodaj tylko warstwy nad jastrychem.
        </li>

        <li>
          <strong>Maksymalna temperatura powierzchni.</strong><br>
          Odczytaj ją z instrukcji produktu.
        </li>

        <li>
          <strong>Sposób montażu.</strong><br>
          Klejenie i układ pływający tworzą inne zestawy.
        </li>

        <li>
          <strong>Pomieszczenie i powierzchnia czynna.</strong><br>
          Mała powierzchnia zwiększa wymagane W/m².
        </li>

        <li>
          <strong>Przekazanie danych projektantowi.</strong><br>
          Posadzka powinna być znana przed doborem parametrów.
        </li>
      </ol>
    </section>

    <section id="r-faq">
      <h2>FAQ – opór cieplny podłogi i ogrzewanie podłogowe</h2>

      <div class="po-r-faq">
        <details>
          <summary>Co oznacza opór cieplny R w m²K/W?</summary>
          <div class="po-r-faq-answer">
            <p>
              R określa, jak silnie warstwa lub zestaw warstw
              przeciwstawia się przepływowi ciepła.
            </p>
          </div>
        </details>

        <details>
          <summary>Jak obliczyć R z grubości i lambdy?</summary>
          <div class="po-r-faq-answer">
            <p>
              Dla jednorodnej warstwy stosujemy R = d/λ.
              Grubość podajemy w metrach.
            </p>
          </div>
        </details>

        <details>
          <summary>Czy 0,15 m²K/W obejmuje wylewkę?</summary>
          <div class="po-r-faq-answer">
            <p>
              Nie. Rλ,B odnosi się do kompletnego wykończenia
              znajdującego się nad jastrychem.
            </p>
          </div>
        </details>

        <details>
          <summary>Czy trzeba dodać opór panelu i podkładu?</summary>
          <div class="po-r-faq-answer">
            <p>
              Tak, jeżeli podkład nie został już uwzględniony
              w deklarowanym R panelu.
            </p>
          </div>
        </details>

        <details>
          <summary>Czy R powyżej 0,15 wyklucza podłogówkę?</summary>
          <div class="po-r-faq-answer">
            <p>
              Nie jest to nagła bariera fizyczna, ale wynik wychodzi
              poza standardowy zakres charakterystyk i wymaga sprawdzenia.
            </p>
          </div>
        </details>

        <details>
          <summary>Czy z R można obliczyć temperaturę zasilania?</summary>
          <div class="po-r-faq-answer">
            <p>
              Nie. Potrzebne są także obciążenie cieplne, powierzchnia
              czynna, konstrukcja, rozstaw rur i przepływ.
            </p>
          </div>
        </details>

        <details>
          <summary>Ile m²K/W odpowiada 1 TOG?</summary>
          <div class="po-r-faq-answer">
            <p>1 TOG odpowiada 0,1 m²K/W.</p>
          </div>
        </details>

        <details>
          <summary>Gdzie znaleźć opór panelu lub deski?</summary>
          <div class="po-r-faq-answer">
            <p>
              W karcie technicznej, deklaracji producenta albo
              instrukcji montażu.
            </p>
          </div>
        </details>
      </div>
    </section>

    <section id="r-zrodla">
      <h2>Źródła techniczne i zakres obliczeń</h2>

      <div class="po-r-sources">
        <ul>
          <li>
            <strong>PN-EN 1264-2:2021</strong> – metody określania
            wydajności cieplnej ogrzewania podłogowego.
          </li>

          <li>
            <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">
              ISO 11855-2:2021
            </a>
            – projektowa moc systemów płaszczyznowych.
          </li>

          <li>
            <a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20130000926/O/D20130926.pdf" target="_blank" rel="nofollow noopener noreferrer">
              Rozporządzenie w sprawie Warunków Technicznych
            </a>.
          </li>

          <li>
            <a href="https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/" target="_blank" rel="nofollow noopener noreferrer">
              Budowlane ABC – kalkulator Uc
            </a>.
          </li>
        </ul>

        <p class="po-r-small">
          Wartości użyte w przykładach są jawnymi założeniami.
          W projekcie należy stosować dane dokładnych produktów.
        </p>
      </div>
    </section>

    <section id="r-podsumowanie">
      <h2>Opór cieplny podłogi – najważniejsze wnioski</h2>

      <ul>
        <li>Dla jednorodnej warstwy R obliczamy ze wzoru R = d/λ.</li>
        <li>Panel, podkład, płytka i klej tworzą Rλ,B wykończenia.</li>
        <li>Wylewki i izolacji nie dodajemy do wartości 0,15 m²K/W.</li>
        <li>R poniżej 0,15 nie gwarantuje odpowiedniej mocy.</li>
        <li>R nie wyznacza samodzielnie temperatury zasilania.</li>
      </ul>
    </section>

    <aside class="po-r-cta" aria-label="Projekt z uwzględnieniem posadzki">
      <div>
        <h3>
          Masz wybrane panele, drewno albo płytki?
          Uwzględnij je przed ułożeniem rur.
        </h3>

        <p>
          Przekaż kartę techniczną posadzki razem z dokumentacją budynku.
          Dzięki temu jej opór zostanie uwzględniony przy doborze rozstawu,
          temperatury pracy, przepływów i długości pętli.
        </p>
      </div>

      <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">
        Zamów projekt z uwzględnieniem posadzki
      </a>
    </aside>

    <section id="r-autor">
      <div class="po-r-author-verify">
        <div class="po-r-author-verify-head">
          <div>
            <p class="po-r-author-verify-eyebrow">
              E‑E‑A‑T i odpowiedzialność za treść
            </p>

            <h2>Autor i weryfikacja merytoryczna</h2>

            <p class="po-r-author-verify-intro">
              Treść przygotowana z perspektywy fizyki budowli,
              doboru kompletnej posadzki oraz rzeczywistego
              projektowania wodnego ogrzewania podłogowego.
            </p>
          </div>

          <div class="po-r-author-date">
            Aktualizacja: 14.09.2026
          </div>
        </div>

        <div class="po-r-author-verify-body">
          <aside class="po-r-author-profile" aria-label="Informacje o autorze">
            <a class="po-r-author-photo-link" href="https://projekt-ogrzewania.pl/author/admin3399/" aria-label="Publikacje Roberta Kucharskiego">
              <img decoding="async" class="po-r-author-photo" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych i specjalista HVAC" width="320" height="320" loading="lazy">
            </a>

            <h3>
              <a href="https://projekt-ogrzewania.pl/author/admin3399/">
                Robert Kucharski
              </a>
            </h3>

            <p class="po-r-author-profile-role">
              Projektant instalacji sanitarnych<br>
              i specjalista HVAC
            </p>

            <p class="po-r-author-social-label">
              Profile branżowe
            </p>

            <div class="po-r-author-socials">
              <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">
                𝕏
              </a>
            </div>
          </aside>

          <div class="po-r-author-content">
            <blockquote class="po-r-author-main-quote">
              Moim zdaniem największym błędem przy ocenie podłogi
              grzewczej jest dodawanie do jednego „limitu R”
              okładziny, jastrychu i izolacji. Każda z tych części
              pełni inne zadanie, a opór wykończenia trzeba jeszcze
              połączyć z obciążeniem cieplnym konkretnego pomieszczenia.
            </blockquote>

            <div class="po-r-author-proof-grid">
              <article class="po-r-author-proof">
                <h3>Praktyka projektowa</h3>

                <p>
                  Analiza oporu okładzin, konstrukcji mokrych i suchych,
                  izolacji pod systemem, obciążeń cieplnych pomieszczeń
                  oraz parametrów pracy podłogówki.
                </p>
              </article>

              <article class="po-r-author-proof">
                <h3>Metoda</h3>

                <p>
                  Oddzielne traktowanie Rλ,B wykończenia, konstrukcji
                  grzewczej i Rλ,ins izolacji oraz kontrola danych
                  zadeklarowanych przez producentów.
                </p>
              </article>

              <article class="po-r-author-proof">
                <h3>Zakres aktualizacji</h3>

                <p>
                  Skorygowano znaczenie 0,15 m²K/W, oddzielono
                  wylewkę od okładziny oraz dodano kalkulator warstw,
                  interpretację wyników i źródła techniczne.
                </p>
              </article>
            </div>

            <div class="po-r-author-portals">
              <p class="po-r-author-portals-title">
                Portale autora
              </p>

              <div class="po-r-author-portal-links">
                <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>
      </div>
    </section>
  </div>
</article>

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

  function poRStart() {
    var root = document.getElementById("po-r-article");

    if (!root) {
      return;
    }

    if (root.getAttribute("data-r-ready") === "1") {
      return;
    }

    root.setAttribute("data-r-ready", "1");

    var rowCounter = 0;

    var zoneNames = {
      finish: "Wykończenie",
      construction: "Konstrukcja",
      insulation: "Izolacja"
    };

    var methodNames = {
      r: "R z karty",
      lambda: "d / λ",
      tog: "TOG"
    };

    function parseNumber(value) {
      var cleaned = String(value)
        .trim()
        .replace(/\s/g, "")
        .replace(",", ".");

      var number = Number(cleaned);

      if (!Number.isFinite(number)) {
        return null;
      }

      if (number < 0) {
        return null;
      }

      return number;
    }

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

    function formatK(value) {
      return value.toLocaleString("pl-PL", {
        minimumFractionDigits: 1,
        maximumFractionDigits: 1
      }) + " K";
    }

    function setValue(row, selector, value) {
      var input = row.querySelector(selector);

      if (input) {
        input.value = value;
      }
    }

    function addRow(zone, data) {
      var holder = root.querySelector('[data-rows="' + zone + '"]');

      if (!holder) {
        return null;
      }

      if (holder.children.length >= 8) {
        var liveLimit = root.querySelector("[data-live]");

        if (liveLimit) {
          liveLimit.textContent =
            "W jednej grupie można dodać maksymalnie 8 warstw.";
        }

        return null;
      }

      rowCounter += 1;

      var row = document.createElement("div");

      row.className = "po-r-layer-row";
      row.setAttribute("data-layer-row", "");
      row.setAttribute("data-zone-row", zone);
      row.setAttribute("data-method", "r");

      row.innerHTML =
        '<div class="po-r-field">' +
          '<label for="po-r-name-' + rowCounter + '">Nazwa warstwy</label>' +
          '<input id="po-r-name-' + rowCounter + '" type="text" placeholder="np. panel 8 mm" data-layer-name>' +
        '</div>' +
        '<div class="po-r-field">' +
          '<label for="po-r-method-' + rowCounter + '">Źródło danych</label>' +
          '<select id="po-r-method-' + rowCounter + '" data-method-select>' +
            '<option value="r">Gotowe R z karty</option>' +
            '<option value="lambda">Grubość i λ</option>' +
            '<option value="tog">Wartość TOG</option>' +
          '</select>' +
        '</div>' +
        '<div class="po-r-value-fields">' +
          '<div data-source-field="r">' +
            '<div class="po-r-field">' +
              '<label for="po-r-direct-' + rowCounter + '">R [m²K/W]</label>' +
              '<input id="po-r-direct-' + rowCounter + '" type="text" inputmode="decimal" placeholder="np. 0,070" data-direct-r>' +
            '</div>' +
          '</div>' +
          '<div data-source-field="lambda">' +
            '<div class="po-r-fields-pair">' +
              '<div class="po-r-field">' +
                '<label for="po-r-thickness-' + rowCounter + '">Grubość [mm]</label>' +
                '<input id="po-r-thickness-' + rowCounter + '" type="text" inputmode="decimal" placeholder="np. 12" data-thickness>' +
              '</div>' +
              '<div class="po-r-field">' +
                '<label for="po-r-lambda-' + rowCounter + '">λ [W/(mK)]</label>' +
                '<input id="po-r-lambda-' + rowCounter + '" type="text" inputmode="decimal" placeholder="np. 0,15" data-lambda>' +
              '</div>' +
            '</div>' +
          '</div>' +
          '<div data-source-field="tog">' +
            '<div class="po-r-field">' +
              '<label for="po-r-tog-' + rowCounter + '">Opór [TOG]</label>' +
              '<input id="po-r-tog-' + rowCounter + '" type="text" inputmode="decimal" placeholder="np. 0,8" data-tog>' +
            '</div>' +
          '</div>' +
        '</div>' +
        '<div>' +
          '<span class="po-r-field-label">Wynik</span>' +
          '<output class="po-r-row-result" data-row-result>—</output>' +
        '</div>' +
        '<button class="po-r-remove" type="button" data-remove-row aria-label="Usuń warstwę">×</button>';

      holder.appendChild(row);

      if (data) {
        setValue(row, "[data-layer-name]", data.name || "");
        setValue(row, "[data-method-select]", data.method || "r");
        setValue(row, "[data-direct-r]", data.r || "");
        setValue(row, "[data-thickness]", data.thickness || "");
        setValue(row, "[data-lambda]", data.lambda || "");
        setValue(row, "[data-tog]", data.tog || "");
        row.setAttribute("data-method", data.method || "r");
      }

      return row;
    }

    function clearZone(zone) {
      var holder = root.querySelector('[data-rows="' + zone + '"]');

      if (holder) {
        holder.innerHTML = "";
      }
    }

    function loadDemo(type) {
      clearZone("finish");
      clearZone("construction");
      clearZone("insulation");

      if (type === "panel") {
        addRow("finish", {
          name: "Panel – przykład",
          method: "r",
          r: "0,070"
        });

        addRow("finish", {
          name: "Podkład – przykład",
          method: "r",
          r: "0,030"
        });

        addRow("construction", {
          name: "Jastrych nad rurą – przykład",
          method: "lambda",
          thickness: "45",
          lambda: "1,20"
        });

        addRow("insulation", {
          name: "Izolacja pod rurami – przykład",
          method: "lambda",
          thickness: "100",
          lambda: "0,036"
        });
      } else if (type === "tile") {
        addRow("finish", {
          name: "Płytka – przykład",
          method: "lambda",
          thickness: "9",
          lambda: "1,50"
        });

        addRow("finish", {
          name: "Klej – przykład",
          method: "lambda",
          thickness: "4",
          lambda: "1,00"
        });

        addRow("construction", {
          name: "Jastrych nad rurą – przykład",
          method: "lambda",
          thickness: "45",
          lambda: "1,20"
        });

        addRow("insulation", {
          name: "Izolacja pod rurami – przykład",
          method: "lambda",
          thickness: "100",
          lambda: "0,036"
        });
      } else {
        addRow("finish", {
          name: "",
          method: "r",
          r: ""
        });

        addRow("construction", {
          name: "",
          method: "lambda",
          thickness: "",
          lambda: ""
        });

        addRow("insulation", {
          name: "",
          method: "lambda",
          thickness: "",
          lambda: ""
        });
      }

      calculate();
    }

    function calculateRow(row) {
      var methodSelect = row.querySelector("[data-method-select]");
      var method = "r";
      var result = null;

      if (methodSelect) {
        method = methodSelect.value;
      }

      row.setAttribute("data-method", method);

      if (method === "r") {
        var direct = parseNumber(
          row.querySelector("[data-direct-r]").value
        );

        if (direct !== null) {
          if (direct > 0) {
            result = direct;
          }
        }
      } else if (method === "lambda") {
        var thickness = parseNumber(
          row.querySelector("[data-thickness]").value
        );

        var lambda = parseNumber(
          row.querySelector("[data-lambda]").value
        );

        if (thickness !== null) {
          if (lambda !== null) {
            if (thickness > 0) {
              if (lambda > 0) {
                result = (thickness / 1000) / lambda;
              }
            }
          }
        }
      } else if (method === "tog") {
        var tog = parseNumber(
          row.querySelector("[data-tog]").value
        );

        if (tog !== null) {
          if (tog > 0) {
            result = tog * 0.1;
          }
        }
      }

      var output = row.querySelector("[data-row-result]");

      if (output) {
        output.textContent =
          result === null ? "—" : formatR(result);
      }

      return {
        value: result,
        method: method
      };
    }

    function addResultCell(tr, label, value) {
      var td = document.createElement("td");

      td.setAttribute("data-label", label);
      td.textContent = value;
      tr.appendChild(td);
    }

    function calculate() {
      var totals = {
        finish: 0,
        construction: 0,
        insulation: 0
      };

      var validRows = [];
      var rows = root.querySelectorAll("[data-layer-row]");

      Array.prototype.forEach.call(rows, function (row) {
        var calculated = calculateRow(row);
        var zone = row.getAttribute("data-zone-row");

        if (calculated.value !== null) {
          totals[zone] += calculated.value;

          var nameInput = row.querySelector("[data-layer-name]");
          var name = "Warstwa bez nazwy";

          if (nameInput) {
            if (nameInput.value.trim() !== "") {
              name = nameInput.value.trim();
            }
          }

          validRows.push({
            name: name,
            zone: zone,
            method: calculated.method,
            value: calculated.value
          });
        }
      });

      Object.keys(totals).forEach(function (zone) {
        var zoneOutput = root.querySelector(
          '[data-zone-total="' + zone + '"]'
        );

        var resultOutput = root.querySelector(
          '[data-result="' + zone + '"]'
        );

        if (zoneOutput) {
          zoneOutput.textContent = formatR(totals[zone]);
        }

        if (resultOutput) {
          resultOutput.textContent = formatR(totals[zone]);
        }
      });

      var heatFluxInput = root.querySelector("#po-r-heat-flux");
      var heatFlux = 0;

      if (heatFluxInput) {
        var parsedHeatFlux = parseNumber(heatFluxInput.value);

        if (parsedHeatFlux !== null) {
          heatFlux = parsedHeatFlux;
        }
      }

      var drop = heatFlux * totals.finish;
      var dropOutput = root.querySelector('[data-result="drop"]');

      if (dropOutput) {
        dropOutput.textContent = formatK(drop);
      }

      var gauge = root.querySelector("[data-gauge-fill]");

      if (gauge) {
        var gaugePercent = (totals.finish / 0.15) * 100;

        if (gaugePercent > 100) {
          gaugePercent = 100;
        }

        gauge.style.width = gaugePercent + "%";

        if (totals.finish > 0.15) {
          gauge.style.background = "#ff6b43";
        } else if (totals.finish > 0.10) {
          gauge.style.background = "#ffb73a";
        } else {
          gauge.style.background = "#50d9eb";
        }
      }

      var status = root.querySelector("[data-status]");

      if (status) {
        if (totals.finish === 0) {
          status.setAttribute("data-level", "neutral");
          status.textContent =
            "Wprowadź warstwy wykończenia, aby otrzymać interpretację Rλ,B.";
        } else if (totals.finish <= 0.05) {
          status.setAttribute("data-level", "neutral");
          status.textContent =
            "Wykończenie ma niski opór cieplny. To korzystny warunek przewodzenia, ale nie potwierdza jeszcze mocy systemu.";
        } else if (totals.finish <= 0.10) {
          status.setAttribute("data-level", "neutral");
          status.textContent =
            "Wykończenie znajduje się w często spotykanym zakresie projektowym. Sprawdź wymaganą moc i limit temperatury produktu.";
        } else if (totals.finish <= 0.15) {
          status.setAttribute("data-level", "warning");
          status.textContent =
            "Opór jest blisko górnej wartości pola charakterystyk normowych. Wynik wymaga uwzględnienia w projekcie.";
        } else {
          status.setAttribute("data-level", "alert");
          status.textContent =
            "Rλ,B przekracza 0,15 m²K/W. Potrzebne są dane konkretnego systemu, sprawdzenie mocy i wymagań producenta posadzki.";
        }
      }

      var resultBody = root.querySelector("[data-result-rows]");

      if (resultBody) {
        resultBody.innerHTML = "";

        if (validRows.length === 0) {
          var emptyRow = document.createElement("tr");

          addResultCell(emptyRow, "Warstwa", "Brak danych");
          addResultCell(emptyRow, "Grupa", "—");
          addResultCell(emptyRow, "Metoda", "—");
          addResultCell(emptyRow, "Wynik R", "—");

          resultBody.appendChild(emptyRow);
        } else {
          validRows.forEach(function (item) {
            var tr = document.createElement("tr");

            addResultCell(tr, "Warstwa", item.name);
            addResultCell(tr, "Grupa", zoneNames[item.zone]);
            addResultCell(tr, "Metoda", methodNames[item.method]);
            addResultCell(
              tr,
              "Wynik R",
              formatR(item.value) + " m²K/W"
            );

            resultBody.appendChild(tr);
          });
        }
      }

      var live = root.querySelector("[data-live]");

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

    root.addEventListener("input", function (event) {
      var target = event.target;

      if (target.matches("input")) {
        calculate();
      }
    });

    root.addEventListener("change", function (event) {
      var target = event.target;

      if (target.matches("[data-method-select]")) {
        var row = target.closest("[data-layer-row]");

        if (row) {
          row.setAttribute("data-method", target.value);
        }
      }

      calculate();
    });

    root.addEventListener("click", function (event) {
      var button = event.target.closest("button");

      if (!button) {
        return;
      }

      if (button.hasAttribute("data-add-row")) {
        addRow(button.getAttribute("data-add-row"), null);
        calculate();
        return;
      }

      if (button.hasAttribute("data-remove-row")) {
        var removeRow = button.closest("[data-layer-row]");

        if (removeRow) {
          var removeZone = removeRow.getAttribute("data-zone-row");

          removeRow.remove();

          var removeHolder = root.querySelector(
            '[data-rows="' + removeZone + '"]'
          );

          if (removeHolder) {
            if (removeHolder.children.length === 0) {
              addRow(removeZone, null);
            }
          }

          calculate();
        }

        return;
      }

      if (button.hasAttribute("data-demo")) {
        loadDemo(button.getAttribute("data-demo"));
        return;
      }

      if (button.hasAttribute("data-step")) {
        var selected = button.getAttribute("data-step");
        var stepButtons = root.querySelectorAll("[data-step]");
        var detailPanels = root.querySelectorAll("[data-step-detail]");

        Array.prototype.forEach.call(stepButtons, function (item) {
          item.setAttribute(
            "aria-selected",
            item === button ? "true" : "false"
          );
        });

        Array.prototype.forEach.call(detailPanels, function (panel) {
          panel.hidden =
            panel.getAttribute("data-step-detail") !== selected;
        });
      }
    });

    loadDemo("panel");
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", poRStart);
  } else {
    poRStart();
  }
})();
</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",
      "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/author/admin3399/#person"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/author/admin3399/#person"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/author/admin3399/#person"
      }
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/author/admin3399/#author-image",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "caption": "Robert Kucharski – specjalista ogrzewania podłogowego i systemów HVAC",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/author/admin3399/#person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {
        "@id": "https://projekt-ogrzewania.pl/author/admin3399/#author-image"
      },
      "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"
        }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/",
      "name": "Opór cieplny R podłogi – kalkulator dla ogrzewania podłogowego",
      "description": "Oblicz opór cieplny paneli, podkładu, drewna i płytek. Zsumuj warstwy i sprawdź znaczenie 0,15 m²K/W.",
      "dateModified": "2026-09-14",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#breadcrumb"
      },
      "mainEntity": [
        {
          "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#article"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#calculator"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#faq"
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Ogrzewanie podłogowe",
          "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Opór cieplny podłogi",
          "item": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/"
        }
      ]
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#article",
      "headline": "Opór cieplny R podłogi – kalkulator dla ogrzewania podłogowego",
      "description": "Techniczny poradnik i kalkulator oporu okładziny, konstrukcji grzewczej oraz izolacji pod rurami.",
      "dateModified": "2026-09-14",
      "inLanguage": "pl-PL",
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#webpage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/author/admin3399/#person"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#calculator"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#checklist"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#faq"
        }
      ],
      "keywords": [
        "opór cieplny podłogi",
        "kalkulator oporu cieplnego",
        "R m²K/W",
        "ogrzewanie podłogowe",
        "PN-EN 1264"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#calculator",
      "name": "Kalkulator oporu cieplnego podłogi",
      "url": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#r-kalkulator",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "featureList": [
        "Obliczanie R z grubości i lambdy",
        "Wprowadzanie deklarowanego R",
        "Przeliczanie TOG na m²K/W",
        "Oddzielne sumowanie Rλ,B, konstrukcji i Rλ,ins",
        "Obliczanie spadku temperatury q razy R"
      ],
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#howto",
      "name": "Jak obliczyć opór cieplny podłogi?",
      "inLanguage": "pl-PL",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Zbierz dane produktu",
          "text": "Odczytaj R albo grubość i współczynnik lambda."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Sprawdź zakres deklaracji",
          "text": "Ustal, czy wartość dotyczy produktu czy całego zestawu."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Przelicz jednostki",
          "text": "Zamień milimetry na metry."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Policz opór",
          "text": "Zastosuj wzór R równa się d podzielone przez lambda."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Rozdziel sumy",
          "text": "Oddziel wykończenie, konstrukcję i izolację."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Połącz wynik z projektem",
          "text": "Uwzględnij obciążenie, powierzchnię czynną i konstrukcję."
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#checklist",
      "name": "Checklista przed zakupem posadzki",
      "numberOfItems": 8,
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Dokładna nazwa produktu"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Deklarowane R"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Opór podkładu lub kleju"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Suma Rλ,B"
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Maksymalna temperatura powierzchni"
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Sposób montażu"
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Pomieszczenie i powierzchnia czynna"
        },
        {
          "@type": "ListItem",
          "position": 8,
          "name": "Przekazanie danych projektantowi"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Co oznacza opór cieplny R w m²K/W?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "R określa, jak silnie warstwa lub zestaw warstw przeciwstawia się przepływowi ciepła."
          }
        },
        {
          "@type": "Question",
          "name": "Jak obliczyć opór cieplny z grubości i lambdy?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Dla jednorodnej warstwy stosujemy R = d/λ, podając grubość w metrach."
          }
        },
        {
          "@type": "Question",
          "name": "Czy limit 0,15 m²K/W obejmuje wylewkę?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Rλ,B odnosi się do kompletnego wykończenia nad jastrychem."
          }
        },
        {
          "@type": "Question",
          "name": "Czy trzeba dodać opór panelu i podkładu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak, jeżeli podkład nie został już ujęty w deklarowanym R panelu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy R powyżej 0,15 wyklucza ogrzewanie podłogowe?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie jest to nagła bariera fizyczna, ale wynik wymaga sprawdzenia charakterystyki konkretnego systemu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy z R można obliczyć temperaturę zasilania?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Potrzebne są także obciążenie cieplne, powierzchnia czynna, konstrukcja, rozstaw rur i przepływ."
          }
        },
        {
          "@type": "Question",
          "name": "Ile m²K/W odpowiada 1 TOG?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "1 TOG odpowiada 0,1 m²K/W."
          }
        },
        {
          "@type": "Question",
          "name": "Gdzie znaleźć opór panelu lub deski?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "W karcie technicznej, deklaracji producenta lub instrukcji montażu."
          }
        }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "areaServed": {
        "@type": "Country",
        "name": "Polska"
      },
      "serviceType": "Projekt ogrzewania podłogowego"
    },
    {
      "@type": "DefinedTerm",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#thermal-resistance",
      "name": "Opór cieplny R",
      "description": "Opór warstwy lub zestawu warstw wobec przepływu ciepła, wyrażany w m²K/W."
    },
    {
      "@type": "DefinedTerm",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#thermal-conductivity",
      "name": "Współczynnik przewodzenia ciepła λ",
      "description": "Właściwość materiału opisująca przewodzenie ciepła, wyrażana w W/(mK)."
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">Opór cieplny R [m²K/W] – kalkulator dla ogrzewania podłogowego</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rzeczywiste oszczędności na kosztach ogrzewania w skali roku – analiza rozstawu rur dla domu 150 m².</title>
		<link>https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 31 Jan 2026 11:58:03 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty instalacji]]></category>
		<category><![CDATA[Koszty instalacji grzewczych]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Koszty ogrzewania podłogowego]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Oszczędności energii]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Taryfy energii]]></category>
		<category><![CDATA[cop pompy ciepła]]></category>
		<category><![CDATA[dom 150 m2]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędności energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozstaw rur]]></category>
		<category><![CDATA[taryfy ure 2026]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3344</guid>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

					<description><![CDATA[<p>Odpowiednie sterowanie temperaturą w instalacji podłogowej to fundament komfortu i oszczędności energii. Właśnie dlatego zawór mieszający w ogrzewaniu podłogowym odgrywa tak kluczową rolę w nowoczesnych systemach grzewczych. W artykule szczegółowo wyjaśniamy, dlaczego mieszanie temperatur jest niezbędne, jak działają zawory 2- i 3-drogowe, czym różni się sterowanie termostatyczne od elektronicznego oraz jak prawidłowo dobrać zawór do mocy i hydrauliki instalacji. To praktyczny przewodnik zarówno dla inwestorów, jak i instalatorów.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">Zawór mieszający w ogrzewaniu podłogowym – kiedy jest potrzebny i jak go dobrać?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-mix-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: #c98a08;
    --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-mix-guide,
  #rk-mix-guide * { box-sizing: border-box; }
  #rk-mix-guide img,
  #rk-mix-guide svg { display: block; max-width: 100%; }
  #rk-mix-guide button,
  #rk-mix-guide input,
  #rk-mix-guide select,
  #rk-mix-guide label,
  #rk-mix-guide summary,
  #rk-mix-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-mix-guide button { border: 0; cursor: pointer; }
  #rk-mix-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-mix-guide a:hover,
  #rk-mix-guide a:focus-visible { color: var(--rk-red); }
  #rk-mix-guide button:focus-visible,
  #rk-mix-guide summary:focus-visible,
  #rk-mix-guide a:focus-visible { outline: 3px solid rgba(7, 143, 190, .28); outline-offset: 3px; }
  #rk-mix-guide p,
  #rk-mix-guide ul,
  #rk-mix-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-mix-guide h2,
  #rk-mix-guide h3,
  #rk-mix-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }
  #rk-mix-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-mix-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-mix-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-mix-guide strong { color: var(--rk-dark); }
  #rk-mix-guide [hidden] { display: none !important; }

  #rk-mix-guide .rk-pg-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }
  #rk-mix-guide .rk-pg-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-mix-guide .rk-pg-hero::after {
    position: absolute;
    right: -55px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 46px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-mix-guide .rk-pg-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-mix-guide .rk-pg-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-mix-guide .rk-pg-hero-title {
    position: relative;
    z-index: 1;
    max-width: 1040px;
    margin: 0 0 21px;
    color: var(--rk-white);
    font-size: clamp(2.25rem, 7.3vw, 5.05rem);
    font-weight: 950;
    letter-spacing: -.065em;
    line-height: .98;
  }
  #rk-mix-guide .rk-pg-hero-title span { color: #67e7f5; }
  #rk-mix-guide .rk-pg-lead {
    position: relative;
    z-index: 1;
    max-width: 970px;
    margin-bottom: 24px;
    color: #e7f6f8 !important;
    font-size: clamp(1rem, 2.2vw, 1.3rem);
    line-height: 1.55;
  }
  #rk-mix-guide .rk-pg-hero-tags,
  #rk-mix-guide .rk-pg-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  #rk-mix-guide .rk-pg-hero-tag {
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    color: #ffffff !important;
    background: rgba(255, 255, 255, .07);
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.2;
  }
  #rk-mix-guide .rk-pg-byline {
    margin-top: 27px;
    color: #d7ebef !important;
    font-size: .68rem;
    font-weight: 720;
  }
  #rk-mix-guide .rk-pg-byline span { color: #d7ebef !important; }
  #rk-mix-guide .rk-pg-byline strong { color: #ffffff !important; }
  #rk-mix-guide .rk-pg-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 28px;
  }
  #rk-mix-guide .rk-pg-hero-metric {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(255, 255, 255, .19);
    border-radius: 15px;
    background: rgba(255, 255, 255, .075);
  }
  #rk-mix-guide .rk-pg-hero-metric b {
    display: block;
    margin-bottom: 5px;
    color: #ffffff !important;
    font-size: .75rem;
    line-height: 1.35;
  }
  #rk-mix-guide .rk-pg-hero-metric span {
    display: block;
    color: #e5f4f7 !important;
    font-size: .65rem;
    line-height: 1.5;
  }

  #rk-mix-guide .rk-pg-nav {
    display: block;
    padding: 18px clamp(20px, 4vw, 46px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }
  #rk-mix-guide .rk-pg-nav-label {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-dark);
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-mix-guide .rk-pg-nav-track {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    width: 100%;
    min-width: 0;
    white-space: normal;
  }
  #rk-mix-guide .rk-pg-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    max-width: 100%;
    padding: 8px 12px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: #f0f6f8;
    font-size: .64rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
    white-space: normal;
  }
  #rk-mix-guide .rk-pg-nav a:hover,
  #rk-mix-guide .rk-pg-nav a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

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

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

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

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

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

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

  #rk-mix-guide .rk-pg-flow-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 24px;
  }
  #rk-mix-guide .rk-pg-flow-tab {
    min-height: 44px;
    padding: 10px 16px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .72rem;
    font-weight: 900;
    line-height: 1.2;
  }
  #rk-mix-guide .rk-pg-flow-tab:hover,
  #rk-mix-guide .rk-pg-flow-tab:focus-visible { border-color: var(--rk-blue); background: var(--rk-cyan-soft); }
  #rk-mix-guide .rk-pg-flow-tab.is-active,
  #rk-mix-guide .rk-pg-flow-tab[aria-pressed="true"] { color: #ffffff; border-color: var(--rk-blue); background: var(--rk-blue); }
  #rk-mix-guide .rk-pg-flow-status {
    margin-bottom: 23px;
    padding: 17px 19px;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 14px;
    color: var(--rk-text);
    background: var(--rk-cyan-soft);
  }
  #rk-mix-guide .rk-pg-flow-status b { display: block; margin-bottom: 3px; }
  #rk-mix-guide .rk-pg-flow-status p { margin-bottom: 0; font-size: .8rem; line-height: 1.55; }
  #rk-mix-guide .rk-pg-flow-grid {
    display: grid;
    grid-template-columns: minmax(120px, 1fr) 32px minmax(120px, 1fr) 32px minmax(120px, 1fr) 32px minmax(120px, 1fr) 32px minmax(120px, 1fr);
    align-items: stretch;
    gap: 7px;
    margin: 24px 0;
  }
  #rk-mix-guide .rk-pg-flow-node {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    min-height: 174px;
    padding: 19px 16px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-dark);
    background: #f7fafb;
    text-align: left;
    transition: border-color .18s ease, box-shadow .18s ease, opacity .18s ease, transform .18s ease;
  }
  #rk-mix-guide .rk-pg-flow-node:hover,
  #rk-mix-guide .rk-pg-flow-node:focus-visible { border-color: var(--rk-blue); transform: translateY(-2px); }
  #rk-mix-guide .rk-pg-flow-node.is-active {
    border-color: #6ed7e3;
    background: #eefbfd;
    box-shadow: 0 12px 27px rgba(7, 143, 190, .13);
  }
  #rk-mix-guide .rk-pg-flow-node.is-selected { outline: 3px solid rgba(255, 106, 61, .2); border-color: var(--rk-orange); }
  #rk-mix-guide .rk-pg-flow-node.is-muted { opacity: .46; }
  #rk-mix-guide .rk-pg-flow-icon {
    display: grid;
    place-items: center;
    width: 42px;
    min-width: 42px;
    height: 42px;
    min-height: 42px;
    margin: 0 0 13px;
    padding: 0;
    border-radius: 13px;
    color: #ffffff;
    background: var(--rk-navy);
    line-height: 1;
  }
  #rk-mix-guide .rk-pg-flow-icon svg { width: 22px; height: 22px; stroke: currentColor; }
  #rk-mix-guide .rk-pg-flow-node.is-active .rk-pg-flow-icon { background: var(--rk-blue); }
  #rk-mix-guide .rk-pg-flow-node strong { display: block; margin-bottom: 5px; font-size: .78rem; line-height: 1.28; }
  #rk-mix-guide .rk-pg-flow-node small { display: block; color: var(--rk-muted); font-size: .62rem; line-height: 1.45; }
  #rk-mix-guide .rk-pg-flow-arrow {
    position: relative;
    display: grid;
    place-items: center;
    min-width: 0;
    color: #8da3ad;
  }
  #rk-mix-guide .rk-pg-flow-arrow::before { width: 100%; height: 4px; border-radius: 99px; background: currentColor; content: ""; }
  #rk-mix-guide .rk-pg-flow-arrow::after { position: absolute; right: 0; width: 11px; height: 11px; border-top: 4px solid currentColor; border-right: 4px solid currentColor; content: ""; transform: rotate(45deg); }
  #rk-mix-guide .rk-pg-flow-arrow.is-active { color: var(--rk-orange); }
  #rk-mix-guide .rk-pg-flow-arrow.is-reverse::after { right: auto; left: 0; border: 0; border-bottom: 4px solid currentColor; border-left: 4px solid currentColor; transform: rotate(45deg); }
  #rk-mix-guide .rk-pg-flow-safety {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 16px;
    margin-top: 20px;
    padding: 18px;
    border: 1px solid #f2c5b7;
    border-radius: 16px;
    background: var(--rk-orange-soft);
    transition: box-shadow .18s ease, transform .18s ease;
  }
  #rk-mix-guide .rk-pg-flow-safety.is-active { box-shadow: 0 0 0 4px rgba(255, 106, 61, .16); transform: translateY(-2px); }
  #rk-mix-guide .rk-pg-flow-safety-badge {
    display: grid;
    place-items: center;
    width: 48px;
    min-width: 48px;
    height: 48px;
    min-height: 48px;
    padding: 0;
    border-radius: 50%;
    color: #ffffff;
    background: var(--rk-orange);
    font-size: 1rem;
    font-weight: 950;
    line-height: 1;
  }
  #rk-mix-guide .rk-pg-flow-safety p { margin-bottom: 0; color: var(--rk-text); font-size: .75rem; line-height: 1.55; }
  #rk-mix-guide .rk-pg-flow-detail {
    margin-top: 24px;
    padding: clamp(20px, 4vw, 30px);
    border-radius: 19px;
    color: #ffffff;
    background: linear-gradient(135deg, #102b3e, #174d5c);
  }
  #rk-mix-guide .rk-pg-flow-detail h4 { margin-bottom: 7px; color: #ffffff; font-size: 1.28rem; }
  #rk-mix-guide .rk-pg-flow-detail > p { color: #dcecf0; }
  #rk-mix-guide .rk-pg-flow-detail-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; margin-top: 17px; }
  #rk-mix-guide .rk-pg-flow-detail-card { min-width: 0; padding: 15px; border-radius: 14px; background: rgba(255, 255, 255, .085); }
  #rk-mix-guide .rk-pg-flow-detail-card b { display: block; margin-bottom: 5px; color: #7cecf7 !important; font-size: .68rem; }
  #rk-mix-guide .rk-pg-flow-detail-card p { margin-bottom: 0; color: #e5f2f4; font-size: .68rem; line-height: 1.5; }

  #rk-mix-guide .rk-pg-calc-layout {
    display: grid;
    grid-template-columns: minmax(270px, .92fr) minmax(0, 1.45fr);
    gap: 24px;
    align-items: stretch;
  }
  #rk-mix-guide .rk-pg-calc-controls { min-width: 0; }
  #rk-mix-guide .rk-pg-calc-field { margin-bottom: 19px; }
  #rk-mix-guide .rk-pg-calc-field:last-child { margin-bottom: 0; }
  #rk-mix-guide .rk-pg-calc-label-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
  #rk-mix-guide .rk-pg-calc-label-row label { color: var(--rk-dark); font-size: .74rem; font-weight: 900; line-height: 1.3; }
  #rk-mix-guide .rk-pg-calc-output { flex: 0 0 auto; color: var(--rk-blue); font-size: .76rem; font-weight: 950; }
  #rk-mix-guide .rk-pg-calc-field input[type="range"] { width: 100%; height: 7px; margin: 0; border-radius: 99px; background: #d9e8ed; accent-color: var(--rk-blue); cursor: pointer; }
  #rk-mix-guide .rk-pg-calc-scale { display: flex; justify-content: space-between; margin-top: 5px; color: var(--rk-muted); font-size: .56rem; }
  #rk-mix-guide .rk-pg-calc-results {
    min-width: 0;
    padding: clamp(20px, 4vw, 29px);
    border-radius: 20px;
    color: #ffffff;
    background: linear-gradient(145deg, #112b3d, #155767);
  }
  #rk-mix-guide .rk-pg-calc-results h4 { color: #ffffff; }
  #rk-mix-guide .rk-pg-calc-dashboard { display: grid; grid-template-columns: 124px minmax(0, 1fr); gap: 22px; align-items: center; }
  #rk-mix-guide .rk-pg-tank {
    position: relative;
    width: 112px;
    height: 250px;
    margin: 0 auto;
    overflow: hidden;
    border: 6px solid rgba(255, 255, 255, .65);
    border-radius: 24px;
    background: rgba(255, 255, 255, .08);
    box-shadow: inset 0 0 0 2px rgba(16, 37, 54, .24);
  }
  #rk-mix-guide .rk-pg-tank-fill {
    position: absolute;
    right: 0;
    bottom: 0;
    left: 0;
    height: 58%;
    background: linear-gradient(180deg, #ff885a 0%, #ffb04d 25%, #2dd3dc 100%);
    transition: height .25s ease;
  }
  #rk-mix-guide .rk-pg-tank-lines { position: absolute; inset: 0; background: repeating-linear-gradient(to top, transparent 0, transparent 46px, rgba(255, 255, 255, .22) 47px, transparent 48px); }
  #rk-mix-guide .rk-pg-tank-label { position: absolute; right: 7px; left: 7px; z-index: 2; padding: 4px 5px; border-radius: 7px; color: #ffffff; background: rgba(16, 37, 54, .62); font-size: .56rem; font-weight: 950; line-height: 1.2; text-align: center; }
  #rk-mix-guide .rk-pg-tank-label.is-top { top: 8px; }
  #rk-mix-guide .rk-pg-tank-label.is-bottom { bottom: 8px; }
  #rk-mix-guide .rk-pg-calc-result-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
  #rk-mix-guide .rk-pg-calc-result-card { min-width: 0; padding: 15px; border-radius: 14px; background: rgba(255, 255, 255, .09); }
  #rk-mix-guide .rk-pg-calc-result-card.is-wide { grid-column: 1 / -1; }
  #rk-mix-guide .rk-pg-calc-result-card span { display: block; color: #cfe5e9; font-size: .61rem; line-height: 1.35; }
  #rk-mix-guide .rk-pg-calc-result-card strong { display: block; margin: 5px 0 3px; color: #7cecf7 !important; font-size: clamp(1.35rem, 3.4vw, 2rem); line-height: 1; }
  #rk-mix-guide .rk-pg-calc-result-card small { display: block; color: #dcecef; font-size: .6rem; line-height: 1.42; }
  #rk-mix-guide .rk-pg-calc-alert { margin-top: 14px; padding: 12px 14px; border-radius: 11px; color: #ffe8df; background: rgba(255, 106, 61, .19); font-size: .66rem; line-height: 1.5; }
  #rk-mix-guide .rk-pg-calc-formulas { margin-top: 20px; padding-top: 17px; border-top: 1px solid rgba(255, 255, 255, .14); color: #dcecf0; font-size: .63rem; line-height: 1.55; }
  #rk-mix-guide .rk-pg-calc-formulas code { color: #ffffff; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }

  #rk-mix-guide .rk-pg-compare-row { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); gap: 15px; align-items: stretch; margin: 25px 0; }
  #rk-mix-guide .rk-pg-compare-side { padding: 22px; border: 1px solid var(--rk-line); border-radius: 18px; background: var(--rk-white); }
  #rk-mix-guide .rk-pg-compare-vs { align-self: center; display: grid; place-items: center; width: 48px; height: 48px; padding: 0; border-radius: 50%; color: #ffffff; background: var(--rk-orange); font-size: .62rem; font-weight: 950; line-height: 1; }

  #rk-mix-guide .rk-pg-preset-row,
  #rk-mix-guide .rk-pg-profile-row {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 22px;
  }
  #rk-mix-guide .rk-pg-preset,
  #rk-mix-guide .rk-pg-profile-button {
    min-height: 43px;
    padding: 10px 15px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .72rem;
    font-weight: 900;
    line-height: 1.2;
  }
  #rk-mix-guide .rk-pg-preset.is-active,
  #rk-mix-guide .rk-pg-profile-button.is-active,
  #rk-mix-guide .rk-pg-preset[aria-pressed="true"],
  #rk-mix-guide .rk-pg-profile-button[aria-pressed="true"] { color: var(--rk-white); border-color: var(--rk-blue); background: var(--rk-blue); }
  #rk-mix-guide .rk-pg-pipe-label {
    margin-bottom: 19px;
    padding: 20px;
    border: 1px solid #b9d7df;
    border-radius: 999px;
    background: linear-gradient(180deg, #f9fcfd, #e8f1f4);
    box-shadow: inset 0 5px 14px rgba(16, 37, 54, .06);
  }
  #rk-mix-guide .rk-pg-token-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
  #rk-mix-guide .rk-pg-token {
    padding: 9px 12px;
    border: 1px solid #accbd4;
    border-radius: 999px;
    color: var(--rk-dark);
    background: #ffffff;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: .68rem;
    font-weight: 900;
    line-height: 1.2;
  }
  #rk-mix-guide .rk-pg-token:hover,
  #rk-mix-guide .rk-pg-token:focus-visible { border-color: var(--rk-cyan); background: var(--rk-cyan-soft); }
  #rk-mix-guide .rk-pg-token.is-active,
  #rk-mix-guide .rk-pg-token[aria-pressed="true"] { color: var(--rk-white); border-color: var(--rk-orange); background: var(--rk-orange); }
  #rk-mix-guide .rk-pg-decode-panel {
    padding: clamp(20px, 4vw, 29px);
    border-radius: 19px;
    background: var(--rk-soft);
  }
  #rk-mix-guide .rk-pg-decode-caption { display: block; margin-bottom: 6px; color: var(--rk-blue); font-size: .64rem; font-weight: 950; letter-spacing: .07em; text-transform: uppercase; }
  #rk-mix-guide .rk-pg-decode-panel h4 { font-size: 1.25rem; }
  #rk-mix-guide .rk-pg-decode-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 18px; }
  #rk-mix-guide .rk-pg-decode-box { min-width: 0; padding: 17px; border-radius: 15px; background: #ffffff; }
  #rk-mix-guide .rk-pg-decode-box b { display: block; margin-bottom: 5px; font-size: .72rem; }
  #rk-mix-guide .rk-pg-decode-box p { margin-bottom: 0; color: var(--rk-text); font-size: .76rem; line-height: 1.55; }
  #rk-mix-guide .rk-pg-decode-box.is-no { border-top: 3px solid var(--rk-orange); }
  #rk-mix-guide .rk-pg-decode-box.is-check { border-top: 3px solid var(--rk-green); }

  #rk-mix-guide .rk-pg-chart-wrap {
    padding: clamp(18px, 4vw, 28px);
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: #f8fbfc;
  }
  #rk-mix-guide .rk-pg-chart-axis {
    display: grid;
    grid-template-columns: repeat(5, minmax(44px, 1fr));
    align-items: end;
    gap: clamp(6px, 2vw, 15px);
    min-height: 295px;
    padding: 20px 8px 0;
    border-bottom: 2px solid #b7cbd3;
    background-image: repeating-linear-gradient(to top, transparent 0, transparent 57px, rgba(16, 37, 54, .08) 58px, transparent 59px);
  }
  #rk-mix-guide .rk-pg-chart-column { display: flex; flex-direction: column; align-items: stretch; justify-content: flex-end; min-width: 0; height: 270px; }
  #rk-mix-guide .rk-pg-chart-bar {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    width: 100%;
    min-height: 34px;
    padding: 8px 3px;
    border-radius: 13px 13px 4px 4px;
    color: #ffffff;
    background: linear-gradient(180deg, #22c6d8, #078fbe);
    box-shadow: 0 9px 20px rgba(7, 143, 190, .2);
    font-size: .68rem;
    font-weight: 950;
    line-height: 1;
    transition: filter .18s ease, transform .18s ease;
  }
  #rk-mix-guide .rk-pg-chart-bar.is-maximum { background: linear-gradient(180deg, #ff9a64, #ef6338); }
  #rk-mix-guide .rk-pg-chart-bar.is-malfunction { background: linear-gradient(180deg, #e86c62, #c93f36); }
  #rk-mix-guide .rk-pg-chart-bar:hover,
  #rk-mix-guide .rk-pg-chart-bar:focus-visible,
  #rk-mix-guide .rk-pg-chart-bar.is-active { filter: saturate(1.2) brightness(.94); transform: translateY(-4px); }
  #rk-mix-guide .rk-pg-chart-label { min-height: 58px; padding-top: 8px; text-align: center; }
  #rk-mix-guide .rk-pg-chart-label b { display: block; font-size: .67rem; line-height: 1.25; }
  #rk-mix-guide .rk-pg-chart-label span { display: block; color: var(--rk-muted); font-size: .58rem; line-height: 1.25; }
  #rk-mix-guide .rk-pg-chart-panel {
    display: grid;
    grid-template-columns: minmax(0, .85fr) minmax(0, 2fr);
    gap: 18px;
    margin-top: 21px;
    padding: 21px;
    border-radius: 17px;
    color: var(--rk-white);
    background: var(--rk-navy);
  }
  #rk-mix-guide .rk-pg-chart-value { display: flex; flex-direction: column; justify-content: center; padding: 15px; border-radius: 14px; background: rgba(255, 255, 255, .08); }
  #rk-mix-guide .rk-pg-chart-value strong { color: #7cecf7 !important; font-size: 1.55rem; line-height: 1.1; }
  #rk-mix-guide .rk-pg-chart-value span { color: #dcecf0; font-size: .66rem; }
  #rk-mix-guide .rk-pg-chart-copy h4 { color: #ffffff; }
  #rk-mix-guide .rk-pg-chart-copy p { margin-bottom: 0; color: #deedf0; font-size: .82rem; line-height: 1.6; }

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

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

  #rk-mix-guide .rk-pg-myth-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; margin-top: 25px; }
  #rk-mix-guide .rk-pg-myth-card { min-width: 0; padding: 21px; border: 1px solid var(--rk-line); border-radius: 17px; background: var(--rk-white); }
  #rk-mix-guide .rk-pg-myth-label { display: inline-block; margin-bottom: 8px; padding: 5px 9px; border-radius: 999px; color: #9f322a; background: var(--rk-red-soft); font-size: .58rem; font-weight: 950; letter-spacing: .06em; text-transform: uppercase; }
  #rk-mix-guide .rk-pg-myth-card p { margin-bottom: 0; color: var(--rk-text); }

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

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

  @media (max-width: 900px) {
    #rk-mix-guide .rk-pg-grid-3,
    #rk-mix-guide .rk-pg-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-mix-guide .rk-pg-decode-grid { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-author-layout { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-author-side { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .12); }
    #rk-mix-guide .rk-pg-flow-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; overflow: visible; padding: 0; }
    #rk-mix-guide .rk-pg-flow-arrow { display: none; }
    #rk-mix-guide .rk-pg-flow-node:last-child { grid-column: 1 / -1; }
    #rk-mix-guide .rk-pg-flow-detail-grid { grid-template-columns: 1fr; }
  }
  @media (max-width: 720px) {
    #rk-mix-guide { margin-top: 20px; font-size: 16px; }
    #rk-mix-guide .rk-pg-shell { border-radius: 19px; }
    #rk-mix-guide .rk-pg-hero-metrics,
    #rk-mix-guide .rk-pg-grid-2,
    #rk-mix-guide .rk-pg-grid-3,
    #rk-mix-guide .rk-pg-grid-4,
    #rk-mix-guide .rk-pg-factor-grid,
    #rk-mix-guide .rk-pg-myth-grid,
    #rk-mix-guide .rk-pg-sources,
    #rk-mix-guide .rk-pg-author-cards { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-formula-main,
    #rk-mix-guide .rk-pg-author-head { display: block; }
    #rk-mix-guide .rk-pg-formula-result { display: inline-block; margin-top: 14px; }
    #rk-mix-guide .rk-pg-author-mark { display: inline-block; margin-top: 14px; }
    #rk-mix-guide .rk-pg-chart-panel { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-calc-layout,
    #rk-mix-guide .rk-pg-compare-row { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-compare-vs { margin: -3px auto; }
    #rk-mix-guide .rk-pg-calc-dashboard { grid-template-columns: 104px minmax(0, 1fr); gap: 16px; }
    #rk-mix-guide .rk-pg-tank { width: 94px; height: 224px; }
    #rk-mix-guide .rk-pg-pipe-label { border-radius: 22px; }
    #rk-mix-guide .rk-pg-table-wrap { overflow: visible; border: 0; background: transparent; }
    #rk-mix-guide table,
    #rk-mix-guide thead,
    #rk-mix-guide tbody,
    #rk-mix-guide tr,
    #rk-mix-guide th,
    #rk-mix-guide td { display: block; width: 100%; }
    #rk-mix-guide thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
    #rk-mix-guide tbody { display: grid; gap: 13px; }
    #rk-mix-guide tr { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 16px; background: var(--rk-white); }
    #rk-mix-guide td { position: relative; min-height: 54px; padding: 31px 15px 12px; border-bottom: 1px solid var(--rk-line); background: #ffffff !important; }
    #rk-mix-guide td:last-child { border-bottom: 0; }
    #rk-mix-guide td::before { position: absolute; top: 9px; left: 15px; color: var(--rk-blue); content: attr(data-label); font-size: .56rem; font-weight: 950; letter-spacing: .045em; text-transform: uppercase; }
  }
  @media (max-width: 500px) {
    #rk-mix-guide .rk-pg-hero { padding-left: 21px; padding-right: 21px; }
    #rk-mix-guide .rk-pg-content { padding-left: 16px; padding-right: 16px; }
    #rk-mix-guide .rk-pg-nav { padding-left: 15px; padding-right: 15px; }
    #rk-mix-guide .rk-pg-nav a { font-size: .61rem; }
    #rk-mix-guide .rk-pg-tool-body { padding-left: 13px; padding-right: 13px; }
    #rk-mix-guide .rk-pg-factor { grid-template-columns: 52px minmax(0, 1fr); gap: 13px; padding: 18px 15px; }
    #rk-mix-guide .rk-pg-chart-wrap { padding-left: 9px; padding-right: 9px; }
    #rk-mix-guide .rk-pg-chart-axis { gap: 5px; padding-left: 2px; padding-right: 2px; }
    #rk-mix-guide .rk-pg-chart-bar { font-size: .59rem; }
    #rk-mix-guide .rk-pg-chart-label b { font-size: .59rem; }
    #rk-mix-guide .rk-pg-chart-label span { font-size: .52rem; }
    #rk-mix-guide .rk-pg-author-main { padding-left: 18px; padding-right: 18px; }
    #rk-mix-guide .rk-pg-cta-button { width: 100%; text-align: center; }
    #rk-mix-guide .rk-pg-flow-tabs { display: grid; grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-flow-tab { width: 100%; }
    #rk-mix-guide .rk-pg-flow-grid { display: grid; grid-template-columns: 1fr; overflow: visible; padding-bottom: 0; }
    #rk-mix-guide .rk-pg-flow-node:last-child { grid-column: auto; }
    #rk-mix-guide .rk-pg-flow-node { min-height: 0; }
    #rk-mix-guide .rk-pg-flow-safety { grid-template-columns: 48px minmax(0, 1fr); gap: 12px; }
    #rk-mix-guide .rk-pg-calc-dashboard { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-tank { width: 116px; height: 220px; }
    #rk-mix-guide .rk-pg-calc-result-grid { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-calc-result-card.is-wide { grid-column: auto; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-mix-guide *,
    #rk-mix-guide *::before,
    #rk-mix-guide *::after { scroll-behavior: auto !important; transition: none !important; animation: none !important; }
  }

  /* Dodatkowe moduły artykułu o zaworze mieszającym */
  #rk-mix-guide .rk-pg-hero,
  #rk-mix-guide .rk-pg-hero * { color: #ffffff; }
  #rk-mix-guide .rk-pg-hero .rk-pg-kicker { color: #78efff !important; }
  #rk-mix-guide .rk-pg-hero-title,
  #rk-mix-guide .rk-pg-hero-title strong { color: #ffffff !important; }
  #rk-mix-guide .rk-pg-hero-title span { color: #67e7f5 !important; }
  #rk-mix-guide .rk-pg-lead,
  #rk-mix-guide .rk-pg-byline,
  #rk-mix-guide .rk-pg-byline span,
  #rk-mix-guide .rk-pg-hero-metric span { color: #e7f6f8 !important; }
  #rk-mix-guide .rk-pg-byline strong,
  #rk-mix-guide .rk-pg-hero-metric b,
  #rk-mix-guide .rk-pg-hero-tag { color: #ffffff !important; }

  #rk-mix-guide .rk-mix-scheme {
    display: grid;
    grid-template-columns: minmax(120px, 1fr) 24px minmax(120px, 1fr) 24px minmax(120px, 1fr) 24px minmax(120px, 1fr) 24px minmax(120px, 1fr);
    align-items: stretch;
    gap: 7px;
    margin: 24px 0;
  }
  #rk-mix-guide .rk-mix-scheme-node {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    min-width: 0;
    min-height: 178px;
    padding: 18px 15px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-dark);
    background: #f7fafb;
    text-align: left;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease, opacity .18s ease;
  }
  #rk-mix-guide .rk-mix-scheme-node:hover,
  #rk-mix-guide .rk-mix-scheme-node:focus-visible { border-color: var(--rk-blue); transform: translateY(-2px); }
  #rk-mix-guide .rk-mix-scheme-node.is-selected { border-color: var(--rk-orange); box-shadow: 0 0 0 3px rgba(255, 106, 61, .16); }
  #rk-mix-guide .rk-mix-scheme-node.is-source { border-top: 4px solid var(--rk-orange); }
  #rk-mix-guide .rk-mix-scheme-node.is-floor { border-top: 4px solid var(--rk-green); }
  #rk-mix-guide .rk-mix-scheme-node.is-mixer { border-top: 4px solid var(--rk-cyan); background: #eefbfd; }
  #rk-mix-guide .rk-mix-scheme-node.is-neutral { border-top: 4px solid #9eb1ba; background: #f0f4f6; }
  #rk-mix-guide .rk-mix-node-number {
    display: grid !important;
    place-items: center !important;
    width: 40px !important;
    min-width: 40px !important;
    max-width: 40px !important;
    height: 40px !important;
    min-height: 40px !important;
    max-height: 40px !important;
    margin: 0 0 13px !important;
    padding: 0 !important;
    border-radius: 50% !important;
    color: #ffffff !important;
    background: var(--rk-navy) !important;
    font-size: .76rem !important;
    font-weight: 950 !important;
    line-height: 1 !important;
    text-align: center !important;
    position: static !important;
    transform: none !important;
  }
  #rk-mix-guide .rk-mix-scheme-node.is-mixer .rk-mix-node-number { background: var(--rk-blue) !important; }
  #rk-mix-guide .rk-mix-scheme-node.is-source .rk-mix-node-number { background: var(--rk-orange) !important; }
  #rk-mix-guide .rk-mix-scheme-node.is-floor .rk-mix-node-number { background: var(--rk-green) !important; }
  #rk-mix-guide .rk-mix-scheme-node strong { display: block; margin-bottom: 6px; font-size: .74rem; line-height: 1.3; }
  #rk-mix-guide .rk-mix-scheme-node small { display: block; color: var(--rk-muted); font-size: .6rem; line-height: 1.45; }
  #rk-mix-guide .rk-mix-scheme-arrow { position: relative; display: grid; place-items: center; min-width: 0; color: var(--rk-orange); }
  #rk-mix-guide .rk-mix-scheme-arrow::before { width: 100%; height: 4px; border-radius: 99px; background: currentColor; content: ""; }
  #rk-mix-guide .rk-mix-scheme-arrow::after { position: absolute; right: 0; width: 10px; height: 10px; border-top: 4px solid currentColor; border-right: 4px solid currentColor; content: ""; transform: rotate(45deg); }

  #rk-mix-guide .rk-mix-port-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 44px minmax(0, 1fr) 44px minmax(0, 1fr);
    align-items: stretch;
    gap: 10px;
    margin: 28px 0 18px;
  }
  #rk-mix-guide .rk-mix-port {
    min-width: 0;
    min-height: 150px;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-dark);
    background: var(--rk-white);
    text-align: left;
    transition: border-color .18s ease, box-shadow .18s ease, transform .18s ease;
  }
  #rk-mix-guide .rk-mix-port:hover,
  #rk-mix-guide .rk-mix-port:focus-visible { transform: translateY(-2px); }
  #rk-mix-guide .rk-mix-port.is-active { border-color: var(--rk-blue); box-shadow: 0 10px 28px rgba(7, 143, 190, .13); }
  #rk-mix-guide .rk-mix-port > span {
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    margin-bottom: 12px;
    border-radius: 50%;
    color: #ffffff;
    background: var(--rk-navy);
    font-size: .72rem;
    font-weight: 950;
    line-height: 1;
  }
  #rk-mix-guide .rk-mix-port.is-hot > span { background: var(--rk-orange); }
  #rk-mix-guide .rk-mix-port.is-return > span { background: var(--rk-blue); }
  #rk-mix-guide .rk-mix-port.is-mixed > span { background: var(--rk-green); }
  #rk-mix-guide .rk-mix-port strong { display: block; margin-bottom: 5px; font-size: .8rem; line-height: 1.3; }
  #rk-mix-guide .rk-mix-port small { display: block; color: var(--rk-muted); font-size: .65rem; line-height: 1.5; }
  #rk-mix-guide .rk-mix-port-center { display: grid; place-items: center; }
  #rk-mix-guide .rk-mix-port-center span { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; color: #ffffff; background: var(--rk-navy); font-weight: 950; line-height: 1; }

  #rk-mix-guide .rk-mix-input-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 15px; }
  #rk-mix-guide .rk-mix-input-grid .rk-pg-calc-field { min-width: 0; margin: 0; }
  #rk-mix-guide .rk-mix-input-grid .rk-pg-calc-field.is-wide { grid-column: 1 / -1; }
  #rk-mix-guide .rk-mix-input-grid label { display: block; margin-bottom: 7px; color: var(--rk-dark); font-size: .68rem; font-weight: 900; line-height: 1.35; }
  #rk-mix-guide .rk-mix-input-grid small { display: block; margin-top: 6px; color: var(--rk-muted); font-size: .57rem; line-height: 1.4; }
  #rk-mix-guide .rk-mix-number-input {
    display: block;
    width: 100%;
    min-width: 0;
    height: 48px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #b9cfd7;
    border-radius: 12px;
    color: var(--rk-dark);
    background: #ffffff;
    font-size: .82rem;
    font-weight: 800;
    line-height: 1.2;
  }
  #rk-mix-guide .rk-mix-number-input:focus { outline: 3px solid rgba(7, 143, 190, .17); border-color: var(--rk-blue); }

  #rk-mix-guide .rk-mix-ratio {
    display: flex;
    width: 100%;
    min-height: 44px;
    margin-top: 10px;
    overflow: hidden;
    border: 2px solid rgba(255, 255, 255, .19);
    border-radius: 999px;
    background: rgba(255, 255, 255, .08);
  }
  #rk-mix-guide .rk-mix-ratio-hot,
  #rk-mix-guide .rk-mix-ratio-return { display: grid; place-items: center; min-width: 0; padding: 7px 3px; transition: width .25s ease; }
  #rk-mix-guide .rk-mix-ratio-hot { width: 16.7%; background: linear-gradient(90deg, #ff6a3d, #ff936b); }
  #rk-mix-guide .rk-mix-ratio-return { width: 83.3%; background: linear-gradient(90deg, #078fbe, #25c7d8); }
  #rk-mix-guide .rk-mix-ratio b { display: block; overflow: hidden; color: #ffffff !important; font-size: .57rem; font-weight: 950; line-height: 1; white-space: nowrap; text-overflow: clip; }

  #rk-mix-guide .rk-mix-diagnostic details[open] { border-color: #a8d9e3; box-shadow: 0 9px 24px rgba(7, 143, 190, .08); }
  #rk-mix-guide .rk-mix-diagnostic .rk-pg-faq-answer p + p { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--rk-line); }

  @media (max-width: 1040px) {
    #rk-mix-guide .rk-mix-scheme { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; }
    #rk-mix-guide .rk-mix-scheme-arrow { display: none; }
    #rk-mix-guide .rk-mix-scheme-node { min-height: 190px; }
  }
  @media (max-width: 820px) {
    #rk-mix-guide .rk-mix-scheme { grid-template-columns: 1fr; gap: 0; }
    #rk-mix-guide .rk-mix-scheme-node { min-height: 0; }
    #rk-mix-guide .rk-mix-scheme-arrow { display: grid; width: 4px; height: 25px; margin: 0 auto; color: var(--rk-orange); }
    #rk-mix-guide .rk-mix-scheme-arrow::before { width: 4px; height: 100%; }
    #rk-mix-guide .rk-mix-scheme-arrow::after { right: auto; bottom: 0; width: 9px; height: 9px; border-top: 0; border-right: 4px solid currentColor; border-bottom: 4px solid currentColor; transform: rotate(45deg); }
    #rk-mix-guide .rk-mix-port-layout { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-mix-port { min-height: 0; }
    #rk-mix-guide .rk-mix-port-center { min-height: 36px; }
  }
  @media (max-width: 560px) {
    #rk-mix-guide .rk-mix-input-grid { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-mix-input-grid .rk-pg-calc-field.is-wide { grid-column: auto; }
    #rk-mix-guide .rk-pg-calc-result-grid { grid-template-columns: 1fr; }
    #rk-mix-guide .rk-pg-calc-result-card.is-wide { grid-column: auto; }
    #rk-mix-guide .rk-mix-ratio b { font-size: .52rem; }
  }

</style>

<article id="rk-mix-guide" aria-labelledby="rk-pg-visual-title">
  <div class="rk-pg-shell">
    <header class="rk-pg-hero">
      <span class="rk-pg-kicker">Od schematu do doboru hydraulicznego</span>
      <div class="rk-pg-hero-title" id="rk-pg-visual-title">Nie każdy układ potrzebuje mieszacza. <span>Każdy potrzebuje właściwej temperatury i przepływu</span></div>
      <p class="rk-pg-lead">Zawór mieszający nie jest automatycznie obowiązkowym elementem każdej podłogówki. Ma sens wtedy, gdy obieg podłogowy musi otrzymać inną temperaturę niż udostępnia źródło albo pozostałe odbiorniki. Dobór zaczyna się od schematu, mocy, ΔT i przepływu — nie od średnicy gwintu.</p>

      <div class="rk-pg-hero-tags" aria-label="Zakres poradnika">
        <span class="rk-pg-hero-tag">zawór 3-drogowy</span>
        <span class="rk-pg-hero-tag">Kv i Kvs</span>
        <span class="rk-pg-hero-tag">grupa mieszająca</span>
        <span class="rk-pg-hero-tag">pompa ciepła</span>
        <span class="rk-pg-hero-tag">sterowanie pogodowe</span>
      </div>

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

      <div class="rk-pg-hero-metrics" aria-label="Trzy najważniejsze odpowiedzi">
        <div class="rk-pg-hero-metric"><b>Czy jest potrzebny?</b><span>Decyduje różnica wymaganych temperatur, schemat źródła i sposób wydzielenia obiegów — nie sam fakt zastosowania podłogówki.</span></div>
        <div class="rk-pg-hero-metric"><b>Co reguluje?</b><span>Temperaturę wody kierowanej do obiegu. Nie równoważy pojedynczych pętli i nie oblicza ich przepływów.</span></div>
        <div class="rk-pg-hero-metric"><b>Jak go dobierać?</b><span>Według przepływu, strat ciśnienia, charakterystyki zaworu, sposobu sterowania i całej hydrauliki układu.</span></div>
      </div>
    </header>

    <nav class="rk-pg-nav" aria-label="Nawigacja po artykule">
      <span class="rk-pg-nav-label">Na skróty</span>
      <div class="rk-pg-nav-track">
        <a href="#rk-pg-odpowiedz">Krótka odpowiedź</a>
        <a href="#rk-pg-funkcja">Funkcja zaworu</a>
        <a href="#rk-pg-schematy">Trzy schematy</a>
        <a href="#rk-pg-trzydrogi">Zawór 3-drogowy</a>
        <a href="#rk-pg-porownanie">2-, 3- i 4-drogowy</a>
        <a href="#rk-pg-sterowanie">Termostatyczny czy siłownik</a>
        <a href="#rk-pg-pogodowka">Regulacja pogodowa</a>
        <a href="#rk-pg-moc">Moc obiegu</a>
        <a href="#rk-pg-przeplyw">Przepływ</a>
        <a href="#rk-pg-kalkulator">Kalkulator</a>
        <a href="#rk-pg-kv-kvs">Kv i Kvs</a>
        <a href="#rk-pg-autorytet">Opór i autorytet</a>
        <a href="#rk-pg-pompa-ciepla">Pompa ciepła</a>
        <a href="#rk-pg-kociol-bufor">Kocioł i bufor</a>
        <a href="#rk-pg-pompa-rozdzielacz">Pompa i rozdzielacz</a>
        <a href="#rk-pg-montaz">Montaż</a>
        <a href="#rk-pg-uruchomienie">Uruchomienie</a>
        <a href="#rk-pg-diagnostyka">Diagnostyka</a>
        <a href="#rk-pg-bledy">Błędy</a>
        <a href="#rk-pg-checklista">Checklista</a>
        <a href="#rk-pg-wnioski">Wnioski</a>
        <a href="#rk-pg-zrodla">Źródła</a>
        <a href="#rk-pg-faq">FAQ</a>
        <a href="#rk-pg-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-pg-content">
      <section class="rk-pg-section" id="rk-pg-odpowiedz">
        <span class="rk-pg-eyebrow">Odpowiedź bez mitu</span>
        <h2>Czy zawór mieszający jest potrzebny w każdej podłogówce?</h2>
        <p class="rk-pg-intro"><strong>Nie.</strong> Oddzielny zawór mieszający jest potrzebny wtedy, gdy obieg ogrzewania podłogowego musi otrzymywać temperaturę niższą lub niezależnie regulowaną względem temperatury dostępnej po stronie źródła albo innego obiegu. Najpierw rozpoznaje się funkcję, a dopiero później wybiera urządzenie.</p>

        <div class="rk-pg-grid-3">
          <article class="rk-pg-card is-green"><div class="rk-pg-card-icon">01</div><h3>Może być zbędny</h3><p>W jednym, bezpośrednim obiegu niskotemperaturowym, gdy źródło samo przygotowuje wymaganą temperaturę i spełnione są jego wymagania dotyczące przepływu oraz sterowania.</p></article>
          <article class="rk-pg-card is-orange"><div class="rk-pg-card-icon">02</div><h3>Zwykle ma wyraźną funkcję</h3><p>Gdy kocioł, bufor albo obieg grzejnikowy pracuje z temperaturą wyższą niż potrzebuje podłoga, a obieg podłogowy wymaga własnej regulacji.</p></article>
          <article class="rk-pg-card is-cyan"><div class="rk-pg-card-icon">03</div><h3>Nie działa sam</h3><p>Do stabilnej pracy potrzebuje prawidłowego przepływu, pompy lub różnicy ciśnienia, właściwie umieszczonego czujnika i logiki sterowania.</p></article>
        </div>

        <div class="rk-pg-answer"><p><strong>Najważniejsze rozróżnienie:</strong> budynek ma zapotrzebowanie na moc, podłoga ma zdolność jej oddawania, a instalacja ma doprowadzić obliczony przepływ przy odpowiedniej temperaturze. Zawór mieszający jest tylko jednym z elementów tej drogi.</p></div>

        <p>Dlatego punkt wyjścia stanowi <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>, a nie deklaracja, że „podłogówka zawsze pracuje na 35°C”. Równie ważne są dopuszczalne parametry powierzchni opisane w poradniku o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-funkcja">
        <span class="rk-pg-eyebrow">Granice odpowiedzialności</span>
        <h2>Co zawór mieszający robi, a czego nie robi?</h2>
        <p class="rk-pg-intro">Najwięcej problemów bierze się z przypisania jednemu elementowi zbyt wielu funkcji. Mieszacz może regulować temperaturę wody, ale nie zastępuje projektu emitera, równoważenia ani zabezpieczeń wymaganych przez źródło.</p>

        <div class="rk-pg-compare-row">
          <div class="rk-pg-compare-side">
            <h3>Co może robić?</h3>
            <ul class="rk-pg-checklist">
              <li>Łączyć cieplejszy strumień ze źródła z chłodniejszym powrotem.</li>
              <li>Utrzymywać zadaną temperaturę za zaworem w granicach możliwości układu.</li>
              <li>Rozdzielić wymagania temperaturowe podłogówki i innych odbiorników.</li>
              <li>Współpracować z siłownikiem i regulatorem pogodowym.</li>
            </ul>
          </div>
          <div class="rk-pg-compare-vs" aria-hidden="true">VS</div>
          <div class="rk-pg-compare-side">
            <h3>Czego nie robi sam?</h3>
            <ul class="rk-pg-crosslist">
              <li>Nie wyznacza mocy potrzebnej w pomieszczeniach.</li>
              <li>Nie równoważy przepływów poszczególnych pętli na rotametrach.</li>
              <li>Nie gwarantuje minimalnego przepływu przez pompę ciepła lub kocioł.</li>
              <li>Nie naprawia źle dobranej pompy, średnic ani długości pętli.</li>
            </ul>
          </div>
        </div>

        <p>Regulację pętli wykonuje się na <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczu ogrzewania podłogowego</a>, a odczyt i nastawę przepływów pomaga zrozumieć poradnik o <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a>. Mieszacz reguluje parametr wspólny dla całego obsługiwanego obiegu.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-schematy">
        <span class="rk-pg-eyebrow">Narzędzie 1 · mapa hydrauliczna</span>
        <h2>Trzy układy hydrauliczne — gdzie mieszacz ma funkcję, a gdzie może być zbędny?</h2>
        <p class="rk-pg-intro">Wybierz wariant najbliższy swojej instalacji. Moduł nie dobiera urządzenia, lecz pokazuje różnicę pomiędzy bezpośrednim obiegiem niskotemperaturowym, źródłem wysokotemperaturowym i instalacją z dwoma poziomami temperatury.</p>

        <div class="rk-pg-tool" id="rk-mix-schemes-tool">
          <div class="rk-pg-tool-head">
            <span class="rk-pg-tool-kicker">Interaktywna grafika edukacyjna</span>
            <h3>Od źródła do pętli: wybierz sposób organizacji obiegu</h3>
            <p>Każdy wariant pokazuje funkcję elementów, warunek poprawnej pracy oraz punkt, którego nie wolno rozstrzygać wyłącznie na podstawie uproszczonego rysunku.</p>
          </div>
          <div class="rk-pg-tool-body">
            <div class="rk-pg-flow-tabs" role="group" aria-label="Wybór scenariusza hydraulicznego">
              <button class="rk-pg-flow-tab is-active" type="button" data-rk-mix-mode="direct" aria-pressed="true">Obieg bezpośredni</button>
              <button class="rk-pg-flow-tab" type="button" data-rk-mix-mode="high" aria-pressed="false">Źródło wysokotemperaturowe</button>
              <button class="rk-pg-flow-tab" type="button" data-rk-mix-mode="mixed" aria-pressed="false">Podłogówka + grzejniki</button>
            </div>

            <div class="rk-pg-flow-status" id="rk-mix-scheme-status" aria-live="polite">
              <b>Obieg bezpośredni: osobny mieszacz może nie być potrzebny</b>
              <p>Źródło przygotowuje temperaturę wymaganą przez podłogówkę, a cały obieg pracuje na jednym poziomie temperatury.</p>
            </div>

            <div class="rk-mix-scheme" id="rk-mix-scheme-map" aria-label="Schemat funkcjonalny instalacji">
              <button class="rk-mix-scheme-node is-source" type="button" data-rk-mix-node="0"><span class="rk-mix-node-number">1</span><strong id="rk-mix-node-title-0">Źródło niskotemperaturowe</strong><small id="rk-mix-node-copy-0">Przygotowuje obliczoną temperaturę wody</small></button>
              <span class="rk-mix-scheme-arrow" aria-hidden="true"></span>
              <button class="rk-mix-scheme-node" type="button" data-rk-mix-node="1"><span class="rk-mix-node-number">2</span><strong id="rk-mix-node-title-1">Pompa i wymagany przepływ</strong><small id="rk-mix-node-copy-1">Transport zgodny z hydrauliką źródła</small></button>
              <span class="rk-mix-scheme-arrow" aria-hidden="true"></span>
              <button class="rk-mix-scheme-node is-neutral" type="button" data-rk-mix-node="2"><span class="rk-mix-node-number">3</span><strong id="rk-mix-node-title-2">Bez oddzielnego mieszacza</strong><small id="rk-mix-node-copy-2">Brak drugiego poziomu temperatury</small></button>
              <span class="rk-mix-scheme-arrow" aria-hidden="true"></span>
              <button class="rk-mix-scheme-node" type="button" data-rk-mix-node="3"><span class="rk-mix-node-number">4</span><strong id="rk-mix-node-title-3">Rozdzielacz</strong><small id="rk-mix-node-copy-3">Rozdziela obliczone przepływy</small></button>
              <span class="rk-mix-scheme-arrow" aria-hidden="true"></span>
              <button class="rk-mix-scheme-node is-floor" type="button" data-rk-mix-node="4"><span class="rk-mix-node-number">5</span><strong id="rk-mix-node-title-4">Pętle podłogowe</strong><small id="rk-mix-node-copy-4">Oddają moc do pomieszczeń</small></button>
            </div>

            <div class="rk-pg-flow-detail" id="rk-mix-scheme-detail">
              <h4 id="rk-mix-detail-title">Najpierw sprawdź wymagania źródła</h4>
              <p id="rk-mix-detail-copy">Brak oddzielnego mieszacza nie oznacza braku regulacji. Temperaturę może wyznaczać automatyka źródła, ale nadal trzeba zapewnić projektowy przepływ, właściwą krzywą i warunki minimalnego zładu lub przepływu.</p>
              <div class="rk-pg-flow-detail-grid">
                <div class="rk-pg-flow-detail-card"><b>Funkcja mieszania</b><p id="rk-mix-detail-function">Może być realizowana bezpośrednio przez źródło; drugi zawór nie tworzy wtedy potrzebnej różnicy temperatur.</p></div>
                <div class="rk-pg-flow-detail-card"><b>Co zweryfikować</b><p id="rk-mix-detail-check">Minimalny przepływ, pracę pompy, objętość czynną, sterowanie strefowe i schemat producenta.</p></div>
                <div class="rk-pg-flow-detail-card"><b>Czego nie przesądza grafika</b><p id="rk-mix-detail-limit">Czy potrzebny jest bufor, sprzęgło, bypass albo dodatkowa pompa w konkretnym modelu źródła.</p></div>
              </div>
            </div>

            <div class="rk-pg-tool-disclaimer">To schemat funkcjonalny, a nie wykonawczy. Nie pokazuje wszystkich zaworów odcinających, zwrotnych, filtrów, odpowietrzeń, zabezpieczeń, średnic, przewodów sterujących ani wymagań konkretnego producenta.</div>
          </div>
        </div>

        <p>Rozwinięcie wariantu bezpośredniego znajduje się w poradniku <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>. Jeżeli w budynku występują dwa rodzaje odbiorników, warto przeczytać również analizę <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">pompy ciepła, podłogówki i grzejników</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-trzydrogi">
        <span class="rk-pg-eyebrow">Zasada działania</span>
        <h2>Jak działa zawór 3-drogowy mieszający?</h2>
        <p class="rk-pg-intro">W typowym zastosowaniu mieszającym do zaworu dopływa cieplejsza woda ze źródła i chłodniejsza woda wracająca z obiegu. Na króćcu wspólnym powstaje strumień o temperaturze pośredniej. Oznaczenia portów trzeba zawsze sprawdzić na korpusie i w dokumentacji konkretnego modelu.</p>

        <div class="rk-mix-port-layout">
          <button class="rk-mix-port is-hot is-active" type="button" data-rk-mix-port="a" aria-pressed="true"><span>A</span><strong>Cieplejszy strumień</strong><small>Najczęściej dopływ ze źródła lub bufora</small></button>
          <div class="rk-mix-port-center" aria-hidden="true"><span>+</span></div>
          <button class="rk-mix-port is-return" type="button" data-rk-mix-port="b" aria-pressed="false"><span>B</span><strong>Chłodniejszy powrót</strong><small>Woda zawracana z obiegu podłogowego</small></button>
          <div class="rk-mix-port-center" aria-hidden="true"><span>=</span></div>
          <button class="rk-mix-port is-mixed" type="button" data-rk-mix-port="ab" aria-pressed="false"><span>AB</span><strong>Woda zmieszana</strong><small>Strumień kierowany do pompy i rozdzielacza</small></button>
        </div>
        <div class="rk-pg-note" id="rk-mix-port-note" aria-live="polite"><p><strong>Port A:</strong> jego przymknięcie ogranicza udział cieplejszej wody, ale rzeczywista charakterystyka przepływu zależy od konstrukcji zaworu i siłownika.</p></div>

        <div class="rk-pg-warning"><p><strong>Litery nie są uniwersalnym pozwoleniem na montaż „z pamięci”.</strong> Ten sam zawór obrotowy może być dopuszczony do pracy mieszającej lub rozdzielającej, a właściwy kierunek i położenie trzpienia określa producent. Przykładowo oficjalna dokumentacja serii VRG130 opisuje zarówno funkcję mieszania, jak i rozdzielania.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-pg-porownanie">
        <span class="rk-pg-eyebrow">Topologia, nie liczba na korpusie</span>
        <h2>Zawór 2-drogowy, 3-drogowy i 4-drogowy — czym naprawdę się różnią?</h2>
        <p class="rk-pg-intro">Liczba dróg nie mówi jeszcze, czy urządzenie pasuje do instalacji. Trzeba prześledzić rzeczywistą drogę przepływu, położenie pompy i sposób powrotu wody.</p>

        <div class="rk-pg-table-wrap">
          <table>
            <thead><tr><th>Rozwiązanie</th><th>Jak pracuje</th><th>Typowe zastosowanie</th><th>Co trzeba sprawdzić</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozwiązanie"><strong>Zawór 2-drogowy wtryskowy</strong></td><td data-label="Jak pracuje">Moduluje ilość cieplejszej wody dopuszczanej do wtórnego obiegu z własną cyrkulacją i drogą obejściową.</td><td data-label="Typowe zastosowanie">Kontrolowany wtrysk do obiegu niskotemperaturowego.</td><td data-label="Co sprawdzić">Bypass, pompę wtórną, różnicę ciśnień, drogę powrotu i zachowanie po zamknięciu zaworu.</td></tr>
              <tr><td data-label="Rozwiązanie"><strong>Zawór 3-drogowy mieszający</strong></td><td data-label="Jak pracuje">Zmienia proporcję dwóch strumieni, tworząc na króćcu wspólnym wodę o temperaturze pośredniej.</td><td data-label="Typowe zastosowanie">Oddzielny obieg podłogowy z własną temperaturą.</td><td data-label="Co sprawdzić">Porty, charakterystykę, Kvs, położenie pompy, czujnik oraz warunki na obu dopływach.</td></tr>
              <tr><td data-label="Rozwiązanie"><strong>Zawór 4-drogowy</strong></td><td data-label="Jak pracuje">Jednocześnie wpływa na obieg źródła i obieg odbiornika przez krzyżowe mieszanie strumieni.</td><td data-label="Typowe zastosowanie">Wybrane układy kotłowe, w których potrzebne są dwie powiązane funkcje temperaturowe.</td><td data-label="Co sprawdzić">Czy realizuje wymaganą ochronę powrotu, czy ma odpowiednie sterowanie i jak współpracują obie pompy.</td></tr>
            </tbody>
          </table>
        </div>

        <p><strong>Wniosek:</strong> zawór 2-drogowy nie ma „dwóch wejść i jednego wyjścia” — taki opis odpowiadałby trzem króćcom. W rozwiązaniu wtryskowym otwiera lub ogranicza jeden strumień, natomiast mieszanie zachodzi w całym układzie wtórnym.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-sterowanie">
        <span class="rk-pg-eyebrow">Sposób utrzymania temperatury</span>
        <h2>Zawór termostatyczny czy obrotowy z siłownikiem?</h2>
        <p class="rk-pg-intro">Oba rozwiązania mogą regulować temperaturę, lecz robią to w inny sposób. Nie należy wybierać ich wyłącznie według ceny ani zakładać, że sam siłownik oznacza automatykę pogodową.</p>

        <div class="rk-pg-grid-2">
          <article class="rk-pg-card is-cyan">
            <h3>Termostatyczny zawór mieszający</h3>
            <p>Element termostatyczny reaguje na temperaturę mieszaniny i mechanicznie zmienia proporcję strumieni. Rozwiązanie jest zwarte oraz nie wymaga osobnego sygnału elektrycznego do podstawowej regulacji.</p>
            <ul class="rk-pg-checklist"><li>Prosta nastawa temperatury.</li><li>Reakcja zależna od zakresu i konstrukcji wkładki.</li><li>Brak automatycznej krzywej pogodowej bez dodatkowego układu.</li></ul>
          </article>
          <article class="rk-pg-card is-orange">
            <h3>Zawór obrotowy z siłownikiem</h3>
            <p>Regulator porównuje temperaturę mierzoną z wartością zadaną i przesuwa siłownik. Może realizować stałą temperaturę lub regulację pogodową, jeżeli sterownik ma odpowiednie czujniki i algorytm.</p>
            <ul class="rk-pg-checklist"><li>Możliwość zmiennej temperatury zasilania.</li><li>Wymaga doboru momentu, czasu obrotu i zgodności mechanicznej.</li><li>Trzeba określić zachowanie po zaniku zasilania i błędzie czujnika.</li></ul>
          </article>
        </div>

        <div class="rk-pg-note"><p><strong>Nie myl siłownika zaworu mieszającego z siłownikami pętli.</strong> Pierwszy zmienia wspólną temperaturę lub udział strumieni. Siłowniki opisane w artykule <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowniki termoelektryczne na rozdzielaczu</a> otwierają lub zamykają poszczególne strefy.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-pg-pogodowka">
        <span class="rk-pg-eyebrow">Temperatura zmienna w sezonie</span>
        <h2>Stała temperatura czy sterowanie pogodowe mieszaczem?</h2>
        <p class="rk-pg-intro">Zapotrzebowanie budynku zmienia się wraz z pogodą, zyskami wewnętrznymi i sposobem użytkowania. Dlatego utrzymywanie jednej temperatury za zaworem przez cały sezon nie musi być najlepszą strategią.</p>

        <div class="rk-pg-grid-3">
          <article class="rk-pg-card is-cyan"><h3>Nastawa stała</h3><p>Regulator dąży do jednej wartości, np. ustalonej podczas uruchomienia. Jest prosty, ale nie odpowiada automatycznie na zmieniające się obciążenie.</p></article>
          <article class="rk-pg-card is-green"><h3>Krzywa grzewcza</h3><p>Temperatura zasilania jest zmieniana na podstawie temperatury zewnętrznej i ustawień krzywej. Wymaga dostrojenia do konkretnego budynku i podłogi.</p></article>
          <article class="rk-pg-card is-orange"><h3>Korekta pomieszczeniowa</h3><p>Może delikatnie korygować pracę, ale nie powinna maskować błędnej hydrauliki ani zastępować obliczeń mocy i temperatury.</p></article>
        </div>

        <p>Zasady regulacji rozwijają poradniki o <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowaniu pogodowym w podłogówce</a>, <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a> oraz <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">sterowniku pogodowym</a>. Termostat pokojowy opisany w osobnym poradniku nie powinien być traktowany jak regulator temperatury wody: <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostat w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-moc">
        <span class="rk-pg-eyebrow">Zanim pojawi się przepływ</span>
        <h2>Od czego zaczyna się dobór zaworu mieszającego?</h2>
        <p class="rk-pg-intro">Od mocy, którą obsługiwany obieg ma dostarczyć w warunkach projektowych. Nie jest nią moc nominalna źródła ani iloczyn powierzchni domu i przypadkowego wskaźnika W/m².</p>

        <ol class="rk-pg-factor-grid">
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>1</span></span><div class="rk-pg-factor-copy"><h3>Obciążenie pomieszczeń</h3><p>Straty ciepła obliczone dla temperatury zewnętrznej właściwej lokalizacji oraz założeń wewnętrznych.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>2</span></span><div class="rk-pg-factor-copy"><h3>Powierzchnia czynna</h3><p>Fragment podłogi rzeczywiście uczestniczący w przekazywaniu ciepła, a nie cała powierzchnia użytkowa.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>3</span></span><div class="rk-pg-factor-copy"><h3>Konstrukcja podłogi</h3><p>Rozstaw, warstwy nad rurą, jastrych i opór okładziny wpływają na potrzebną temperaturę wody.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>4</span></span><div class="rk-pg-factor-copy"><h3>Ograniczenia temperatury</h3><p>Projekt respektuje dopuszczalną temperaturę powierzchni i wymagania producenta zastosowanej posadzki.</p></div></li>
        </ol>

        <p>Sama informacja o <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawie rur 10 czy 15 cm</a> nie wystarczy. Trzeba znać również moc i powierzchnię czynną, a następnie sprawdzić, czy podłoga może ją oddać w dopuszczalnych warunkach według metodyki systemów płaszczyznowych.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-przeplyw">
        <span class="rk-pg-eyebrow">Moc zamieniona na strumień wody</span>
        <h2>Jak obliczyć przepływ obiegu podłogowego?</h2>
        <p class="rk-pg-intro">Dla wody przepływ objętościowy można wstępnie wyznaczyć z mocy obiegu i projektowej różnicy temperatur pomiędzy zasilaniem a powrotem.</p>

        <div class="rk-pg-formula">
          <div class="rk-pg-formula-main">
            <div class="rk-pg-formula-equation">Q = P ÷ (1,163 × ΔT)</div>
            <div class="rk-pg-formula-result">wynik w m³/h</div>
          </div>
          <p><strong>Q</strong> — przepływ objętościowy, <strong>P</strong> — moc przekazywana do wody w kW, <strong>ΔT</strong> — projektowa różnica temperatur w K.</p>
          <p>Przykład: dla 12 kW oraz ΔT = 5 K otrzymujemy około <strong>2,06 m³/h</strong>. To przepływ całego analizowanego obiegu, a nie pojedynczej pętli.</p>
        </div>

        <p>Zmiana ΔT zmienia wymagany przepływ: przy tej samej mocy mniejsze ΔT oznacza większy strumień. Zależność szerzej omawia artykuł <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadek temperatury ΔT między zasilaniem a powrotem</a>. Jeżeli w instalacji znajduje się glikol lub inny czynnik, jego właściwości trzeba uwzględnić zamiast automatycznie używać współczynnika dla wody.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-kalkulator">
        <span class="rk-pg-eyebrow">Narzędzie 2 · bilans mieszania</span>
        <h2>Kalkulator przepływu, proporcji mieszania i wstępnego sprawdzenia Kvs</h2>
        <p class="rk-pg-intro">Narzędzie łączy trzy zależności: przepływ wynikający z mocy, idealny bilans temperatur oraz orientacyjną stratę ciśnienia dla podanego Kvs. Nie wybiera produktu i nie zastępuje charakterystyki producenta.</p>

        <div class="rk-pg-tool" id="rk-mix-calculator-tool">
          <div class="rk-pg-tool-head">
            <span class="rk-pg-tool-kicker">Kalkulator edukacyjny</span>
            <h3>Sprawdź, ile wody przepływa przez obieg i jaka część pochodzi ze źródła</h3>
            <p>Wprowadź dane jednego wydzielonego obiegu. Temperatury muszą spełniać warunek: źródło cieplejsze od mieszaniny, a mieszanina cieplejsza od powrotu.</p>
          </div>
          <div class="rk-pg-tool-body">
            <div class="rk-pg-preset-row" role="group" aria-label="Przykładowe dane">
              <button class="rk-pg-preset is-active" type="button" data-rk-mix-preset="boiler" aria-pressed="true">Kocioł 60 → 35°C</button>
              <button class="rk-pg-preset" type="button" data-rk-mix-preset="buffer" aria-pressed="false">Bufor 50 → 32°C</button>
              <button class="rk-pg-preset" type="button" data-rk-mix-preset="low" aria-pressed="false">Źródło 40 → 32°C</button>
            </div>

            <div class="rk-pg-calc-layout">
              <div class="rk-pg-calc-controls">
                <div class="rk-mix-input-grid">
                  <div class="rk-pg-calc-field"><label for="rk-mix-power">Moc obiegu [kW]</label><input class="rk-mix-number-input" id="rk-mix-power" type="number" min="0.5" max="100" step="0.1" value="12" inputmode="decimal"></div>
                  <div class="rk-pg-calc-field"><label for="rk-mix-delta">Projektowe ΔT [K]</label><input class="rk-mix-number-input" id="rk-mix-delta" type="number" min="1" max="20" step="0.5" value="5" inputmode="decimal"></div>
                  <div class="rk-pg-calc-field"><label for="rk-mix-hot">Temperatura źródła [°C]</label><input class="rk-mix-number-input" id="rk-mix-hot" type="number" min="25" max="95" step="0.5" value="60" inputmode="decimal"></div>
                  <div class="rk-pg-calc-field"><label for="rk-mix-return">Temperatura powrotu [°C]</label><input class="rk-mix-number-input" id="rk-mix-return" type="number" min="15" max="60" step="0.5" value="30" inputmode="decimal"></div>
                  <div class="rk-pg-calc-field"><label for="rk-mix-target">Wymagane zasilanie [°C]</label><input class="rk-mix-number-input" id="rk-mix-target" type="number" min="20" max="65" step="0.5" value="35" inputmode="decimal"></div>
                  <div class="rk-pg-calc-field"><label for="rk-mix-kvs">Sprawdzany Kvs [m³/h]</label><input class="rk-mix-number-input" id="rk-mix-kvs" type="number" min="0.1" max="40" step="0.1" value="4" inputmode="decimal"></div>
                  <div class="rk-pg-calc-field is-wide"><label for="rk-mix-other-loss">Pozostały opór analizowanej drogi [kPa]</label><input class="rk-mix-number-input" id="rk-mix-other-loss" type="number" min="0" max="200" step="0.5" value="18" inputmode="decimal"><small>Opcjonalny parametr do pokazania udziału oporu zaworu. Nie jest to automatycznie całkowita wysokość podnoszenia pompy.</small></div>
                </div>
              </div>

              <div class="rk-pg-calc-results" aria-live="polite">
                <h4>Wyniki dla podanych założeń</h4>
                <div class="rk-pg-calc-result-grid">
                  <div class="rk-pg-calc-result-card"><span>Przepływ całego obiegu</span><strong id="rk-mix-result-total">2,06 m³/h</strong><small id="rk-mix-result-total-l">34,4 l/min</small></div>
                  <div class="rk-pg-calc-result-card"><span>Udział cieplejszej wody</span><strong id="rk-mix-result-hot-share">16,7%</strong><small id="rk-mix-result-hot-flow">0,34 m³/h ze źródła</small></div>
                  <div class="rk-pg-calc-result-card"><span>Strumień zawracany</span><strong id="rk-mix-result-return">1,72 m³/h</strong><small id="rk-mix-result-return-share">83,3% przepływu mieszanego</small></div>
                  <div class="rk-pg-calc-result-card"><span>Δp dla całego Q i Kvs</span><strong id="rk-mix-result-dp">26,6 kPa</strong><small>Porównanie referencyjne dla pełnego strumienia</small></div>
                  <div class="rk-pg-calc-result-card"><span>Δp dla strumienia gorącego</span><strong id="rk-mix-result-dp-hot">0,7 kPa</strong><small>Pokazuje, dlaczego topologia zmienia interpretację</small></div>
                  <div class="rk-pg-calc-result-card"><span>Udział oporu zaworu</span><strong id="rk-mix-result-authority">59,6%</strong><small id="rk-mix-result-authority-copy">w sumie zawór + podany pozostały opór</small></div>
                  <div class="rk-pg-calc-result-card is-wide">
                    <span>Idealna proporcja mieszania</span>
                    <div class="rk-mix-ratio" aria-label="Proporcja wody ze źródła i powrotu">
                      <div class="rk-mix-ratio-hot" id="rk-mix-ratio-hot" title="Udział cieplejszej wody ze źródła"><b id="rk-mix-ratio-hot-label">16,7%</b></div>
                      <div class="rk-mix-ratio-return" id="rk-mix-ratio-return" title="Udział wody zawracanej z powrotu"><b id="rk-mix-ratio-return-label">83,3%</b></div>
                    </div>
                  </div>
                </div>
                <div class="rk-pg-calc-alert" id="rk-mix-calculator-status">Wynik jest spójny energetycznie dla idealnego mieszania. Sprawdź teraz rzeczywistą charakterystykę zaworu, opory portów i punkt pracy pompy.</div>
                <div class="rk-pg-calc-formulas"><code>Q = P / (1,163 × ΔT)</code><br><code>udział gorącego = (Tm − Tr) / (Tg − Tr)</code><br><code>Δp = (Q / Kv)² × 100 kPa</code></div>
              </div>
            </div>

            <div class="rk-pg-tool-disclaimer"><strong>Zakres wyniku:</strong> bilans zakłada wodę, ustalone temperatury i brak strat do otoczenia. Kvs jest wartością przy pełnym otwarciu, natomiast rzeczywisty Kv zmienia się wraz z pozycją zaworu. W zaworze mieszającym różne porty mogą przenosić różne strumienie, dlatego kalkulator pokazuje dwa referencyjne spadki ciśnienia zamiast wydawać werdykt zakupowy.</div>
          </div>
        </div>
      </section>

      <section class="rk-pg-section" id="rk-pg-kv-kvs">
        <span class="rk-pg-eyebrow">Parametr przepływowy</span>
        <h2>Co oznaczają Kv i Kvs zaworu mieszającego?</h2>
        <p class="rk-pg-intro"><strong>Kv</strong> opisuje zdolność przepływową przy określonym położeniu zaworu, a <strong>Kvs</strong> jest deklarowaną zdolnością przy pełnym otwarciu. Nie są to średnice i nie można ich zamieniać z rozmiarem przyłącza.</p>

        <div class="rk-pg-grid-3">
          <article class="rk-pg-card is-cyan"><h3>Kvs zbyt mały</h3><p>Może powodować dużą stratę ciśnienia przy wymaganym przepływie. Pompa musi wtedy pokonać większy opór, a projektowy strumień może nie zostać osiągnięty.</p></article>
          <article class="rk-pg-card is-orange"><h3>Kvs bardzo duży</h3><p>Nie gwarantuje lepszego działania. Niewielki ruch trzpienia może powodować dużą zmianę przepływu, a zawór może pracować blisko końca zakresu zamknięcia.</p></article>
          <article class="rk-pg-card is-green"><h3>Kvs dobrany do układu</h3><p>Powinien zapewnić potrzebny przepływ przy kontrolowanej stracie ciśnienia i użytecznym zakresie regulacji potwierdzonym charakterystyką producenta.</p></article>
        </div>

        <div class="rk-pg-warning"><p><strong>Nie dobieraj Kvs według metrażu.</strong> Dom 120 m² może mieć zupełnie inne obciążenie, ΔT, liczbę obiegów i opory niż drugi budynek o tej samej powierzchni. Tak samo gwint DN25 nie oznacza jednego Kvs dla wszystkich konstrukcji.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-pg-autorytet">
        <span class="rk-pg-eyebrow">Zawór wewnątrz całej charakterystyki</span>
        <h2>Spadek ciśnienia i autorytet zaworu — jak czytać wynik kalkulatora?</h2>
        <p class="rk-pg-intro">Zawór reguluje skutecznie wtedy, gdy zmiana jego położenia ma zauważalny i przewidywalny wpływ na przepływ. Jeżeli jego opór jest prawie pomijalny wobec reszty regulowanej drogi, duża część skoku może dawać mały efekt. Jeżeli zawór dominuje oporem, zwiększa wymagania wobec pompy.</p>

        <div class="rk-pg-formula">
          <div class="rk-pg-formula-main"><div class="rk-pg-formula-equation">a = Δp zaworu ÷ (Δp zaworu + Δp pozostałe)</div><div class="rk-pg-formula-result">wskaźnik porównawczy</div></div>
          <p>W kalkulatorze pokazujemy udział oporu zaworu w uproszczonej sumie. To narzędzie do rozumienia zależności, a nie uniwersalna granica „dobry–zły”. Rzeczywista ocena zależy od rodzaju obiegu, charakterystyki pompy, zmiennego położenia zaworu i sposobu stabilizacji różnicy ciśnień.</p>
        </div>

        <ul class="rk-pg-checklist">
          <li>Najpierw ustal, jaki strumień rzeczywiście przepływa przez analizowany port.</li>
          <li>Porównaj kilka punktów pracy, nie tylko pełne otwarcie i temperaturę projektową.</li>
          <li>Odczytaj charakterystykę właściwego modelu oraz siłownika z dokumentacji producenta.</li>
          <li>Sprawdź cały najbardziej niekorzystny obieg wraz z rurami, kształtkami, rozdzielaczem i pętlą.</li>
        </ul>

        <aside class="rk-pg-cta" aria-label="Projekt ogrzewania podłogowego">
          <span class="rk-pg-cta-kicker">Tu kończy się dobór z samej tabeli</span>
          <h3>Zawór ma obsłużyć przepływ wynikający z projektu — nie projekt dopasować się do zaworu.</h3>
          <p>Żeby prawidłowo określić przepływ, potrzebne są obciążenia pomieszczeń, temperatura zasilania, projektowe ΔT, powierzchnia czynna, długości pętli oraz opory najbardziej niekorzystnej drogi. Dopiero z tych danych wynikają parametry grupy mieszającej, pompy i nastawy rozdzielacza.</p>
          <a class="rk-pg-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź projekt ogrzewania podłogowego</a>
        </aside>
      </section>

      <section class="rk-pg-section" id="rk-pg-pompa-ciepla">
        <span class="rk-pg-eyebrow">Najczęstsza pułapka interpretacyjna</span>
        <h2>Zawór mieszający a pompa ciepła — kiedy może pogorszyć układ?</h2>
        <p class="rk-pg-intro">W domu ogrzewanym wyłącznie podłogówką pompa ciepła może często zasilać instalację bezpośrednio temperaturą wynikającą z krzywej grzewczej. Dodanie mieszacza tylko po to, aby obniżyć wcześniej podniesioną temperaturę, może wymusić niepotrzebnie wyższy parametr po stronie źródła.</p>

        <div class="rk-pg-grid-3">
          <article class="rk-pg-card is-green"><h3>Jeden poziom temperatury</h3><p>Bezpośredni układ może ograniczyć liczbę pomp i stopni regulacji. Musi jednak spełniać wymagania minimalnego przepływu i objętości czynnej konkretnej pompy ciepła.</p></article>
          <article class="rk-pg-card is-orange"><h3>Dwa poziomy temperatury</h3><p>Jeżeli inny obieg rzeczywiście potrzebuje wyższej temperatury, podłogówka może wymagać wydzielonego obiegu mieszanego.</p></article>
          <article class="rk-pg-card is-cyan"><h3>Bufor lub sprzęgło</h3><p>Ich obecność nie przesądza automatycznie o zaworze. Trzeba znać funkcję zbiornika, sposób podłączenia, przepływy i sterowanie pompami.</p></article>
        </div>

        <p>Nie istnieje więc uniwersalna reguła „przy pompie ciepła nigdy” ani „przy podłogówce zawsze”. Zobacz, dlaczego <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niska temperatura zasilania pompy ciepła</a> jest korzystna, ale nie stanowi jednej stałej nastawy dla każdego domu. Funkcję rozdzielenia hydraulicznego rozwija poradnik o <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgle hydraulicznym</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-kociol-bufor">
        <span class="rk-pg-eyebrow">Źródło o wyższym parametrze</span>
        <h2>Zawór mieszający przy kotle, buforze i instalacji mieszanej</h2>
        <p class="rk-pg-intro">Jeżeli po stronie źródła lub bufora dostępna jest temperatura wyższa niż wymagana przez podłogówkę, obieg niskotemperaturowy musi otrzymać własną, kontrolowaną temperaturę. Nadal nie oznacza to jednego poprawnego schematu dla wszystkich kotłowni.</p>

        <div class="rk-pg-grid-3">
          <article class="rk-pg-card is-orange"><h3>Kocioł gazowy</h3><p>W układzie wyłącznie podłogowym może pracować bez oddzielnego mieszacza, jeżeli urządzenie i hydraulika dopuszczają bezpośrednią regulację niskotemperaturową. Przy dwóch obiegach potrzebne jest rozdzielenie funkcji.</p></article>
          <article class="rk-pg-card is-purple"><h3>Kocioł na paliwo stałe</h3><p>Temperatura obiegu podłogowego, ochrona powrotu kotła oraz odprowadzenie nadmiaru energii są oddzielnymi zagadnieniami. Jeden zawór nie powinien być bez obliczeń uznany za rozwiązanie wszystkich trzech.</p></article>
          <article class="rk-pg-card is-cyan"><h3>Bufor ciepła</h3><p>Może magazynować energię albo rozdzielać hydraulicznie obiegi. Układ pobierający ciepło z bufora może wymagać mieszania zależnie od jego temperatury i strategii pracy.</p></article>
        </div>

        <p>W tych wariantach pomocne są artykuły <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła w ogrzewaniu podłogowym</a>, <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">kotły na paliwa stałe i podłogówka</a> oraz <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">czy podłogówkę można podłączyć do instalacji grzejnikowej</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-pompa-rozdzielacz">
        <span class="rk-pg-eyebrow">Jeden zespół, kilka charakterystyk</span>
        <h2>Jak współpracują zawór, pompa obiegowa i rozdzielacz?</h2>
        <p class="rk-pg-intro">Temperatura za mieszaczem będzie stabilna tylko wtedy, gdy układ ma warunki do wytworzenia i transportu wymaganych strumieni. Zmiana położenia zaworu wpływa na opory, a zamykanie pętli zmienia punkt pracy pompy.</p>

        <ol class="rk-pg-factor-grid">
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>1</span></span><div class="rk-pg-factor-copy"><h3>Zawór</h3><p>Zmienia proporcję lub ilość wtryskiwanego strumienia i wnosi własną stratę ciśnienia.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>2</span></span><div class="rk-pg-factor-copy"><h3>Pompa</h3><p>Wytwarza różnicę ciśnień potrzebną do pokonania oporów przy przepływie wynikającym z mocy i ΔT.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>3</span></span><div class="rk-pg-factor-copy"><h3>Rozdzielacz</h3><p>Dzieli całkowity strumień między pętle, na których wykonuje się równoważenie.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>4</span></span><div class="rk-pg-factor-copy"><h3>Automatyka strefowa</h3><p>Zmienia liczbę otwartych pętli, dlatego układ musi przewidywać pracę częściową i wymagania źródła.</p></div></li>
        </ol>

        <p>Punkt pracy pompy wyjaśnia poradnik <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w instalacji ogrzewania podłogowego</a>. Zależności w całej drodze pokazuje też artykuł <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obieg grzewczy w wodnej podłogówce</a>. Przy wielu strefach trzeba dodatkowo przeanalizować <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-montaz">
        <span class="rk-pg-eyebrow">Miejsce i kierunek mają znaczenie</span>
        <h2>Gdzie zamontować zawór, pompę i czujnik temperatury?</h2>
        <p class="rk-pg-intro">Nie ma jednego rysunku wykonawczego właściwego dla każdego zestawu. Są natomiast funkcje, które muszą zostać zachowane: prawidłowe porty, wymuszenie obiegu, reprezentatywny pomiar temperatury i dostęp serwisowy.</p>

        <div class="rk-pg-grid-4">
          <article class="rk-pg-card is-cyan"><div class="rk-pg-card-icon">A</div><h3>Porty zaworu</h3><p>Sprawdź oznaczenia na korpusie, funkcję mieszającą lub rozdzielającą i dopuszczone położenia montażowe.</p></article>
          <article class="rk-pg-card is-orange"><div class="rk-pg-card-icon">P</div><h3>Pompa</h3><p>Musi wywołać przepływ przez właściwą drogę. Jej położenie wynika z wybranego schematu, nie z uniwersalnej zasady „zawsze przed” lub „zawsze za”.</p></article>
          <article class="rk-pg-card is-green"><div class="rk-pg-card-icon">T</div><h3>Czujnik</h3><p>Mierzy temperaturę reprezentatywną dla zasilania obiegu, po skutecznym wymieszaniu i z prawidłowym kontaktem z przewodem.</p></article>
          <article class="rk-pg-card is-purple"><div class="rk-pg-card-icon">S</div><h3>Serwis</h3><p>Zostaw możliwość obsługi filtra, pompy, siłownika, trzpienia, izolacji i czujników bez demontażu połowy kotłowni.</p></article>
        </div>

        <div class="rk-pg-warning"><p><strong>Zawór zwrotny lub bypass nie są dodatkami montowanymi automatycznie.</strong> Ich obecność, kierunek i strata ciśnienia muszą wynikać z konkretnej drogi przepływu. Zawór zwrotny w złym miejscu może odciąć potrzebny obieg tak samo skutecznie, jak jego brak może wywołać przepływ niepożądany.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-pg-uruchomienie">
        <span class="rk-pg-eyebrow">Pomiar zamiast magicznej liczby</span>
        <h2>Jak uruchomić i ustawić zawór mieszający?</h2>
        <p class="rk-pg-intro">Uruchomienie nie polega na ustawieniu uniwersalnych 35°C i odczekaniu jednej doby. Nastawa wynika z projektu, aktualnego zapotrzebowania, sposobu sterowania oraz ograniczeń jastrychu i okładziny.</p>

        <ol class="rk-pg-factor-grid">
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>1</span></span><div class="rk-pg-factor-copy"><h3>Zweryfikuj montaż</h3><p>Porównaj porty, kierunki przepływu, pozycję pompy, czujniki i połączenia elektryczne z dokumentacją.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>2</span></span><div class="rk-pg-factor-copy"><h3>Napełnij i odpowietrz</h3><p>Przepłucz obiegi zgodnie z przyjętą procedurą, usuń powietrze i sprawdź filtr oraz ciśnienie statyczne.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>3</span></span><div class="rk-pg-factor-copy"><h3>Zapewnij przepływy</h3><p>Otwórz potrzebne drogi, uruchom właściwe pompy i sprawdź wskazania na rozdzielaczu.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>4</span></span><div class="rk-pg-factor-copy"><h3>Ustaw temperaturę</h3><p>Wprowadź wartość z projektu lub punkt krzywej, a nie maksymalną nastawę pokrętła.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>5</span></span><div class="rk-pg-factor-copy"><h3>Obserwuj stan ustalony</h3><p>Mierz zasilanie, powrót, przepływ i reakcję siłownika przez czas odpowiedni do bezwładności układu.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>6</span></span><div class="rk-pg-factor-copy"><h3>Sprawdź stany częściowe</h3><p>Zobacz, co dzieje się po zamknięciu części pętli, zmianie temperatury źródła i zmianie zapotrzebowania.</p></div></li>
        </ol>

        <div class="rk-pg-note"><p>Pirometr może pomagać w kontroli, ale wynik zależy od emisyjności powierzchni i miejsca pomiaru. Nie zastępuje poprawnie zamontowanego czujnika kontaktowego ani analizy temperatur wody. Dla świeżego jastrychu obowiązuje osobna procedura wygrzewania.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-pg-diagnostyka">
        <span class="rk-pg-eyebrow">Interakcja bez fałszywej diagnozy</span>
        <h2>Objaw nie wskazuje jednej przyczyny — co sprawdzić najpierw?</h2>
        <p class="rk-pg-intro">Poniższa macierz nie diagnozuje instalacji na odległość. Porządkuje możliwe przyczyny i pierwszy pomiar, dzięki któremu nie wymienia się zaworu tylko dlatego, że podłoga jest chłodna albo pompa hałasuje.</p>

        <div class="rk-pg-faq rk-mix-diagnostic">
          <details><summary>Rotametry pokazują bardzo mały lub zerowy przepływ</summary><div class="rk-pg-faq-answer"><p><strong>Możliwe przyczyny:</strong> wyłączona lub źle ustawiona pompa, powietrze, zabrudzony filtr, zamknięte siłowniki, nieprawidłowe porty zaworu, zamknięte odcięcia, zbyt duże opory albo brak dostępnej różnicy ciśnień.</p><p><strong>Pierwszy krok:</strong> potwierdź pracę pompy, położenie zaworów i przepływ na głównej drodze przed oceną Kvs.</p></div></details>
          <details><summary>Temperatura za zaworem faluje lub gwałtownie się zmienia</summary><div class="rk-pg-faq-answer"><p><strong>Możliwe przyczyny:</strong> przewymiarowany zawór, zbyt szybki siłownik, czujnik w niewłaściwym miejscu, wahania temperatury źródła, brak stabilnego przepływu albo źle ustawiona automatyka.</p><p><strong>Pierwszy krok:</strong> zapisuj jednocześnie temperaturę źródła, mieszaniny i powrotu oraz obserwuj położenie siłownika.</p></div></details>
          <details><summary>Pompa pracuje głośno</summary><div class="rk-pg-faq-answer"><p><strong>Możliwe przyczyny:</strong> zbyt duża różnica ciśnień, powietrze, zbyt małe ciśnienie na ssaniu, zamykanie wielu stref, zabrudzenie lub niewłaściwy tryb regulacji. Sam zawór jest tylko jedną z możliwości.</p><p><strong>Pierwszy krok:</strong> odczytaj tryb i nastawę pompy, sprawdź odpowietrzenie, ciśnienie oraz zmianę przepływu po otwarciu obiegów.</p></div></details>
          <details><summary>Podłoga jest chłodna mimo wysokiej temperatury źródła</summary><div class="rk-pg-faq-answer"><p><strong>Możliwe przyczyny:</strong> zawór nie otwiera dopływu gorącego, czujnik błędnie mierzy, brakuje przepływu, pętle są zdławione albo moc podłogi nie pokrywa obciążenia.</p><p><strong>Pierwszy krok:</strong> porównaj temperatury na wszystkich portach oraz rzeczywiste przepływy, zamiast podnosić nastawę bez pomiaru.</p></div></details>
          <details><summary>Źródło często się uruchamia i wyłącza</summary><div class="rk-pg-faq-answer"><p><strong>Możliwe przyczyny:</strong> mały aktywny zład, zamykanie stref, duża moc minimalna, rozdzielenie przepływów, zbyt wysoka krzywa lub niewłaściwa logika pomp. Nie wolno przypisać taktowania wyłącznie mieszaczowi.</p><p><strong>Pierwszy krok:</strong> sprawdź czas cyklu, liczbę otwartych pętli, temperatury oraz przepływ wymagany przez źródło.</p></div></details>
        </div>
      </section>

      <section class="rk-pg-section" id="rk-pg-bledy">
        <span class="rk-pg-eyebrow">Co najczęściej psuje działanie układu?</span>
        <h2>Najczęstsze błędy przy doborze i montażu mieszacza</h2>
        <div class="rk-pg-myth-grid">
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 1</span><h3>„Podłogówka zawsze potrzebuje mieszacza”</h3><p>Pomija bezpośrednie układy niskotemperaturowe i możliwości regulacji źródła.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 2</span><h3>Dobór Kvs z powierzchni domu</h3><p>Metraż nie wyznacza mocy, przepływu ani strat ciśnienia zaworu.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 3</span><h3>Dobór zaworu „pod gwint”</h3><p>Ta sama średnica przyłącza może występować z różnymi charakterystykami przepływowymi.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 4</span><h3>Mylenie 2 i 3 dróg</h3><p>Zawór wtryskowy 2-drogowy wymaga kompletnej wtórnej drogi cyrkulacji, a nie trzeciego króćca w samym korpusie.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 5</span><h3>Odwrotne porty</h3><p>Zawór może pracować w innej funkcji niż założona, regulować niestabilnie albo blokować potrzebny strumień.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 6</span><h3>Czujnik przy samym trójniku</h3><p>Pomiar przed pełnym wymieszaniem może nie reprezentować temperatury wody kierowanej do rozdzielacza.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 7</span><h3>Pompa ustawiona na maksimum</h3><p>Nie zastępuje obliczenia wymaganej różnicy ciśnień i może nasilać hałas oraz niestabilność.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 8</span><h3>Stałe 35°C przez cały sezon</h3><p>Jedna nastawa może przegrzewać okres przejściowy lub nie pokrywać warunków projektowych.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 9</span><h3>Brak próby przy zamykaniu stref</h3><p>Układ sprawdzony tylko przy wszystkich otwartych pętlach może zachowywać się źle przy obciążeniu częściowym.</p></article>
          <article class="rk-pg-myth-card"><span class="rk-pg-myth-label">Błąd 10</span><h3>Wymiana bez pomiarów</h3><p>Chłodna podłoga lub hałas nie dowodzą uszkodzenia zaworu; przyczyn może być kilka.</p></article>
        </div>
      </section>

      <section class="rk-pg-section" id="rk-pg-checklista">
        <span class="rk-pg-eyebrow">Dane przed zakupem</span>
        <h2>Checklista: co trzeba znać przed doborem zaworu mieszającego?</h2>
        <p class="rk-pg-intro">Jeżeli brakuje którejś z poniższych informacji, dobór może być jedynie zgadywaniem. Sama nazwa źródła i liczba metrów kwadratowych nie wystarczą.</p>

        <ol class="rk-pg-factor-grid">
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>1</span></span><div class="rk-pg-factor-copy"><h3>Funkcja obiegu</h3><p>Czy mieszacz tworzy osobny poziom temperatury, realizuje wtrysk, czy ma współpracować z inną grupą?</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>2</span></span><div class="rk-pg-factor-copy"><h3>Moc projektowa</h3><p>Moc całego obsługiwanego obiegu i moc poszczególnych pomieszczeń.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>3</span></span><div class="rk-pg-factor-copy"><h3>Temperatury</h3><p>Parametr źródła, wymagane zasilanie, projektowy powrót i sposób zmiany temperatury w sezonie.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>4</span></span><div class="rk-pg-factor-copy"><h3>Projektowe ΔT</h3><p>Różnica temperatur użyta do obliczenia przepływu, zgodna z całym projektem podłogówki.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>5</span></span><div class="rk-pg-factor-copy"><h3>Przepływ</h3><p>Całkowity strumień obiegu oraz strumienie przepływające przez poszczególne porty w rozważanej topologii.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>6</span></span><div class="rk-pg-factor-copy"><h3>Opory</h3><p>Strata zaworu, rur, kształtek, rozdzielacza i najbardziej niekorzystnej pętli.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>7</span></span><div class="rk-pg-factor-copy"><h3>Pompa i sterowanie</h3><p>Punkt pracy, tryb regulacji, siłownik, sterownik, czujniki oraz zachowanie przy częściowym obciążeniu.</p></div></li>
          <li class="rk-pg-factor"><span class="rk-pg-step-badge"><span>8</span></span><div class="rk-pg-factor-copy"><h3>Dokumentacja</h3><p>Charakterystyka zaworu i źródła, dopuszczone schematy, kierunki przepływu oraz wymagania montażowe.</p></div></li>
        </ol>

        <p>Na hydraulikę wpływają także <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur ogrzewania podłogowego</a>, <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">geometria pętli grzewczej</a> oraz sposób ułożenia opisany w poradniku <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak zaplanować rozmieszczenie pętli</a>.</p>
      </section>

      <section class="rk-pg-section" id="rk-pg-wnioski">
        <span class="rk-pg-eyebrow">Najważniejszy wniosek projektowy</span>
        <h2>Zawór mieszający jest odpowiedzią na konkretną funkcję — nie obowiązkowym dodatkiem</h2>
        <p class="rk-pg-intro">Najpierw trzeba ustalić, czy w instalacji istnieją dwa różne wymagane poziomy temperatury lub potrzeba kontrolowanego wtrysku. Później wyznacza się moc, ΔT i przepływ, analizuje opory oraz wybiera sposób regulacji. Dopiero na tej podstawie można przejść do konkretnej charakterystyki zaworu.</p>

        <div class="rk-pg-answer"><p><strong>Dobry projekt nie zaczyna się od pytania „jaki zawór kupić?”.</strong> Zaczyna się od pytania, jaką temperaturę i przepływ musi otrzymać każda część instalacji oraz co stanie się w warunkach projektowych, przejściowych i po zamknięciu części odbiorników.</p></div>

        <aside class="rk-pg-cta" aria-label="Zamów projekt ogrzewania podłogowego">
          <span class="rk-pg-cta-kicker">Sprawdź cały obieg przed zakupem grupy mieszającej</span>
          <h3>Policzmy temperatury, przepływy, pętle i opory jako jeden system.</h3>
          <p>Projekt ogrzewania podłogowego pozwala powiązać potrzeby pomieszczeń z powierzchnią czynną, rozstawem rur, przepływami, rozdzielaczem i wymaganiami źródła — bez dobierania armatury na podstawie samego metrażu.</p>
          <a class="rk-pg-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        </aside>
      </section>

      <section class="rk-pg-section" id="rk-pg-zrodla">
        <span class="rk-pg-eyebrow">Weryfikacja techniczna</span>
        <h2>Źródła oficjalne i zakres odpowiedzialności</h2>
        <p class="rk-pg-intro">Artykuł porządkuje zasady projektowe i obliczenia edukacyjne. Ostateczny dobór oraz montaż muszą być zgodne z dokumentacją konkretnego źródła, zaworu, siłownika, sterownika i pozostałych urządzeń.</p>

        <div class="rk-pg-sources">
          <article class="rk-pg-source"><a href="https://sklep.pkn.pl/pn-en-1264-2-2021-10e.html" target="_blank" rel="nofollow noopener noreferrer">Polski Komitet Normalizacyjny — PN-EN 1264-2:2021-10</a><p>Zakres normy dotyczący metod określania mocy cieplnej wodnych systemów ogrzewania i chłodzenia płaszczyznowego.</p></article>
          <article class="rk-pg-source"><a href="https://www.esbe.eu/group/support/faq/faq-thermostatic-mixing-valves" target="_blank" rel="nofollow noopener noreferrer">ESBE — FAQ dotyczące termostatycznych zaworów mieszających</a><p>Oficjalne wyjaśnienia producenta dotyczące funkcji, przepływu i kryteriów doboru zaworów.</p></article>
          <article class="rk-pg-source"><a href="https://esbe.eu/group/support/hydronic-selection" target="_blank" rel="nofollow noopener noreferrer">ESBE — Hydronic Selection</a><p>Narzędzie producenta uwzględniające przepływ, różnicę ciśnień, zastosowanie i warunki pracy; nie zastępuje projektu instalacji.</p></article>
          <article class="rk-pg-source"><a href="https://esbe.eu/group/products/rotary-valves/vrg130" target="_blank" rel="nofollow noopener noreferrer">ESBE — zawory obrotowe VRG130</a><p>Przykład oficjalnej dokumentacji zaworu 3-drogowego dopuszczonego do pracy mieszającej lub rozdzielającej.</p></article>
          <article class="rk-pg-source"><a href="https://www.danfoss.com/en/products/dhs/valves/hydronic-balancing-and-control/pressure-independent-balancing-control-valves-pibcv/ab-qm/" target="_blank" rel="nofollow noopener noreferrer">Danfoss — hydrauliczne równoważenie i regulacja</a><p>Materiały producenta pokazujące znaczenie projektowego przepływu, różnicy ciśnień i autorytetu w regulacji hydraulicznej.</p></article>
        </div>

        <div class="rk-pg-warning"><p><strong>Ważne:</strong> uproszczone schematy i kalkulator nie są instrukcją montażu ani doborem urządzenia. Nie obejmują wszystkich stanów awaryjnych, zabezpieczeń, jakości wody, materiałów, źródeł rezerwowych ani wymagań lokalnych.</p></div>
      </section>

      <section class="rk-pg-section" id="rk-pg-faq">
        <span class="rk-pg-eyebrow">Najczęściej zadawane pytania</span>
        <h2>FAQ — zawór mieszający w ogrzewaniu podłogowym</h2>
        <div class="rk-pg-faq">
          <details><summary>Czy zawór mieszający jest konieczny w każdej podłogówce?</summary><div class="rk-pg-faq-answer"><p>Nie. Jest potrzebny, gdy obieg podłogowy ma otrzymywać temperaturę inną niż dostępna po stronie źródła lub innych odbiorników. W pojedynczym bezpośrednim obiegu niskotemperaturowym źródło może samo przygotowywać wymaganą temperaturę, jeżeli jego dokumentacja i hydraulika na to pozwalają.</p></div></details>
          <details><summary>Czy pompa ciepła potrzebuje zaworu mieszającego?</summary><div class="rk-pg-faq-answer"><p>Nie zawsze. Przy samej podłogówce oddzielny mieszacz często jest zbędny. Może być uzasadniony, gdy występują obiegi wymagające różnych temperatur albo konkretny schemat producenta przewiduje taki sposób regulacji.</p></div></details>
          <details><summary>Czy zawór 3-drogowy obniża temperaturę wody?</summary><div class="rk-pg-faq-answer"><p>W funkcji mieszającej łączy cieplejszy strumień z chłodniejszym powrotem, dzięki czemu na króćcu wspólnym powstaje temperatura pośrednia. Muszą jednak istnieć odpowiednie przepływy po obu stronach i poprawna regulacja.</p></div></details>
          <details><summary>Jaka temperatura powinna być ustawiona na mieszaczu?</summary><div class="rk-pg-faq-answer"><p>Nie ma jednej wartości dla wszystkich domów. Wymagana temperatura wynika z obciążenia pomieszczeń, powierzchni czynnej, konstrukcji podłogi, rozstawu, przepływów, okładziny i pogody.</p></div></details>
          <details><summary>Co oznacza Kvs zaworu?</summary><div class="rk-pg-faq-answer"><p>Kvs opisuje zdolność przepływową zaworu przy pełnym otwarciu. Pozwala powiązać przepływ ze spadkiem ciśnienia, ale nie jest średnicą przyłącza ani samodzielną rekomendacją konkretnego modelu.</p></div></details>
          <details><summary>Jak obliczyć przepływ do ogrzewania podłogowego?</summary><div class="rk-pg-faq-answer"><p>Dla wody orientacyjny przepływ w m³/h można obliczyć jako moc obiegu w kW podzieloną przez iloczyn 1,163 i projektowego ΔT w K. Dla 12 kW oraz ΔT 5 K wynik wynosi około 2,06 m³/h.</p></div></details>
          <details><summary>Czy większy Kvs jest zawsze lepszy?</summary><div class="rk-pg-faq-answer"><p>Nie. Bardzo duży Kvs zmniejsza stratę ciśnienia, ale może ograniczać użyteczny zakres regulacji. Zbyt mały Kvs może nadmiernie zwiększyć opór. Wybór wymaga sprawdzenia charakterystyki w rzeczywistym układzie.</p></div></details>
          <details><summary>Czym różni się zawór 2-drogowy od 3-drogowego?</summary><div class="rk-pg-faq-answer"><p>Zawór 2-drogowy moduluje jeden strumień, na przykład wtrysk cieplejszej wody do wtórnego obiegu z obejściem. Zawór 3-drogowy ma trzy króćce i może zmieniać proporcję dwóch dopływów albo rozdzielać strumień, zależnie od konstrukcji i montażu.</p></div></details>
          <details><summary>Czy zawór mieszający równoważy pętle?</summary><div class="rk-pg-faq-answer"><p>Nie. Ustala wspólną temperaturę lub udział strumieni dla obsługiwanego obiegu. Przepływy poszczególnych pętli ustawia się na rozdzielaczu zgodnie z projektem hydraulicznym.</p></div></details>
          <details><summary>Gdzie powinna znajdować się pompa względem mieszacza?</summary><div class="rk-pg-faq-answer"><p>Położenie zależy od topologii. Pompa musi wytworzyć przepływ przez właściwą drogę mieszania lub wtrysku. Należy stosować schemat producenta i analizę hydrauliczną zamiast uniwersalnej zasady montażowej.</p></div></details>
          <details><summary>Dlaczego temperatura za zaworem faluje?</summary><div class="rk-pg-faq-answer"><p>Przyczyną może być przewymiarowanie, zbyt szybki siłownik, niestabilny przepływ, złe umieszczenie czujnika, zmiany temperatury źródła lub nieprawidłowe nastawy regulatora. Potrzebny jest równoczesny pomiar kilku parametrów.</p></div></details>
          <details><summary>Czy można dobrać zawór na podstawie powierzchni domu?</summary><div class="rk-pg-faq-answer"><p>Nie w sposób technicznie wiarygodny. Powierzchnia nie określa obciążenia, projektowego ΔT, przepływu ani strat ciśnienia. Te dane trzeba obliczyć dla konkretnego budynku i instalacji.</p></div></details>
        </div>
      </section>

      <section class="rk-pg-section" id="rk-pg-autor">
        <div class="rk-pg-author">
          <div class="rk-pg-author-head">
            <div><span class="rk-pg-eyebrow">E-E-A-T i odpowiedzialność za treść</span><h2 id="rk-pg-author-heading">Autor i weryfikacja merytoryczna</h2><p>Treść przygotowana z perspektywy projektowania całego obiegu, a nie sprzedaży pojedynczego elementu.</p></div>
            <span class="rk-pg-author-mark">Aktualizacja: 12.09.2026</span>
          </div>
          <div class="rk-pg-author-layout">
            <aside class="rk-pg-author-side">
              <div class="rk-pg-author-photo"><img decoding="async" 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"></div>
              <div class="rk-pg-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
              <div class="rk-pg-author-role">Projektant instalacji sanitarnych i specjalista HVAC</div>
              <div class="rk-pg-author-social-label">Profile branżowe</div>
              <div class="rk-pg-author-social">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="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" 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" 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-pg-author-main">
              <blockquote class="rk-pg-author-quote"><p>Nie projektuję zaworu w oderwaniu od instalacji. Najpierw ustalam, jakiej mocy, temperatury i przepływu potrzebuje odbiornik, a potem sprawdzam, w jaki sposób źródło może te warunki zapewnić.</p></blockquote>
              <div class="rk-pg-author-cards">
                <div class="rk-pg-author-card"><b>Praktyka projektowa</b><p>Analiza obciążeń cieplnych, pętli, przepływów, rozdzielaczy, źródeł ciepła i współpracy obiegów.</p></div>
                <div class="rk-pg-author-card"><b>Metoda</b><p>Obliczenia są oddzielane od wartości przykładowych, a uproszczenia kalkulatora są opisane przy wyniku.</p></div>
                <div class="rk-pg-author-card"><b>Aktualizacja</b><p>Artykuł przebudowano po ponownej weryfikacji doboru Kvs, topologii 2- i 3-drogowej oraz roli mieszacza przy pompie ciepła.</p></div>
              </div>
              <div class="rk-pg-mini-label">Portale autora</div>
              <div class="rk-pg-portals"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a></div>
            </div>
          </div>
        </div>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "description": "Projektowanie ogrzewania podłogowego, obliczenia cieplne i hydraulika instalacji grzewczych.",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "inLanguage": "pl-PL",
      "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"},
      "knowsAbout": ["ogrzewanie podłogowe", "hydraulika instalacji grzewczych", "zawory mieszające", "dobór Kv i Kvs", "pompy obiegowe", "automatyka pogodowa"],
      "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/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Zawor-mieszajacy.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Zawor-mieszajacy.webp",
      "width": 945,
      "height": 945,
      "caption": "Zawór mieszający w ogrzewaniu podłogowym"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#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": "Zawór mieszający w ogrzewaniu podłogowym", "item": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/"}
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/",
      "name": "Zawór mieszający w ogrzewaniu podłogowym – kiedy jest potrzebny i jak go dobrać?",
      "description": "Czy zawór mieszający do podłogówki jest potrzebny? Zobacz schemat działania oraz oblicz przepływ, proporcje mieszania i Kvs bez dobierania zaworu na gwint.",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#breadcrumb"},
      "primaryImageOfPage": {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#primaryimage"},
      "datePublished": "2026-01-12T10:25:37+00:00",
      "dateModified": "2026-09-12T10:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#article"}
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#article",
      "url": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/",
      "headline": "Zawór mieszający w ogrzewaniu podłogowym – kiedy jest potrzebny i jak go dobrać?",
      "alternativeHeadline": "Zawór 3-drogowy do podłogówki: schemat, przepływ, Kvs i sterowanie",
      "description": "Kompletny poradnik o funkcji zaworu mieszającego, układach hydraulicznych, obliczaniu przepływu, proporcji mieszania, Kvs, automatyce i diagnostyce.",
      "image": {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#primaryimage"},
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "datePublished": "2026-01-12T10:25:37+00:00",
      "dateModified": "2026-09-12T10:00:00+02:00",
      "wordCount": 4379,
      "articleSection": ["Zawory mieszające", "Ogrzewanie podłogowe", "Hydraulika grzewcza", "Pompy obiegowe", "Automatyka pogodowa", "Projektowanie instalacji"],
      "keywords": ["zawór mieszający do podłogówki", "czy zawór mieszający jest potrzebny do podłogówki", "zawór 3-drogowy do ogrzewania podłogowego", "jak dobrać Kvs zaworu mieszającego", "jak ustawić zawór mieszający do podłogówki", "zawór termostatyczny czy z siłownikiem", "zawór mieszający a pompa ciepła", "grupa mieszająca do rozdzielacza"],
      "proficiencyLevel": "Intermediate",
      "dependencies": "Projektowe obciążenie cieplne, temperatury obiegów, projektowy przepływ, opory hydrauliczne, charakterystyka pompy i dokumentacja producenta zaworu oraz źródła",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "about": [
        {"@type": "DefinedTerm", "name": "Zawór mieszający", "description": "Element regulacyjny zmieniający proporcję strumieni o różnych temperaturach."},
        {"@type": "DefinedTerm", "name": "Kvs", "description": "Deklarowana zdolność przepływowa zaworu przy pełnym otwarciu."},
        {"@type": "DefinedTerm", "name": "Autorytet zaworu", "description": "Relacja spadku ciśnienia na zaworze do spadku w regulowanej części obiegu."}
      ],
      "hasPart": [
        {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#schemes-app"},
        {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#calculator-app"},
        {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#faq-schema"}
      ],
      "citation": [
        "https://sklep.pkn.pl/pn-en-1264-2-2021-10e.html",
        "https://www.esbe.eu/group/support/faq/faq-thermostatic-mixing-valves",
        "https://esbe.eu/group/support/hydronic-selection",
        "https://esbe.eu/group/products/rotary-valves/vrg130",
        "https://www.danfoss.com/en/products/dhs/valves/hydronic-balancing-and-control/pressure-independent-balancing-control-valves-pibcv/ab-qm/"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#schemes-app",
      "name": "Interaktywna mapa trzech układów hydraulicznych",
      "url": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#rk-pg-schematy",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "softwareVersion": "1.0",
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "description": "Moduł porównujący bezpośredni obieg niskotemperaturowy, układ ze źródłem wysokotemperaturowym oraz instalację podłogowo-grzejnikową.",
      "featureList": ["trzy scenariusze hydrauliczne", "opis funkcji elementów", "warunki poprawnej pracy", "ograniczenia schematów uproszczonych"]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#calculator-app",
      "name": "Kalkulator przepływu, proporcji mieszania i Kvs",
      "url": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#rk-pg-kalkulator",
      "applicationCategory": "CalculatorApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "softwareVersion": "1.0",
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "description": "Kalkulator obliczający przepływ obiegu, idealną proporcję wody ze źródła i powrotu oraz referencyjne spadki ciśnienia dla wskazanego Kvs.",
      "featureList": ["przepływ w m³/h i l/min", "udział strumienia gorącego", "udział recyrkulacji", "dwa referencyjne spadki ciśnienia", "udział oporu zaworu"]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#howto",
      "name": "Jak przygotować dane do doboru zaworu mieszającego do podłogówki",
      "description": "Kolejność zebrania danych i weryfikacji układu przed wyborem zaworu, pompy, siłownika oraz nastaw.",
      "totalTime": "PT45M",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Określ funkcję obiegu", "text": "Ustal, czy podłogówka wymaga osobnego poziomu temperatury, czy może być zasilana bezpośrednio."},
        {"@type": "HowToStep", "position": 2, "name": "Oblicz obciążenie cieplne", "text": "Wyznacz moc całego obsługiwanego obiegu i poszczególnych pomieszczeń."},
        {"@type": "HowToStep", "position": 3, "name": "Wyznacz temperatury", "text": "Określ temperaturę źródła, wymagane zasilanie podłogi, powrót oraz zmianę parametru w sezonie."},
        {"@type": "HowToStep", "position": 4, "name": "Przyjmij projektowe ΔT", "text": "Ustal różnicę temperatur spójną z doborem emitera, przepływów i źródła."},
        {"@type": "HowToStep", "position": 5, "name": "Oblicz przepływ", "text": "Przelicz moc i ΔT na całkowity przepływ obiegu oraz rozdziel strumienie w wybranej topologii."},
        {"@type": "HowToStep", "position": 6, "name": "Sprawdź opory i Kvs", "text": "Porównaj stratę zaworu z oporami pozostałej drogi oraz charakterystyką producenta."},
        {"@type": "HowToStep", "position": 7, "name": "Dobierz pompę i sterowanie", "text": "Zweryfikuj punkt pracy pompy, siłownik, czujniki, regulator i zachowanie przy obciążeniu częściowym."},
        {"@type": "HowToStep", "position": 8, "name": "Uruchom i zmierz", "text": "Sprawdź temperatury, przepływy i reakcję układu w stanie projektowym oraz częściowym."}
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#input-list",
      "name": "Dane potrzebne do doboru zaworu mieszającego",
      "numberOfItems": 8,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Funkcja i topologia obiegu"},
        {"@type": "ListItem", "position": 2, "name": "Projektowa moc cieplna"},
        {"@type": "ListItem", "position": 3, "name": "Temperatury źródła, zasilania i powrotu"},
        {"@type": "ListItem", "position": 4, "name": "Projektowa różnica temperatur ΔT"},
        {"@type": "ListItem", "position": 5, "name": "Przepływ całkowity i przepływy przez porty"},
        {"@type": "ListItem", "position": 6, "name": "Opory hydrauliczne całej drogi"},
        {"@type": "ListItem", "position": 7, "name": "Charakterystyka pompy i sposób sterowania"},
        {"@type": "ListItem", "position": 8, "name": "Dokumentacja urządzeń oraz schemat producenta"}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#faq-schema",
      "url": "https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/#rk-pg-faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Czy zawór mieszający jest konieczny w każdej podłogówce?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Jest potrzebny, gdy obieg podłogowy ma otrzymywać temperaturę inną niż dostępna po stronie źródła lub innych odbiorników. W pojedynczym bezpośrednim obiegu niskotemperaturowym źródło może samo przygotowywać wymaganą temperaturę, jeżeli jego dokumentacja i hydraulika na to pozwalają."}},
        {"@type": "Question", "name": "Czy pompa ciepła potrzebuje zaworu mieszającego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie zawsze. Przy samej podłogówce oddzielny mieszacz często jest zbędny. Może być uzasadniony, gdy występują obiegi wymagające różnych temperatur albo konkretny schemat producenta przewiduje taki sposób regulacji."}},
        {"@type": "Question", "name": "Czy zawór 3-drogowy obniża temperaturę wody?", "acceptedAnswer": {"@type": "Answer", "text": "W funkcji mieszającej łączy cieplejszy strumień z chłodniejszym powrotem, dzięki czemu na króćcu wspólnym powstaje temperatura pośrednia. Muszą jednak istnieć odpowiednie przepływy po obu stronach i poprawna regulacja."}},
        {"@type": "Question", "name": "Jaka temperatura powinna być ustawiona na mieszaczu?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości dla wszystkich domów. Wymagana temperatura wynika z obciążenia pomieszczeń, powierzchni czynnej, konstrukcji podłogi, rozstawu, przepływów, okładziny i pogody."}},
        {"@type": "Question", "name": "Co oznacza Kvs zaworu?", "acceptedAnswer": {"@type": "Answer", "text": "Kvs opisuje zdolność przepływową zaworu przy pełnym otwarciu. Pozwala powiązać przepływ ze spadkiem ciśnienia, ale nie jest średnicą przyłącza ani samodzielną rekomendacją konkretnego modelu."}},
        {"@type": "Question", "name": "Jak obliczyć przepływ do ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Dla wody orientacyjny przepływ w m³/h można obliczyć jako moc obiegu w kW podzieloną przez iloczyn 1,163 i projektowego ΔT w K. Dla 12 kW oraz ΔT 5 K wynik wynosi około 2,06 m³/h."}},
        {"@type": "Question", "name": "Czy większy Kvs jest zawsze lepszy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Bardzo duży Kvs zmniejsza stratę ciśnienia, ale może ograniczać użyteczny zakres regulacji. Zbyt mały Kvs może nadmiernie zwiększyć opór. Wybór wymaga sprawdzenia charakterystyki w rzeczywistym układzie."}},
        {"@type": "Question", "name": "Czym różni się zawór 2-drogowy od 3-drogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Zawór 2-drogowy moduluje jeden strumień, na przykład wtrysk cieplejszej wody do wtórnego obiegu z obejściem. Zawór 3-drogowy ma trzy króćce i może zmieniać proporcję dwóch dopływów albo rozdzielać strumień, zależnie od konstrukcji i montażu."}},
        {"@type": "Question", "name": "Czy zawór mieszający równoważy pętle?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Ustala wspólną temperaturę lub udział strumieni dla obsługiwanego obiegu. Przepływy poszczególnych pętli ustawia się na rozdzielaczu zgodnie z projektem hydraulicznym."}},
        {"@type": "Question", "name": "Gdzie powinna znajdować się pompa względem mieszacza?", "acceptedAnswer": {"@type": "Answer", "text": "Położenie zależy od topologii. Pompa musi wytworzyć przepływ przez właściwą drogę mieszania lub wtrysku. Należy stosować schemat producenta i analizę hydrauliczną zamiast uniwersalnej zasady montażowej."}},
        {"@type": "Question", "name": "Dlaczego temperatura za zaworem faluje?", "acceptedAnswer": {"@type": "Answer", "text": "Przyczyną może być przewymiarowanie, zbyt szybki siłownik, niestabilny przepływ, złe umieszczenie czujnika, zmiany temperatury źródła lub nieprawidłowe nastawy regulatora. Potrzebny jest równoczesny pomiar kilku parametrów."}},
        {"@type": "Question", "name": "Czy można dobrać zawór na podstawie powierzchni domu?", "acceptedAnswer": {"@type": "Answer", "text": "Nie w sposób technicznie wiarygodny. Powierzchnia nie określa obciążenia, projektowego ΔT, przepływu ani strat ciśnienia. Te dane trzeba obliczyć dla konkretnego budynku i instalacji."}}
      ]
    }
  ]
}
</script>

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

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

  function byId(id) { return document.getElementById(id); }
  function numberValue(id) {
    var element = byId(id);
    if (!element) { return NaN; }
    var value = Number(String(element.value).replace(",", "."));
    return Number.isFinite(value) ? value : NaN;
  }
  function formatNumber(value, digits) {
    return new Intl.NumberFormat("pl-PL", { minimumFractionDigits: digits, maximumFractionDigits: digits }).format(value);
  }
  function setText(id, value) {
    var element = byId(id);
    if (element) { element.textContent = value; }
  }

  var schemeModes = {
    direct: {
      statusTitle: "Obieg bezpośredni: osobny mieszacz może nie być potrzebny",
      statusCopy: "Źródło przygotowuje temperaturę wymaganą przez podłogówkę, a cały obieg pracuje na jednym poziomie temperatury.",
      nodes: [
        { title: "Źródło niskotemperaturowe", copy: "Przygotowuje obliczoną temperaturę wody", className: "is-source", detailTitle: "Źródło reguluje temperaturę obiegu", detailCopy: "Pompa ciepła albo kocioł kondensacyjny może bezpośrednio zmieniać temperaturę zasilania zgodnie z krzywą, jeżeli producent dopuszcza taki układ.", functionCopy: "Nie ma drugiego poziomu temperatury, więc osobne mieszanie może nie wnosić potrzebnej funkcji.", checkCopy: "Zakres modulacji temperatury, minimalny przepływ, objętość czynną i schemat producenta.", limitCopy: "Czy konkretny model wymaga bufora, zaworu nadmiarowego albo pompy wtórnej." },
        { title: "Pompa i wymagany przepływ", copy: "Transport zgodny z hydrauliką źródła", className: "", detailTitle: "Pompa musi obsłużyć cały obieg", detailCopy: "Brak mieszacza nie usuwa oporów przewodów, rozdzielacza i pętli. Punkt pracy pompy nadal wynika z przepływu i najbardziej niekorzystnej drogi.", functionCopy: "Źródło lub jego pompa dostarcza strumień bez dodatkowego stopnia mieszania.", checkCopy: "Wymagany przepływ źródła, krzywą pompy, opory oraz zmianę po zamknięciu stref.", limitCopy: "Czy pompa wbudowana wystarcza dla konkretnej instalacji bez obliczenia oporów." },
        { title: "Bez oddzielnego mieszacza", copy: "Brak drugiego poziomu temperatury", className: "is-neutral", detailTitle: "Brak zaworu też jest decyzją projektową", detailCopy: "Zaworu nie pomija się przypadkiem. Rezygnacja jest uzasadniona, gdy źródło bezpośrednio zapewnia potrzebną temperaturę i hydraulika spełnia jego wymagania.", functionCopy: "Temperaturę reguluje automatyka źródła zamiast drugiego elementu pośredniego.", checkCopy: "Maksymalny parametr, krzywą pogodową, minimalne otwarcie stref i zabezpieczenia.", limitCopy: "Czy identyczny schemat będzie poprawny po dołączeniu grzejników lub kolejnej temperatury." },
        { title: "Rozdzielacz", copy: "Rozdziela obliczone przepływy", className: "", detailTitle: "Rozdzielacz nie zastępuje regulatora temperatury", detailCopy: "Jego zadaniem jest rozdział strumienia i równoważenie pętli. Temperaturę otrzymuje już przygotowaną przez źródło.", functionCopy: "Nie miesza automatycznie zasilania z powrotem, o ile nie jest częścią kompletnej grupy mieszającej.", checkCopy: "Przepływy na rotametrach, średnicę zasilania, odpowietrzenie i pracę siłowników.", limitCopy: "Czy fabryczny zestaw przy rozdzielaczu pasuje do wydajności i charakterystyki źródła." },
        { title: "Pętle podłogowe", copy: "Oddają moc do pomieszczeń", className: "is-floor", detailTitle: "Pętle są odbiornikiem, a nie zabezpieczeniem", detailCopy: "Oddają moc zależną od powierzchni czynnej, temperatury wody, rozstawu, konstrukcji podłogi i przepływu.", functionCopy: "Wspólny parametr zasilania musi umożliwiać pokrycie obciążeń bez przekraczania ograniczeń powierzchni.", checkCopy: "Długości, rozstaw, przepływy, opór okładziny i temperatury powierzchni.", limitCopy: "Czy chłodna podłoga oznacza zbyt niską temperaturę; przyczyną może być brak przepływu lub zbyt mała powierzchnia." }
      ]
    },
    high: {
      statusTitle: "Źródło wysokotemperaturowe: obieg podłogowy potrzebuje własnego parametru",
      statusCopy: "Cieplejsza woda ze źródła lub bufora jest łączona z chłodniejszym powrotem, aby utworzyć temperaturę właściwą dla podłogówki.",
      nodes: [
        { title: "Kocioł lub gorący bufor", copy: "Temperatura wyższa niż wymaga podłoga", className: "is-source", detailTitle: "Źródło i odbiornik mają inne wymagania", detailCopy: "Po stronie źródła może być utrzymywana temperatura wynikająca z jego konstrukcji, ładowania bufora lub innych odbiorników.", functionCopy: "Mieszacz oddziela parametr obiegu podłogowego od wyższego parametru dostępnego upstream.", checkCopy: "Temperaturę źródła, ochronę powrotu, bilans bufora i dopuszczone schematy.", limitCopy: "Czy jeden zawór może jednocześnie pełnić ochronę kotła i regulację podłogówki." },
        { title: "Dopływ i powrót", copy: "Dwa strumienie o różnych temperaturach", className: "", detailTitle: "Do mieszania potrzebne są dwa dostępne strumienie", detailCopy: "Cieplejszy dopływ dostarcza energię, a część chłodniejszego powrotu krąży ponownie w obiegu podłogowym.", functionCopy: "Proporcja strumieni ustala idealną temperaturę mieszaniny przy zachowaniu bilansu energii.", checkCopy: "Dostępną różnicę ciśnień, kierunki, zawory zwrotne i stabilność obu temperatur.", limitCopy: "Czy deklarowana temperatura oznacza faktyczną temperaturę podczas zmiennej pracy źródła." },
        { title: "Zawór mieszający", copy: "Zmienia proporcję dopływu i powrotu", className: "is-mixer", detailTitle: "Zawór jest elementem regulacyjnym", detailCopy: "Jego położenie zmienia dostępny przekrój portów. Rzeczywisty efekt zależy od charakterystyki, Kvs i oporów całej drogi.", functionCopy: "Utrzymuje lub zmienia temperaturę za zaworem w granicach dostępnych temperatur i przepływów.", checkCopy: "Kvs, charakterystykę, porty, siłownik, czas obrotu i regulator.", limitCopy: "Czy większy zawór będzie lepszy; przewymiarowanie może pogorszyć użyteczną regulację." },
        { title: "Pompa obiegu podłogowego", copy: "Wymusza przepływ przez grupę i pętle", className: "", detailTitle: "Pompa tworzy warunki do mieszania", detailCopy: "W układzie wtórnym pompa transportuje pełny strumień mieszaniny przez rozdzielacz i pętle.", functionCopy: "Zapewnia cyrkulację, której nie tworzy samo pokrętło albo siłownik zaworu.", checkCopy: "Punkt pracy, tryb regulacji, dostępne ciśnienie na ssaniu i zmianę liczby otwartych pętli.", limitCopy: "Czy ustawienie maksymalne naprawi zbyt mały Kvs albo błędny kierunek przepływu." },
        { title: "Rozdzielacz i pętle", copy: "Odbierają moc przy parametrze zmieszanym", className: "is-floor", detailTitle: "Temperatura wspólna, przepływy indywidualne", detailCopy: "Za mieszaczem wszystkie pętle otrzymują wspólną temperaturę, ale każda wymaga przepływu wynikającego z własnego obciążenia.", functionCopy: "Mieszacz obsługuje cały obieg; rotametry rozdzielają strumień między pomieszczenia.", checkCopy: "Sumę przepływów, najdłuższą drogę, ustawienia rotametrów i dopuszczalną temperaturę podłogi.", limitCopy: "Czy jedna temperatura zapewni prawidłową moc w pomieszczeniach o różnych okładzinach." }
      ]
    },
    mixed: {
      statusTitle: "Podłogówka i grzejniki: dwa obiegi wymagają rozdzielenia funkcji",
      statusCopy: "Źródło zasila układ wspólny, a każda gałąź otrzymuje temperaturę i przepływ wynikające z potrzeb danego rodzaju odbiornika.",
      nodes: [
        { title: "Wspólne źródło ciepła", copy: "Produkuje energię dla różnych odbiorników", className: "is-source", detailTitle: "Jedno źródło nie oznacza jednej temperatury wszędzie", detailCopy: "Temperatura po stronie źródła wynika z jego automatyki i odbiornika wymagającego najwyższego parametru w danym stanie pracy.", functionCopy: "Mieszanie pozwala obiegowi podłogowemu pracować niezależnie od gałęzi o innym parametrze.", checkCopy: "Zakres modulacji, temperatury projektowe obu obiegów i priorytety sterowania.", limitCopy: "Czy grzejniki rzeczywiście potrzebują wyższej temperatury w każdym punkcie sezonu." },
        { title: "Rozdzielenie hydrauliczne", copy: "Bufor, sprzęgło lub właściwy układ rozdziału", className: "", detailTitle: "Przepływy obiegów nie mogą walczyć ze sobą", detailCopy: "Sposób rozdzielenia zależy od źródła i pomp. Nie zawsze potrzebny jest bufor, ale zawsze trzeba przeanalizować interakcję przepływów.", functionCopy: "Tworzy warunki, w których pompy poszczególnych obiegów mogą realizować własne zadania.", checkCopy: "Bilans przepływów, minimalny zład, króćce, czujniki i pracę pomp w stanach częściowych.", limitCopy: "Czy samo wstawienie zbiornika rozwiązuje regulację temperatury i równoważenie." },
        { title: "Rozdział na dwa obiegi", copy: "Gałąź grzejnikowa i gałąź podłogowa", className: "", detailTitle: "Każdy odbiornik otrzymuje własny obieg", detailCopy: "Gałąź grzejnikowa może korzystać z wyższego parametru, natomiast gałąź podłogowa przechodzi przez własny układ regulacji.", functionCopy: "Mieszacz nie obniża temperatury dla wszystkich odbiorników, lecz tylko dla przypisanego obiegu.", checkCopy: "Zawory zwrotne, priorytety, pompy i położenie czujników obu obiegów.", limitCopy: "Czy zamknięcie jednej gałęzi nie zmieni niekontrolowanie warunków w drugiej." },
        { title: "Grupa mieszająca podłogówki", copy: "Własny zawór, pompa, czujnik i sterowanie", className: "is-mixer", detailTitle: "Mieszacz obsługuje wyłącznie niższy parametr", detailCopy: "Na gałęzi podłogowej zawór przygotowuje temperaturę właściwą dla płaszczyzny grzewczej, a pompa zapewnia wymagany przepływ.", functionCopy: "Oddziela temperaturowo obieg podłogowy od wyższego parametru wspólnego.", checkCopy: "Kvs, punkt pracy pompy, krzywą obiegu i zachowanie po zamknięciu stref.", limitCopy: "Czy gotowa grupa ma parametry odpowiednie do sumy przepływów i oporów projektu." },
        { title: "Pętle podłogowe", copy: "Otrzymują obliczoną temperaturę zmieszaną", className: "is-floor", detailTitle: "Podłoga nie powinna przejmować funkcji bufora bezpieczeństwa", detailCopy: "Pętle odbierają tyle energii, ile wynika z różnicy temperatur i przepływu. Nie można traktować ich jako nieograniczonego odbiornika nadwyżki ze źródła.", functionCopy: "Oddają moc do pomieszczeń przy wspólnej temperaturze i indywidualnych przepływach.", checkCopy: "Obciążenia, powierzchnię czynną, rozstawy, długości, opory i nastawy rozdzielacza.", limitCopy: "Czy wyższa temperatura naprawi zbyt małą powierzchnię czynną bez przekroczenia ograniczeń." }
      ]
    }
  };

  var schemeButtons = root.querySelectorAll("[data-rk-mix-mode]");
  var schemeNodes = root.querySelectorAll("[data-rk-mix-node]");
  var currentMode = "direct";

  function renderNodeDetail(index) {
    var mode = schemeModes[currentMode];
    var node = mode.nodes[index];
    if (!node) { return; }
    schemeNodes.forEach(function (button, buttonIndex) {
      button.classList.toggle("is-selected", buttonIndex === index);
    });
    setText("rk-mix-detail-title", node.detailTitle);
    setText("rk-mix-detail-copy", node.detailCopy);
    setText("rk-mix-detail-function", node.functionCopy);
    setText("rk-mix-detail-check", node.checkCopy);
    setText("rk-mix-detail-limit", node.limitCopy);
  }

  function renderScheme(modeKey) {
    var mode = schemeModes[modeKey];
    if (!mode) { return; }
    currentMode = modeKey;
    var map = byId("rk-mix-scheme-map");
    if (map) { map.setAttribute("data-mode", modeKey); }
    schemeButtons.forEach(function (button) {
      var active = button.getAttribute("data-rk-mix-mode") === modeKey;
      button.classList.toggle("is-active", active);
      button.setAttribute("aria-pressed", active ? "true" : "false");
    });
    setText("rk-mix-scheme-status", "");
    var status = byId("rk-mix-scheme-status");
    if (status) {
      var title = document.createElement("b");
      var copy = document.createElement("p");
      title.textContent = mode.statusTitle;
      copy.textContent = mode.statusCopy;
      status.appendChild(title);
      status.appendChild(copy);
    }
    mode.nodes.forEach(function (node, index) {
      var button = schemeNodes[index];
      if (!button) { return; }
      button.classList.remove("is-source", "is-floor", "is-mixer", "is-neutral", "is-selected");
      if (node.className) { button.classList.add(node.className); }
      setText("rk-mix-node-title-" + index, node.title);
      setText("rk-mix-node-copy-" + index, node.copy);
    });
    renderNodeDetail(0);
  }

  schemeButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      renderScheme(button.getAttribute("data-rk-mix-mode"));
    });
  });
  schemeNodes.forEach(function (button, index) {
    button.addEventListener("click", function () { renderNodeDetail(index); });
  });

  var portNotes = {
    a: "Port A: jego przymknięcie ogranicza udział cieplejszej wody, ale rzeczywista charakterystyka przepływu zależy od konstrukcji zaworu i siłownika.",
    b: "Port B: doprowadza chłodniejszy strumień powrotny do mieszania. Jego otwieranie i zamykanie musi być skoordynowane z portem cieplejszym.",
    ab: "Port AB: w typowej funkcji mieszającej jest króćcem wspólnym, którym mieszanina płynie dalej do pompy i obiegu. Oznaczenia zawsze porównaj z dokumentacją modelu."
  };
  var portButtons = root.querySelectorAll("[data-rk-mix-port]");
  portButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      var key = button.getAttribute("data-rk-mix-port");
      portButtons.forEach(function (item) {
        var active = item === button;
        item.classList.toggle("is-active", active);
        item.setAttribute("aria-pressed", active ? "true" : "false");
      });
      var note = byId("rk-mix-port-note");
      if (note) {
        note.textContent = "";
        var paragraph = document.createElement("p");
        var strong = document.createElement("strong");
        var split = portNotes[key].split(": ");
        strong.textContent = split[0] + ": ";
        paragraph.appendChild(strong);
        paragraph.appendChild(document.createTextNode(split.slice(1).join(": ")));
        note.appendChild(paragraph);
      }
    });
  });

  var presets = {
    boiler: { power: 12, delta: 5, hot: 60, returnTemp: 30, target: 35, kvs: 4, other: 18 },
    buffer: { power: 9, delta: 5, hot: 50, returnTemp: 27, target: 32, kvs: 4, other: 16 },
    low: { power: 7, delta: 5, hot: 40, returnTemp: 27, target: 32, kvs: 2.5, other: 14 }
  };
  var presetButtons = root.querySelectorAll("[data-rk-mix-preset]");

  function setResultInvalid(message) {
    ["rk-mix-result-total", "rk-mix-result-hot-share", "rk-mix-result-return", "rk-mix-result-dp", "rk-mix-result-dp-hot", "rk-mix-result-authority"].forEach(function (id) { setText(id, "—"); });
    setText("rk-mix-result-total-l", "Popraw dane wejściowe");
    setText("rk-mix-result-hot-flow", "Wymagany poprawny bilans temperatur");
    setText("rk-mix-result-return-share", "Wymagany poprawny bilans temperatur");
    setText("rk-mix-result-authority-copy", "Brak wyniku dla niepoprawnych danych");
    setText("rk-mix-ratio-hot-label", "—");
    setText("rk-mix-ratio-return-label", "—");
    var hotBar = byId("rk-mix-ratio-hot");
    var returnBar = byId("rk-mix-ratio-return");
    if (hotBar) { hotBar.style.width = "50%"; }
    if (returnBar) { returnBar.style.width = "50%"; }
    setText("rk-mix-calculator-status", message);
  }

  function calculateMixing() {
    var power = numberValue("rk-mix-power");
    var delta = numberValue("rk-mix-delta");
    var hot = numberValue("rk-mix-hot");
    var returnTemp = numberValue("rk-mix-return");
    var target = numberValue("rk-mix-target");
    var kvs = numberValue("rk-mix-kvs");
    var otherLoss = numberValue("rk-mix-other-loss");

    var allNumbers = [power, delta, hot, returnTemp, target, kvs, otherLoss];
    var finite = allNumbers.every(function (value) { return Number.isFinite(value); });
    if (!finite) { setResultInvalid("Uzupełnij wszystkie pola prawidłowymi liczbami."); return; }
    if (power <= 0 || delta <= 0 || kvs <= 0 || otherLoss < 0) { setResultInvalid("Moc, ΔT i Kvs muszą być większe od zera, a pozostały opór nie może być ujemny."); return; }

    var temperaturesValid = hot > target;
    if (temperaturesValid) { temperaturesValid = target > returnTemp; }
    if (!temperaturesValid) { setResultInvalid("Warunek mieszania nie jest spełniony. Temperatura źródła musi być wyższa od wymaganej temperatury zasilania, a ta wyższa od temperatury powrotu."); return; }

    var totalFlow = power / (1.163 * delta);
    var hotShare = (target - returnTemp) / (hot - returnTemp);
    var hotFlow = totalFlow * hotShare;
    var returnFlow = totalFlow - hotFlow;
    var returnShare = 1 - hotShare;
    var dpTotal = Math.pow(totalFlow / kvs, 2) * 100;
    var dpHot = Math.pow(hotFlow / kvs, 2) * 100;
    var lossSum = dpTotal + otherLoss;
    var authorityShare = lossSum > 0 ? (dpTotal / lossSum) * 100 : 0;
    var balancePower = hotFlow * 1.163 * (hot - returnTemp);

    setText("rk-mix-result-total", formatNumber(totalFlow, 2) + " m³/h");
    setText("rk-mix-result-total-l", formatNumber(totalFlow * 1000 / 60, 1) + " l/min");
    setText("rk-mix-result-hot-share", formatNumber(hotShare * 100, 1) + "%");
    setText("rk-mix-result-hot-flow", formatNumber(hotFlow, 2) + " m³/h ze źródła");
    setText("rk-mix-result-return", formatNumber(returnFlow, 2) + " m³/h");
    setText("rk-mix-result-return-share", formatNumber(returnShare * 100, 1) + "% przepływu mieszanego");
    setText("rk-mix-result-dp", formatNumber(dpTotal, 1) + " kPa");
    setText("rk-mix-result-dp-hot", formatNumber(dpHot, 1) + " kPa");
    setText("rk-mix-result-authority", formatNumber(authorityShare, 1) + "%");
    setText("rk-mix-result-authority-copy", "w sumie zawór + " + formatNumber(otherLoss, 1) + " kPa pozostałego oporu");
    setText("rk-mix-ratio-hot-label", formatNumber(hotShare * 100, 1) + "%");
    setText("rk-mix-ratio-return-label", formatNumber(returnShare * 100, 1) + "%");

    var hotBar = byId("rk-mix-ratio-hot");
    var returnBar = byId("rk-mix-ratio-return");
    if (hotBar) { hotBar.style.width = String(hotShare * 100) + "%"; }
    if (returnBar) { returnBar.style.width = String(returnShare * 100) + "%"; }

    var difference = Math.abs(balancePower - power);
    var status = "Bilans idealnego mieszania jest spójny. ";
    if (difference > 0.05) { status = "Sprawdź założenia bilansu temperatur. "; }
    status += "Pełny przepływ i gorący strumień dają różne referencyjne spadki ciśnienia — właściwą drogę trzeba odczytać ze schematu oraz charakterystyki konkretnego zaworu.";
    setText("rk-mix-calculator-status", status);
  }

  presetButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      var key = button.getAttribute("data-rk-mix-preset");
      var preset = presets[key];
      if (!preset) { return; }
      byId("rk-mix-power").value = preset.power;
      byId("rk-mix-delta").value = preset.delta;
      byId("rk-mix-hot").value = preset.hot;
      byId("rk-mix-return").value = preset.returnTemp;
      byId("rk-mix-target").value = preset.target;
      byId("rk-mix-kvs").value = preset.kvs;
      byId("rk-mix-other-loss").value = preset.other;
      presetButtons.forEach(function (item) {
        var active = item === button;
        item.classList.toggle("is-active", active);
        item.setAttribute("aria-pressed", active ? "true" : "false");
      });
      calculateMixing();
    });
  });

  root.querySelectorAll("#rk-mix-calculator-tool input").forEach(function (input) {
    input.addEventListener("input", calculateMixing);
    input.addEventListener("change", calculateMixing);
  });

  renderScheme("direct");
  calculateMixing();
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">Zawór mieszający w ogrzewaniu podłogowym – kiedy jest potrzebny i jak go dobrać?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Krzywa grzewcza w ogrzewaniu podłogowym – jak ustawić ją bez błędów?</title>
		<link>https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 06 Jan 2026 10:25:59 +0000</pubDate>
				<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kocioł gazowy]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Regulacja instalacji]]></category>
		<category><![CDATA[Termomodernizacja]]></category>
		<category><![CDATA[automatyka c.o.]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[krzywa grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[regulacja ogrzewania]]></category>
		<category><![CDATA[sterowanie pogodowe]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3069</guid>

					<description><![CDATA[<p>Krzywa grzewcza w ogrzewaniu podłogowym to temat, który decyduje nie tylko o komforcie cieplnym, ale też o realnych kosztach eksploatacji domu. W artykule pokazujemy, dlaczego to właśnie algorytm sterujący, a nie sama instalacja, jest kluczem do efektywnego ogrzewania. Krok po kroku wyjaśniamy, jak działa krzywa grzewcza, jak dobrać jej parametry do rodzaju budynku oraz jak ją prawidłowo stroić w praktyce, aby uniknąć przegrzewania, niedogrzania i niepotrzebnych strat energii.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">Krzywa grzewcza w ogrzewaniu podłogowym – jak ustawić ją bez błędów?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-curve-guide {
    --rk-curve-navy: #123247;
    --rk-curve-navy-deep: #0b2536;
    --rk-curve-teal: #0e7787;
    --rk-curve-cyan: #5fdef0;
    --rk-curve-orange: #ff7a21;
    --rk-curve-green: #248c68;
    --rk-curve-red: #c64b48;
    --rk-curve-amber: #b77812;
    --rk-curve-ink: #173246;
    --rk-curve-muted: #5d7180;
    --rk-curve-line: #d7e1e7;
    --rk-curve-soft: #f3f7f9;
    --rk-curve-white: #ffffff;
    --rk-curve-shadow: 0 18px 48px rgba(13, 43, 60, 0.12);
    color: var(--rk-curve-ink);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 18px;
    line-height: 1.72;
    overflow-x: hidden;
  }

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-shadow);
  }

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-hero-inner {
    position: relative;
    z-index: 1;
  }

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-hero-title span {
    color: var(--rk-curve-cyan);
  }

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-byline {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 24px;
    margin: 34px 0 0;
    color: #e5f0f4;
    font-size: 0.85rem;
    font-weight: 700;
  }

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-hero-metric b {
    display: block;
    margin-bottom: 7px;
    color: #ffffff;
    font-size: 1.02rem;
    line-height: 1.3;
  }

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-section-dark .rk-curve-section-title,
  #rk-curve-guide .rk-curve-section-dark h3,
  #rk-curve-guide .rk-curve-section-dark strong {
    color: #ffffff;
  }

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

  #rk-curve-guide .rk-curve-section-title,
  #rk-curve-guide .rk-curve-author-title {
    max-width: 1010px;
    margin: 0 0 18px;
    color: var(--rk-curve-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-curve-guide .rk-curve-lead {
    max-width: 1040px;
    color: #314c5e;
    font-size: 1.08rem;
    line-height: 1.75;
  }

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

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

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

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-callout,
  #rk-curve-guide .rk-curve-note,
  #rk-curve-guide .rk-curve-warning {
    margin: 24px 0 0;
    padding: 20px 22px;
    border-radius: 16px;
    color: #274657;
    font-size: 0.94rem;
    line-height: 1.68;
  }

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-tool-head {
    padding: 28px clamp(22px, 4vw, 40px);
    background: linear-gradient(125deg, var(--rk-curve-navy), #0d5962);
    color: #ffffff;
  }

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-segmented button {
    min-width: 0;
    min-height: 48px;
    padding: 9px 12px;
    border: 1px solid #bfd0d9;
    border-radius: 13px;
    background: #ffffff;
    color: var(--rk-curve-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-curve-guide .rk-curve-segmented button:hover {
    transform: translateY(-1px);
    border-color: var(--rk-curve-teal);
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-flow-value.is-off {
    background: #eef1f3;
    color: #5c6e79;
  }

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-compare-table,
  #rk-curve-guide .rk-curve-diagnostic-table {
    overflow: hidden;
    margin: 24px 0;
    border: 1px solid var(--rk-curve-line);
    border-radius: 20px;
    background: #ffffff;
  }

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

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-line);
    border-radius: 17px;
    background: #ffffff;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-mistake-icon {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-curve-red);
    color: #ffffff;
    font-weight: 900;
  }

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

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

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

  #rk-curve-guide .rk-curve-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-curve-line);
    border-radius: 17px;
    background: #ffffff;
    color: #425d6e;
    font-size: 0.86rem;
    line-height: 1.55;
  }

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

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-navy), #0b5761);
    color: #ffffff;
    box-shadow: 0 18px 45px rgba(11, 45, 62, 0.18);
  }

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-cta p {
    max-width: 980px;
    margin-bottom: 20px;
    color: #e7f3f6;
  }

  #rk-curve-guide .rk-curve-cta-button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 52px;
    padding: 12px 20px;
    border: 2px solid var(--rk-curve-orange);
    border-radius: 12px;
    background: var(--rk-curve-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-curve-guide .rk-curve-cta-button:hover {
    border-color: #ff9652;
    background: #ff9652;
    color: #ffffff !important;
  }

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-responsibility p:last-child {
    margin-bottom: 0;
  }

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-author .rk-curve-eyebrow {
    color: #ff9a57;
  }

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-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-curve-guide .rk-curve-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-author-main p {
    color: #dcecf1;
    font-size: 0.92rem;
  }

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

  #rk-curve-guide .rk-curve-author-quote {
    margin-bottom: 21px;
    padding: 22px;
    border-left: 5px solid var(--rk-curve-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-curve-guide .rk-curve-author-facts {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 11px;
    margin-top: 20px;
  }

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-author-fact strong {
    display: block;
    margin-bottom: 4px;
    color: #ffffff;
    font-size: 0.8rem;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-break-row strong,
  #rk-curve-guide .rk-curve-curve-row > strong {
    color: var(--rk-curve-navy);
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-status.is-warning {
    border-color: #efd0a1;
    background: #fff6e9;
    color: #664d2b;
  }

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

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-hydraulic-card h3 {
    margin: 0 0 8px;
    color: var(--rk-curve-navy);
    font-size: 1rem;
    line-height: 1.35;
  }

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-hydraulic-card.is-active .rk-curve-hydraulic-value {
    background: #dff6e9;
    color: #21664e;
  }

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

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

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

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

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

  #rk-curve-guide .rk-curve-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-curve-guide .rk-curve-grid-4 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</style>

<article id="rk-curve-guide" aria-labelledby="rk-curve-visual-title">
  <div class="rk-curve-shell">
    <header class="rk-curve-hero">
      <div class="rk-curve-hero-inner">
        <span class="rk-curve-kicker">Sterowanie pogodowe · bez uniwersalnych nastaw</span>
        <div class="rk-curve-hero-title" id="rk-curve-visual-title">Dwa punkty zamiast jednej <span>„magicznej” liczby</span></div>
        <p class="rk-curve-hero-lead">Krzywa grzewcza łączy temperaturę zewnętrzną z wymaganą temperaturą wody, ale jej numer nie jest uniwersalny. Punkt obliczeniowy wynika z budynku i podłogi, sposób wprowadzania danych — ze sterownika, a końcowa korekta — z obserwacji stabilnie pracującej instalacji.</p>

        <div class="rk-curve-hero-tags" aria-label="Zakres poradnika">
          <span class="rk-curve-hero-tag">nachylenie i przesunięcie</span>
          <span class="rk-curve-hero-tag">model dwóch punktów</span>
          <span class="rk-curve-hero-tag">temperatura zasilania</span>
          <span class="rk-curve-hero-tag">pompa ciepła i kocioł</span>
          <span class="rk-curve-hero-tag">strojenie bez zgadywania</span>
        </div>

        <div class="rk-curve-byline">
          <span>Autor: <strong>Robert Kucharski</strong></span>
          <span>Czas czytania: około 30 minut</span>
          <span>Aktualizacja techniczna: 10 września 2026 r.</span>
        </div>

        <div class="rk-curve-hero-metrics" aria-label="Trzy warstwy poprawnej krzywej grzewczej">
          <div class="rk-curve-hero-metric">
            <b>Punkt projektowy</b>
            <span>OZC, powierzchnia czynna, konstrukcja podłogi i okładzina wyznaczają wymagany parametr w warunkach obliczeniowych.</span>
          </div>
          <div class="rk-curve-hero-metric">
            <b>Algorytm sterownika</b>
            <span>Nachylenie 0,3, punkty charakterystyki albo temperatura bazowa mogą oznaczać różne modele zależnie od producenta.</span>
          </div>
          <div class="rk-curve-hero-metric">
            <b>Strojenie w budynku</b>
            <span>Korektę wykonuje się małymi krokami po sprawdzeniu przepływów, czujników, harmonogramu i wpływu regulatorów pokojowych.</span>
          </div>
        </div>
      </div>
    </header>

    <nav class="rk-curve-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-curve-shortcuts-label">Na skróty</span>
      <a href="#rk-curve-answer">Czym jest krzywa?</a>
      <a href="#rk-curve-chart">Wykres interaktywny</a>
      <a href="#rk-curve-parameters">Parametry krzywej</a>
      <a href="#rk-curve-factors">Temperatura zasilania</a>
      <a href="#rk-curve-design">Punkt obliczeniowy</a>
      <a href="#rk-curve-sources">Pompa ciepła i kocioł</a>
      <a href="#rk-curve-graphic">Grafika edukacyjna</a>
      <a href="#rk-curve-inertia">Bezwładność i czujnik</a>
      <a href="#rk-curve-room-control">Termostat i strefy</a>
      <a href="#rk-curve-tuning">Strojenie krok po kroku</a>
      <a href="#rk-curve-symptoms">Korekta objawów</a>
      <a href="#rk-curve-hydraulics">Hydraulika</a>
      <a href="#rk-curve-flooring">Okładzina podłogi</a>
      <a href="#rk-curve-efficiency">Rachunki i sprawność</a>
      <a href="#rk-curve-errors">Najczęstsze błędy</a>
      <a href="#rk-curve-checklist">Lista kontrolna</a>
      <a href="#rk-curve-conclusions">Wnioski</a>
      <a href="#rk-curve-references">Źródła</a>
      <a href="#rk-curve-faq">FAQ</a>
      <a href="#rk-curve-author">Autor</a>
    </nav>

    <section class="rk-curve-section" id="rk-curve-answer">
      <span class="rk-curve-eyebrow">Odpowiedź w 30 sekund</span>
      <h2 class="rk-curve-section-title">Czym jest krzywa grzewcza w ogrzewaniu podłogowym?</h2>
      <div class="rk-curve-answer">
        <span class="rk-curve-answer-label">Najkrótsza poprawna definicja</span>
        <p><strong>Krzywa grzewcza określa zadaną temperaturę zasilania obiegu w zależności od temperatury zewnętrznej. Im zimniej na zewnątrz, tym większej mocy potrzebuje budynek i zazwyczaj tym wyższa jest wymagana temperatura wody. Właściwa charakterystyka ma zapewnić komfort bez niepotrzebnego przegrzewania wody.</strong></p>
      </div>

      <div class="rk-curve-grid-4">
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">1</span>
          <h3>Oś pozioma</h3>
          <p>Pokazuje temperaturę zewnętrzną. W lewo znajdują się warunki coraz chłodniejsze, w prawo — łagodniejsze.</p>
        </article>
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">2</span>
          <h3>Oś pionowa</h3>
          <p>Pokazuje zadaną temperaturę zasilania obiegu. Nie jest to automatycznie temperatura powierzchni podłogi ani pokoju.</p>
        </article>
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">3</span>
          <h3>Linia lub krzywa</h3>
          <p>Łączy warunki zewnętrzne z parametrem wody. Jej przebieg zależy od modelu matematycznego zastosowanego w regulatorze.</p>
        </article>
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">4</span>
          <h3>Ograniczenia</h3>
          <p>Minimum, maksimum, granica grzania, wpływ pomieszczenia i harmonogram mogą zmienić wynik samej charakterystyki.</p>
        </article>
      </div>

      <p>Krzywa jest podstawowym elementem <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowania pogodowego ogrzewaniem podłogowym</a>. Czujnik zewnętrzny nie przewiduje przyszłej pogody. Pozwala jednak regulatorowi zmieniać temperaturę wody, zanim masywna podłoga i powietrze w domu zdążą w pełni odpowiedzieć na zmianę strat ciepła.</p>

      <div class="rk-curve-callout"><strong>Krzywa nie określa bezpośrednio mocy sprężarki, przepływu pętli ani temperatury każdego pokoju.</strong> Źródło ciepła, pompa obiegowa, rozdzielacz, podłoga i regulatory pokojowe tworzą kolejne warstwy jednego systemu.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-chart">
      <span class="rk-curve-eyebrow">Model dwóch punktów i porównanie korekt</span>
      <h2 class="rk-curve-section-title">Interaktywny wykres krzywej grzewczej</h2>
      <p class="rk-curve-lead">Wprowadź dwa punkty odniesienia, ograniczenia zasilania i granicę grzania. Następnie wybierz temperaturę zewnętrzną lub porównaj zmianę nachylenia z równoległym przesunięciem całej linii.</p>

      <div class="rk-curve-tool" id="rk-curve-chart-tool">
        <div class="rk-curve-tool-head">
          <span class="rk-curve-eyebrow">Edukacyjny model liniowy</span>
          <h3>Zobacz, jak dwa punkty budują charakterystykę</h3>
          <p>Narzędzie nie przelicza wartości „slope” konkretnej marki. Pokazuje geometrię krzywej oraz wynik modelu dwupunktowego, który można porównać z dokumentacją własnego regulatora.</p>
        </div>

        <div class="rk-curve-tool-body">
          <div class="rk-curve-field-grid rk-curve-field-grid-3">
            <div class="rk-curve-field">
              <label for="rk-curve-cold-outdoor">Zimny punkt — temperatura zewnętrzna</label>
              <input id="rk-curve-cold-outdoor" type="number" min="-30" max="0" step="1" value="-20" inputmode="decimal">
              <span class="rk-curve-field-help">Najczęściej temperatura obliczeniowa przyjęta w projekcie, nie wartość wybrana z pamięci.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-cold-supply">Zimny punkt — temperatura zasilania</label>
              <input id="rk-curve-cold-supply" type="number" min="20" max="55" step="0.5" value="35" inputmode="decimal">
              <span class="rk-curve-field-help">Projektowy parametr obiegu przy temperaturze obliczeniowej.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-mild-outdoor">Łagodny punkt — temperatura zewnętrzna</label>
              <input id="rk-curve-mild-outdoor" type="number" min="1" max="18" step="1" value="10" inputmode="decimal">
              <span class="rk-curve-field-help">Punkt opisujący pracę przy niewielkim zapotrzebowaniu na ciepło.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-mild-supply">Łagodny punkt — temperatura zasilania</label>
              <input id="rk-curve-mild-supply" type="number" min="18" max="40" step="0.5" value="24" inputmode="decimal">
              <span class="rk-curve-field-help">Wartość odniesienia, nie uniwersalna nastawa dla każdego domu.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-min-supply">Minimalna temperatura zasilania</label>
              <input id="rk-curve-min-supply" type="number" min="15" max="35" step="0.5" value="22" inputmode="decimal">
              <span class="rk-curve-field-help">Dolne ograniczenie tylko wtedy, gdy regulator i instalacja go wymagają.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-max-supply">Maksymalna temperatura zasilania</label>
              <input id="rk-curve-max-supply" type="number" min="25" max="60" step="0.5" value="40" inputmode="decimal">
              <span class="rk-curve-field-help">Ograniczenie powinno respektować projekt, podłogę, okładzinę i źródło.</span>
            </div>
          </div>

          <div class="rk-curve-field-grid">
            <div class="rk-curve-field">
              <label for="rk-curve-heating-limit">Granica wyłączenia ogrzewania</label>
              <input id="rk-curve-heating-limit" type="number" min="5" max="22" step="0.5" value="16" inputmode="decimal">
              <span class="rk-curve-field-help">Powyżej tej temperatury model oznacza obieg jako wyłączony. Rzeczywista logika zależy od sterownika.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-current-outdoor">Analizowana temperatura zewnętrzna: <strong id="rk-curve-current-label">−10°C</strong></label>
              <input class="rk-curve-range" id="rk-curve-current-outdoor" type="range" min="-25" max="20" step="1" value="-10">
              <span class="rk-curve-field-help">Przesuń suwak, aby zobaczyć punkt pracy na wykresie.</span>
            </div>
          </div>

          <span class="rk-curve-control-label">Porównaj z krzywą bazową</span>
          <div class="rk-curve-graphic-controls" role="group" aria-label="Wybierz porównanie zmiany krzywej">
            <button type="button" data-rk-curve-mode="base" aria-pressed="true">Bez porównania</button>
            <button type="button" data-rk-curve-mode="steeper" aria-pressed="false">Większe nachylenie</button>
            <button type="button" data-rk-curve-mode="flatter" aria-pressed="false">Mniejsze nachylenie</button>
            <button type="button" data-rk-curve-mode="up" aria-pressed="false">Przesunięcie +2 K</button>
            <button type="button" data-rk-curve-mode="down" aria-pressed="false">Przesunięcie −2 K</button>
          </div>

          <div class="rk-curve-calc-layout">
            <div class="rk-curve-chart-card">
              <div class="rk-curve-chart-title">Temperatura zasilania w funkcji temperatury zewnętrznej</div>
              <div class="rk-curve-chart-wrap">
                <svg id="rk-curve-svg" viewBox="0 0 800 430" role="img" aria-labelledby="rk-curve-svg-title rk-curve-svg-desc">
                  <title id="rk-curve-svg-title">Interaktywny wykres krzywej grzewczej</title>
                  <desc id="rk-curve-svg-desc">Wykres pokazuje bazową i opcjonalną porównawczą temperaturę zasilania zależną od temperatury zewnętrznej.</desc>
                </svg>
              </div>
              <div class="rk-curve-legend" aria-label="Legenda wykresu">
                <span><i></i>krzywa bazowa</span>
                <span class="is-pump" id="rk-curve-compare-legend"><i></i>krzywa porównawcza</span>
                <span class="is-point"><i></i>aktualny punkt</span>
              </div>
            </div>

            <div class="rk-curve-results" aria-live="polite">
              <div class="rk-curve-result-grid">
                <div class="rk-curve-result"><span>Temperatura zewnętrzna</span><strong id="rk-curve-result-outdoor">−10°C</strong></div>
                <div class="rk-curve-result"><span>Krzywa bazowa — zasilanie</span><strong id="rk-curve-result-base">31,3°C</strong></div>
                <div class="rk-curve-result"><span>Krzywa porównawcza</span><strong id="rk-curve-result-compare">—</strong></div>
                <div class="rk-curve-result"><span>Stan modelu</span><strong id="rk-curve-result-state">Zakres liniowy</strong></div>
              </div>

              <div class="rk-curve-breakdown">
                <span class="rk-curve-breakdown-title">Jak powstał wynik?</span>
                <p id="rk-curve-equation-copy">Model interpoluje temperaturę pomiędzy zimnym i łagodnym punktem, a następnie stosuje ograniczenia minimum, maksimum i granicę grzania.</p>
              </div>
              <div class="rk-curve-status" id="rk-curve-chart-status">Dane tworzą poprawną malejącą charakterystykę: wraz ze wzrostem temperatury zewnętrznej temperatura zasilania spada.</div>
            </div>
          </div>

          <div class="rk-curve-tool-disclaimer"><strong>Granica modelu:</strong> wynik jest edukacyjną interpolacją dwóch punktów. Nie stanowi nastawy konkretnej pompy ciepła lub kotła, nie uwzględnia nieliniowości algorytmu producenta, wpływu pomieszczenia, prognozy pogody, dynamiki budynku ani ograniczeń serwisowych.</div>
        </div>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-parameters">
      <span class="rk-curve-eyebrow">Pięć ustawień, które często są mylone</span>
      <h2 class="rk-curve-section-title">Nachylenie, przesunięcie, minimum, maksimum i granica grzania</h2>
      <p class="rk-curve-lead">Regulator może opisywać charakterystykę liczbą nachylenia, dwoma punktami, temperaturą bazową albo własnym zestawem parametrów. Dlatego przed zmianą ustawień trzeba odczytać instrukcję dokładnego modelu.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Nachylenie</h3><p>Zmienia różnicę pomiędzy zimną i łagodną częścią charakterystyki. Korekta jest zwykle coraz bardziej widoczna wraz ze spadkiem temperatury zewnętrznej.</p></article>
        <article class="rk-curve-card"><h3>Przesunięcie równoległe</h3><p>Podnosi albo obniża cały przebieg w przybliżeniu o podobną wartość. Nie każdy regulator realizuje offset dokładnie w ten sam sposób.</p></article>
        <article class="rk-curve-card"><h3>Temperatura minimalna</h3><p>Ogranicza obniżanie parametru wody. Zbyt wysoka może powodować przegrzewanie w łagodnych warunkach i częste wyłączanie źródła.</p></article>
        <article class="rk-curve-card"><h3>Temperatura maksymalna</h3><p>Chroni układ przed przekroczeniem przyjętego parametru, ale nie zastępuje prawidłowego projektu i zabezpieczeń urządzenia.</p></article>
        <article class="rk-curve-card"><h3>Granica grzania</h3><p>Określa temperaturę zewnętrzną, powyżej której ogrzewanie może zostać zatrzymane. Należy uwzględnić bezwładność i zyski budynku.</p></article>
        <article class="rk-curve-card"><h3>Wpływ temperatury pokojowej</h3><p>W wybranych systemach pomiar wewnętrzny koryguje wynik pogodowy. Jego waga, ograniczenia i sposób działania są właściwością sterownika.</p></article>
      </div>

      <div class="rk-curve-warning"><strong>„Krzywa 0,3” nie jest samodzielną specyfikacją.</strong> Bez nazwy urządzenia, trybu regulacji, temperatury projektowej, punktu bazowego i ograniczeń nie da się stwierdzić, jaką temperaturę zasilania regulator rzeczywiście wyznaczy.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-factors">
      <span class="rk-curve-eyebrow">Od strat budynku do emisji podłogi</span>
      <h2 class="rk-curve-section-title">Od czego zależy temperatura zasilania podłogówki?</h2>
      <p class="rk-curve-lead">Metraż nie wystarcza. Dwa domy o tej samej powierzchni mogą potrzebować innej mocy i innej temperatury wody, ponieważ różnią się izolacją, wentylacją, przeszkleniami, geometrią pętli oraz wykończeniem podłogi.</p>

      <div class="rk-curve-spec-grid">
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">1</span><div><strong>Obciążenie cieplne pomieszczeń</strong><span>Wynik <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego OZC</a> określa moc wymaganą przy przyjętych warunkach wewnętrznych i zewnętrznych.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">2</span><div><strong>Rzeczywista powierzchnia czynna</strong><span>Stałe zabudowy i obszary bez rur ograniczają powierzchnię, przez którą można przekazać ciepło do pomieszczenia.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">3</span><div><strong>Rozstaw i średnica rur</strong><span><a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">Rozstaw rur 10 czy 15 cm</a> wpływa na relację pomiędzy temperaturą czynnika, mocą i równomiernością powierzchni.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">4</span><div><strong>Konstrukcja warstw</strong><span>Położenie rur, rodzaj jastrychu, grubości oraz przewodzenie materiałów zmieniają opór pomiędzy wodą i pomieszczeniem.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">5</span><div><strong>Okładzina podłogowa</strong><span>Płytki, winyl, laminat i drewno mają inne opory oraz ograniczenia temperaturowe. Liczy się kompletny układ wykończenia.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">6</span><div><strong>Przepływ i projektowe ΔT</strong><span>Moc jest przenoszona przez wodę. <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Różnica temperatur zasilania i powrotu</a> oraz przepływy muszą być ze sobą zgodne.</span></div></div>
      </div>

      <div class="rk-curve-callout"><strong>Temperatury zasilania nie oblicza się przez podzielenie całkowitej mocy przez metraż i dodanie jednego oporu okładziny.</strong> Potrzebny jest model emisji systemu uwzględniający konstrukcję, temperaturę średnią czynnika, powierzchnię, strumień ciepła i ograniczenia temperatury podłogi.</div>
    </section>

    <section class="rk-curve-section" id="rk-curve-design">
      <span class="rk-curve-eyebrow">Punkt, który powinien istnieć przed pierwszym uruchomieniem</span>
      <h2 class="rk-curve-section-title">Jak projekt wyznacza punkt obliczeniowy krzywej?</h2>
      <p class="rk-curve-lead">Projektowy punkt łączy temperaturę zewnętrzną przyjętą dla lokalizacji z temperaturą zasilania wystarczającą do pokrycia obciążeń wszystkich pomieszczeń. Najtrudniejsze pomieszczenie może wyznaczyć wspólny parametr obiegu, a pozostałe pętle są równoważone przepływem i geometrią.</p>

      <div class="rk-curve-chain" aria-label="Kolejność wyznaczania punktu obliczeniowego">
        <div class="rk-curve-chain-item"><strong>Warunki obliczeniowe</strong><span>lokalizacja i temperatura wewnętrzna</span></div>
        <div class="rk-curve-chain-item"><strong>OZC pomieszczeń</strong><span>wymagana moc</span></div>
        <div class="rk-curve-chain-item"><strong>Projekt podłogi</strong><span>powierzchnia, rozstaw i okładzina</span></div>
        <div class="rk-curve-chain-item"><strong>Temperatura i przepływ</strong><span>spójny punkt pracy</span></div>
        <div class="rk-curve-chain-item"><strong>Nastawa regulatora</strong><span>odwzorowanie według instrukcji</span></div>
      </div>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Temperatura obliczeniowa nie jest wszędzie taka sama</h3><p>Wynika z przyjętej metody, lokalizacji i dokumentacji projektu. Wartość −20°C może być właściwym założeniem dla konkretnego zadania, ale nie jest automatyczną temperaturą całej Polski.</p></article>
        <article class="rk-curve-card"><h3>Najwyższa temperatura nie jest celem</h3><p>Projekt powinien zapewnić wymaganą moc przy możliwie niskim, lecz wystarczającym parametrze oraz z zachowaniem dopuszczalnej temperatury powierzchni i materiałów.</p></article>
        <article class="rk-curve-card"><h3>Strojenie nie zastępuje obliczeń</h3><p>Jeżeli podłoga nie ma wymaganej powierzchni lub mocy, podnoszenie krzywej może przekroczyć ograniczenia, a nadal nie rozwiązać problemu komfortu.</p></article>
      </div>

      <p>Szerszą kolejność obliczeń pokazuje poradnik o <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie ogrzewania podłogowego z pompą ciepła</a>, natomiast dobór geometrii wyjaśnia materiał o <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">planowaniu pętli grzewczych</a>.</p>

      <div class="rk-curve-cta">
        <div class="rk-curve-cta-title">Sterownik może ustawić tylko tak niską temperaturę, na jaką pozwala zaprojektowana podłoga</div>
        <p>Obciążenia pomieszczeń, powierzchnie czynne, rozstaw rur, opory okładzin, długości pętli i przepływy określają temperaturę wody potrzebną w warunkach obliczeniowych. Dopiero ten punkt pozwala świadomie ustawić i później korygować krzywą grzewczą.</p>
        <a class="rk-curve-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki z obliczoną temperaturą zasilania</a>
        <small class="rk-curve-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-dark" id="rk-curve-sources">
      <span class="rk-curve-eyebrow">Ta sama fizyka, inna logika urządzenia</span>
      <h2 class="rk-curve-section-title">Krzywa grzewcza z pompą ciepła i kotłem — co się różni?</h2>
      <p class="rk-curve-lead">Oba źródła mogą korzystać z regulacji pogodowej, lecz różnią się zakresem modulacji, sprawnością przy określonych temperaturach, minimalnym przepływem, pojemnością wodną i reakcją na mały odbiór. Krzywa musi być częścią całej konfiguracji, a nie odizolowanym suwakiem.</p>

      <div class="rk-curve-grid-2">
        <article class="rk-curve-card">
          <h3>Pompa ciepła</h3>
          <ul>
            <li>temperatura zasilania wpływa na warunki pracy i osiąganą sprawność,</li>
            <li>trzeba respektować wymagania minimalnego przepływu i objętości wody,</li>
            <li>ważna jest minimalna moc dostępna w aktualnych warunkach,</li>
            <li>zamknięcie stref może zmniejszyć odbiór i skrócić cykle pracy,</li>
            <li>odszranianie i zabezpieczenia zależą od dokładnego modelu.</li>
          </ul>
        </article>
        <article class="rk-curve-card">
          <h3>Kocioł gazowy</h3>
          <ul>
            <li>regulator może sterować temperaturą wody i mocą palnika,</li>
            <li>znaczenie ma zakres modulacji oraz hydraulika obiegu,</li>
            <li>zbyt mały odbiór również może powodować częste cykle,</li>
            <li>układ mieszający może mieć własną, oddzielną charakterystykę,</li>
            <li>logika styku on/off różni się od komunikacji cyfrowej.</li>
          </ul>
        </article>
      </div>

      <div class="rk-curve-callout"><strong>Nie przepisuj liczby nachylenia pomiędzy urządzeniami.</strong> Nawet przy tym samym budynku dwa sterowniki mogą wymagać innego sposobu wprowadzenia punktów, poziomu krzywej, temperatury bazowej lub wpływu pokojowego. Punktem wspólnym są wymagane temperatury wody, nie nazwa parametru w menu.</div>

      <p>Przy pompie ciepła warto osobno przeanalizować <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">zasadę doboru urządzenia</a>, a przy układach rozdzielonych także rzeczywistą funkcję <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufora ciepła w podłogówce</a>. Bufor nie jest automatycznie wymagany tylko dlatego, że instalacja ma pogodówkę lub termostaty.</p>
    </section>

    <section class="rk-curve-section" id="rk-curve-graphic">
      <span class="rk-curve-eyebrow">Interaktywna grafika edukacyjna</span>
      <h2 class="rk-curve-section-title">Jak czujnik, regulator, źródło i podłoga reagują na pogodę?</h2>
      <p class="rk-curve-lead">Wybierz scenariusz. Sześć niezależnych modułów pokaże, który element mierzy temperaturę, który wyznacza parametr wody, który dostarcza energię oraz dlaczego pomieszczenie nie reaguje w tej samej chwili co elektronika.</p>

      <div class="rk-curve-tool" id="rk-curve-system-tool">
        <div class="rk-curve-tool-head">
          <span class="rk-curve-eyebrow">Od elewacji do temperatury pokoju</span>
          <h3>Prześledź reakcję całego układu</h3>
          <p>Moduły opisują zależności, nie uniwersalne czasy ani parametry. Dokładne sekwencje wynikają z konstrukcji budynku i dokumentacji urządzeń.</p>
        </div>
        <div class="rk-curve-tool-body">
          <div class="rk-curve-graphic-controls" role="group" aria-label="Wybierz scenariusz pracy regulacji pogodowej">
            <button type="button" data-rk-curve-system="colder" aria-pressed="true">Na zewnątrz robi się zimniej</button>
            <button type="button" data-rk-curve-system="sun" aria-pressed="false">Słońce ogrzewa salon</button>
            <button type="button" data-rk-curve-system="high" aria-pressed="false">Krzywa jest za wysoka</button>
            <button type="button" data-rk-curve-system="zones" aria-pressed="false">Większość pętli się zamyka</button>
          </div>

          <div class="rk-curve-hydraulic-grid" aria-live="polite">
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="sensor">
              <span class="rk-curve-hydraulic-number">1</span><h3>Czujnik zewnętrzny</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Rejestruje spadek temperatury</span>
              <p data-rk-curve-component-copy="">Mierzy warunki przy elewacji. Nie mierzy strat budynku ani temperatury posadzki.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="controller">
              <span class="rk-curve-hydraulic-number">2</span><h3>Regulator pogodowy</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Wyznacza wyższą wartość zadaną</span>
              <p data-rk-curve-component-copy="">Korzysta z krzywej, ograniczeń i dodatkowych korekt. Nie naprawia błędnej hydrauliki.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="source">
              <span class="rk-curve-hydraulic-number">3</span><h3>Źródło ciepła</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Podąża do nowej temperatury</span>
              <p data-rk-curve-component-copy="">Moduluje lub cyklicznie pracuje według własnej automatyki, dostępnej mocy i zabezpieczeń.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="flow">
              <span class="rk-curve-hydraulic-number">4</span><h3>Pompa i przepływy</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Transportują energię</span>
              <p data-rk-curve-component-copy="">Rozdział wody zależy od pompy, oporów i nastaw pętli, a nie od samej linii na wykresie.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="floor">
              <span class="rk-curve-hydraulic-number">5</span><h3>Podłoga</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Zmienia emisję z opóźnieniem</span>
              <p data-rk-curve-component-copy="">Woda ogrzewa konstrukcję, która akumuluje energię i przekazuje ją do pomieszczenia.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="room">
              <span class="rk-curve-hydraulic-number">6</span><h3>Pomieszczenie</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Dąży do nowej równowagi</span>
              <p data-rk-curve-component-copy="">Temperatura zależy jednocześnie od podłogi, strat, wentylacji, słońca i zysków wewnętrznych.</p>
            </article>
          </div>

          <div class="rk-curve-graphic-result" id="rk-curve-system-result" role="status" aria-live="polite">
            <strong>Spadek temperatury zewnętrznej zmienia wartość zadaną wody, a nie temperaturę pokoju bezpośrednio.</strong>
            <p>Efekt przechodzi przez źródło, przepływ i akumulującą podłogę. Dlatego regulator może odpowiedzieć natychmiast, lecz nowa równowaga cieplna wymaga czasu.</p>
          </div>
          <div class="rk-curve-tool-disclaimer"><strong>Nie jest to symulator czasowy.</strong> Grafika nie podaje liczby godzin, procentu modulacji ani temperatury wynikowej, ponieważ te wartości wymagają danych konkretnego budynku i urządzeń.</div>
        </div>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-inertia">
      <span class="rk-curve-eyebrow">Elektronika reaguje szybciej niż budynek</span>
      <h2 class="rk-curve-section-title">Bezwładność podłogówki i lokalizacja czujnika zewnętrznego</h2>
      <p class="rk-curve-lead">Czas reakcji nie jest jedną stałą. Zależy od rodzaju systemu, masy i grubości warstw, położenia rur, okładziny, temperatury wody, mocy chwilowej, izolacji oraz zysków w pomieszczeniu.</p>

      <div class="rk-curve-grid-2">
        <article class="rk-curve-card">
          <h3>Co oznacza bezwładność?</h3>
          <p>Po podniesieniu temperatury zasilania część energii najpierw zwiększa temperaturę konstrukcji. Po obniżeniu lub zamknięciu przepływu posadzka nadal oddaje wcześniej zgromadzone ciepło. Dlatego nie należy oceniać korekty po kilku godzinach.</p>
          <p>Szersze wyjaśnienie znajduje się w poradniku o <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej ogrzewania podłogowego</a>.</p>
        </article>
        <article class="rk-curve-card">
          <h3>Gdzie zamontować czujnik?</h3>
          <p>Miejsce należy wybrać według instrukcji producenta: poza bezpośrednim słońcem, wyrzutniami, nawiewami, otwieranymi oknami i lokalnymi źródłami ciepła. Elewacja i wysokość montażu muszą odpowiadać wymaganiom dokładnego urządzenia.</p>
          <p>Nie wpisujemy uniwersalnej ściany ani wysokości, ponieważ obudowa, osłona radiacyjna i zalecenia montażowe różnią się między systemami.</p>
        </article>
      </div>

      <div class="rk-curve-callout"><strong>Do strojenia potrzebny jest stabilny okres, nie sztywne „48 godzin”.</strong> Po zmianie trzeba poczekać wystarczająco długo, aby odróżnić reakcję budynku od krótkiej zmiany pogody, słońca, wietrzenia albo harmonogramu. Czas obserwacji dobiera się do bezwładności i warunków.</div>
    </section>

    <section class="rk-curve-section" id="rk-curve-room-control">
      <span class="rk-curve-eyebrow">Regulacja nadrzędna i lokalne ograniczenie</span>
      <h2 class="rk-curve-section-title">Krzywa grzewcza a termostat pokojowy i sterowanie strefowe</h2>
      <p class="rk-curve-lead">Pogodówka ustala temperaturę wody dla obiegu. Termostat pokojowy może korygować wartość zadaną, zgłaszać zapotrzebowanie albo zamykać przypisaną strefę — zależnie od systemu. Te funkcje trzeba rozdzielić.</p>

      <div class="rk-curve-compare-table" role="table" aria-label="Porównanie regulacji pogodowej i pokojowej">
        <div class="rk-curve-table-row rk-curve-table-head" role="row"><div role="columnheader">Warstwa</div><div role="columnheader">Co kontroluje</div><div role="columnheader">Czego nie zastępuje</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Warstwa" role="cell">Regulator pogodowy</div><div data-label="Kontroluje" role="cell">Wyznacza parametr zasilania w zależności od temperatury zewnętrznej i dodatkowych ustawień.</div><div data-label="Nie zastępuje" role="cell">Projektowych przepływów, równoważenia pętli i mocy powierzchni grzewczej.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Warstwa" role="cell">Wpływ pokojowy</div><div data-label="Kontroluje" role="cell">Może przesuwać wartość zadaną obiegu na podstawie reprezentatywnej temperatury wewnętrznej.</div><div data-label="Nie zastępuje" role="cell">Poprawnej lokalizacji czujnika oraz podstawowej charakterystyki pogodowej.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Warstwa" role="cell">Termostat strefowy</div><div data-label="Kontroluje" role="cell">Otwiera albo zamyka jeden lub kilka zaworów przypisanych do strefy.</div><div data-label="Nie zastępuje" role="cell">Minimalnego przepływu źródła, nastaw pompy i kontroli temperatury wody.</div></div>
      </div>

      <p>Przed strojeniem warto ustalić rolę <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatu w ogrzewaniu podłogowym</a> i przeczytać, kiedy <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe podłogówki</a> pomaga, a kiedy zmienia warunki hydrauliczne. Na czas testów nie należy mechanicznie zdejmować siłowników ani wymuszać otwarcia bez sprawdzenia instrukcji i bezpiecznego trybu urządzeń.</p>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-tuning">
      <span class="rk-curve-eyebrow">Jedna kontrolowana zmiana naraz</span>
      <h2 class="rk-curve-section-title">Jak ustawić krzywą grzewczą krok po kroku?</h2>
      <p class="rk-curve-lead">Celem nie jest najniższy numer w menu. Celem jest najniższa charakterystyka, która przy projektowych przepływach i dopuszczalnych temperaturach zapewnia komfort w całym wymaganym zakresie pogody.</p>

      <div class="rk-curve-steps">
        <article class="rk-curve-step"><h3>Zapisz stan początkowy</h3><p>Zanotuj tryb pracy, punkty lub nachylenie, przesunięcie, minimum, maksimum, granicę grzania, wpływ pokojowy, harmonogram i ustawienia pomp.</p></article>
        <article class="rk-curve-step"><h3>Sprawdź dokumentację sterownika</h3><p>Ustal, co dokładnie oznaczają parametry, której strefy lub obiegu dotyczą i czy urządzenie używa linii, krzywej nieliniowej albo dwóch punktów.</p></article>
        <article class="rk-curve-step"><h3>Potwierdź przepływy projektowe</h3><p>Otwórz wymagane obiegi zgodnie z bezpieczną procedurą i sprawdź <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">nastawy rotametrów</a>. Nie stroi się krzywej na niezrównoważonym rozdzielaczu.</p></article>
        <article class="rk-curve-step"><h3>Usuń zakłócające harmonogramy</h3><p>Na czas obserwacji utrzymuj możliwie stałe wymagania. Zanotuj słońce, kominek, intensywne gotowanie, długie wietrzenie i inne zyski.</p></article>
        <article class="rk-curve-step"><h3>Ustaw punkt startowy</h3><p>Przenieś do sterownika parametry wynikające z projektu oraz instrukcji. Gdy brakuje projektu, użyj ostrożnej wartości zalecanej przez producenta jako punktu do dalszej weryfikacji, nie jako wyniku końcowego.</p></article>
        <article class="rk-curve-step"><h3>Obserwuj temperaturę reprezentatywną</h3><p>Mierz w pomieszczeniu, które nie jest chwilowo dogrzewane słońcem lub urządzeniami i którego pętla ma potwierdzony przepływ.</p></article>
        <article class="rk-curve-step"><h3>Koryguj jeden parametr</h3><p>Zmiana jednocześnie nachylenia, offsetu, harmonogramu i przepływu uniemożliwia ustalenie, która korekta zadziałała.</p></article>
        <article class="rk-curve-step"><h3>Poczekaj na miarodajny efekt</h3><p>Uwzględnij bezwładność oraz stabilność pogody. Porównuj podobne warunki i prowadź dziennik zamiast zmieniać nastawy każdego ranka.</p></article>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-symptoms">
      <span class="rk-curve-eyebrow">Macierz obserwacji, nie automatyczna diagnoza</span>
      <h2 class="rk-curve-section-title">Jak korygować krzywą na podstawie objawów?</h2>
      <p class="rk-curve-lead">Objaw można powiązać z geometrią charakterystyki dopiero po sprawdzeniu pomiarów, przepływów, harmonogramów i ograniczeń. Tabela pokazuje kierunek analizy, a nie gotową nastawę dla nieznanej instalacji.</p>

      <div class="rk-curve-diagnostic-table" role="table" aria-label="Objawy i możliwe korekty krzywej grzewczej">
        <div class="rk-curve-table-row rk-curve-table-head" role="row"><div role="columnheader">Zaobserwowany stan</div><div role="columnheader">Możliwy związek z krzywą</div><div role="columnheader">Co najpierw wykluczyć</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Za chłodno przy odwilży i mrozie</div><div data-label="Krzywa" role="cell">Cały przebieg może być ustawiony za nisko; do analizy jest przesunięcie lub oba punkty.</div><div data-label="Najpierw wyklucz" role="cell">Błędny pomiar, harmonogram, zamknięte zawory, zbyt małe przepływy i ograniczenie maksymalnej temperatury.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Dobrze przy dodatniej temperaturze, chłodno podczas mrozu</div><div data-label="Krzywa" role="cell">Zimny punkt może być za niski albo charakterystyka za płaska.</div><div data-label="Najpierw wyklucz" role="cell">Niedobór mocy podłogi, ograniczenie źródła, spadek przepływu i nieprawidłowy punkt obliczeniowy.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Dobrze przy odwilży, za ciepło podczas mrozu</div><div data-label="Krzywa" role="cell">Zimny punkt może być za wysoki albo charakterystyka zbyt stroma.</div><div data-label="Najpierw wyklucz" role="cell">Zyski słoneczne, kominek, zmianę sposobu użytkowania i silny wpływ regulatora pokojowego.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Za ciepło głównie w łagodną pogodę</div><div data-label="Krzywa" role="cell">Łagodny punkt, minimum zasilania lub granica grzania mogą być ustawione za wysoko.</div><div data-label="Najpierw wyklucz" role="cell">Zyski wewnętrzne, nieprawidłowy czujnik zewnętrzny i pracę dodatkowego źródła.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Jedne pokoje zimne, inne przegrzane</div><div data-label="Krzywa" role="cell">Jedna wspólna krzywa rzadko jest jedyną przyczyną różnicy pomieszczeń.</div><div data-label="Najpierw wyklucz" role="cell">OZC pomieszczeń, powierzchnie czynne, rozstaw, okładziny, przepływy i pomylone pętle.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Źródło często się włącza i wyłącza</div><div data-label="Krzywa" role="cell">Za wysoka wartość zadana może pogarszać sytuację, ale nie jest jedyną przyczyną.</div><div data-label="Najpierw wyklucz" role="cell">Minimalną moc, przepływ, objętość wody, zamykanie stref, histerezę i logikę sterowania.</div></div>
      </div>

      <div class="rk-curve-note"><strong>Nie koryguj całej instalacji pod jeden chwilowo zimny pokój.</strong> Jeżeli pozostałe pomieszczenia mają poprawną temperaturę, najpierw sprawdź ten obieg i możliwość oddania wymaganej mocy.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-hydraulics">
      <span class="rk-curve-eyebrow">Krzywa mówi „jaka temperatura”, hydraulika — „czy energia dotrze”</span>
      <h2 class="rk-curve-section-title">Co sprawdzić w hydraulice przed zmianą ustawień?</h2>
      <p class="rk-curve-lead">Podniesienie temperatury zasilania nie skompensuje dowolnie małego przepływu, zapowietrzenia, zabrudzenia, zablokowanego zaworu lub nieprawidłowej pracy pompy. Najpierw trzeba oddzielić błąd dystrybucji od błędu regulatora.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Przepływy pętli</h3><p>Porównaj odczyty z projektem przy znanych stanach zaworów. Nie ustawiaj jednakowego przepływu na każdej pętli i nie przyjmuj jednego zakresu dla całego domu.</p></article>
        <article class="rk-curve-card"><h3>Pompa obiegowa</h3><p>Sprawdź punkt pracy, tryb regulacji oraz zachowanie przy zmianie liczby otwartych gałęzi. Pomaga poradnik o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">doborze pompy obiegowej do podłogówki</a>.</p></article>
        <article class="rk-curve-card"><h3>Stan zaworów</h3><p>Potwierdź wkładki, siłowniki i przypisanie stref. Czas ruchu <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> nie oznacza natychmiastowej zmiany przepływu.</p></article>
        <article class="rk-curve-card"><h3>Temperatury rzeczywiste</h3><p>Odczytaj zasilanie i powrót w ustalonym stanie. Wartość zadana regulatora nie zawsze jest równa chwilowej temperaturze zmierzonej na przewodzie.</p></article>
        <article class="rk-curve-card"><h3>Filtry i powietrze</h3><p>Zabrudzenie, powietrze i niedostateczne ciśnienie statyczne mogą ograniczyć obieg oraz powodować hałas, którego nie naprawi zmiana nachylenia.</p></article>
        <article class="rk-curve-card"><h3>Stan częściowego obciążenia</h3><p>Jeśli termostaty zamykają pętle, sprawdź minimalny czynny przepływ i odbiór energii. Nie zakładaj automatycznie, że potrzebny jest bypass lub bufor.</p></article>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-flooring">
      <span class="rk-curve-eyebrow">Opór okładziny zmienia możliwości emitera</span>
      <h2 class="rk-curve-section-title">Jak okładzina podłogi wpływa na krzywą?</h2>
      <p class="rk-curve-lead">Większy opór pomiędzy jastrychem a pomieszczeniem może wymagać wyższej temperatury średniej czynnika do przekazania tej samej mocy. Nie oznacza to jednak stałej korekty o 2, 3 lub 4 K dla każdej zamiany materiału.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Płytki i kamień</h3><p>Zwykle tworzą układ o małym oporze, lecz liczą się również klej, grubość, rozstaw i konstrukcja pod spodem.</p></article>
        <article class="rk-curve-card"><h3>Panele i winyl</h3><p>Należy zsumować opór produktu i podkładu oraz sprawdzić dopuszczenie producenta do ogrzewania podłogowego i limit temperatury.</p></article>
        <article class="rk-curve-card"><h3>Drewno</h3><p>Gatunek, konstrukcja deski, grubość, klejenie i wymagania producenta wpływają na opór oraz ograniczenia. Zobacz <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">dobór drewna na ogrzewanie podłogowe</a>.</p></article>
      </div>

      <p>Jeżeli wykończenie zostanie zmienione po wykonaniu projektu, trzeba ponownie sprawdzić wymaganą moc, temperaturę powierzchni oraz parametr wody. Szczegóły opisuje poradnik o tym, <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>.</p>

      <div class="rk-curve-warning"><strong>Nie podnoś automatycznie przesunięcia krzywej po zmianie okładziny.</strong> Najpierw sprawdź jej deklarowany opór, dopuszczalną temperaturę, zapas mocy powierzchni i warunki gwarancji.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-efficiency">
      <span class="rk-curve-eyebrow">Najniższa skuteczna, nie najniższa możliwa</span>
      <h2 class="rk-curve-section-title">Czy niższa krzywa zawsze oznacza niższe rachunki?</h2>
      <p class="rk-curve-lead">Niższa temperatura wody może poprawić warunki pracy źródła i ograniczyć straty dystrybucji, ale tylko wtedy, gdy instalacja nadal pokrywa zapotrzebowanie. Nie istnieje jeden procent wzrostu COP lub spadku kosztów przypisany każdemu obniżeniu o 1°C.</p>

      <div class="rk-curve-compare-table" role="table" aria-label="Wpływ obniżania krzywej na sprawność i komfort">
        <div class="rk-curve-table-row rk-curve-table-head" role="row"><div role="columnheader">Sytuacja</div><div role="columnheader">Możliwy efekt</div><div role="columnheader">Ryzyko</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Sytuacja" role="cell">Krzywa była zawyżona</div><div data-label="Efekt" role="cell">Mniej przegrzewania, łagodniejsza praca źródła i mniejsza potrzeba zamykania stref.</div><div data-label="Ryzyko" role="cell">Zbyt szybka korekta może zostać błędnie oceniona przed ustabilizowaniem podłogi.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Sytuacja" role="cell">Krzywa jest już blisko minimum</div><div data-label="Efekt" role="cell">Dalsze obniżenie może nie dać istotnej korzyści albo wydłużyć pracę przy podobnym zużyciu.</div><div data-label="Ryzyko" role="cell">Niedogrzanie najtrudniejszego pomieszczenia i uruchomienie droższego źródła pomocniczego.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Sytuacja" role="cell">Przepływy są nieprawidłowe</div><div data-label="Efekt" role="cell">Zmiana krzywej może przesunąć temperaturę całego domu, ale nie wyrówna dystrybucji.</div><div data-label="Ryzyko" role="cell">Przegrzanie poprawnych pomieszczeń w próbie dogrzania jednego słabego obiegu.</div></div>
      </div>

      <div class="rk-curve-answer"><span class="rk-curve-answer-label">Dlaczego nie dodajemy kalkulatora oszczędności?</span><p><strong>Rzeczywisty wynik zależy od modelu źródła, temperatur dolnego i górnego źródła, pogody, taryfy, modulacji, hydrauliki, nastaw oraz zachowania użytkowników. Kalkulator mnożący rachunek przez stałe 2,5% na każdy stopień tworzyłby pozorną dokładność.</strong></p></div>
    </section>

    <section class="rk-curve-section" id="rk-curve-errors">
      <span class="rk-curve-eyebrow">Błędy, które zniekształcają wynik strojenia</span>
      <h2 class="rk-curve-section-title">Najczęstsze błędy podczas strojenia krzywej</h2>
      <div class="rk-curve-mistakes">
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Kopiowanie numeru z internetu</strong><p>Nie wiadomo, czy urządzenie używa tej samej skali, punktu bazowego i ograniczeń.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Zmiana kilku ustawień jednocześnie</strong><p>Nie da się ustalić, czy zadziałało nachylenie, offset, przepływ, harmonogram czy termostat.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Ocena po kilku godzinach</strong><p>Posadzka i budynek mogą nadal reagować na poprzedni stan oraz zmianę pogody.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Strojenie przy pozamykanych pętlach</strong><p>Termostaty zasłaniają reakcję obiegu i jednocześnie zmieniają przepływ widziany przez źródło.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Brak zapisu ustawień</strong><p>Po kilku korektach użytkownik nie zna wartości bazowych i nie potrafi wrócić do stabilnego stanu.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Korygowanie pod jeden pokój</strong><p>Problem lokalny może wynikać z projektu pętli, przepływu, okładziny albo wyjątkowych strat.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Ignorowanie limitów materiałów</strong><p>Podnoszenie temperatury bez sprawdzenia podłogi i okładziny może naruszyć ograniczenia techniczne.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Mylenie zadanej z rzeczywistą</strong><p>Temperatura na ekranie, zasilaniu, powrocie i powierzchni podłogi opisuje różne miejsca układu.</p></div></div>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-checklist">
      <span class="rk-curve-eyebrow">Przed pierwszą i każdą kolejną korektą</span>
      <h2 class="rk-curve-section-title">Lista kontrolna ustawienia krzywej</h2>
      <p class="rk-curve-lead">Jeśli brakuje kilku odpowiedzi, najpierw uzupełnij dokumentację lub diagnostykę. Krzywa nie powinna być pierwszym narzędziem do naprawiania każdego problemu z ogrzewaniem.</p>

      <div class="rk-curve-checklist">
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Model i instrukcja regulatora</strong><br>Czy wiadomo, jak urządzenie definiuje krzywą, poziom i punkty?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Temperatura obliczeniowa</strong><br>Czy pochodzi z projektu dla lokalizacji i przyjętej metody?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Projektowa temperatura zasilania</strong><br>Czy wynika z OZC, konstrukcji podłogi i wymaganej mocy?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Minimum i maksimum</strong><br>Czy ograniczenia są zgodne z podłogą, okładziną i źródłem?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Granica grzania</strong><br>Czy jej wpływ na komfort w okresie przejściowym został sprawdzony?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Czujnik zewnętrzny</strong><br>Czy jest zamontowany i odczytuje zgodnie z instrukcją?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Przepływy pętli</strong><br>Czy odpowiadają wartościom projektowym przy znanym stanie zaworów?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Pompa obiegowa</strong><br>Czy jej tryb i punkt pracy odpowiadają aktualnej hydraulice?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Termostaty i siłowniki</strong><br>Czy ich wpływ jest znany i kontrolowany podczas obserwacji?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Pomieszczenie referencyjne</strong><br>Czy pomiar nie jest chwilowo zakłócany słońcem lub urządzeniami?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Stabilne warunki</strong><br>Czy od ostatniej korekty upłynął czas odpowiedni dla konstrukcji?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Jedna zmiana naraz</strong><br>Czy pozostałe parametry pozostają niezmienione podczas testu?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Dziennik obserwacji</strong><br>Czy zapisujesz pogodę, temperatury, zmieniony parametr i czas reakcji?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Możliwość powrotu</strong><br>Czy zapisano stan bazowy i wiadomo, jak bezpiecznie go przywrócić?</div></div>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-conclusions">
      <span class="rk-curve-eyebrow">Wnioski projektanta</span>
      <h2 class="rk-curve-section-title">Wnioski — jak znaleźć najniższą skuteczną krzywą?</h2>
      <p class="rk-curve-lead">Najpierw wyznacz projektowy punkt pracy podłogi, potem odwzoruj go w logice konkretnego sterownika, sprawdź przepływy i dopiero wtedy wykonuj niewielkie korekty. Najniższa skuteczna krzywa to taka, która zapewnia komfort również w trudnych warunkach, bez przekraczania ograniczeń i bez destabilizowania źródła.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Projekt wyznacza granice</h3><p>OZC, geometria i okładzina określają, jaką moc podłoga może oddać przy dopuszczalnych temperaturach.</p></article>
        <article class="rk-curve-card"><h3>Sterownik odwzorowuje zależność</h3><p>Nachylenie, offset albo dwa punkty są tylko sposobem zapisania wymaganej charakterystyki w konkretnym urządzeniu.</p></article>
        <article class="rk-curve-card"><h3>Budynek pozwala ją dostroić</h3><p>Obserwacja w stabilnych warunkach pomaga skorygować model, ale nie zastępuje równoważenia i danych projektowych.</p></article>
      </div>

      <div class="rk-curve-answer"><span class="rk-curve-answer-label">Reguła końcowa</span><p><strong>Nie szukaj w internecie jednej „najlepszej krzywej do podłogówki”. Szukaj wymaganych temperatur wody dla własnego budynku, sprawdź sposób ich wprowadzania w sterowniku i zmieniaj tylko jeden parametr po uzyskaniu miarodajnej obserwacji.</strong></p></div>

      <div class="rk-curve-cta">
        <div class="rk-curve-cta-title">Zaprojektuj temperaturę wody, pętle i przepływy jako jeden układ</div>
        <p>Kompletny projekt ogrzewania podłogowego łączy obciążenia pomieszczeń, powierzchnie czynne, rozstaw, długości pętli, przepływy, opory, nastawy rozdzielacza i projektową temperaturę zasilania. Dzięki temu krzywa startuje od danych, a nie od losowego numeru.</p>
        <a class="rk-curve-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
        <small class="rk-curve-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-references">
      <span class="rk-curve-eyebrow">Podstawa techniczna i granice narzędzia</span>
      <h2 class="rk-curve-section-title">Źródła i zakres odpowiedzialności</h2>
      <p class="rk-curve-lead">Normy dotyczące systemów płaszczyznowych opisują wyznaczanie mocy, projektowanie i wymiarowanie, a norma automatyki budynkowej porządkuje funkcje sterowania. Nie ustanawiają jednego nachylenia, offsetu, czasu oczekiwania ani temperatury zasilania dla każdego domu.</p>

      <div class="rk-curve-source-grid">
        <article class="rk-curve-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — określanie mocy systemów płaszczyznowych</a><p>Oficjalna karta normy opisującej procedury wyznaczania strumienia ciepła, temperatur i zależności charakterystycznych wodnych systemów powierzchniowych.</p></article>
        <article class="rk-curve-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 normy ustanawiającej metodę projektowania oraz wymiarowania wbudowanych systemów ogrzewania i chłodzenia.</p></article>
        <article class="rk-curve-source-card"><a href="https://www.iso.org/standard/65883.html" target="_blank" rel="nofollow noopener noreferrer">ISO 52120-1:2021 — automatyka budynkowa i efektywność energetyczna</a><p>Oficjalna karta normy porządkującej funkcje regulacji oraz metody oceny ich wpływu. We wrześniu 2026 r. dokument jest oznaczony przez ISO jako przeznaczony do rewizji.</p></article>
        <article class="rk-curve-source-card"><a href="https://library.mitsubishielectric.co.uk/pdf/book/Ecodan_FTC6_PAC-IF07_1-3_B-E_Instruction_Book_BT79R180H01" target="_blank" rel="nofollow noopener noreferrer">Mitsubishi Electric — dokumentacja regulatora Ecodan FTC6</a><p>Przykład oficjalnej instrukcji konkretnego systemu. Nastawy, tryby, ograniczenia i sekwencje należy zawsze sprawdzać dla dokładnego modelu urządzenia.</p></article>
      </div>

      <div class="rk-curve-responsibility">
        <p><strong>Zakres odpowiedzialności:</strong> artykuł, wykres i grafika mają charakter edukacyjny. Nie są projektem wykonawczym, konfiguracją serwisową, instrukcją producenta, pomiarem instalacji ani gwarancją temperatury, sprawności lub oszczędności.</p>
        <p><strong>Model wykresu:</strong> narzędzie korzysta z liniowej interpolacji dwóch punktów i jawnych ograniczeń. Algorytm rzeczywistego regulatora może być nieliniowy, używać uśredniania, korekty pokojowej, prognozy, adaptacji lub innych funkcji.</p>
        <p><strong>Aktualność:</strong> stan techniczny materiału zweryfikowano 10 września 2026 r. Status norm i dokumentacja urządzeń mogą ulec zmianie.</p>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-faq">
      <span class="rk-curve-eyebrow">Najczęstsze pytania inwestorów i instalatorów</span>
      <h2 class="rk-curve-section-title">FAQ — krzywa grzewcza w podłogówce</h2>
      <div class="rk-curve-faq">
        <details><summary>Jaka krzywa grzewcza jest najlepsza do ogrzewania podłogowego?</summary><div class="rk-curve-faq-answer"><p>Nie istnieje jedna najlepsza wartość. Krzywa musi odpowiadać projektowemu obciążeniu budynku, mocy podłogi, okładzinie, przepływom i algorytmowi konkretnego sterownika. Wartość startowa z instrukcji wymaga późniejszej weryfikacji.</p></div></details>
        <details><summary>Co oznacza krzywa grzewcza 0,3?</summary><div class="rk-curve-faq-answer"><p>Bez wskazania producenta i pozostałych ustawień nie da się tego jednoznacznie określić. Liczba może opisywać nachylenie według własnego modelu urządzenia, a wynik zależy również od poziomu, temperatury bazowej, minimum, maksimum i wpływu pokojowego.</p></div></details>
        <details><summary>Jak ustawić krzywą grzewczą przy pompie ciepła i podłogówce?</summary><div class="rk-curve-faq-answer"><p>Należy zacząć od projektowej temperatury zasilania przy obliczeniowej temperaturze zewnętrznej, odwzorować ją zgodnie z instrukcją regulatora, sprawdzić przepływy i obserwować budynek w stabilnych warunkach. Korekty wykonuje się pojedynczo i z zachowaniem wymagań urządzenia.</p></div></details>
        <details><summary>Czym różni się nachylenie od przesunięcia krzywej?</summary><div class="rk-curve-faq-answer"><p>Nachylenie zmienia różnicę pomiędzy zimną i łagodną częścią charakterystyki. Przesunięcie podnosi albo obniża cały przebieg w przybliżeniu równolegle. Dokładny sposób realizacji obu funkcji trzeba sprawdzić w instrukcji sterownika.</p></div></details>
        <details><summary>Kiedy zwiększyć nachylenie krzywej grzewczej?</summary><div class="rk-curve-faq-answer"><p>Można je analizować, gdy przy łagodnej pogodzie jest poprawnie, a niedobór pojawia się wraz z silnym mrozem. Najpierw trzeba wykluczyć brak mocy podłogi, niewłaściwy przepływ, ograniczenie źródła, błędny czujnik i zamknięte pętle.</p></div></details>
        <details><summary>Kiedy zmienić przesunięcie krzywej?</summary><div class="rk-curve-faq-answer"><p>Przesunięcie może być właściwym kierunkiem, gdy podobne odchylenie temperatury występuje w szerokim zakresie pogody. Nie należy jednak podawać uniwersalnej korekty w kelwinach bez obserwacji i znajomości algorytmu urządzenia.</p></div></details>
        <details><summary>Dlaczego podłoga jest chłodna w dotyku, mimo że w domu jest ciepło?</summary><div class="rk-curve-faq-answer"><p>W dobrze ocieplonym budynku podłoga może potrzebować niewielkiej nadwyżki temperatury ponad pomieszczenie. Jeżeli bilans cieplny jest zachowany, powierzchnia nie musi być wyraźnie ciepła w dotyku. Odczucie nie jest pomiarem mocy instalacji.</p></div></details>
        <details><summary>Czy można ustawić osobną krzywą dla łazienki?</summary><div class="rk-curve-faq-answer"><p>Pojedyncza pętla na wspólnym obiegu zwykle korzysta z tej samej temperatury zasilania. Oddzielna krzywa wymaga niezależnie regulowanego obiegu lub funkcji przewidzianej przez system. Komfort łazienki powinien być uwzględniony przede wszystkim w projekcie powierzchni i mocy.</p></div></details>
        <details><summary>Czy termostaty pokojowe wykluczają regulację pogodową?</summary><div class="rk-curve-faq-answer"><p>Nie. Mogą pełnić funkcję korekty, ograniczenia lokalnego albo sygnału zapotrzebowania. Trzeba jednak sprawdzić, czy zamykanie pętli nie narusza wymaganego przepływu i czy termostaty nie maskują zawyżonej krzywej.</p></div></details>
        <details><summary>Jak długo czekać po zmianie krzywej?</summary><div class="rk-curve-faq-answer"><p>Nie ma jednego czasu dla każdej podłogi. Należy uwzględnić bezwładność konstrukcji i stabilność warunków. Miarodajna ocena wymaga, aby efekt poprzedniej nastawy nie mieszał się z krótką zmianą pogody, nasłonecznienia lub sposobu użytkowania.</p></div></details>
      </div>
    </section>

    <section class="rk-curve-author" id="rk-curve-author">
      <span class="rk-curve-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-curve-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-curve-author-layout">
        <aside class="rk-curve-author-side">
          <div class="rk-curve-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-curve-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-curve-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-curve-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-curve-author-main">
          <div class="rk-curve-author-quote">„Krzywa grzewcza nie jest numerem do skopiowania. Jest sposobem odwzorowania temperatur wody, których potrzebuje konkretny budynek i konkretnie zaprojektowana podłoga.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały techniczne dla inwestorów i wykonawców. Łączy obciążenia pomieszczeń, konstrukcję przegród, powierzchnie czynne, rozstawy, temperatury wody, przepływy i wymagania źródła ciepła.</p>
          <p>W tej aktualizacji usunięto uniwersalne nachylenia przypisane do klas budynku, stały procent poprawy SCOP, uproszczone obliczenie temperatury z powierzchni, jedną liczbę przepływu dla pomp ciepła oraz obowiązkowy bufor przy sterowaniu strefowym.</p>
          <p>Interaktywny wykres jawnie wykorzystuje dwa punkty i ograniczenia, dzięki czemu nie udaje algorytmu konkretnej marki. Grafika edukacyjna rozdziela pomiar pogody, obliczenie wartości zadanej, pracę źródła, hydraulikę, akumulację podłogi i efekt w pomieszczeniu.</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-curve-author-facts">
            <div class="rk-curve-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, regulacja pogodowa i hydraulika</div>
            <div class="rk-curve-author-fact"><strong>Metoda pracy</strong>OZC, projektowe temperatury, przepływy i dokumentacja urządzeń</div>
            <div class="rk-curve-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 10 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>


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

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

  var svgNamespace = "http://www.w3.org/2000/svg";
  var compareMode = "base";

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

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

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

  function formatTemperature(value, digits) {
    var text = formatNumber(value, digits);
    return text.replace("-", "−") + "°C";
  }

  function setPressed(buttons, activeButton) {
    buttons.forEach(function (button) {
      button.setAttribute("aria-pressed", button === activeButton ? "true" : "false");
    });
  }

  function svgElement(name, attributes, copy) {
    var element = document.createElementNS(svgNamespace, name);
    Object.keys(attributes).forEach(function (key) {
      element.setAttribute(key, String(attributes[key]));
    });
    if (typeof copy === "string") {
      element.textContent = copy;
    }
    return element;
  }

  function getCurveData() {
    return {
      coldOutdoor: numberValue("rk-curve-cold-outdoor", -20),
      coldSupply: numberValue("rk-curve-cold-supply", 35),
      mildOutdoor: numberValue("rk-curve-mild-outdoor", 10),
      mildSupply: numberValue("rk-curve-mild-supply", 24),
      minSupply: numberValue("rk-curve-min-supply", 22),
      maxSupply: numberValue("rk-curve-max-supply", 40),
      heatingLimit: numberValue("rk-curve-heating-limit", 16),
      currentOutdoor: numberValue("rk-curve-current-outdoor", -10)
    };
  }

  function adjustedSupplies(data, mode) {
    var cold = data.coldSupply;
    var mild = data.mildSupply;
    if (mode === "steeper") {
      cold += 2;
    }
    if (mode === "flatter") {
      cold -= 2;
    }
    if (mode === "up") {
      cold += 2;
      mild += 2;
    }
    if (mode === "down") {
      cold -= 2;
      mild -= 2;
    }
    return { cold: cold, mild: mild };
  }

  function rawCurveValue(outdoor, data, mode) {
    var supplies = adjustedSupplies(data, mode);
    var span = data.mildOutdoor - data.coldOutdoor;
    var ratio = (outdoor - data.coldOutdoor) / span;
    return supplies.cold + ratio * (supplies.mild - supplies.cold);
  }

  function curveValue(outdoor, data, mode) {
    var raw = rawCurveValue(outdoor, data, mode);
    var limited = clamp(raw, data.minSupply, data.maxSupply);
    var state = "linear";
    if (raw < data.minSupply) {
      state = "minimum";
    }
    if (raw > data.maxSupply) {
      state = "maximum";
    }
    if (outdoor >= data.heatingLimit) {
      state = "off";
    }
    return {
      raw: raw,
      limited: limited,
      state: state,
      off: state === "off"
    };
  }

  function stateLabel(state) {
    if (state === "minimum") {
      return "Ograniczenie minimum";
    }
    if (state === "maximum") {
      return "Ograniczenie maksimum";
    }
    if (state === "off") {
      return "Ogrzewanie wyłączone";
    }
    return "Zakres liniowy";
  }

  function modeLabel(mode) {
    if (mode === "steeper") {
      return "większe nachylenie";
    }
    if (mode === "flatter") {
      return "mniejsze nachylenie";
    }
    if (mode === "up") {
      return "przesunięcie +2 K";
    }
    if (mode === "down") {
      return "przesunięcie −2 K";
    }
    return "krzywa bazowa";
  }

  function renderChart(data) {
    var svg = document.getElementById("rk-curve-svg");
    var left = 68;
    var right = 770;
    var top = 28;
    var bottom = 365;
    var xMinimum = Math.min(-25, Math.floor(data.coldOutdoor / 5) * 5);
    var xMaximum = 20;
    var yMinimum = Math.min(15, Math.floor((data.minSupply - 3) / 5) * 5);
    var highestSupply = Math.max(data.maxSupply, data.coldSupply + 4, data.mildSupply + 4);
    var yMaximum = Math.max(45, Math.ceil(highestSupply / 5) * 5);
    var pathEnd = Math.min(xMaximum, data.heatingLimit);
    var x;
    var y;

    function chartX(value) {
      return left + (value - xMinimum) / (xMaximum - xMinimum) * (right - left);
    }

    function chartY(value) {
      return bottom - (value - yMinimum) / (yMaximum - yMinimum) * (bottom - top);
    }

    function addPath(mode, cssClass) {
      var points = [];
      var outdoor = xMinimum;
      var value;
      while (outdoor < pathEnd) {
        value = clamp(rawCurveValue(outdoor, data, mode), data.minSupply, data.maxSupply);
        points.push((points.length === 0 ? "M" : "L") + chartX(outdoor).toFixed(2) + " " + chartY(value).toFixed(2));
        outdoor += 0.5;
      }
      value = clamp(rawCurveValue(pathEnd, data, mode), data.minSupply, data.maxSupply);
      points.push((points.length === 0 ? "M" : "L") + chartX(pathEnd).toFixed(2) + " " + chartY(value).toFixed(2));
      svg.appendChild(svgElement("path", { "class": cssClass, d: points.join(" ") }));
    }

    function addPoint(outdoor, supply, cssClass, radius) {
      if (outdoor < xMinimum) {
        return;
      }
      if (outdoor > xMaximum) {
        return;
      }
      svg.appendChild(svgElement("circle", {
        "class": cssClass,
        cx: chartX(outdoor),
        cy: chartY(supply),
        r: radius
      }));
    }

    if (!svg) {
      return;
    }
    svg.replaceChildren();
    svg.appendChild(svgElement("title", { id: "rk-curve-svg-title" }, "Interaktywny wykres krzywej grzewczej"));
    svg.appendChild(svgElement("desc", { id: "rk-curve-svg-desc" }, "Bazowa i opcjonalna porównawcza temperatura zasilania w zależności od temperatury zewnętrznej."));

    x = Math.ceil(xMinimum / 5) * 5;
    while (x <= xMaximum) {
      svg.appendChild(svgElement("line", {
        "class": "rk-curve-chart-grid-line",
        x1: chartX(x),
        y1: top,
        x2: chartX(x),
        y2: bottom
      }));
      svg.appendChild(svgElement("text", {
        "class": "rk-curve-chart-tick",
        x: chartX(x),
        y: bottom + 23,
        "text-anchor": "middle"
      }, String(x).replace("-", "−")));
      x += 5;
    }

    y = Math.ceil(yMinimum / 5) * 5;
    while (y <= yMaximum) {
      svg.appendChild(svgElement("line", {
        "class": "rk-curve-chart-grid-line",
        x1: left,
        y1: chartY(y),
        x2: right,
        y2: chartY(y)
      }));
      svg.appendChild(svgElement("text", {
        "class": "rk-curve-chart-tick",
        x: left - 12,
        y: chartY(y) + 4,
        "text-anchor": "end"
      }, String(y)));
      y += 5;
    }

    svg.appendChild(svgElement("line", {
      "class": "rk-curve-chart-axis",
      x1: left,
      y1: bottom,
      x2: right,
      y2: bottom
    }));
    svg.appendChild(svgElement("line", {
      "class": "rk-curve-chart-axis",
      x1: left,
      y1: top,
      x2: left,
      y2: bottom
    }));

    if (data.heatingLimit >= xMinimum) {
      if (data.heatingLimit <= xMaximum) {
        svg.appendChild(svgElement("line", {
          "class": "rk-curve-limit-line",
          x1: chartX(data.heatingLimit),
          y1: top,
          x2: chartX(data.heatingLimit),
          y2: bottom
        }));
        svg.appendChild(svgElement("text", {
          "class": "rk-curve-limit-label",
          x: chartX(data.heatingLimit) - 7,
          y: top + 16,
          "text-anchor": "end"
        }, "granica grzania"));
      }
    }

    svg.appendChild(svgElement("line", {
      "class": "rk-curve-current-guide",
      x1: chartX(clamp(data.currentOutdoor, xMinimum, xMaximum)),
      y1: top,
      x2: chartX(clamp(data.currentOutdoor, xMinimum, xMaximum)),
      y2: bottom
    }));

    addPath("base", "rk-curve-system-path");
    if (compareMode !== "base") {
      addPath(compareMode, "rk-curve-device-path");
    }

    addPoint(data.coldOutdoor, clamp(data.coldSupply, data.minSupply, data.maxSupply), "rk-curve-design-point", 6);
    addPoint(data.mildOutdoor, clamp(data.mildSupply, data.minSupply, data.maxSupply), "rk-curve-design-point", 6);

    var currentBase = curveValue(data.currentOutdoor, data, "base");
    if (!currentBase.off) {
      addPoint(data.currentOutdoor, currentBase.limited, "rk-curve-operating-point", 7);
    }

    svg.appendChild(svgElement("text", {
      "class": "rk-curve-chart-label",
      x: (left + right) / 2,
      y: 415,
      "text-anchor": "middle"
    }, "Temperatura zewnętrzna [°C]"));
    svg.appendChild(svgElement("text", {
      "class": "rk-curve-chart-label",
      x: 17,
      y: (top + bottom) / 2,
      "text-anchor": "middle",
      transform: "rotate(-90 17 " + (top + bottom) / 2 + ")"
    }, "Temperatura zasilania [°C]"));
  }

  function renderCurve() {
    var data = getCurveData();
    var status = document.getElementById("rk-curve-chart-status");
    var currentLabel = document.getElementById("rk-curve-current-label");
    var baseResult = curveValue(data.currentOutdoor, data, "base");
    var compareResult = curveValue(data.currentOutdoor, data, compareMode);
    var resultCompare = document.getElementById("rk-curve-result-compare");
    var compareLegend = document.getElementById("rk-curve-compare-legend");
    var equationCopy = document.getElementById("rk-curve-equation-copy");
    var valid = true;

    if (data.coldOutdoor >= data.mildOutdoor) {
      valid = false;
    }
    if (data.minSupply > data.maxSupply) {
      valid = false;
    }

    if (currentLabel) {
      currentLabel.textContent = formatTemperature(data.currentOutdoor, 0);
    }
    document.getElementById("rk-curve-result-outdoor").textContent = formatTemperature(data.currentOutdoor, 0);

    status.classList.remove("is-bad");
    status.classList.remove("is-warning");
    status.classList.remove("is-good");

    if (!valid) {
      document.getElementById("rk-curve-result-base").textContent = "—";
      resultCompare.textContent = "—";
      document.getElementById("rk-curve-result-state").textContent = "Popraw dane";
      equationCopy.textContent = "Zimny punkt zewnętrzny musi być niższy od łagodnego, a minimum zasilania nie może przekraczać maksimum.";
      status.classList.add("is-bad");
      status.textContent = "Nie można zbudować charakterystyki. Sprawdź kolejność temperatur zewnętrznych oraz ograniczenia temperatury zasilania.";
      return;
    }

    if (baseResult.off) {
      document.getElementById("rk-curve-result-base").textContent = "wyłączone";
    } else {
      document.getElementById("rk-curve-result-base").textContent = formatTemperature(baseResult.limited, 1);
    }
    document.getElementById("rk-curve-result-state").textContent = stateLabel(baseResult.state);

    if (compareMode === "base") {
      resultCompare.textContent = "—";
      compareLegend.classList.add("rk-curve-is-hidden");
    } else {
      compareLegend.classList.remove("rk-curve-is-hidden");
      if (compareResult.off) {
        resultCompare.textContent = "wyłączone";
      } else {
        resultCompare.textContent = formatTemperature(compareResult.limited, 1);
      }
    }

    if (baseResult.off) {
      equationCopy.textContent = "Analizowana temperatura osiągnęła granicę grzania. Model oznacza obieg jako wyłączony; rzeczywisty regulator może stosować histerezę, uśrednianie lub inną logikę.";
    } else {
      equationCopy.textContent = "Interpolacja daje " + formatTemperature(baseResult.raw, 1) + ". Po zastosowaniu minimum " + formatTemperature(data.minSupply, 1) + " i maksimum " + formatTemperature(data.maxSupply, 1) + " wynik wynosi " + formatTemperature(baseResult.limited, 1) + ".";
    }

    if (data.coldSupply <= data.mildSupply) {
      status.classList.add("is-warning");
      status.textContent = "Dane tworzą nietypową charakterystykę: temperatura zasilania nie spada wraz z ociepleniem. Sprawdź wpisane punkty i instrukcję regulatora.";
    } else {
      status.classList.add("is-good");
      status.textContent = "Dane tworzą malejącą charakterystykę. Wybrany wariant „" + modeLabel(compareMode) + "” pokazuje zmianę geometrii, a nie gotową nastawę konkretnej marki.";
    }

    renderChart(data);
  }

  var systemStates = {
    colder: {
      resultTitle: "Spadek temperatury zewnętrznej zmienia wartość zadaną wody, a nie temperaturę pokoju bezpośrednio.",
      resultCopy: "Efekt przechodzi przez źródło, przepływ i akumulującą podłogę. Regulator może odpowiedzieć od razu, lecz nowa równowaga cieplna budynku wymaga czasu.",
      components: {
        sensor: { value: "Rejestruje spadek temperatury", copy: "Mierzy warunki przy elewacji. Nie mierzy strat budynku ani temperatury posadzki.", active: true },
        controller: { value: "Wyznacza wyższą wartość zadaną", copy: "Korzysta z krzywej, ograniczeń i dodatkowych korekt. Nie naprawia błędnej hydrauliki.", active: true },
        source: { value: "Podąża do nowej temperatury", copy: "Moduluje lub cyklicznie pracuje według własnej automatyki, dostępnej mocy i zabezpieczeń.", active: true },
        flow: { value: "Transportują energię", copy: "Rozdział wody zależy od pompy, oporów i nastaw pętli, a nie od samej linii na wykresie.", active: true },
        floor: { value: "Zmienia emisję z opóźnieniem", copy: "Woda ogrzewa konstrukcję, która akumuluje energię i przekazuje ją do pomieszczenia.", active: true },
        room: { value: "Dąży do nowej równowagi", copy: "Temperatura zależy jednocześnie od podłogi, strat, wentylacji, słońca i zysków wewnętrznych.", active: true }
      }
    },
    sun: {
      resultTitle: "Pogodówka nie widzi bezpośrednio słońca wpadającego do salonu.",
      resultCopy: "Lokalny zysk może przegrzać jedno pomieszczenie mimo poprawnej krzywej dla całego obiegu. Reakcję zapewnia bilans budynku, ewentualna korekta pokojowa lub sterowanie strefowe, lecz podłoga nadal oddaje zgromadzone ciepło.",
      components: {
        sensor: { value: "Mierzy pogodę przy elewacji", copy: "Nie rozpoznaje bezpośrednio lokalnego nasłonecznienia za szybą ani pracy urządzeń w pokoju.", active: false },
        controller: { value: "Utrzymuje wynik krzywej", copy: "Bez informacji z pomieszczenia nie ma podstawy, aby skorygować wyłącznie salon.", active: false },
        source: { value: "Obsługuje aktywny obieg", copy: "Może nadal dostarczać ciepło do innych pomieszczeń, które nie otrzymują zysków słonecznych.", active: false },
        flow: { value: "Zależą od zaworów i pompy", copy: "Przepływ salonu zmieni się dopiero po działaniu właściwego regulatora lub zaworu.", active: false },
        floor: { value: "Oddaje zgromadzoną energię", copy: "Ograniczenie nowego dopływu ciepła nie usuwa energii, która znajduje się już w konstrukcji.", active: true },
        room: { value: "Otrzymuje dodatkowy zysk", copy: "Temperatura może wzrosnąć od słońca mimo niezmienionej temperatury zewnętrznej.", active: true }
      }
    },
    high: {
      resultTitle: "Zbyt wysoka krzywa dostarcza nadmierny parametr do całego obiegu.",
      resultCopy: "Termostaty mogą ograniczać objaw przez zamykanie pętli, ale nie obniżają samej temperatury wytwarzanej przez źródło. Warto najpierw potwierdzić, czy przegrzewanie ma charakter ogólny i powtarzalny.",
      components: {
        sensor: { value: "Pomiar może być prawidłowy", copy: "Poprawny odczyt zewnętrzny nie gwarantuje, że nachylenie, przesunięcie i limity są dobrze dobrane.", active: false },
        controller: { value: "Wyznacza za wysoką wartość", copy: "Błąd może dotyczyć poziomu, nachylenia, punktu bazowego, minimum albo dodatkowej korekty.", active: true },
        source: { value: "Podgrzewa wodę wyżej niż potrzeba", copy: "Rzeczywisty skutek zależy od modulacji, ograniczeń i sposobu pracy urządzenia.", active: true },
        flow: { value: "Rozprowadzają cieplejszą wodę", copy: "Prawidłowe przepływy nie skompensują trwale zawyżonego parametru dla całego obiegu.", active: true },
        floor: { value: "Akumuluje więcej energii", copy: "Po korekcie krzywej konstrukcja potrzebuje czasu, aby oddać wcześniejszy nadmiar.", active: true },
        room: { value: "Przegrzewa się szerzej", copy: "Jeżeli objaw występuje w wielu pomieszczeniach przy różnej pogodzie, analizuje się przesunięcie całej krzywej.", active: true }
      }
    },
    zones: {
      resultTitle: "Zamykanie pętli zmienia hydraulikę, ale nie przelicza automatycznie krzywej grzewczej.",
      resultCopy: "Pompa i źródło widzą mniejszy czynny układ. Trzeba sprawdzić minimalny przepływ, najmniejszy odbiór mocy, logikę pompy oraz wymagania urządzenia zamiast zakładać obowiązkowy schemat dla każdego domu.",
      components: {
        sensor: { value: "Odczyt pogody bez zmian", copy: "Stan siłowników nie zmienia mierzonej temperatury zewnętrznej.", active: false },
        controller: { value: "Krzywa może pozostać taka sama", copy: "Oddzielna automatyka strefowa zamyka zawory, o ile nie przekazuje nadrzędnej korekty do źródła.", active: false },
        source: { value: "Ma mniejszy odbiór do obsługi", copy: "Minimalna moc, objętość wody, przepływ i sekwencja wyłączenia wymagają weryfikacji.", active: true },
        flow: { value: "Punkt pracy się przesuwa", copy: "Rzeczywisty przepływ zależy od trybu pompy, charakterystyki zaworów i oporów otwartych gałęzi.", active: true },
        floor: { value: "Czynne zostają wybrane strefy", copy: "Zamknięte podłogi nadal przez pewien czas oddają wcześniej zgromadzone ciepło.", active: true },
        room: { value: "Temperatury reagują nierównocześnie", copy: "Wymiana ciepła między pokojami oraz bezwładność ograniczają szybkość i skalę różnic.", active: true }
      }
    }
  };

  function renderSystem(key) {
    var state = systemStates[key];
    var result = document.getElementById("rk-curve-system-result");
    if (!state) {
      return;
    }

    Object.keys(state.components).forEach(function (componentKey) {
      var card = root.querySelector('[data-rk-curve-component="' + componentKey + '"]');
      var value;
      var copy;
      var item = state.components[componentKey];
      if (!card) {
        return;
      }
      value = card.querySelector("[data-rk-curve-component-value]");
      copy = card.querySelector("[data-rk-curve-component-copy]");
      if (value) {
        value.textContent = item.value;
      }
      if (copy) {
        copy.textContent = item.copy;
      }
      card.classList.remove("is-active");
      card.classList.remove("is-muted");
      if (item.active) {
        card.classList.add("is-active");
      } else {
        card.classList.add("is-muted");
      }
    });

    if (result) {
      result.replaceChildren();
      var title = document.createElement("strong");
      var copy = document.createElement("p");
      title.textContent = state.resultTitle;
      copy.textContent = state.resultCopy;
      result.appendChild(title);
      result.appendChild(copy);
    }
  }

  var curveInputs = Array.prototype.slice.call(root.querySelectorAll("#rk-curve-chart-tool input"));
  curveInputs.forEach(function (input) {
    input.addEventListener("input", renderCurve);
    input.addEventListener("change", renderCurve);
  });

  var compareButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-curve-mode]"));
  compareButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      compareMode = button.getAttribute("data-rk-curve-mode");
      setPressed(compareButtons, button);
      renderCurve();
    });
  });

  var systemButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-curve-system]"));
  systemButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      setPressed(systemButtons, button);
      renderSystem(button.getAttribute("data-rk-curve-system"));
    });
  });

  renderCurve();
  renderSystem("colder");
}());
</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"
      },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "krzywa grzewcza",
        "sterowanie pogodowe",
        "pompy ciepła",
        "hydraulika instalacji",
        "projektowe obciążenie cieplne"
      ],
      "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/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Krzywa-grzewcza-w-ogrzewaniu-podlogowym.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Krzywa-grzewcza-w-ogrzewaniu-podlogowym.webp",
      "width": 945,
      "height": 945,
      "caption": "Krzywa grzewcza w ogrzewaniu podłogowym",
      "representativeOfPage": true,
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Poradniki",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Krzywa grzewcza w ogrzewaniu podłogowym",
          "item": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/",
      "name": "Krzywa grzewcza w ogrzewaniu podłogowym – jak ją ustawić i korygować bez zgadywania?",
      "description": "Krzywa grzewcza w ogrzewaniu podłogowym: sprawdź, jak ustawić nachylenie, przesunięcie i temperaturę zasilania oraz poprawnie stroić układ bez błędów.",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#breadcrumb"
      },
      "primaryImageOfPage": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#primaryimage"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      },
      "datePublished": "2026-01-06T10:25:59+00:00",
      "dateModified": "2026-09-10",
      "inLanguage": "pl-PL",
      "potentialAction": {
        "@type": "ReadAction",
        "target": [
          "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/"
        ]
      }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article",
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#webpage"
      },
      "headline": "Krzywa grzewcza w ogrzewaniu podłogowym – jak ją ustawić i korygować bez zgadywania?",
      "alternativeHeadline": "Nachylenie, przesunięcie, temperatura zasilania i strojenie pogodówki krok po kroku",
      "description": "Techniczny poradnik o wyznaczaniu, wprowadzaniu i strojeniu krzywej grzewczej podłogówki z interaktywnym wykresem dwóch punktów i modułową grafiką pracy systemu.",
      "image": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#primaryimage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "datePublished": "2026-01-06T10:25:59+00:00",
      "dateModified": "2026-09-10",
      "inLanguage": "pl-PL",
      "timeRequired": "PT30M",
      "wordCount": 4186,
      "isAccessibleForFree": true,
      "copyrightYear": 2026,
      "copyrightHolder": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "articleSection": [
        "Czym jest krzywa grzewcza",
        "Interaktywny wykres krzywej",
        "Nachylenie i przesunięcie",
        "Temperatura zasilania podłogówki",
        "Projektowy punkt obliczeniowy",
        "Pompa ciepła i kocioł",
        "Bezwładność i czujnik zewnętrzny",
        "Termostat i sterowanie strefowe",
        "Strojenie krok po kroku",
        "Objawy błędnej krzywej",
        "Hydraulika i okładzina",
        "Sprawność i rachunki",
        "FAQ"
      ],
      "keywords": [
        "krzywa grzewcza w ogrzewaniu podłogowym",
        "jaka krzywa grzewcza do podłogówki",
        "jak ustawić krzywą grzewczą",
        "nachylenie krzywej grzewczej do podłogówki",
        "przesunięcie krzywej grzewczej",
        "krzywa grzewcza pompa ciepła podłogówka",
        "jaka krzywa grzewcza do pompy ciepła",
        "krzywa grzewcza 0,3 co oznacza",
        "temperatura zasilania podłogówki przy -20°C",
        "krzywa grzewcza a termostat pokojowy",
        "krzywa grzewcza za wysoka objawy",
        "krzywa grzewcza za niska objawy",
        "korekta krzywej grzewczej"
      ],
      "about": [
        {
          "@type": "Thing",
          "name": "Krzywa grzewcza"
        },
        {
          "@type": "Thing",
          "name": "Ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Sterowanie pogodowe"
        }
      ],
      "mentions": [
        {
          "@type": "Thing",
          "name": "Temperatura zasilania"
        },
        {
          "@type": "Thing",
          "name": "Nachylenie krzywej grzewczej"
        },
        {
          "@type": "Thing",
          "name": "Przesunięcie równoległe"
        },
        {
          "@type": "Thing",
          "name": "Pompa ciepła"
        },
        {
          "@type": "Thing",
          "name": "Termostat pokojowy"
        },
        {
          "@type": "Thing",
          "name": "Równoważenie hydrauliczne"
        }
      ],
      "citation": [
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html",
        "https://www.iso.org/standard/65883.html",
        "https://library.mitsubishielectric.co.uk/pdf/book/Ecodan_FTC6_PAC-IF07_1-3_B-E_Instruction_Book_BT79R180H01"
      ],
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "#rk-curve-answer .rk-curve-answer",
          "#rk-curve-design .rk-curve-lead",
          "#rk-curve-conclusions .rk-curve-answer"
        ]
      },
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#curve-chart"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#system-graphic"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#checklist"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#faq"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#curve-chart",
      "name": "Interaktywny wykres krzywej grzewczej z dwóch punktów",
      "description": "Edukacyjny model liniowy pokazujący bazową krzywą, nachylenie, przesunięcie, minimum, maksimum, granicę grzania i analizowany punkt pracy.",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-chart",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "HVAC and building controls",
      "operatingSystem": "Any",
      "browserRequirements": "Przeglądarka internetowa z obsługą JavaScript i SVG",
      "softwareVersion": "1.0",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      },
      "featureList": [
        "Definicja zimnego i łagodnego punktu krzywej",
        "Ograniczenie minimalnej i maksymalnej temperatury zasilania",
        "Granica wyłączenia ogrzewania",
        "Porównanie większego i mniejszego nachylenia",
        "Porównanie przesunięcia równoległego o 2 K",
        "Dynamiczny punkt dla wybranej temperatury zewnętrznej"
      ],
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#system-graphic",
      "name": "Interaktywna grafika reakcji regulacji pogodowej",
      "description": "Modułowa grafika pokazująca role czujnika zewnętrznego, regulatora, źródła ciepła, pompy i przepływów, podłogi oraz pomieszczenia w czterech scenariuszach.",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-graphic",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "HVAC and building physics",
      "operatingSystem": "Any",
      "browserRequirements": "Przeglądarka internetowa z obsługą JavaScript",
      "softwareVersion": "1.0",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      },
      "featureList": [
        "Scenariusz spadku temperatury zewnętrznej",
        "Scenariusz zysku słonecznego w salonie",
        "Scenariusz zbyt wysokiej krzywej",
        "Scenariusz zamknięcia większości pętli",
        "Sześć oddzielnych modułów instalacji",
        "Responsywny układ bez nakładania elementów"
      ],
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#howto",
      "name": "Jak ustawić krzywą grzewczą ogrzewania podłogowego krok po kroku",
      "description": "Kolejność przygotowania, obserwacji i pojedynczych korekt krzywej grzewczej po sprawdzeniu dokumentacji oraz hydrauliki.",
      "inLanguage": "pl-PL",
      "supply": [
        {
          "@type": "HowToSupply",
          "name": "Projekt ogrzewania podłogowego i OZC"
        },
        {
          "@type": "HowToSupply",
          "name": "Dokumentacja regulatora i źródła ciepła"
        },
        {
          "@type": "HowToSupply",
          "name": "Projektowe przepływy pętli"
        }
      ],
      "tool": [
        {
          "@type": "HowToTool",
          "name": "Odczyt czujnika temperatury zewnętrznej"
        },
        {
          "@type": "HowToTool",
          "name": "Termometr w reprezentatywnym pomieszczeniu"
        },
        {
          "@type": "HowToTool",
          "name": "Dziennik ustawień i obserwacji"
        }
      ],
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Zapisz stan początkowy",
          "text": "Zanotuj tryb pracy, parametry krzywej, ograniczenia, harmonogram oraz ustawienia pomp.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Sprawdź dokumentację sterownika",
          "text": "Ustal znaczenie parametrów, zakres obiegu i model charakterystyki stosowany przez urządzenie.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Potwierdź przepływy projektowe",
          "text": "Sprawdź nastawy rozdzielacza przy znanym i bezpiecznym stanie zaworów.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Usuń zakłócające harmonogramy",
          "text": "Na czas obserwacji utrzymuj możliwie stałe wymagania i notuj istotne zyski ciepła.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Ustaw punkt startowy",
          "text": "Przenieś do sterownika parametry wynikające z projektu i instrukcji dokładnego modelu.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Obserwuj temperaturę reprezentatywną",
          "text": "Wybierz pomieszczenie bez chwilowego wpływu słońca lub urządzeń i z potwierdzonym przepływem.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Koryguj jeden parametr",
          "text": "Zmieniaj tylko jedno ustawienie, aby można było przypisać mu zaobserwowany efekt.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Poczekaj na miarodajny efekt",
          "text": "Uwzględnij bezwładność konstrukcji, stabilność pogody i porównuj podobne warunki.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#checklist",
      "name": "Lista kontrolna ustawienia krzywej grzewczej",
      "numberOfItems": 14,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Model i instrukcja regulatora"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Temperatura obliczeniowa"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Projektowa temperatura zasilania"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Minimum i maksimum temperatury"
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Granica grzania"
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Czujnik zewnętrzny"
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Przepływy pętli"
        },
        {
          "@type": "ListItem",
          "position": 8,
          "name": "Pompa obiegowa"
        },
        {
          "@type": "ListItem",
          "position": 9,
          "name": "Termostaty i siłowniki"
        },
        {
          "@type": "ListItem",
          "position": 10,
          "name": "Pomieszczenie referencyjne"
        },
        {
          "@type": "ListItem",
          "position": 11,
          "name": "Stabilne warunki obserwacji"
        },
        {
          "@type": "ListItem",
          "position": 12,
          "name": "Jedna zmiana naraz"
        },
        {
          "@type": "ListItem",
          "position": 13,
          "name": "Dziennik obserwacji"
        },
        {
          "@type": "ListItem",
          "position": 14,
          "name": "Możliwość powrotu do stanu bazowego"
        }
      ],
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      }
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#faq",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-faq",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#webpage"
      },
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Jaka krzywa grzewcza jest najlepsza do ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie istnieje jedna najlepsza wartość. Krzywa musi odpowiadać projektowemu obciążeniu budynku, mocy podłogi, okładzinie, przepływom i algorytmowi konkretnego sterownika. Wartość startowa z instrukcji wymaga późniejszej weryfikacji."
          }
        },
        {
          "@type": "Question",
          "name": "Co oznacza krzywa grzewcza 0,3?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Bez wskazania producenta i pozostałych ustawień nie da się tego jednoznacznie określić. Liczba może opisywać nachylenie według własnego modelu urządzenia, a wynik zależy również od poziomu, temperatury bazowej, minimum, maksimum i wpływu pokojowego."
          }
        },
        {
          "@type": "Question",
          "name": "Jak ustawić krzywą grzewczą przy pompie ciepła i podłogówce?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Należy zacząć od projektowej temperatury zasilania przy obliczeniowej temperaturze zewnętrznej, odwzorować ją zgodnie z instrukcją regulatora, sprawdzić przepływy i obserwować budynek w stabilnych warunkach. Korekty wykonuje się pojedynczo i z zachowaniem wymagań urządzenia."
          }
        },
        {
          "@type": "Question",
          "name": "Czym różni się nachylenie od przesunięcia krzywej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nachylenie zmienia różnicę pomiędzy zimną i łagodną częścią charakterystyki. Przesunięcie podnosi albo obniża cały przebieg w przybliżeniu równolegle. Dokładny sposób realizacji obu funkcji trzeba sprawdzić w instrukcji sterownika."
          }
        },
        {
          "@type": "Question",
          "name": "Kiedy zwiększyć nachylenie krzywej grzewczej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Można je analizować, gdy przy łagodnej pogodzie jest poprawnie, a niedobór pojawia się wraz z silnym mrozem. Najpierw trzeba wykluczyć brak mocy podłogi, niewłaściwy przepływ, ograniczenie źródła, błędny czujnik i zamknięte pętle."
          }
        },
        {
          "@type": "Question",
          "name": "Kiedy zmienić przesunięcie krzywej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Przesunięcie może być właściwym kierunkiem, gdy podobne odchylenie temperatury występuje w szerokim zakresie pogody. Nie należy jednak podawać uniwersalnej korekty w kelwinach bez obserwacji i znajomości algorytmu urządzenia."
          }
        },
        {
          "@type": "Question",
          "name": "Dlaczego podłoga jest chłodna w dotyku, mimo że w domu jest ciepło?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "W dobrze ocieplonym budynku podłoga może potrzebować niewielkiej nadwyżki temperatury ponad pomieszczenie. Jeżeli bilans cieplny jest zachowany, powierzchnia nie musi być wyraźnie ciepła w dotyku. Odczucie nie jest pomiarem mocy instalacji."
          }
        },
        {
          "@type": "Question",
          "name": "Czy można ustawić osobną krzywą dla łazienki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Pojedyncza pętla na wspólnym obiegu zwykle korzysta z tej samej temperatury zasilania. Oddzielna krzywa wymaga niezależnie regulowanego obiegu lub funkcji przewidzianej przez system. Komfort łazienki powinien być uwzględniony przede wszystkim w projekcie powierzchni i mocy."
          }
        },
        {
          "@type": "Question",
          "name": "Czy termostaty pokojowe wykluczają regulację pogodową?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Mogą pełnić funkcję korekty, ograniczenia lokalnego albo sygnału zapotrzebowania. Trzeba jednak sprawdzić, czy zamykanie pętli nie narusza wymaganego przepływu i czy termostaty nie maskują zawyżonej krzywej."
          }
        },
        {
          "@type": "Question",
          "name": "Jak długo czekać po zmianie krzywej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie ma jednego czasu dla każdej podłogi. Należy uwzględnić bezwładność konstrukcji i stabilność warunków. Miarodajna ocena wymaga, aby efekt poprzedniej nastawy nie mieszał się z krótką zmianą pogody, nasłonecznienia lub sposobu użytkowania."
          }
        }
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">Krzywa grzewcza w ogrzewaniu podłogowym – jak ustawić ją bez błędów?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
