<?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 efektywność energetyczna - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/efektywnosc-energetyczna/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/efektywnosc-energetyczna/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Thu, 17 Sep 2026 13:32:53 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa efektywność energetyczna - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/efektywnosc-energetyczna/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 11:26:18 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Modernizacja domu]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[ile wat na m2]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator strat ciepła]]></category>
		<category><![CDATA[moc ogrzewania domu]]></category>
		<category><![CDATA[obliczanie strat ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[straty ciepła domu]]></category>
		<category><![CDATA[zapotrzebowanie na ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3743</guid>

					<description><![CDATA[<p>Obliczenie zapotrzebowania na ciepło budynku to pierwszy krok do prawidłowego zaprojektowania instalacji grzewczej. W tym poradniku pokazujemy, jak w prosty sposób oszacować straty energii w domu i sprawdzić, czy ogrzewanie podłogowe będzie wystarczające. Dzięki praktycznym wskazówkom oraz przykładom obliczeń dowiesz się, jak wykorzystać kalkulator strat ciepła domu – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie, aby ocenić moc instalacji, temperaturę zasilania oraz potencjalne koszty eksploatacji. To wiedza szczególnie przydatna dla inwestorów budujących dom lub modernizujących starsze budynki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-hl-guide {
    --rk-dark: #102536;
    --rk-navy: #15394d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e9ae27;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6d808d;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.72;
  }

  #rk-hl-guide,
  #rk-hl-guide * { box-sizing: border-box; }
  #rk-hl-guide img,
  #rk-hl-guide svg { max-width: 100%; }
  #rk-hl-guide button,
  #rk-hl-guide input,
  #rk-hl-guide select,
  #rk-hl-guide label,
  #rk-hl-guide summary,
  #rk-hl-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-hl-guide button,
  #rk-hl-guide input,
  #rk-hl-guide select { max-width: 100%; }
  #rk-hl-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-hl-guide a:hover,
  #rk-hl-guide a:focus-visible { color: var(--rk-red); }
  #rk-hl-guide p,
  #rk-hl-guide ul,
  #rk-hl-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-hl-guide h2,
  #rk-hl-guide h3,
  #rk-hl-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-hl-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-hl-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-hl-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-hl-guide strong { color: var(--rk-dark); }
  #rk-hl-guide [id] { scroll-margin-top: 24px; }

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

  #rk-hl-guide .rk-hl-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 76px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .32), transparent 28%),
      radial-gradient(circle at 6% 95%, rgba(255, 106, 61, .22), transparent 27%),
      linear-gradient(135deg, #0d2332 0%, #143e53 58%, #0b6680 100%);
  }
  #rk-hl-guide .rk-hl-hero::after {
    position: absolute;
    right: -74px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 44px solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
  }
  #rk-hl-guide .rk-hl-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-hl-guide .rk-hl-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-hl-guide .rk-hl-hero-title {
    position: relative;
    z-index: 1;
    max-width: 960px;
    margin: 0 0 19px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5.4vw, 4.28rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1.01;
  }
  #rk-hl-guide .rk-hl-hero-title span { color: #78efff; }
  #rk-hl-guide .rk-hl-lead {
    position: relative;
    z-index: 1;
    max-width: 900px;
    margin-bottom: 24px;
    color: #d8e9ef;
    font-size: clamp(1.02rem, 2vw, 1.24rem);
    line-height: 1.67;
  }
  #rk-hl-guide .rk-hl-hero-tags {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 27px;
  }
  #rk-hl-guide .rk-hl-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #eefcff;
    background: rgba(255, 255, 255, .075);
    font-size: .72rem;
    font-weight: 850;
    line-height: 1.3;
  }
  #rk-hl-guide .rk-hl-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    color: #bad3dc;
    font-size: .72rem;
    font-weight: 720;
  }
  #rk-hl-guide .rk-hl-byline strong { color: var(--rk-white); }
  #rk-hl-guide .rk-hl-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 34px;
  }
  #rk-hl-guide .rk-hl-hero-metric {
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 16px;
    background: rgba(5, 24, 36, .28);
  }
  #rk-hl-guide .rk-hl-hero-metric b {
    display: block;
    margin-bottom: 4px;
    color: #7af0ff;
    font-size: 1.04rem;
    font-weight: 950;
  }
  #rk-hl-guide .rk-hl-hero-metric span {
    display: block;
    color: #d5e7ec;
    font-size: .7rem;
    line-height: 1.45;
  }

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

  #rk-hl-guide .rk-hl-content { padding: 0 clamp(22px, 5vw, 62px) 56px; }
  #rk-hl-guide .rk-hl-section { padding: clamp(44px, 7vw, 76px) 0; border-bottom: 1px solid var(--rk-line); }
  #rk-hl-guide .rk-hl-section:last-child { border-bottom: 0; }
  #rk-hl-guide .rk-hl-section-intro { max-width: 920px; color: var(--rk-text); font-size: 1.02rem; }
  #rk-hl-guide .rk-hl-eyebrow {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-blue);
    font-size: .66rem;
    font-weight: 950;
    letter-spacing: .09em;
    text-transform: uppercase;
  }

  #rk-hl-guide .rk-hl-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(260px, .55fr);
    gap: 22px;
    margin-top: 28px;
  }
  #rk-hl-guide .rk-hl-answer-main,
  #rk-hl-guide .rk-hl-answer-side,
  #rk-hl-guide .rk-hl-card {
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }
  #rk-hl-guide .rk-hl-answer-main { border-left: 6px solid var(--rk-cyan); background: linear-gradient(135deg, var(--rk-cyan-soft), #fff 68%); }
  #rk-hl-guide .rk-hl-answer-main p:last-child,
  #rk-hl-guide .rk-hl-answer-side p:last-child,
  #rk-hl-guide .rk-hl-card p:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-answer-number { display: block; margin-bottom: 8px; color: var(--rk-blue); font-size: clamp(1.65rem, 4vw, 2.7rem); font-weight: 950; line-height: 1; }
  #rk-hl-guide .rk-hl-answer-side { background: var(--rk-soft); }
  #rk-hl-guide .rk-hl-answer-side ul { margin-bottom: 0; padding-left: 20px; color: var(--rk-text); font-size: .85rem; }

  #rk-hl-guide .rk-hl-grid-2,
  #rk-hl-guide .rk-hl-grid-3,
  #rk-hl-guide .rk-hl-grid-4 { display: grid; gap: 16px; margin-top: 24px; }
  #rk-hl-guide .rk-hl-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-card { height: 100%; }
  #rk-hl-guide .rk-hl-card-icon {
    display: inline-grid;
    width: 42px;
    height: 42px;
    margin-bottom: 14px;
    place-items: center;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    font-size: .8rem;
    font-weight: 950;
  }
  #rk-hl-guide .rk-hl-card p,
  #rk-hl-guide .rk-hl-card li { color: var(--rk-text); font-size: .82rem; }
  #rk-hl-guide .rk-hl-card ul { margin-bottom: 0; padding-left: 19px; }

  #rk-hl-guide .rk-hl-formula {
    margin: 22px 0;
    padding: 23px clamp(20px, 4vw, 34px);
    border: 1px solid #bce7ef;
    border-radius: 18px;
    color: var(--rk-dark);
    background: linear-gradient(135deg, #effcff, #fff);
    font-size: clamp(1.05rem, 2.5vw, 1.36rem);
    font-weight: 900;
    line-height: 1.45;
    text-align: center;
  }
  #rk-hl-guide .rk-hl-formula small { display: block; margin-top: 8px; color: var(--rk-muted); font-size: .7rem; font-weight: 650; }

  #rk-hl-guide .rk-hl-callout {
    margin: 24px 0;
    padding: 20px 22px;
    border-left: 5px solid var(--rk-yellow);
    border-radius: 14px;
    color: var(--rk-text);
    background: var(--rk-yellow-soft);
  }
  #rk-hl-guide .rk-hl-callout strong { display: block; margin-bottom: 5px; }
  #rk-hl-guide .rk-hl-callout p:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-callout-red { border-left-color: var(--rk-red); background: var(--rk-red-soft); }
  #rk-hl-guide .rk-hl-callout-green { border-left-color: var(--rk-green); background: var(--rk-green-soft); }

  #rk-hl-guide .rk-hl-table-wrap { overflow: hidden; margin-top: 25px; border: 1px solid var(--rk-line); border-radius: 18px; }
  #rk-hl-guide table { width: 100%; margin: 0; border-collapse: collapse; font-size: .78rem; }
  #rk-hl-guide th { padding: 14px 15px; color: var(--rk-white); background: var(--rk-navy); font-size: .67rem; font-weight: 900; letter-spacing: .025em; text-align: left; }
  #rk-hl-guide td { padding: 14px 15px; border-bottom: 1px solid var(--rk-line); color: var(--rk-text); vertical-align: top; }
  #rk-hl-guide tbody tr:last-child td { border-bottom: 0; }
  #rk-hl-guide tbody tr:nth-child(even) { background: var(--rk-soft); }

  #rk-hl-guide .rk-hl-tool {
    overflow: hidden;
    margin-top: 30px;
    border-radius: 24px;
    color: #edf8fb;
    background: #102b3b;
    box-shadow: 0 22px 52px rgba(16, 37, 54, .18);
  }
  #rk-hl-guide .rk-hl-tool-head {
    padding: clamp(27px, 5vw, 46px);
    background:
      radial-gradient(circle at 88% 0%, rgba(37,199,216,.25), transparent 32%),
      linear-gradient(135deg, #153f52, #10576c);
  }
  #rk-hl-guide .rk-hl-tool-head h3 { margin-bottom: 10px; color: var(--rk-white); font-size: clamp(1.45rem, 3.4vw, 2.35rem); }
  #rk-hl-guide .rk-hl-tool-head p { max-width: 920px; margin-bottom: 0; color: #cce2e9; font-size: .82rem; }
  #rk-hl-guide .rk-hl-tool-body { padding: clamp(20px, 4vw, 38px); }
  #rk-hl-guide .rk-hl-step {
    margin-bottom: 22px;
    padding: clamp(20px, 3vw, 30px);
    border: 1px solid #355b6e;
    border-radius: 19px;
    background: #163546;
  }
  #rk-hl-guide .rk-hl-step:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-step-title { display: flex; gap: 13px; align-items: flex-start; margin-bottom: 20px; }
  #rk-hl-guide .rk-hl-step-no {
    display: inline-grid;
    flex: 0 0 35px;
    width: 35px;
    height: 35px;
    place-items: center;
    border-radius: 10px;
    color: #073040;
    background: var(--rk-cyan);
    font-size: .77rem;
    font-weight: 950;
  }
  #rk-hl-guide .rk-hl-step-title h4 { margin-bottom: 4px; color: var(--rk-white); font-size: 1rem; }
  #rk-hl-guide .rk-hl-step-title p { margin-bottom: 0; color: #a9c6d1; font-size: .68rem; }
  #rk-hl-guide .rk-hl-field-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; }
  #rk-hl-guide .rk-hl-field-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-hl-guide .rk-hl-field { min-width: 0; }
  #rk-hl-guide .rk-hl-field label { display: block; min-height: 38px; margin-bottom: 7px; color: #d8edf2; font-size: .64rem; font-weight: 850; line-height: 1.35; }
  #rk-hl-guide .rk-hl-field input,
  #rk-hl-guide .rk-hl-field select {
    width: 100%;
    min-height: 47px;
    padding: 10px 12px;
    border: 1px solid #6d8b99;
    border-radius: 10px;
    outline: 0;
    color: #102536;
    background: var(--rk-white);
    font-size: .76rem;
    font-weight: 760;
  }
  #rk-hl-guide .rk-hl-field input:focus,
  #rk-hl-guide .rk-hl-field select:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37,199,216,.18); }
  #rk-hl-guide .rk-hl-field small { display: block; margin-top: 6px; color: #91b3c0; font-size: .58rem; line-height: 1.45; }
  #rk-hl-guide .rk-hl-field[hidden] { display: none; }

  #rk-hl-guide .rk-hl-envelope-head,
  #rk-hl-guide .rk-hl-envelope-row {
    display: grid;
    grid-template-columns: 1.25fr .72fr .72fr .72fr .82fr;
    gap: 10px;
    align-items: center;
  }
  #rk-hl-guide .rk-hl-envelope-head { margin-bottom: 8px; padding: 0 10px; color: #91b3c0; font-size: .57rem; font-weight: 900; letter-spacing: .03em; text-transform: uppercase; }
  #rk-hl-guide .rk-hl-envelope-row { margin-bottom: 9px; padding: 10px; border: 1px solid #315568; border-radius: 13px; background: #123041; }
  #rk-hl-guide .rk-hl-envelope-row:last-child { margin-bottom: 0; }
  #rk-hl-guide .rk-hl-envelope-name { color: #eaf8fb; font-size: .71rem; font-weight: 900; }
  #rk-hl-guide .rk-hl-envelope-name small { display: block; margin-top: 2px; color: #88aebc; font-size: .56rem; font-weight: 600; }
  #rk-hl-guide .rk-hl-envelope-row input {
    width: 100%;
    min-height: 42px;
    padding: 8px 10px;
    border: 1px solid #6d8b99;
    border-radius: 9px;
    outline: 0;
    color: #102536;
    background: #fff;
    font-size: .71rem;
    font-weight: 760;
  }
  #rk-hl-guide .rk-hl-envelope-row input:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37,199,216,.18); }
  #rk-hl-guide .rk-hl-row-result { padding-right: 5px; color: #7defff; font-size: .76rem; font-weight: 950; text-align: right; }
  #rk-hl-guide .rk-hl-row-result small { display: block; color: #8eb0bd; font-size: .54rem; font-weight: 650; }

  #rk-hl-guide .rk-hl-results {
    padding: clamp(24px, 4vw, 38px);
    border: 1px solid #3e6578;
    border-radius: 21px;
    background: linear-gradient(145deg, #173c4e, #102d3d);
  }
  #rk-hl-guide .rk-hl-results-top { display: grid; grid-template-columns: 1.35fr repeat(3, minmax(0, .65fr)); gap: 12px; }
  #rk-hl-guide .rk-hl-result-main,
  #rk-hl-guide .rk-hl-result-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid #3b6274;
    border-radius: 15px;
    background: rgba(8, 34, 48, .42);
  }
  #rk-hl-guide .rk-hl-result-main { border-color: #2ec8d7; background: linear-gradient(135deg, rgba(37,199,216,.16), rgba(8,34,48,.5)); }
  #rk-hl-guide .rk-hl-result-label { display: block; margin-bottom: 7px; color: #97bac7; font-size: .58rem; font-weight: 900; letter-spacing: .045em; text-transform: uppercase; }
  #rk-hl-guide .rk-hl-result-value { display: block; color: var(--rk-white); font-size: clamp(1.22rem, 3vw, 2.25rem); font-weight: 950; letter-spacing: -.04em; line-height: 1.08; }
  #rk-hl-guide .rk-hl-result-value small { color: #8ceffc; font-size: .56em; }
  #rk-hl-guide .rk-hl-result-note { display: block; margin-top: 6px; color: #a7c4ce; font-size: .57rem; line-height: 1.4; }
  #rk-hl-guide .rk-hl-result-card .rk-hl-result-value { font-size: clamp(1rem, 2.3vw, 1.52rem); }
  #rk-hl-guide .rk-hl-status {
    margin-top: 14px;
    padding: 15px 17px;
    border-left: 5px solid var(--rk-yellow);
    border-radius: 12px;
    color: #f1f8fa;
    background: rgba(233,174,39,.12);
    font-size: .69rem;
  }
  #rk-hl-guide .rk-hl-status[data-level="good"] { border-left-color: #32d5a5; background: rgba(50,213,165,.11); }
  #rk-hl-guide .rk-hl-status[data-level="alert"] { border-left-color: #ff7157; background: rgba(255,113,87,.12); }

  #rk-hl-guide .rk-hl-chart-panel,
  #rk-hl-guide .rk-hl-breakdown-panel,
  #rk-hl-guide .rk-hl-diagnostic-panel {
    margin-top: 18px;
    padding: clamp(20px, 3vw, 28px);
    border: 1px solid #3b6071;
    border-radius: 17px;
    background: #123242;
  }
  #rk-hl-guide .rk-hl-chart-panel h4,
  #rk-hl-guide .rk-hl-breakdown-panel h4,
  #rk-hl-guide .rk-hl-diagnostic-panel h4 { color: var(--rk-white); }
  #rk-hl-guide .rk-hl-chart-panel p,
  #rk-hl-guide .rk-hl-breakdown-panel p,
  #rk-hl-guide .rk-hl-diagnostic-panel p { color: #9ebfca; font-size: .65rem; }
  #rk-hl-guide .rk-hl-chart-box { overflow: hidden; min-height: 330px; padding: 8px; border-radius: 13px; background: #f8fdff; }
  #rk-hl-guide .rk-hl-chart-box svg { display: block; width: 100%; height: auto; min-height: 310px; }
  #rk-hl-guide .rk-hl-chart-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 10px; color: #b9d2db; font-size: .61rem; font-weight: 800; }
  #rk-hl-guide .rk-hl-chart-legend span { display: inline-flex; align-items: center; gap: 6px; }
  #rk-hl-guide .rk-hl-chart-legend i { display: inline-block; width: 22px; height: 4px; border-radius: 4px; background: var(--rk-cyan); }
  #rk-hl-guide .rk-hl-chart-legend .rk-hl-legend-design { background: var(--rk-orange); }
  #rk-hl-guide .rk-hl-breakdown-list { display: grid; gap: 12px; }
  #rk-hl-guide .rk-hl-breakdown-row { display: grid; grid-template-columns: 150px minmax(0, 1fr) 100px; gap: 12px; align-items: center; }
  #rk-hl-guide .rk-hl-breakdown-name { color: #dceef3; font-size: .66rem; font-weight: 820; }
  #rk-hl-guide .rk-hl-breakdown-track { overflow: hidden; height: 12px; border-radius: 999px; background: #234c5e; }
  #rk-hl-guide .rk-hl-breakdown-bar { display: block; width: 0; height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--rk-cyan), #60e6ef); transition: width .25s ease; }
  #rk-hl-guide .rk-hl-breakdown-row:nth-child(2) .rk-hl-breakdown-bar { background: linear-gradient(90deg, var(--rk-orange), #ff9a79); }
  #rk-hl-guide .rk-hl-breakdown-row:nth-child(3) .rk-hl-breakdown-bar { background: linear-gradient(90deg, var(--rk-purple), #9688ec); }
  #rk-hl-guide .rk-hl-breakdown-value { color: #fff; font-size: .66rem; font-weight: 900; text-align: right; }
  #rk-hl-guide .rk-hl-diagnostic-list { display: grid; gap: 9px; margin: 0; padding: 0; list-style: none; }
  #rk-hl-guide .rk-hl-diagnostic-list li { padding: 12px 14px; border-left: 4px solid #6b92a2; border-radius: 9px; color: #dcecf1; background: #173c4d; font-size: .66rem; }
  #rk-hl-guide .rk-hl-diagnostic-list li[data-state="good"] { border-left-color: #32d5a5; }
  #rk-hl-guide .rk-hl-diagnostic-list li[data-state="warn"] { border-left-color: var(--rk-yellow); }
  #rk-hl-guide .rk-hl-diagnostic-list li[data-state="bad"] { border-left-color: var(--rk-orange); }
  #rk-hl-guide .rk-hl-disclaimer { margin: 18px 0 0; color: #8fb2bf; font-size: .58rem; line-height: 1.55; }

  #rk-hl-guide .rk-hl-sales-cta {
    margin: clamp(34px, 6vw, 62px) 0;
    padding: clamp(28px, 5vw, 46px);
    border-radius: 22px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 95% 5%, rgba(37,199,216,.25), transparent 29%),
      linear-gradient(135deg, #102536, #16465b);
    box-shadow: 0 18px 44px rgba(16,37,54,.17);
  }
  #rk-hl-guide .rk-hl-sales-cta h3 { color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-hl-guide .rk-hl-sales-cta p { max-width: 940px; color: #d0e4eb; }
  #rk-hl-guide .rk-hl-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 13px 22px;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    box-shadow: 0 10px 24px rgba(37,199,216,.2);
    font-size: .78rem;
    font-weight: 950;
    line-height: 1.3;
    text-decoration: none;
    transition: transform .18s ease, background .18s ease;
  }
  #rk-hl-guide .rk-hl-cta-button:hover,
  #rk-hl-guide .rk-hl-cta-button:focus-visible { color: var(--rk-dark); background: #9af3fb; transform: translateY(-1px); }

  #rk-hl-guide .rk-hl-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 24px; }
  #rk-hl-guide .rk-hl-check {
    position: relative;
    padding: 17px 18px 17px 50px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: .78rem;
  }
  #rk-hl-guide .rk-hl-check::before {
    position: absolute;
    top: 16px;
    left: 17px;
    display: grid;
    width: 24px;
    height: 24px;
    place-items: center;
    border-radius: 50%;
    color: #fff;
    background: var(--rk-green);
    content: "✓";
    font-size: .68rem;
    font-weight: 950;
  }

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

  #rk-hl-guide .rk-hl-source-list { display: grid; gap: 12px; margin-top: 24px; }
  #rk-hl-guide .rk-hl-source { padding: 18px 20px; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-soft); }
  #rk-hl-guide .rk-hl-source strong { display: block; margin-bottom: 4px; }
  #rk-hl-guide .rk-hl-source p { margin-bottom: 0; color: var(--rk-text); font-size: .75rem; }

  #rk-hl-guide .rk-hl-author {
    position: relative;
    overflow: hidden;
    margin-top: 28px;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: #f5fafc;
  }
  #rk-hl-guide .rk-hl-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-hl-guide .rk-hl-author-head { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 22px clamp(22px, 4vw, 38px); border-bottom: 1px solid var(--rk-line); background: #eef6f9; }
  #rk-hl-guide .rk-hl-author-head h3 { margin-bottom: 7px; font-size: clamp(1.45rem, 3vw, 2rem); }
  #rk-hl-guide .rk-hl-author-head p { margin-bottom: 0; color: var(--rk-muted); font-size: .72rem; }
  #rk-hl-guide .rk-hl-author-mark { max-width: 350px; color: var(--rk-blue); font-size: .6rem; font-weight: 950; letter-spacing: .055em; line-height: 1.5; text-align: right; }
  #rk-hl-guide .rk-hl-author-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr); }
  #rk-hl-guide .rk-hl-author-side { padding: 34px 24px; color: #fff; background: var(--rk-dark); text-align: center; }
  #rk-hl-guide .rk-hl-author-photo { overflow: hidden; width: 150px; height: 150px; margin: 0 auto 18px; border: 6px solid rgba(255,255,255,.16); border-radius: 50%; background: #fff; }
  #rk-hl-guide .rk-hl-author-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
  #rk-hl-guide .rk-hl-author-name { color: var(--rk-white); font-size: 1.08rem; font-weight: 950; }
  #rk-hl-guide .rk-hl-author-role { margin-top: 5px; color: #bdd4dd; font-size: .66rem; line-height: 1.55; }
  #rk-hl-guide .rk-hl-author-social-label { margin: 22px 0 10px; color: #89a9b7; font-size: .58rem; font-weight: 900; letter-spacing: .08em; text-transform: uppercase; }
  #rk-hl-guide .rk-hl-author-social { display: flex; justify-content: center; gap: 9px; }
  #rk-hl-guide .rk-hl-author-social a { display: grid; width: 44px; height: 44px; place-items: center; border: 1px solid #45677a; border-radius: 50%; color: #c6dce5; background: transparent; text-decoration: none; }
  #rk-hl-guide .rk-hl-author-social a:hover,
  #rk-hl-guide .rk-hl-author-social a:focus-visible { color: var(--rk-white); border-color: var(--rk-cyan); background: rgba(37,199,216,.12); }
  #rk-hl-guide .rk-hl-author-social svg { width: 20px; height: 20px; fill: currentColor; }
  #rk-hl-guide .rk-hl-author-main { padding: clamp(25px, 4vw, 40px); }
  #rk-hl-guide .rk-hl-author-quote { position: relative; margin: 0 0 24px; padding: 20px 20px 20px 72px; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
  #rk-hl-guide .rk-hl-author-quote::before { position: absolute; top: 9px; left: 23px; color: var(--rk-cyan); content: "“"; font-family: Georgia, serif; font-size: 3.6rem; font-weight: 900; line-height: 1; }
  #rk-hl-guide .rk-hl-author-quote p { margin-bottom: 0; color: var(--rk-dark); font-size: .84rem; font-weight: 780; }
  #rk-hl-guide .rk-hl-author-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
  #rk-hl-guide .rk-hl-author-tab { display: inline-flex; align-items: center; min-height: 39px; padding: 8px 14px; border-radius: 999px; color: #59707c; background: #e4eef2; font-size: .65rem; font-weight: 900; cursor: pointer; }
  #rk-hl-guide .rk-hl-author-panel { display: none; color: var(--rk-text); font-size: .78rem; }
  #rk-hl-guide #rk-hl-author-about:checked ~ .rk-hl-author-layout .rk-hl-author-panel-about,
  #rk-hl-guide #rk-hl-author-exp:checked ~ .rk-hl-author-layout .rk-hl-author-panel-exp,
  #rk-hl-guide #rk-hl-author-method:checked ~ .rk-hl-author-layout .rk-hl-author-panel-method { display: block; }
  #rk-hl-guide #rk-hl-author-about:checked ~ .rk-hl-author-layout label[for="rk-hl-author-about"],
  #rk-hl-guide #rk-hl-author-exp:checked ~ .rk-hl-author-layout label[for="rk-hl-author-exp"],
  #rk-hl-guide #rk-hl-author-method:checked ~ .rk-hl-author-layout label[for="rk-hl-author-method"] { color: var(--rk-white); background: var(--rk-blue); }
  #rk-hl-guide .rk-hl-portals { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 19px; }
  #rk-hl-guide .rk-hl-portals a { display: inline-flex; align-items: center; min-height: 37px; padding: 7px 12px; border: 1px solid var(--rk-line); border-radius: 999px; background: #fff; font-size: .65rem; text-decoration: none; }

  @media (max-width: 980px) {
    #rk-hl-guide .rk-hl-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-results-top { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-hl-guide .rk-hl-result-main { grid-column: 1 / -1; }
    #rk-hl-guide .rk-hl-author-layout { grid-template-columns: 225px minmax(0, 1fr); }
  }

  @media (max-width: 760px) {
    #rk-hl-guide { margin: 18px auto 46px; font-size: 16px; }
    #rk-hl-guide .rk-hl-shell { border-radius: 18px; }
    #rk-hl-guide .rk-hl-hero-metrics,
    #rk-hl-guide .rk-hl-answer,
    #rk-hl-guide .rk-hl-grid-2,
    #rk-hl-guide .rk-hl-grid-3,
    #rk-hl-guide .rk-hl-grid-4,
    #rk-hl-guide .rk-hl-checklist { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-nav { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-nav-label { padding-top: 0; }
    #rk-hl-guide .rk-hl-author-head { display: block; }
    #rk-hl-guide .rk-hl-author-mark { margin-top: 12px; text-align: left; }
    #rk-hl-guide .rk-hl-author-layout { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-breakdown-row { grid-template-columns: 110px minmax(0, 1fr) 76px; gap: 8px; }
    #rk-hl-guide .rk-hl-table-wrap { overflow: visible; border: 0; border-radius: 0; }
    #rk-hl-guide table,
    #rk-hl-guide thead,
    #rk-hl-guide tbody,
    #rk-hl-guide th,
    #rk-hl-guide td,
    #rk-hl-guide tr { display: block; }
    #rk-hl-guide thead { position: absolute; overflow: hidden; width: 1px; height: 1px; clip: rect(0 0 0 0); white-space: nowrap; }
    #rk-hl-guide tbody { display: grid; gap: 12px; }
    #rk-hl-guide tbody tr { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
    #rk-hl-guide tbody tr:nth-child(even) { background: var(--rk-white); }
    #rk-hl-guide td { display: grid; grid-template-columns: minmax(115px, .75fr) minmax(0, 1.25fr); gap: 13px; padding: 12px 14px; border-bottom: 1px solid var(--rk-line); }
    #rk-hl-guide td::before { color: var(--rk-dark); content: attr(data-label); font-size: .65rem; font-weight: 900; }
  }

  @media (max-width: 620px) {
    #rk-hl-guide .rk-hl-content { padding-right: 16px; padding-left: 16px; }
    #rk-hl-guide .rk-hl-hero { padding-right: 21px; padding-left: 21px; }
    #rk-hl-guide .rk-hl-hero-title { font-size: clamp(1.85rem, 10.2vw, 3rem); }
    #rk-hl-guide .rk-hl-field-grid,
    #rk-hl-guide .rk-hl-field-grid-3,
    #rk-hl-guide .rk-hl-results-top { grid-template-columns: 1fr; }
    #rk-hl-guide .rk-hl-envelope-head { display: none; }
    #rk-hl-guide .rk-hl-envelope-row { grid-template-columns: repeat(2, minmax(0, 1fr)); padding: 14px; }
    #rk-hl-guide .rk-hl-envelope-name { grid-column: 1 / -1; padding-bottom: 4px; }
    #rk-hl-guide .rk-hl-envelope-row input { min-height: 44px; }
    #rk-hl-guide .rk-hl-envelope-row input[data-role="factor"] { grid-column: 1; }
    #rk-hl-guide .rk-hl-row-result { display: flex; align-items: center; justify-content: flex-end; min-height: 44px; padding: 7px 9px; border-radius: 9px; background: #0e2938; }
    #rk-hl-guide .rk-hl-row-result small { margin-left: 5px; }
    #rk-hl-guide .rk-hl-chart-box { min-height: 250px; }
    #rk-hl-guide .rk-hl-chart-box svg { min-height: 235px; }
    #rk-hl-guide .rk-hl-breakdown-row { grid-template-columns: 1fr; gap: 5px; }
    #rk-hl-guide .rk-hl-breakdown-value { text-align: left; }
    #rk-hl-guide .rk-hl-author-main { padding: 24px 18px; }
    #rk-hl-guide .rk-hl-author-quote { padding-left: 58px; }
    #rk-hl-guide .rk-hl-sales-cta { padding: 26px 20px; }
    #rk-hl-guide .rk-hl-cta-button { width: 100%; text-align: center; }
    #rk-hl-guide td { grid-template-columns: 1fr; gap: 3px; }
  }

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

<article id="rk-hl-guide" itemscope itemtype="https://schema.org/TechArticle">
  <div class="rk-hl-shell">
    <header class="rk-hl-hero">
      <span class="rk-hl-kicker">Bilans cieplny budynku • aktualizacja 2026</span>
      <div class="rk-hl-hero-title">Oblicz projektową stratę ciepła — <span>przegroda po przegrodzie</span></div>
      <p class="rk-hl-lead">Wpisz rzeczywiste powierzchnie, współczynniki U, temperatury, wentylację i mostki. Kalkulator pokaże wymaganą moc w kW, wskaźnik W/m², udział poszczególnych strat oraz krzywą obciążenia względem temperatury zewnętrznej.</p>
      <div class="rk-hl-hero-tags" aria-label="Najważniejsze funkcje artykułu">
        <span class="rk-hl-hero-tag">przenikanie przez przegrody</span>
        <span class="rk-hl-hero-tag">wentylacja i infiltracja</span>
        <span class="rk-hl-hero-tag">mostki cieplne</span>
        <span class="rk-hl-hero-tag">budynek lub pomieszczenie</span>
        <span class="rk-hl-hero-tag">dynamiczny wykres</span>
      </div>
      <div class="rk-hl-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 24 minuty</span>
        <span>Aktualizacja techniczna: 1 września 2026 r.</span>
      </div>
      <div class="rk-hl-hero-metrics" aria-label="Zakres kalkulatora">
        <div class="rk-hl-hero-metric"><b>W i kW</b><span>Projektowa moc potrzebna w wybranych warunkach zewnętrznych.</span></div>
        <div class="rk-hl-hero-metric"><b>W/m²</b><span>Wskaźnik kontrolny odniesiony do powierzchni ogrzewanej lub czynnej.</span></div>
        <div class="rk-hl-hero-metric"><b>Nie kWh/rok</b><span>Kalkulator nie wyznacza rocznego zużycia energii ani kosztów ogrzewania.</span></div>
      </div>
    </header>

    <nav class="rk-hl-nav" aria-label="Nawigacja po artykule">
      <span class="rk-hl-nav-label">Na skróty</span>
      <div class="rk-hl-nav-links">
        <a href="#rk-hl-szybka-odpowiedz">Szybka odpowiedź</a>
        <a href="#rk-hl-moc-a-energia">Moc a energia</a>
        <a href="#rk-hl-bilans-strat">Składowe strat</a>
        <a href="#rk-hl-dane">Dane wejściowe</a>
        <a href="#rk-hl-kalkulator">Kalkulator</a>
        <a href="#rk-hl-interpretacja">Jak czytać wynik</a>
        <a href="#rk-hl-budynek-pomieszczenia">Budynek a pokoje</a>
        <a href="#rk-hl-podlogowka">Wynik a podłogówka</a>
        <a href="#rk-hl-zrodlo">Wynik a źródło</a>
        <a href="#rk-hl-przyklad">Przykład</a>
        <a href="#rk-hl-bledy">Błędy i checklista</a>
        <a href="#rk-hl-faq">FAQ</a>
        <a href="#rk-hl-zrodla">Źródła</a>
        <a href="#rk-hl-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-hl-content">
      <section class="rk-hl-section" id="rk-hl-szybka-odpowiedz">
        <span class="rk-hl-eyebrow">01 • Najważniejsza odpowiedź</span>
        <h2>Co naprawdę oblicza kalkulator strat ciepła budynku?</h2>
        <p class="rk-hl-section-intro">Kalkulator szacuje <strong>projektową moc potrzebną do uzupełnienia strat ciepła</strong> przy zadanej temperaturze wewnętrznej i zewnętrznej. Nie wystarcza do tego sam metraż ani rok budowy domu.</p>
        <div class="rk-hl-answer">
          <div class="rk-hl-answer-main">
            <span class="rk-hl-answer-number">Φ<sub>HL</sub> [W lub kW]</span>
            <h3>Najpierw bilans, później urządzenie i instalacja</h3>
            <p>Sumujemy straty przez ściany, okna, drzwi, dach, podłogę, przegrody do stref nieogrzewanych, wentylację, infiltrację i mostki cieplne. Dopiero taki wynik może być punktem wyjścia do dalszego projektowania.</p>
          </div>
          <aside class="rk-hl-answer-side">
            <h3>Czego wynik nie wybiera?</h3>
            <ul>
              <li>konkretnego modelu pompy ciepła,</li>
              <li>rozstawu rur w każdym pokoju,</li>
              <li>temperatury zasilania podłogówki,</li>
              <li>rocznego zużycia energii w kWh,</li>
              <li>kosztu ogrzewania całego sezonu.</li>
            </ul>
          </aside>
        </div>
        <div class="rk-hl-callout rk-hl-callout-green">
          <strong>Najważniejsza zasada</strong>
          <p>Wskaźnik W/m² jest wynikiem obliczenia i narzędziem kontrolnym. Nie powinien być domyślnym założeniem typu „nowy dom zawsze potrzebuje 45 W/m²”.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-moc-a-energia">
        <span class="rk-hl-eyebrow">02 • Jednostki bez pomyłek</span>
        <h2>Moc w kW a energia w kWh — to nie jest ten sam wynik</h2>
        <p class="rk-hl-section-intro">Najczęstszy błąd w internetowych kalkulatorach polega na zamiennym używaniu mocy, energii i kosztu. Każda z tych wielkości odpowiada na inne pytanie.</p>
        <div class="rk-hl-table-wrap">
          <table>
            <thead>
              <tr><th>Wielkość</th><th>Jednostka</th><th>Co opisuje?</th><th>Do czego służy?</th></tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Wielkość"><strong>Projektowe obciążenie cieplne</strong></td>
                <td data-label="Jednostka">W lub kW</td>
                <td data-label="Co opisuje?">Moc potrzebną przy projektowych warunkach zimowych.</td>
                <td data-label="Do czego służy?">Do projektowania instalacji i analizy źródła ciepła.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Wskaźnik obciążenia</strong></td>
                <td data-label="Jednostka">W/m²</td>
                <td data-label="Co opisuje?">Moc odniesioną do powierzchni budynku albo pomieszczenia.</td>
                <td data-label="Do czego służy?">Do kontroli wyniku i porównania stref.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Energia użytkowa</strong></td>
                <td data-label="Jednostka">kWh/rok</td>
                <td data-label="Co opisuje?">Ilość ciepła potrzebną podczas całego sezonu.</td>
                <td data-label="Do czego służy?">Do analiz energetycznych i kosztowych.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Energia jednostkowa</strong></td>
                <td data-label="Jednostka">kWh/(m²·rok)</td>
                <td data-label="Co opisuje?">Sezonowe potrzeby odniesione do powierzchni.</td>
                <td data-label="Do czego służy?">Do oceny standardu energetycznego budynku.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>Norma EN 12831-1 opisuje obliczanie projektowego obciążenia cieplnego pomieszczeń i budynków. Metody z rodziny ISO 52016 obejmują również potrzeby energetyczne i obciążenia w czasie. Dlatego wynik w kW nie jest rocznym zużyciem energii. Więcej o samym pojęciu przeczytasz w opracowaniu <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-bilans-strat">
        <span class="rk-hl-eyebrow">03 • Fizyka budynku</span>
        <h2>Z czego składa się projektowy bilans strat ciepła?</h2>
        <p class="rk-hl-section-intro">W modelu uproszczonym całkowita strata jest sumą przenikania przez przegrody, wymiany powietrza i mostków cieplnych.</p>
        <div class="rk-hl-formula">
          Φ<sub>HL</sub> ≈ Φ<sub>T</sub> + Φ<sub>V</sub> + Φ<sub>TB</sub>
          <small>Model referencyjny kalkulatora. Pełne obliczenia projektowe mogą uwzględniać dodatkowe zasady metodyczne i dane krajowe.</small>
        </div>
        <div class="rk-hl-grid-3">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">T</span>
            <h3>Przenikanie</h3>
            <p>Straty przez ściany, okna, drzwi, dach, podłogę i przegrody do pomieszczeń nieogrzewanych.</p>
            <div class="rk-hl-formula">Φ<sub>T,i</sub> = U<sub>i</sub> · A<sub>i</sub> · b<sub>i</sub> · Δθ</div>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">V</span>
            <h3>Wentylacja i infiltracja</h3>
            <p>Ciepło potrzebne do ogrzania powietrza wentylacyjnego oraz napływającego przez nieszczelności.</p>
            <div class="rk-hl-formula">Φ<sub>V</sub> = 0,34 · V̇<sub>eff</sub> · Δθ</div>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">ψ</span>
            <h3>Mostki cieplne</h3>
            <p>Dodatkowy przepływ ciepła przez połączenia przegród, nadproża, wieńce i inne węzły.</p>
            <div class="rk-hl-formula">Φ<sub>TB</sub> = Σ(ψ · l) · Δθ</div>
          </article>
        </div>
        <div class="rk-hl-callout">
          <strong>Uwaga na podłogę na gruncie</strong>
          <p>Proste działanie U · A · Δθ jest tutaj przybliżeniem. Dokładna wymiana z gruntem zależy między innymi od geometrii podłogi, obwodu, poziomu zagłębienia i właściwości gruntu. W kalkulatorze stosujemy jawny współczynnik redukcyjny b, ale nie przedstawiamy wyniku jako pełnego obliczenia według ISO 13370.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-dane">
        <span class="rk-hl-eyebrow">04 • Przygotowanie</span>
        <h2>Jakie dane przygotować przed uruchomieniem kalkulatora?</h2>
        <p class="rk-hl-section-intro">Jakość wyniku nie może być lepsza niż jakość danych wejściowych. Największą różnicę robią rzeczywiste powierzchnie przegród, prawidłowe U oraz przepływ powietrza.</p>
        <div class="rk-hl-grid-4">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">01</span>
            <h3>Geometria</h3>
            <ul>
              <li>powierzchnia ogrzewana,</li>
              <li>kubatura ogrzewana,</li>
              <li>powierzchnie ścian,</li>
              <li>osobno okna i drzwi.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">02</span>
            <h3>Przegrody</h3>
            <ul>
              <li>współczynniki U,</li>
              <li>układ warstw,</li>
              <li>przestrzeń po drugiej stronie,</li>
              <li>dane stolarki.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">03</span>
            <h3>Temperatury</h3>
            <ul>
              <li>temperatura wewnętrzna,</li>
              <li>temperatura projektowa,</li>
              <li>temperatury stref buforowych,</li>
              <li>lokalizacja budynku.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">04</span>
            <h3>Powietrze</h3>
            <ul>
              <li>strumień wentylacji,</li>
              <li>infiltracja,</li>
              <li>rodzaj systemu,</li>
              <li>sprawność odzysku.</li>
            </ul>
          </article>
        </div>
        <p>Jeżeli nie znasz U przegrody, możesz pomocniczo skorzystać z oficjalnego <a href="https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/" target="_blank" rel="noopener nofollow">kalkulatora współczynnika U w serwisie Budowlane ABC</a>. Pamiętaj jednak, że metoda dla ściany wielowarstwowej nie jest automatycznie metodą dla podłogi pozostającej w kontakcie z gruntem.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-kalkulator">
        <span class="rk-hl-eyebrow">05 • Narzędzie interaktywne</span>
        <h2>Kalkulator strat ciepła budynku i pomieszczenia</h2>
        <p class="rk-hl-section-intro">Wszystkie wartości są przeliczane na żywo. Współczynnik b pozwala jawnie ograniczyć różnicę temperatur dla gruntu lub strefy buforowej. Jeżeli nie znasz mostków cieplnych, pozostaw zero — kalkulator zgłosi brak w diagnostyce zamiast doliczać arbitralny procent.</p>

        <div class="rk-hl-tool" id="rk-hl-tool" aria-label="Interaktywny kalkulator strat ciepła">
          <div class="rk-hl-tool-head">
            <h3>Policz wstępny bilans projektowych strat ciepła</h3>
            <p>Wynik pokazuje moc wymaganą do pokrycia wprowadzonych strat przy zadanej różnicy temperatur. To model edukacyjny i kontrolny — nie pełne OZC oraz nie automatyczny dobór źródła ciepła.</p>
          </div>
          <div class="rk-hl-tool-body">
            <section class="rk-hl-step" aria-labelledby="rk-hl-step-1-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">1</span>
                <div><h4 id="rk-hl-step-1-title">Zakres i geometria analizowanej strefy</h4><p>Możesz policzyć cały budynek albo jedno pomieszczenie. W trybie pomieszczenia pojawi się powierzchnia czynna podłogi.</p></div>
              </div>
              <div class="rk-hl-field-grid">
                <div class="rk-hl-field">
                  <label for="rk-hl-scope">Zakres obliczenia</label>
                  <select id="rk-hl-scope">
                    <option value="building">Cały budynek</option>
                    <option value="room">Jedno pomieszczenie</option>
                  </select>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-area">Powierzchnia ogrzewana [m²]</label>
                  <input id="rk-hl-area" type="number" min="1" max="5000" step="1" value="140" inputmode="decimal">
                  <small>W trybie pokoju wpisz jego powierzchnię.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-volume">Kubatura ogrzewana [m³]</label>
                  <input id="rk-hl-volume" type="number" min="1" max="20000" step="1" value="350" inputmode="decimal">
                  <small>Powierzchnia razy średnia wysokość netto.</small>
                </div>
                <div class="rk-hl-field" id="rk-hl-active-field" hidden>
                  <label for="rk-hl-active-area">Czynna powierzchnia podłogi [m²]</label>
                  <input id="rk-hl-active-area" type="number" min="0" max="5000" step="0.1" value="16" inputmode="decimal">
                  <small>Bez trwałej zabudowy i stref bez rur.</small>
                </div>
              </div>
            </section>

            <section class="rk-hl-step" aria-labelledby="rk-hl-step-2-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">2</span>
                <div><h4 id="rk-hl-step-2-title">Temperatury projektowe</h4><p>Wybór strefy wpisuje wartość pomocniczą. Temperaturę zewnętrzną możesz następnie zmienić ręcznie zgodnie z lokalizacją i dokumentacją.</p></div>
              </div>
              <div class="rk-hl-field-grid rk-hl-field-grid-3">
                <div class="rk-hl-field">
                  <label for="rk-hl-zone">Pomocnicza strefa zimowa</label>
                  <select id="rk-hl-zone">
                    <option value="-16">Strefa I — −16°C</option>
                    <option value="-18">Strefa II — −18°C</option>
                    <option value="-20" selected>Strefa III — −20°C</option>
                    <option value="-22">Strefa IV — −22°C</option>
                    <option value="-24">Strefa V — −24°C</option>
                    <option value="manual">Wartość własna</option>
                  </select>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-indoor">Temperatura wewnętrzna θi [°C]</label>
                  <input id="rk-hl-indoor" type="number" min="5" max="35" step="0.5" value="20" inputmode="decimal">
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-outdoor">Temperatura zewnętrzna θe [°C]</label>
                  <input id="rk-hl-outdoor" type="number" min="-40" max="15" step="0.5" value="-20" inputmode="decimal">
                </div>
              </div>
            </section>

            <section class="rk-hl-step" aria-labelledby="rk-hl-step-3-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">3</span>
                <div><h4 id="rk-hl-step-3-title">Przegrody — powierzchnia, U i współczynnik redukcyjny b</h4><p>Dla przegród do powietrza zewnętrznego przyjmij b = 1,00. Mniejsza wartość może opisywać uproszczony wpływ gruntu albo strefy buforowej.</p></div>
              </div>
              <div class="rk-hl-envelope-head" aria-hidden="true">
                <span>Przegroda</span><span>Powierzchnia A [m²]</span><span>U [W/(m²·K)]</span><span>Współczynnik b</span><span>Strata</span>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="walls">
                <div class="rk-hl-envelope-name">Ściany zewnętrzne<small>Powierzchnia netto bez okien i drzwi</small></div>
                <input aria-label="Powierzchnia ścian zewnętrznych" data-role="area" type="number" min="0" step="0.1" value="150" inputmode="decimal">
                <input aria-label="Współczynnik U ścian" data-role="u" type="number" min="0" step="0.01" value="0.20" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny ścian" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="windows">
                <div class="rk-hl-envelope-name">Okna i przeszklenia<small>U całego okna Uw, nie samej szyby Ug</small></div>
                <input aria-label="Powierzchnia okien" data-role="area" type="number" min="0" step="0.1" value="30" inputmode="decimal">
                <input aria-label="Współczynnik U okien" data-role="u" type="number" min="0" step="0.01" value="0.90" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny okien" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="doors">
                <div class="rk-hl-envelope-name">Drzwi zewnętrzne<small>Łączna powierzchnia skrzydeł i bram</small></div>
                <input aria-label="Powierzchnia drzwi" data-role="area" type="number" min="0" step="0.1" value="5" inputmode="decimal">
                <input aria-label="Współczynnik U drzwi" data-role="u" type="number" min="0" step="0.01" value="1.30" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny drzwi" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="roof">
                <div class="rk-hl-envelope-name">Dach lub strop<small>Przegroda nad przestrzenią ogrzewaną</small></div>
                <input aria-label="Powierzchnia dachu lub stropu" data-role="area" type="number" min="0" step="0.1" value="140" inputmode="decimal">
                <input aria-label="Współczynnik U dachu" data-role="u" type="number" min="0" step="0.01" value="0.15" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny dachu" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="floor">
                <div class="rk-hl-envelope-name">Podłoga na gruncie<small>Model uproszczony — pełna metoda zależy od geometrii</small></div>
                <input aria-label="Powierzchnia podłogi" data-role="area" type="number" min="0" step="0.1" value="140" inputmode="decimal">
                <input aria-label="Współczynnik U podłogi" data-role="u" type="number" min="0" step="0.01" value="0.25" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny podłogi" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="0.50" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="buffer">
                <div class="rk-hl-envelope-name">Strefa nieogrzewana<small>Garaż, piwnica, poddasze lub inna strefa buforowa</small></div>
                <input aria-label="Powierzchnia przegrody do strefy nieogrzewanej" data-role="area" type="number" min="0" step="0.1" value="0" inputmode="decimal">
                <input aria-label="Współczynnik U przegrody buforowej" data-role="u" type="number" min="0" step="0.01" value="0.30" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny strefy buforowej" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="0.50" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
              <div class="rk-hl-envelope-row" data-envelope="custom">
                <div class="rk-hl-envelope-name">Przegroda dodatkowa<small>Własna pozycja kontrolna</small></div>
                <input aria-label="Powierzchnia przegrody dodatkowej" data-role="area" type="number" min="0" step="0.1" value="0" inputmode="decimal">
                <input aria-label="Współczynnik U przegrody dodatkowej" data-role="u" type="number" min="0" step="0.01" value="0.30" inputmode="decimal">
                <input aria-label="Współczynnik redukcyjny przegrody dodatkowej" data-role="factor" type="number" min="0" max="1.5" step="0.05" value="1" inputmode="decimal">
                <output class="rk-hl-row-result" data-role="result">— <small>W</small></output>
              </div>
            </section>

            <section class="rk-hl-step" aria-labelledby="rk-hl-step-4-title">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">4</span>
                <div><h4 id="rk-hl-step-4-title">Wentylacja, infiltracja i mostki cieplne</h4><p>Odzysk ciepła redukuje część mechaniczną strumienia, ale nie usuwa infiltracji. Mostki wpisujemy jako sumaryczny współczynnik Htb w W/K.</p></div>
              </div>
              <div class="rk-hl-field-grid">
                <div class="rk-hl-field">
                  <label for="rk-hl-vent-flow">Strumień wentylacji V̇ [m³/h]</label>
                  <input id="rk-hl-vent-flow" type="number" min="0" max="50000" step="1" value="175" inputmode="decimal">
                  <small>Dla wentylacji grawitacyjnej wpisz szacowany pełny strumień.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-recovery">Sprawność odzysku η [%]</label>
                  <input id="rk-hl-recovery" type="number" min="0" max="95" step="1" value="0" inputmode="decimal">
                  <small>Dla braku odzysku wpisz 0%.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-infiltration">Infiltracja n<sub>inf</sub> [1/h]</label>
                  <input id="rk-hl-infiltration" type="number" min="0" max="3" step="0.01" value="0.10" inputmode="decimal">
                  <small>Osobny napływ przez nieszczelności obudowy.</small>
                </div>
                <div class="rk-hl-field">
                  <label for="rk-hl-bridges">Mostki cieplne H<sub>TB</sub> [W/K]</label>
                  <input id="rk-hl-bridges" type="number" min="0" max="5000" step="0.1" value="15" inputmode="decimal">
                  <small>Suma ψ · l. Wpisz 0, jeśli brak danych.</small>
                </div>
              </div>
            </section>

            <section class="rk-hl-results" aria-live="polite" aria-atomic="false">
              <div class="rk-hl-step-title">
                <span class="rk-hl-step-no">5</span>
                <div><h4>Wynik na żywo</h4><p>Wartości wynikają wyłącznie z aktualnie wpisanych danych i jawnego modelu referencyjnego.</p></div>
              </div>
              <div class="rk-hl-results-top">
                <div class="rk-hl-result-main">
                  <span class="rk-hl-result-label">Projektowa strata całkowita</span>
                  <output class="rk-hl-result-value" id="rk-hl-total-kw">— <small>kW</small></output>
                  <span class="rk-hl-result-note" id="rk-hl-delta-note">Różnica temperatur: — K</span>
                </div>
                <div class="rk-hl-result-card">
                  <span class="rk-hl-result-label">Wskaźnik</span>
                  <output class="rk-hl-result-value" id="rk-hl-wm2">— <small>W/m²</small></output>
                  <span class="rk-hl-result-note">Odniesiony do wpisanej powierzchni</span>
                </div>
                <div class="rk-hl-result-card">
                  <span class="rk-hl-result-label">Przenikanie</span>
                  <output class="rk-hl-result-value" id="rk-hl-transmission">— <small>kW</small></output>
                  <span class="rk-hl-result-note">Suma wprowadzonych przegród</span>
                </div>
                <div class="rk-hl-result-card">
                  <span class="rk-hl-result-label">Wentylacja</span>
                  <output class="rk-hl-result-value" id="rk-hl-ventilation">— <small>kW</small></output>
                  <span class="rk-hl-result-note">Wentylacja po odzysku plus infiltracja</span>
                </div>
                <div class="rk-hl-result-card" id="rk-hl-active-result-card" hidden>
                  <span class="rk-hl-result-label">Moc z powierzchni czynnej</span>
                  <output class="rk-hl-result-value" id="rk-hl-active-wm2">— <small>W/m²</small></output>
                  <span class="rk-hl-result-note">Tylko kontrola w trybie pomieszczenia</span>
                </div>
              </div>
              <div class="rk-hl-status" id="rk-hl-status" data-level="warn">Uzupełnij dane, aby zobaczyć ocenę wyniku.</div>

              <div class="rk-hl-chart-panel">
                <h4>Moc budynku a temperatura zewnętrzna</h4>
                <p>Krzywa wykorzystuje aktualny sumaryczny współczynnik strat H. Pomarańczowy punkt oznacza temperaturę projektową wpisaną w kalkulatorze.</p>
                <div class="rk-hl-chart-box">
                  <svg id="rk-hl-chart" viewBox="0 0 760 330" role="img" aria-labelledby="rk-hl-chart-title rk-hl-chart-desc">
                    <title id="rk-hl-chart-title">Wykres wymaganej mocy względem temperatury zewnętrznej</title>
                    <desc id="rk-hl-chart-desc">Dynamiczna linia pokazująca wzrost strat ciepła wraz ze spadkiem temperatury zewnętrznej.</desc>
                    <g id="rk-hl-chart-grid"></g>
                    <polyline id="rk-hl-chart-line" fill="none" stroke="#25c7d8" stroke-width="5" stroke-linecap="round" stroke-linejoin="round" points=""></polyline>
                    <line id="rk-hl-chart-design-line" x1="0" y1="0" x2="0" y2="0" stroke="#ff6a3d" stroke-width="2" stroke-dasharray="7 7"></line>
                    <circle id="rk-hl-chart-design-point" cx="0" cy="0" r="7" fill="#ff6a3d" stroke="#ffffff" stroke-width="3"></circle>
                    <text id="rk-hl-chart-design-label" x="0" y="0" fill="#102536" font-size="14" font-weight="900">—</text>
                  </svg>
                </div>
                <div class="rk-hl-chart-legend"><span><i></i> wymagana moc modelu</span><span><i class="rk-hl-legend-design"></i> punkt projektowy</span></div>
              </div>

              <div class="rk-hl-breakdown-panel">
                <h4>Udział głównych składowych</h4>
                <p>Paski porównują przenikanie, wymianę powietrza i mostki w identycznym punkcie temperaturowym.</p>
                <div class="rk-hl-breakdown-list">
                  <div class="rk-hl-breakdown-row">
                    <span class="rk-hl-breakdown-name">Przenikanie</span>
                    <span class="rk-hl-breakdown-track"><span class="rk-hl-breakdown-bar" id="rk-hl-bar-transmission"></span></span>
                    <span class="rk-hl-breakdown-value" id="rk-hl-share-transmission">—</span>
                  </div>
                  <div class="rk-hl-breakdown-row">
                    <span class="rk-hl-breakdown-name">Wentylacja</span>
                    <span class="rk-hl-breakdown-track"><span class="rk-hl-breakdown-bar" id="rk-hl-bar-ventilation"></span></span>
                    <span class="rk-hl-breakdown-value" id="rk-hl-share-ventilation">—</span>
                  </div>
                  <div class="rk-hl-breakdown-row">
                    <span class="rk-hl-breakdown-name">Mostki cieplne</span>
                    <span class="rk-hl-breakdown-track"><span class="rk-hl-breakdown-bar" id="rk-hl-bar-bridges"></span></span>
                    <span class="rk-hl-breakdown-value" id="rk-hl-share-bridges">—</span>
                  </div>
                </div>
              </div>

              <div class="rk-hl-diagnostic-panel">
                <h4>Diagnostyka danych i granic modelu</h4>
                <p>Kalkulator nie ukrywa pominiętych informacji. Ostrzeżenie nie oznacza automatycznie błędu instalacji — wskazuje, czego nie należy wyciągać z wyniku.</p>
                <ul class="rk-hl-diagnostic-list" id="rk-hl-diagnostics">
                  <li data-state="warn">Trwa inicjalizacja diagnostyki.</li>
                </ul>
              </div>
              <p class="rk-hl-disclaimer">Model referencyjny: ΦT = Σ(U · A · b) · Δθ, ΦV = 0,34 · [V̇ · (1 − η) + ninf · V] · Δθ, ΦTB = HTB · Δθ. Wartość b dla gruntu lub stref buforowych jest uproszczeniem. Narzędzie nie wykonuje pełnych obliczeń EN 12831-1, ISO 13370 ani analizy rocznej ISO 52016.</p>
            </section>
          </div>
          <noscript><p style="padding:20px;color:#fff;background:#7b281f">Kalkulator wymaga włączonej obsługi JavaScript. Treść i wzory pozostają dostępne w artykule.</p></noscript>
        </div>
      </section>

      <aside class="rk-hl-sales-cta" aria-label="Zamówienie projektu po obliczeniu strat ciepła">
        <h3>Masz wynik budynku. Do projektu podłogówki potrzebujesz jeszcze wyników każdego pomieszczenia.</h3>
        <p>Kalkulator nie zna pełnej geometrii węzłów, dokładnej wymiany z gruntem, rzeczywistych mostków, trwałej zabudowy ani przebiegu każdej pętli. Projekt przekłada obciążenie pomieszczeń na powierzchnie czynne, rozstawy rur, temperaturę wody, długości obwodów, przepływy i nastawy rozdzielacza.</p>
        <a class="rk-hl-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczeniami dla pomieszczeń</a>
      </aside>

      <section class="rk-hl-section" id="rk-hl-interpretacja">
        <span class="rk-hl-eyebrow">06 • Interpretacja</span>
        <h2>Jak czytać wynik kalkulatora strat ciepła?</h2>
        <p class="rk-hl-section-intro">Najważniejszą wartością jest całkowita moc w kW przy wpisanej temperaturze zewnętrznej. Wskaźnik W/m² i procentowy rozkład strat służą do kontroli, ale nie zastępują analizy danych źródłowych.</p>
        <div class="rk-hl-grid-3">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">kW</span>
            <h3>Moc projektowa</h3>
            <p>Informuje, ile ciepła trzeba dostarczać w rozpatrywanym punkcie zimowym, aby kompensować wprowadzone straty.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">W/m²</span>
            <h3>Wskaźnik kontrolny</h3>
            <p>Ułatwia porównanie budynków i pomieszczeń, ale średnia całego domu może ukryć trudną łazienkę albo salon z dużymi oknami.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">%</span>
            <h3>Rozkład strat</h3>
            <p>Pokazuje, czy największy udział ma obudowa budynku, wymiana powietrza czy mostki wpisane do modelu.</p>
          </article>
        </div>
        <h3>Dlaczego wykres jest przydatniejszy niż jedna liczba?</h3>
        <p>Strata ciepła zmienia się wraz z różnicą temperatur. Jeżeli model wyznacza 7 kW przy −20°C, przy 0°C wymagana moc będzie mniejsza. Wykres pozwala zobaczyć tę zależność bez udawania, że budynek przez cały sezon pracuje w najzimniejszym punkcie.</p>
        <div class="rk-hl-callout rk-hl-callout-red">
          <strong>Nie dodawaj automatycznie „15% zapasu”</strong>
          <p>Rezerwa nie naprawia błędnych powierzchni, U, temperatur ani wentylacji. Najpierw trzeba poprawić dane, a dopiero później analizować sposób doboru źródła, modulację i warunki jego pracy.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-budynek-pomieszczenia">
        <span class="rk-hl-eyebrow">07 • Dwa poziomy obliczeń</span>
        <h2>Strata całego budynku a strata pojedynczego pomieszczenia</h2>
        <p class="rk-hl-section-intro">Wynik budynku odpowiada na inne pytanie niż wynik salonu, łazienki czy sypialni. Do zaprojektowania odbiorników ciepła potrzebny jest podział na pomieszczenia.</p>
        <div class="rk-hl-table-wrap">
          <table>
            <thead>
              <tr><th>Zakres</th><th>Co wynika z obliczenia?</th><th>Czego nadal nie wiadomo?</th></tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Zakres"><strong>Cały budynek</strong></td>
                <td data-label="Co wynika?">Łączna moc wynikająca z obudowy, powietrza i mostków.</td>
                <td data-label="Czego nie wiadomo?">Rozkładu mocy pomiędzy pokoje oraz lokalnych ograniczeń ogrzewania.</td>
              </tr>
              <tr>
                <td data-label="Zakres"><strong>Pomieszczenie</strong></td>
                <td data-label="Co wynika?">Moc potrzebna w konkretnej strefie i obciążenie jej powierzchni.</td>
                <td data-label="Czego nie wiadomo?">Czy wybrana konstrukcja podłogi odda tę moc przy planowanej temperaturze wody.</td>
              </tr>
              <tr>
                <td data-label="Zakres"><strong>Powierzchnia czynna</strong></td>
                <td data-label="Co wynika?">Wymagana średnia moc z fragmentu, na którym rzeczywiście mogą leżeć rury.</td>
                <td data-label="Czego nie wiadomo?">Rozstawu, temperatury powierzchni i hydrauliki bez charakterystyki systemu.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <div class="rk-hl-formula">
          q<sub>wym</sub> = Φ<sub>HL,pom</sub> / A<sub>czynna</sub>
          <small>Dzielenie łącznej straty domu przez łączną powierzchnię podłogi nie zastępuje obliczeń każdego pomieszczenia.</small>
        </div>
        <p>Przykład: dom może mieć średnio 42 W/m², a łazienka — ze względu na wyższą temperaturę wewnętrzną, ścianę zewnętrzną i niewielką powierzchnię bez zabudowy — wymagać znacznie większej mocy z każdego aktywnego metra podłogi.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-podlogowka">
        <span class="rk-hl-eyebrow">08 • Przełożenie na instalację</span>
        <h2>Co wynik strat ciepła oznacza dla ogrzewania podłogowego?</h2>
        <p class="rk-hl-section-intro">Obciążenie cieplne jest wejściem do projektu podłogi, ale nie wydaje automatycznej decyzji „10 cm”, „15 cm” albo „35°C”.</p>
        <div class="rk-hl-grid-2">
          <article class="rk-hl-card">
            <h3>Najpierw trzeba sprawdzić moc powierzchni</h3>
            <ol>
              <li>Obliczyć stratę każdego pomieszczenia.</li>
              <li>Wyznaczyć rzeczywistą powierzchnię czynną.</li>
              <li>Określić konstrukcję jastrychu i opór okładziny.</li>
              <li>Porównać charakterystykę 10, 15 lub 20 cm przy tej samej temperaturze wody.</li>
              <li>Sprawdzić temperaturę powierzchni oraz hydraulikę pętli.</li>
            </ol>
          </article>
          <article class="rk-hl-card">
            <h3>Średnia budynku nie wyznacza rozstawu</h3>
            <p>Rozstaw może być różny w salonie, łazience i sypialni. W jednym pokoju 15 cm zapewni wystarczającą moc przy niskiej temperaturze wody, a w innym nawet 10 cm nie pokryje obciążenia z dostępnej powierzchni.</p>
            <p>Zobacz szczegółowe porównanie: <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 czy 15 cm</a>.</p>
          </article>
        </div>
        <p>Dopiero po dobraniu rozstawu i tras pętli można policzyć <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%C2%B2-ogrzewania-podlogowego/">ile rury potrzeba na m² ogrzewania podłogowego</a>, wyznaczyć długości obwodów oraz obliczyć przepływy. Granice temperatury pracy instalacji szerzej omawia artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalna temperatura zasilania podłogówki</a>.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-zrodlo">
        <span class="rk-hl-eyebrow">09 • Dobór urządzenia</span>
        <h2>Czy wynik kalkulatora wystarcza do wyboru źródła ciepła?</h2>
        <p class="rk-hl-section-intro"><strong>Nie.</strong> Projektowe obciążenie jest podstawową daną, ale karta konkretnego urządzenia i cały sposób pracy układu mają własne parametry.</p>
        <div class="rk-hl-grid-3">
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">PC</span>
            <h3>Pompa ciepła</h3>
            <p>Sprawdzamy moc przy właściwej temperaturze zewnętrznej i wymaganej temperaturze wody, punkt biwalentny, minimalną modulację, udział grzałki oraz przygotowanie c.w.u.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">K</span>
            <h3>Kocioł</h3>
            <p>Oprócz obciążenia ważna jest moc minimalna, zakres modulacji, sposób przygotowania c.w.u., hydraulika układu oraz wymagania producenta urządzenia.</p>
          </article>
          <article class="rk-hl-card">
            <span class="rk-hl-card-icon">CO</span>
            <h3>Instalacja</h3>
            <p>Całkowita moc służy do obliczenia przepływu, ale wysokość podnoszenia pompy obiegowej wynika z oporów krytycznej drogi przepływu, nie z samego kW.</p>
          </article>
        </div>
        <div class="rk-hl-callout">
          <strong>Oddziel moc na ogrzewanie od ciepłej wody użytkowej</strong>
          <p>Kalkulator liczy straty ogrzewanej strefy. Nie dolicza automatycznie mocy chwilowej potrzebnej do ładowania zasobnika c.w.u. ani nie zakłada jednego uniwersalnego zapasu.</p>
        </div>
        <p>Po ustaleniu przepływu projektowego można przejść do osobnego <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a>. Nie należy jednak przenosić do niego wyniku bez podziału instalacji na rzeczywiste obiegi i krytyczne drogi przepływu.</p>
      </section>

      <section class="rk-hl-section" id="rk-hl-przyklad">
        <span class="rk-hl-eyebrow">10 • Przykład krok po kroku</span>
        <h2>Przykładowy bilans domu o powierzchni 140 m²</h2>
        <p class="rk-hl-section-intro">Poniższe liczby odpowiadają wartościom startowym kalkulatora. To przykład dydaktyczny, a nie uniwersalny model każdego domu 140 m².</p>
        <h3>Założenia temperatury</h3>
        <div class="rk-hl-formula">Δθ = 20°C − (−20°C) = 40 K</div>
        <h3>Przenikanie przez przegrody</h3>
        <div class="rk-hl-table-wrap">
          <table>
            <thead>
              <tr><th>Przegroda</th><th>A [m²]</th><th>U [W/(m²·K)]</th><th>b</th><th>Strata [W]</th></tr>
            </thead>
            <tbody>
              <tr><td data-label="Przegroda">Ściany</td><td data-label="A">150</td><td data-label="U">0,20</td><td data-label="b">1,00</td><td data-label="Strata">1200</td></tr>
              <tr><td data-label="Przegroda">Okna</td><td data-label="A">30</td><td data-label="U">0,90</td><td data-label="b">1,00</td><td data-label="Strata">1080</td></tr>
              <tr><td data-label="Przegroda">Drzwi</td><td data-label="A">5</td><td data-label="U">1,30</td><td data-label="b">1,00</td><td data-label="Strata">260</td></tr>
              <tr><td data-label="Przegroda">Dach</td><td data-label="A">140</td><td data-label="U">0,15</td><td data-label="b">1,00</td><td data-label="Strata">840</td></tr>
              <tr><td data-label="Przegroda">Podłoga — model uproszczony</td><td data-label="A">140</td><td data-label="U">0,25</td><td data-label="b">0,50</td><td data-label="Strata">700</td></tr>
            </tbody>
          </table>
        </div>
        <h3>Wentylacja, infiltracja i mostki</h3>
        <p>Przy strumieniu wentylacji 175 m³/h bez odzysku, infiltracji 0,10 1/h i kubaturze 350 m³ efektywny strumień wynosi 210 m³/h:</p>
        <div class="rk-hl-formula">Φ<sub>V</sub> = 0,34 · 210 · 40 = 2856 W</div>
        <p>Dla wpisanego H<sub>TB</sub> = 15 W/K mostki odpowiadają za:</p>
        <div class="rk-hl-formula">Φ<sub>TB</sub> = 15 · 40 = 600 W</div>
        <p>Łączny wynik przykładu wynosi około <strong>7,54 kW</strong>, czyli około <strong>53,8 W/m²</strong>. Po wprowadzeniu 85% odzysku dla części wentylacyjnej wynik spadnie, ale składnik infiltracji nadal pozostanie w bilansie.</p>
        <div class="rk-hl-callout rk-hl-callout-green">
          <strong>Co pokazuje przykład?</strong>
          <p>Największą zmianę wyniku może powodować nie metraż, lecz przyjęty strumień powietrza, sprawność odzysku i kompletność przegród. Dlatego gotowy wskaźnik W/m² nie zastąpi danych konkretnego domu.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-bledy">
        <span class="rk-hl-eyebrow">11 • Kontrola jakości</span>
        <h2>Najczęstsze błędy i checklista przed obliczeniem</h2>
        <div class="rk-hl-grid-2">
          <article class="rk-hl-card">
            <h3>Błędy, które zmieniają wynik</h3>
            <ul>
              <li>mnożenie powierzchni podłogi przez losowe W/m²,</li>
              <li>użycie powierzchni pokoju jako powierzchni ściany,</li>
              <li>pominięcie okien albo niewłaściwe użycie Ug zamiast Uw,</li>
              <li>wyliczenie U całej przegrody wyłącznie jako λ/d jednej warstwy,</li>
              <li>zastosowanie temperatury z innej lokalizacji,</li>
              <li>pominięcie wentylacji lub dwukrotne policzenie infiltracji,</li>
              <li>odjęcie sprawności rekuperacji od całej wymiany powietrza,</li>
              <li>automatyczne doliczenie mostków jako stałego procentu.</li>
            </ul>
          </article>
          <article class="rk-hl-card">
            <h3>Wnioski, których kalkulator nie potwierdza</h3>
            <ul>
              <li>„Dom potrzebuje dokładnie takiej pompy ciepła”.</li>
              <li>„W każdym pokoju wystarczy rozstaw 15 cm”.</li>
              <li>„Podłogówka musi pracować na 35°C”.</li>
              <li>„Roczne zużycie wyniesie wynik kW razy liczba godzin”.</li>
              <li>„Rekuperacja usuwa wszystkie straty wentylacyjne”.</li>
              <li>„Wartość U podłogi wynika wyłącznie z grubości EPS”.</li>
            </ul>
          </article>
        </div>
        <h3>Checklista danych wejściowych</h3>
        <div class="rk-hl-checklist">
          <div class="rk-hl-check">Mam powierzchnię ogrzewaną i kubaturę netto.</div>
          <div class="rk-hl-check">Oddzieliłem ściany od okien i drzwi.</div>
          <div class="rk-hl-check">Używam współczynników U całych przegród.</div>
          <div class="rk-hl-check">Sprawdziłem temperaturę projektową lokalizacji.</div>
          <div class="rk-hl-check">Znam założony strumień wentylacji.</div>
          <div class="rk-hl-check">Oddzieliłem odzysk ciepła od infiltracji.</div>
          <div class="rk-hl-check">Uwzględniłem strefy nieogrzewane i grunt.</div>
          <div class="rk-hl-check">Wiem, czy mostki cieplne są policzone.</div>
          <div class="rk-hl-check">Dla podłogówki mam wyniki pomieszczeń.</div>
          <div class="rk-hl-check">Nie traktuję kalkulatora jako doboru urządzenia.</div>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-faq">
        <span class="rk-hl-eyebrow">12 • Pytania inwestorów</span>
        <h2>FAQ: kalkulator strat ciepła budynku</h2>
        <div class="rk-hl-faq">
          <details>
            <summary>Czy ten kalkulator zastępuje pełne OZC?</summary>
            <div class="rk-hl-faq-answer"><p>Nie. Jest przejrzystym modelem referencyjnym do wstępnego bilansu i kontroli danych. Pełne obliczenia wymagają kompletnej geometrii, warunków brzegowych, właściwej metody wymiany z gruntem, mostków, wentylacji oraz obliczeń pomieszczenie po pomieszczeniu.</p></div>
          </details>
          <details>
            <summary>Czy wystarczy pomnożyć metraż domu przez 40 albo 50 W/m²?</summary>
            <div class="rk-hl-faq-answer"><p>Nie jako obliczenie projektowe. Taki wskaźnik może być późniejszą kontrolą rzędu wielkości, ale nie zna powierzchni okien, geometrii, wentylacji, temperatur ani lokalnych strat pomieszczeń.</p></div>
          </details>
          <details>
            <summary>Dlaczego wynik jest podany w kW, a nie w kWh?</summary>
            <div class="rk-hl-faq-answer"><p>Ponieważ kalkulator wyznacza moc potrzebną w konkretnym punkcie temperaturowym. kWh opisuje energię zużytą lub dostarczoną w określonym czasie. Do wyniku rocznego potrzebny jest model sezonu, klimatu, zysków i sposobu użytkowania.</p></div>
          </details>
          <details>
            <summary>Jaką temperaturę zewnętrzną wpisać?</summary>
            <div class="rk-hl-faq-answer"><p>Należy przyjąć temperaturę projektową właściwą dla lokalizacji i stosowanej metody. Pomocniczy wybór pięciu stref w kalkulatorze nie zastępuje sprawdzenia położenia budynku. Szczegóły opisuje artykuł o <a href="https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/">strefach klimatycznych w Polsce</a>.</p></div>
          </details>
          <details>
            <summary>Co wpisać jako współczynnik b?</summary>
            <div class="rk-hl-faq-answer"><p>Dla bezpośredniej wymiany z powietrzem zewnętrznym przyjmujemy zwykle 1,00. Mniejsza wartość może w uproszczeniu opisywać grunt lub strefę buforową, ale prawidłowa wartość zależy od warunków po drugiej stronie i metody obliczeń. Domyślne 0,50 dla podłogi jest przykładem, nie uniwersalnym parametrem.</p></div>
          </details>
          <details>
            <summary>Czy sprawność rekuperatora można odjąć od wszystkich strat wentylacyjnych?</summary>
            <div class="rk-hl-faq-answer"><p>Nie. Odzysk dotyczy określonego strumienia przechodzącego przez wymiennik. Infiltracja przez nieszczelności pozostaje osobnym składnikiem, a rzeczywista praca instalacji może odbiegać od jednej wartości katalogowej.</p></div>
          </details>
          <details>
            <summary>Czy z wyniku można dobrać pompę ciepła?</summary>
            <div class="rk-hl-faq-answer"><p>Wynik jest ważnym wejściem do doboru, ale nie wskazuje samodzielnie konkretnego modelu. Trzeba porównać jego moc w odpowiednim punkcie pracy, temperaturę zasilania, punkt biwalentny, modulację, udział grzałki i przygotowanie c.w.u.</p></div>
          </details>
          <details>
            <summary>Czy wynik całego domu wystarczy do zaprojektowania podłogówki?</summary>
            <div class="rk-hl-faq-answer"><p>Nie. Podłogówkę dobiera się do obciążenia każdego pomieszczenia oraz jego rzeczywistej powierzchni czynnej. Następnie sprawdza się moc konkretnej konstrukcji podłogi, temperaturę powierzchni, rozstawy, długości, przepływy i opory pętli.</p></div>
          </details>
          <details>
            <summary>Czy audyt energetyczny i OZC to ten sam dokument?</summary>
            <div class="rk-hl-faq-answer"><p>Nie należy tych pojęć utożsamiać. Audyt energetyczny ma określony zakres, cel i wymagania dokumentacyjne. Projektowe obciążenie cieplne jest obliczeniem mocy. Wynik internetowego kalkulatora nie staje się audytem ani dokumentem wymaganym przez program dotacyjny.</p></div>
          </details>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-zrodla">
        <span class="rk-hl-eyebrow">13 • Metodyka i wiarygodność</span>
        <h2>Oficjalne źródła i ograniczenia modelu</h2>
        <p class="rk-hl-section-intro">Źródła zewnętrzne prowadzą wyłącznie do oficjalnych organizacji normalizacyjnych i serwisów publicznych. Kalkulator nie korzysta z tabel producentów ani materiałów sklepów internetowych.</p>
        <div class="rk-hl-source-list">
          <div class="rk-hl-source">
            <strong><a href="https://knowledge.bsigroup.com/products/energy-performance-of-buildings-method-for-calculation-of-the-design-heat-load-space-heating-load-module-m3-3" target="_blank" rel="noopener nofollow">BS EN 12831-1 — projektowe obciążenie cieplne</a></strong>
            <p>Metoda obliczania projektowego obciążenia cieplnego pomieszczeń, jednostek budynku i całych budynków.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65696.html" target="_blank" rel="noopener nofollow">ISO 52016-1 — potrzeby energetyczne, temperatury i obciążenia</a></strong>
            <p>Rozróżnia między innymi potrzeby energetyczne ogrzewania i chłodzenia oraz obciążenia cieplne.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65708.html" target="_blank" rel="noopener nofollow">ISO 6946:2017 — opór i współczynnik przenikania ciepła</a></strong>
            <p>Metoda dla komponentów budowlanych; jej zakres nie obejmuje między innymi okien ani elementów wymieniających ciepło z gruntem.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65716.html" target="_blank" rel="noopener nofollow">ISO 13370:2017 — wymiana ciepła przez grunt</a></strong>
            <p>Obliczanie współczynników i strumieni ciepła dla podłóg na gruncie, podłóg podniesionych i piwnic.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://www.iso.org/standard/65706.html" target="_blank" rel="noopener nofollow">ISO 14683:2017 — liniowe mostki cieplne</a></strong>
            <p>Metody uproszczone i wartości domyślne dla liniowego współczynnika przenikania ciepła.</p>
          </div>
          <div class="rk-hl-source">
            <strong><a href="https://czystepowietrze.gov.pl/wez-dofinansowanie/pytania-i-odpowiedzi/nowy-program-czyste-powietrze-obowiazujacy-od-31-marca-2025/14" target="_blank" rel="noopener nofollow">Program „Czyste Powietrze” — wymagania dotyczące audytu</a></strong>
            <p>Oficjalna odpowiedź dotycząca audytu energetycznego i dokumentu podsumowującego audyt. Nie należy utożsamiać ich z wynikiem kalkulatora internetowego.</p>
          </div>
        </div>
        <div class="rk-hl-callout">
          <strong>Zakres odpowiedzialności narzędzia</strong>
          <p>Kalkulator służy do edukacji, kontroli założeń i wstępnego bilansu. Wynik zależy od danych użytkownika. Nie zastępuje dokumentacji projektowej, audytu energetycznego, świadectwa charakterystyki energetycznej ani doboru konkretnego urządzenia.</p>
        </div>
      </section>

      <section class="rk-hl-section" id="rk-hl-autor">
        <span class="rk-hl-eyebrow">14 • E-E-A-T</span>
        <h2>Autor opracowania i metodyki kalkulatora</h2>
        <section class="rk-hl-author" aria-label="Autor opracowania">
          <input type="radio" name="rk-hl-author-tabs" id="rk-hl-author-about" checked>
          <input type="radio" name="rk-hl-author-tabs" id="rk-hl-author-exp">
          <input type="radio" name="rk-hl-author-tabs" id="rk-hl-author-method">
          <header class="rk-hl-author-head">
            <div>
              <h3>Robert Kucharski</h3>
              <p>Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego</p>
            </div>
            <span class="rk-hl-author-mark">OBLICZENIA CIEPLNE • OGRZEWANIE PŁASZCZYZNOWE • HYDRAULIKA INSTALACJI</span>
          </header>
          <div class="rk-hl-author-layout">
            <aside class="rk-hl-author-side">
              <div class="rk-hl-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC" width="600" height="600" loading="lazy" decoding="async"></div>
              <div class="rk-hl-author-name">Robert Kucharski</div>
              <div class="rk-hl-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
              <div class="rk-hl-author-social-label">Profile autora</div>
              <div class="rk-hl-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="me noopener nofollow" aria-label="Robert Kucharski na LinkedIn">
                  <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5C4.98 4.88 3.87 6 2.5 6A2.5 2.5 0 1 1 5 3.5ZM.5 8h4V24h-4V8Zm7 0h3.84v2.19h.05C11.93 9.18 13.24 7.5 17.2 7.5 23.21 7.5 24 11.46 24 16.61V24h-4v-6.56c0-1.57-.03-3.59-2.19-3.59-2.19 0-2.53 1.71-2.53 3.48V24h-4V8h3.84v2.19h.05C15.7 9.18 17.02 7.5 19.79 7.5Z"></path></svg>
                </a>
                <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="me noopener nofollow" aria-label="Projekt Ogrzewania na Facebooku">
                  <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.03 1.79-4.7 4.53-4.7 1.31 0 2.68.24 2.68.24v2.96h-1.51c-1.49 0-1.96.93-1.96 1.89v2.27h3.33l-.53 3.49h-2.8V24C19.61 23.1 24 18.1 24 12.07Z"></path></svg>
                </a>
                <a href="https://x.com/Projekt_HVAC" target="_blank" rel="me noopener nofollow" aria-label="Projekt HVAC w serwisie X">
                  <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231 5.45-6.231Zm-1.161 17.52h1.833L7.084 4.126H5.117L17.083 19.77Z"></path></svg>
                </a>
              </div>
            </aside>
            <div class="rk-hl-author-main">
              <blockquote class="rk-hl-author-quote"><p>„Wartość W/m² powinna być wynikiem obliczenia przegród, temperatur i wymiany powietrza. Jeżeli wpisujemy ją na początku tylko dlatego, że dom ma 140 m², nie obliczamy strat — zgadujemy.”</p></blockquote>
              <div class="rk-hl-author-tabs" role="tablist" aria-label="Informacje o autorze">
                <label class="rk-hl-author-tab" for="rk-hl-author-about">O autorze</label>
                <label class="rk-hl-author-tab" for="rk-hl-author-exp">Doświadczenie</label>
                <label class="rk-hl-author-tab" for="rk-hl-author-method">Metodyka</label>
              </div>
              <div class="rk-hl-author-panel rk-hl-author-panel-about">
                <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W publikacjach łączy fizykę budynku z praktycznym przełożeniem wyniku na rozstawy, długości pętli, przepływy i pracę źródła ciepła.</p>
                <p>Prowadzi serwis Projekt-Ogrzewania.pl oraz rozwija portale budowlane Remont.biz.pl i Sobir.pl. Celem materiałów jest pokazanie założeń i ograniczeń obliczeń, a nie zastępowanie projektu pojedynczą liczbą z internetowego formularza.</p>
              </div>
              <div class="rk-hl-author-panel rk-hl-author-panel-exp">
                <p>Doświadczenie autora obejmuje analizę dokumentacji budynków nowych i modernizowanych, obliczanie obciążeń pomieszczeń, dobór powierzchni grzewczych oraz hydrauliczne bilansowanie instalacji. Szczególną uwagę poświęca sytuacjom, w których średnia całego domu ukrywa problem lokalny: małą powierzchnię czynną łazienki, duże przeszklenia, strefy bez rur albo ograniczenia posadzki.</p>
                <p>Praktyka projektowa pokazuje, że poprawne dane wejściowe są ważniejsze od rozbudowanej grafiki kalkulatora. Dlatego narzędzie jawnie pokazuje wzory, składowe i ostrzeżenia o pominiętych mostkach lub uproszczonej wymianie z gruntem.</p>
              </div>
              <div class="rk-hl-author-panel rk-hl-author-panel-method">
                <p>Model kalkulatora rozdziela straty przez przenikanie, wentylację wraz z infiltracją oraz mostki cieplne. Nie miesza mocy projektowej w kW z roczną energią w kWh i nie dobiera automatycznie rozstawu rur ani modelu urządzenia.</p>
                <p>Podstawą dalszego projektu podłogówki pozostaje obciążenie każdego pomieszczenia, jego powierzchnia czynna oraz charakterystyka konkretnej konstrukcji podłogi przy określonych temperaturach wody.</p>
              </div>
              <p><a href="https://projekt-ogrzewania.pl/author/admin3399/">Wszystkie wpisy autora</a></p>
              <div class="rk-hl-portals" aria-label="Serwisy prowadzone przez autora">
                <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
                <a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a>
                <a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a>
              </div>
            </div>
          </div>
        </section>
      </section>

      <aside class="rk-hl-sales-cta" aria-label="Końcowe zamówienie projektu ogrzewania podłogowego">
        <h3>Od bilansu strat do kompletnego projektu ogrzewania podłogowego</h3>
        <p>Otrzymasz rozstaw rur wpisany na rzut budynku, długości pętli, przepływy, nastawy rozdzielacza i zestawienie materiałowe oparte na danych poszczególnych pomieszczeń — bez projektowania całego domu na jednym uśrednionym W/m².</p>
        <a class="rk-hl-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </div>

  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@graph": [
      {
        "@type": "WebSite",
        "@id": "https://projekt-ogrzewania.pl/#website",
        "url": "https://projekt-ogrzewania.pl/",
        "name": "Projekt-Ogrzewania.pl",
        "inLanguage": "pl-PL",
        "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" }
      },
      {
        "@type": "Organization",
        "@id": "https://projekt-ogrzewania.pl/#organization",
        "name": "Projekt-Ogrzewania.pl",
        "url": "https://projekt-ogrzewania.pl/",
        "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
      },
      {
        "@type": "Organization",
        "@id": "https://remont.biz.pl/#organization",
        "name": "Remont.biz.pl",
        "url": "https://remont.biz.pl/",
        "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
      },
      {
        "@type": "Organization",
        "@id": "https://sobir.pl/#organization",
        "name": "Sobir.pl",
        "url": "https://sobir.pl/",
        "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
      },
      {
        "@type": "Person",
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
        "name": "Robert Kucharski",
        "url": "https://projekt-ogrzewania.pl/author/admin3399/",
        "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
        "description": "Autor opracowań, kalkulatorów i projektów dotyczących ogrzewania podłogowego, obliczeń cieplnych oraz hydrauliki instalacji grzewczych.",
        "knowsAbout": [
          "projektowe obciążenie cieplne budynków",
          "ogrzewanie podłogowe",
          "hydraulika instalacji grzewczych",
          "dobór pomp obiegowych",
          "równoważenie hydrauliczne",
          "projektowanie instalacji sanitarnych"
        ],
        "worksFor": [
          { "@id": "https://projekt-ogrzewania.pl/#organization" },
          { "@id": "https://remont.biz.pl/#organization" },
          { "@id": "https://sobir.pl/#organization" }
        ],
        "sameAs": [
          "https://www.linkedin.com/in/robert-kucharski-38069b48/",
          "https://www.facebook.com/projektogrzewaniapl",
          "https://x.com/Projekt_HVAC"
        ]
      },
      {
        "@type": "BreadcrumbList",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#breadcrumb",
        "itemListElement": [
          {
            "@type": "ListItem",
            "position": 1,
            "name": "Strona główna",
            "item": "https://projekt-ogrzewania.pl/"
          },
          {
            "@type": "ListItem",
            "position": 2,
            "name": "Blog",
            "item": "https://projekt-ogrzewania.pl/blog/"
          },
          {
            "@type": "ListItem",
            "position": 3,
            "name": "Kalkulator strat ciepła budynku",
            "item": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
          }
        ]
      },
      {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webpage",
        "url": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/",
        "name": "Kalkulator strat ciepła budynku – oblicz wymaganą moc ogrzewania w kW",
        "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
        "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#breadcrumb" },
        "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#primaryimage" },
        "datePublished": "2026-03-09T11:26:18+01:00",
        "dateModified": "2026-09-01T12:00:00+02:00",
        "inLanguage": "pl-PL",
        "mainEntity": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article" }
      },
      {
        "@type": "ImageObject",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#primaryimage",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Kalkulator-strat-ciepla-domu-–-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie.webp",
        "caption": "Kalkulator strat ciepła budynku"
      },
      {
        "@type": "WebApplication",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#calculator",
        "name": "Kalkulator strat ciepła budynku i pomieszczenia",
        "url": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#rk-hl-kalkulator",
        "applicationCategory": "UtilitiesApplication",
        "operatingSystem": "Any",
        "browserRequirements": "JavaScript enabled",
        "isAccessibleForFree": true,
        "inLanguage": "pl-PL",
        "description": "Kalkulator wstępnego bilansu projektowych strat ciepła przez przegrody, wentylację, infiltrację i mostki cieplne, z wykresem wymaganej mocy względem temperatury zewnętrznej.",
        "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
        "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
        "offers": {
          "@type": "Offer",
          "price": "0",
          "priceCurrency": "PLN"
        },
        "featureList": [
          "obliczanie strat przez przegrody",
          "obliczanie strat wentylacyjnych i infiltracyjnych",
          "uwzględnienie odzysku ciepła",
          "uwzględnienie liniowych mostków cieplnych",
          "wynik w W, kW i W/m²",
          "dynamiczna krzywa mocy względem temperatury zewnętrznej",
          "diagnostyka kompletności danych"
        ]
      },
      {
        "@type": "HowTo",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#howto",
        "name": "Jak wstępnie obliczyć projektowe straty ciepła budynku?",
        "description": "Pięć kroków prowadzących od geometrii i temperatur do wyniku oraz jego prawidłowej interpretacji.",
        "totalTime": "PT20M",
        "tool": [
          { "@type": "HowToTool", "name": "Dokumentacja przegród i stolarki" },
          { "@type": "HowToTool", "name": "Kalkulator strat ciepła na stronie" }
        ],
        "step": [
          {
            "@type": "HowToStep",
            "position": 1,
            "name": "Określ zakres i geometrię",
            "text": "Wybierz cały budynek albo pomieszczenie, a następnie wpisz powierzchnię ogrzewaną i kubaturę."
          },
          {
            "@type": "HowToStep",
            "position": 2,
            "name": "Wpisz temperatury projektowe",
            "text": "Podaj wymaganą temperaturę wewnętrzną oraz temperaturę zewnętrzną właściwą dla lokalizacji."
          },
          {
            "@type": "HowToStep",
            "position": 3,
            "name": "Opisz przegrody",
            "text": "Dla ścian, okien, drzwi, dachu, podłogi i stref buforowych podaj powierzchnię, współczynnik U oraz współczynnik redukcyjny."
          },
          {
            "@type": "HowToStep",
            "position": 4,
            "name": "Uzupełnij wymianę powietrza i mostki",
            "text": "Podaj strumień wentylacji, sprawność odzysku, infiltrację i znany sumaryczny współczynnik mostków cieplnych."
          },
          {
            "@type": "HowToStep",
            "position": 5,
            "name": "Oceń wynik i ograniczenia",
            "text": "Odczytaj moc w kW, wskaźnik W/m², rozkład strat, wykres temperatury oraz ostrzeżenia o brakujących danych."
          }
        ]
      },
      {
        "@type": "FAQPage",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#faq",
        "mainEntity": [
          {
            "@type": "Question",
            "name": "Czy ten kalkulator zastępuje pełne OZC?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie. Jest modelem referencyjnym do wstępnego bilansu i kontroli danych. Pełne obliczenia wymagają kompletnej geometrii, warunków brzegowych, wymiany z gruntem, mostków, wentylacji i wyników każdego pomieszczenia." }
          },
          {
            "@type": "Question",
            "name": "Czy wystarczy pomnożyć metraż domu przez 40 albo 50 W/m²?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie jako obliczenie projektowe. Taki wskaźnik może być kontrolą rzędu wielkości, ale nie uwzględnia powierzchni okien, geometrii, wentylacji, temperatur ani lokalnych strat pomieszczeń." }
          },
          {
            "@type": "Question",
            "name": "Dlaczego wynik jest podany w kW, a nie w kWh?",
            "acceptedAnswer": { "@type": "Answer", "text": "Kalkulator wyznacza moc potrzebną w konkretnym punkcie temperaturowym. kWh opisuje energię w określonym czasie i wymaga modelu sezonu, klimatu, zysków oraz sposobu użytkowania." }
          },
          {
            "@type": "Question",
            "name": "Jaką temperaturę zewnętrzną wpisać?",
            "acceptedAnswer": { "@type": "Answer", "text": "Należy przyjąć temperaturę projektową właściwą dla lokalizacji i stosowanej metody. Pomocniczy wybór strefy nie zastępuje sprawdzenia położenia budynku." }
          },
          {
            "@type": "Question",
            "name": "Co wpisać jako współczynnik b?",
            "acceptedAnswer": { "@type": "Answer", "text": "Dla bezpośredniej wymiany z powietrzem zewnętrznym przyjmuje się 1,00. Mniejsza wartość może w uproszczeniu opisywać grunt lub strefę buforową, ale zależy od warunków i metody obliczeń." }
          },
          {
            "@type": "Question",
            "name": "Czy sprawność rekuperatora można odjąć od wszystkich strat wentylacyjnych?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie. Odzysk dotyczy strumienia przechodzącego przez wymiennik. Infiltracja przez nieszczelności pozostaje osobnym składnikiem." }
          },
          {
            "@type": "Question",
            "name": "Czy z wyniku można dobrać pompę ciepła?",
            "acceptedAnswer": { "@type": "Answer", "text": "Wynik jest ważnym wejściem, ale nie wskazuje konkretnego modelu. Trzeba sprawdzić moc urządzenia w punkcie pracy, temperaturę zasilania, punkt biwalentny, modulację, grzałkę i ciepłą wodę użytkową." }
          },
          {
            "@type": "Question",
            "name": "Czy wynik całego domu wystarczy do zaprojektowania podłogówki?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzebne jest obciążenie każdego pomieszczenia, jego powierzchnia czynna, konstrukcja podłogi, temperatura powierzchni, rozstawy, długości, przepływy i opory pętli." }
          },
          {
            "@type": "Question",
            "name": "Czy audyt energetyczny i OZC to ten sam dokument?",
            "acceptedAnswer": { "@type": "Answer", "text": "Nie należy utożsamiać tych pojęć. Audyt energetyczny ma określony zakres i cel dokumentacyjny, a projektowe obciążenie cieplne jest obliczeniem mocy. Wynik kalkulatora nie jest audytem." }
          }
        ]
      },
      {
        "@type": "TechArticle",
        "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article",
        "headline": "Kalkulator strat ciepła budynku – oblicz wymaganą moc ogrzewania w kW",
        "description": "Oblicz straty przez ściany, okna, dach, podłogę i wentylację. Sprawdź wymaganą moc w kW, W/m² oraz udział każdej części bilansu.",
        "url": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/",
        "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webpage" },
        "image": { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#primaryimage" },
        "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
        "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
        "datePublished": "2026-03-09T11:26:18+01:00",
        "dateModified": "2026-09-01T12:00:00+02:00",
        "inLanguage": "pl-PL",
        "isAccessibleForFree": true,
        "proficiencyLevel": "Intermediate",
        "about": [
          { "@type": "Thing", "name": "projektowe obciążenie cieplne" },
          { "@type": "Thing", "name": "straty ciepła budynku" },
          { "@type": "Thing", "name": "ogrzewanie podłogowe" },
          { "@type": "Thing", "name": "wentylacja i infiltracja" }
        ],
        "mentions": [
          { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#calculator" },
          { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#howto" },
          { "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#faq" }
        ],
        "citation": [
          "https://knowledge.bsigroup.com/products/energy-performance-of-buildings-method-for-calculation-of-the-design-heat-load-space-heating-load-module-m3-3",
          "https://www.iso.org/standard/65696.html",
          "https://www.iso.org/standard/65708.html",
          "https://www.iso.org/standard/65716.html",
          "https://www.iso.org/standard/65706.html",
          "https://budowlaneabc.gov.pl/charakterystyka-energetyczna-budynkow/kalkulatory/calc-wpc/",
          "https://czystepowietrze.gov.pl/wez-dofinansowanie/pytania-i-odpowiedzi/nowy-program-czyste-powietrze-obowiazujacy-od-31-marca-2025/14"
        ]
      }
    ]
  }
  </script>

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

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

      var scope = document.getElementById("rk-hl-scope");
      var areaInput = document.getElementById("rk-hl-area");
      var volumeInput = document.getElementById("rk-hl-volume");
      var activeField = document.getElementById("rk-hl-active-field");
      var activeInput = document.getElementById("rk-hl-active-area");
      var activeResultCard = document.getElementById("rk-hl-active-result-card");
      var zone = document.getElementById("rk-hl-zone");
      var indoorInput = document.getElementById("rk-hl-indoor");
      var outdoorInput = document.getElementById("rk-hl-outdoor");
      var ventFlowInput = document.getElementById("rk-hl-vent-flow");
      var recoveryInput = document.getElementById("rk-hl-recovery");
      var infiltrationInput = document.getElementById("rk-hl-infiltration");
      var bridgesInput = document.getElementById("rk-hl-bridges");
      var rows = root.querySelectorAll(".rk-hl-envelope-row");
      var totalKwOutput = document.getElementById("rk-hl-total-kw");
      var wm2Output = document.getElementById("rk-hl-wm2");
      var transmissionOutput = document.getElementById("rk-hl-transmission");
      var ventilationOutput = document.getElementById("rk-hl-ventilation");
      var activeWm2Output = document.getElementById("rk-hl-active-wm2");
      var deltaNote = document.getElementById("rk-hl-delta-note");
      var status = document.getElementById("rk-hl-status");
      var diagnostics = document.getElementById("rk-hl-diagnostics");

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

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

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

      function rkHlSetOutput(element, value, unit, digits) {
        element.innerHTML = rkHlFormat(value, digits) + " <small>" + unit + "</small>";
      }

      function rkHlCreateSvg(tag, attributes, textValue) {
        var element = document.createElementNS("http://www.w3.org/2000/svg", tag);
        Object.keys(attributes).forEach(function (key) {
          element.setAttribute(key, String(attributes[key]));
        });
        if (typeof textValue === "string") { element.textContent = textValue; }
        return element;
      }

      function rkHlClear(element) {
        while (element.firstChild) { element.removeChild(element.firstChild); }
      }

      function rkHlDrawChart(totalH, indoor, outdoor, totalKw) {
        var grid = document.getElementById("rk-hl-chart-grid");
        var line = document.getElementById("rk-hl-chart-line");
        var designLine = document.getElementById("rk-hl-chart-design-line");
        var designPoint = document.getElementById("rk-hl-chart-design-point");
        var designLabel = document.getElementById("rk-hl-chart-design-label");
        var left = 68;
        var right = 24;
        var top = 22;
        var bottom = 52;
        var width = 760;
        var height = 330;
        var plotWidth = width - left - right;
        var plotHeight = height - top - bottom;
        var xMin = -30;
        var xMax = 15;
        var yMax;
        var xStep;
        var points = [];
        var current;

        if (outdoor < xMin) { xMin = Math.floor(outdoor / 5) * 5; }
        if (indoor > xMax) { xMax = Math.ceil(indoor / 5) * 5; }
        yMax = totalH * Math.max(indoor - xMin, 1) / 1000;
        yMax = Math.max(1, Math.ceil(yMax));
        xStep = xMax - xMin > 50 ? 10 : 5;

        function xPos(value) {
          return left + (value - xMin) / (xMax - xMin) * plotWidth;
        }

        function yPos(value) {
          return top + plotHeight - value / yMax * plotHeight;
        }

        rkHlClear(grid);

        for (current = 0; current <= 5; current += 1) {
          var yValue = yMax * current / 5;
          var y = yPos(yValue);
          grid.appendChild(rkHlCreateSvg("line", {
            x1: left,
            y1: y,
            x2: width - right,
            y2: y,
            stroke: "#d9e8ed",
            "stroke-width": 1
          }));
          grid.appendChild(rkHlCreateSvg("text", {
            x: left - 10,
            y: y + 5,
            fill: "#607784",
            "font-size": 12,
            "text-anchor": "end"
          }, rkHlFormat(yValue, 1)));
        }

        for (current = xMin; current <= xMax; current += xStep) {
          var x = xPos(current);
          grid.appendChild(rkHlCreateSvg("line", {
            x1: x,
            y1: top,
            x2: x,
            y2: top + plotHeight,
            stroke: "#e4eef1",
            "stroke-width": 1
          }));
          grid.appendChild(rkHlCreateSvg("text", {
            x: x,
            y: height - 24,
            fill: "#607784",
            "font-size": 12,
            "text-anchor": "middle"
          }, String(current) + "°"));
        }

        grid.appendChild(rkHlCreateSvg("line", {
          x1: left,
          y1: top + plotHeight,
          x2: width - right,
          y2: top + plotHeight,
          stroke: "#728994",
          "stroke-width": 2
        }));
        grid.appendChild(rkHlCreateSvg("line", {
          x1: left,
          y1: top,
          x2: left,
          y2: top + plotHeight,
          stroke: "#728994",
          "stroke-width": 2
        }));
        grid.appendChild(rkHlCreateSvg("text", {
          x: left + plotWidth / 2,
          y: height - 3,
          fill: "#405965",
          "font-size": 13,
          "font-weight": 800,
          "text-anchor": "middle"
        }, "temperatura zewnętrzna [°C]"));
        grid.appendChild(rkHlCreateSvg("text", {
          x: 18,
          y: top + plotHeight / 2,
          fill: "#405965",
          "font-size": 13,
          "font-weight": 800,
          "text-anchor": "middle",
          transform: "rotate(-90 18 " + String(top + plotHeight / 2) + ")"
        }, "wymagana moc [kW]"));

        for (current = xMin; current <= xMax; current += 1) {
          var power = totalH * Math.max(indoor - current, 0) / 1000;
          points.push(rkHlFormat(xPos(current), 1).replace(",", ".") + "," + rkHlFormat(yPos(power), 1).replace(",", "."));
        }
        line.setAttribute("points", points.join(" "));

        var designTemperature = rkHlClamp(outdoor, xMin, xMax);
        var designX = xPos(designTemperature);
        var designY = yPos(totalKw);
        designLine.setAttribute("x1", String(designX));
        designLine.setAttribute("x2", String(designX));
        designLine.setAttribute("y1", String(top));
        designLine.setAttribute("y2", String(top + plotHeight));
        designPoint.setAttribute("cx", String(designX));
        designPoint.setAttribute("cy", String(designY));
        designLabel.setAttribute("x", String(designX > width - 135 ? designX - 92 : designX + 10));
        designLabel.setAttribute("y", String(Math.max(top + 16, designY - 12)));
        designLabel.textContent = rkHlFormat(totalKw, 2) + " kW przy " + rkHlFormat(outdoor, 1) + "°C";
      }

      function rkHlSetBar(barId, valueId, value, total) {
        var percentage = total > 0 ? value / total * 100 : 0;
        document.getElementById(barId).style.width = rkHlClamp(percentage, 0, 100) + "%";
        document.getElementById(valueId).textContent = rkHlFormat(value / 1000, 2) + " kW • " + rkHlFormat(percentage, 1) + "%";
      }

      function rkHlDiagnosticItem(textValue, stateValue) {
        var item = document.createElement("li");
        item.textContent = textValue;
        item.setAttribute("data-state", stateValue);
        return item;
      }

      function rkHlUpdate() {
        var area = Math.max(0, rkHlNumber(areaInput, 0));
        var volume = Math.max(0, rkHlNumber(volumeInput, 0));
        var activeArea = Math.max(0, rkHlNumber(activeInput, 0));
        var indoor = rkHlNumber(indoorInput, 20);
        var outdoor = rkHlNumber(outdoorInput, -20);
        var delta = Math.max(0, indoor - outdoor);
        var ventFlow = Math.max(0, rkHlNumber(ventFlowInput, 0));
        var recovery = rkHlClamp(rkHlNumber(recoveryInput, 0), 0, 95);
        var infiltration = Math.max(0, rkHlNumber(infiltrationInput, 0));
        var bridgesH = Math.max(0, rkHlNumber(bridgesInput, 0));
        var transmissionH = 0;
        var envelopeCount = 0;
        var invalidEnvelope = false;
        var floorSimplified = false;
        var ventEffective;
        var ventilationH;
        var totalH;
        var transmissionW;
        var ventilationW;
        var bridgesW;
        var totalW;
        var totalKw;
        var wm2;
        var activeWm2;
        var badCount = 0;
        var warnCount = 0;

        rows.forEach(function (row) {
          var rowArea = Math.max(0, rkHlNumber(row.querySelector('[data-role="area"]'), 0));
          var rowU = Math.max(0, rkHlNumber(row.querySelector('[data-role="u"]'), 0));
          var rowFactor = Math.max(0, rkHlNumber(row.querySelector('[data-role="factor"]'), 0));
          var rowH = rowArea * rowU * rowFactor;
          var rowW = rowH * delta;
          var rowOutput = row.querySelector('[data-role="result"]');
          transmissionH += rowH;
          if (rowArea > 0) { envelopeCount += 1; }
          if (rowArea > 0) {
            if (rowU <= 0) { invalidEnvelope = true; }
          }
          if (row.getAttribute("data-envelope") === "floor") {
            if (rowArea > 0) { floorSimplified = true; }
          }
          rowOutput.innerHTML = rkHlFormat(rowW, 0) + " <small>W</small>";
        });

        ventEffective = ventFlow * (1 - recovery / 100) + infiltration * volume;
        ventilationH = 0.34 * ventEffective;
        totalH = transmissionH + ventilationH + bridgesH;
        transmissionW = transmissionH * delta;
        ventilationW = ventilationH * delta;
        bridgesW = bridgesH * delta;
        totalW = transmissionW + ventilationW + bridgesW;
        totalKw = totalW / 1000;
        wm2 = area > 0 ? totalW / area : 0;
        activeWm2 = activeArea > 0 ? totalW / activeArea : 0;

        rkHlSetOutput(totalKwOutput, totalKw, "kW", 2);
        rkHlSetOutput(wm2Output, wm2, "W/m²", 1);
        rkHlSetOutput(transmissionOutput, transmissionW / 1000, "kW", 2);
        rkHlSetOutput(ventilationOutput, ventilationW / 1000, "kW", 2);
        rkHlSetOutput(activeWm2Output, activeWm2, "W/m²", 1);
        deltaNote.textContent = "Różnica temperatur: " + rkHlFormat(delta, 1) + " K • H całkowite: " + rkHlFormat(totalH, 1) + " W/K";

        rkHlSetBar("rk-hl-bar-transmission", "rk-hl-share-transmission", transmissionW, totalW);
        rkHlSetBar("rk-hl-bar-ventilation", "rk-hl-share-ventilation", ventilationW, totalW);
        rkHlSetBar("rk-hl-bar-bridges", "rk-hl-share-bridges", bridgesW, totalW);
        rkHlDrawChart(totalH, indoor, outdoor, totalKw);

        rkHlClear(diagnostics);

        if (delta <= 0) {
          diagnostics.appendChild(rkHlDiagnosticItem("Temperatura zewnętrzna nie jest niższa od wewnętrznej. Punkt nie opisuje zimowego obciążenia grzewczego.", "bad"));
          badCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Różnica temperatur jest dodatnia i została jawnie pokazana w wyniku.", "good"));
        }

        if (area <= 0) {
          diagnostics.appendChild(rkHlDiagnosticItem("Brakuje powierzchni ogrzewanej, dlatego wskaźnik W/m² nie może być oceniony.", "bad"));
          badCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Wskaźnik mocy został odniesiony do wpisanej powierzchni " + rkHlFormat(area, 1) + " m².", "good"));
        }

        if (envelopeCount < 3) {
          diagnostics.appendChild(rkHlDiagnosticItem("Wprowadzono mniej niż trzy rodzaje przegród. Sprawdź, czy bilans obejmuje całą analizowaną strefę.", "warn"));
          warnCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Przenikanie jest liczone osobno dla " + String(envelopeCount) + " rodzajów przegród.", "good"));
        }

        if (invalidEnvelope) {
          diagnostics.appendChild(rkHlDiagnosticItem("Co najmniej jedna przegroda ma powierzchnię większą od zera i U równe zero.", "bad"));
          badCount += 1;
        }

        if (floorSimplified) {
          diagnostics.appendChild(rkHlDiagnosticItem("Podłoga na gruncie jest policzona przybliżeniem U · A · b · Δθ, a nie pełną metodą wymiany z gruntem.", "warn"));
          warnCount += 1;
        }

        if (ventFlow <= 0) {
          if (infiltration <= 0) {
            diagnostics.appendChild(rkHlDiagnosticItem("Wentylacja i infiltracja mają wartość zero. Wynik prawdopodobnie pomija istotną część strat.", "bad"));
            badCount += 1;
          } else {
            diagnostics.appendChild(rkHlDiagnosticItem("Straty powietrzne obejmują tylko infiltrację. Sprawdź, czy celowo pominięto strumień wentylacyjny.", "warn"));
            warnCount += 1;
          }
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Efektywny strumień powietrza użyty w obliczeniu wynosi " + rkHlFormat(ventEffective, 1) + " m³/h.", "good"));
        }

        if (recovery > 0) {
          if (ventFlow <= 0) {
            diagnostics.appendChild(rkHlDiagnosticItem("Wpisano sprawność odzysku, ale strumień wentylacji wynosi zero.", "warn"));
            warnCount += 1;
          } else {
            diagnostics.appendChild(rkHlDiagnosticItem("Odzysk redukuje tylko wpisany strumień wentylacyjny; infiltracja pozostaje osobno.", "good"));
          }
        }

        if (bridgesH <= 0) {
          diagnostics.appendChild(rkHlDiagnosticItem("Mostki cieplne nie zostały uwzględnione. Nie doliczono automatycznego zapasu procentowego.", "warn"));
          warnCount += 1;
        } else {
          diagnostics.appendChild(rkHlDiagnosticItem("Mostki cieplne odpowiadają za " + rkHlFormat(bridgesW / 1000, 2) + " kW w punkcie projektowym.", "good"));
        }

        if (scope.value === "room") {
          if (activeArea <= 0) {
            diagnostics.appendChild(rkHlDiagnosticItem("W trybie pomieszczenia brakuje czynnej powierzchni podłogi.", "bad"));
            badCount += 1;
          } else {
            diagnostics.appendChild(rkHlDiagnosticItem("Wymagana średnia moc z powierzchni czynnej wynosi " + rkHlFormat(activeWm2, 1) + " W/m². Trzeba ją porównać z charakterystyką konkretnej podłogi.", "good"));
          }
        }

        if (wm2 > 120) {
          diagnostics.appendChild(rkHlDiagnosticItem("Wskaźnik przekracza 120 W/m². Zweryfikuj dane, a następnie osobno oceń możliwości odbiorników ciepła.", "warn"));
          warnCount += 1;
        }

        if (badCount > 0) {
          status.setAttribute("data-level", "alert");
          status.textContent = "Brakuje danych krytycznych albo warunki nie opisują punktu grzewczego. Nie używaj jeszcze wyniku do dalszych decyzji.";
        } else if (warnCount > 0) {
          status.setAttribute("data-level", "warn");
          status.textContent = "Wynik jest użyteczny do wstępnej analizy, ale zawiera jawne uproszczenia. Przeczytaj diagnostykę przed wykorzystaniem liczby.";
        } else {
          status.setAttribute("data-level", "good");
          status.textContent = "Wprowadzone dane tworzą spójny wstępny bilans. Nadal nie jest to pełne OZC ani automatyczny dobór urządzenia.";
        }
      }

      function rkHlScopeChange() {
        if (scope.value === "room") {
          activeField.hidden = false;
          activeResultCard.hidden = false;
        } else {
          activeField.hidden = true;
          activeResultCard.hidden = true;
        }
        rkHlUpdate();
      }

      zone.addEventListener("change", function () {
        if (zone.value !== "manual") { outdoorInput.value = zone.value; }
        rkHlUpdate();
      });

      scope.addEventListener("change", rkHlScopeChange);

      root.querySelectorAll("input, select").forEach(function (control) {
        if (control !== zone) {
          if (control !== scope) {
            control.addEventListener("input", rkHlUpdate);
            control.addEventListener("change", rkHlUpdate);
          }
        }
      });

      rkHlScopeChange();
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <section id="rk-rv-okna" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Przepływy poza centralą</div>
        <h2>Czy przy rekuperacji można otwierać okna? Co z okapem i kominkiem?</h2>
        <h3>Co okresowo zmienia bilans przepływów?</h3>
        <h4>Otwieranie okien</h4>
        <p>Można otwierać okna. W tym czasie część wymiany powietrza odbywa się poza wymiennikiem, dlatego odzysk ciepła spada, a centrala nie kontroluje całego przepływu. Krótkie otwarcie okna nie „psuje” instalacji, lecz długotrwałe rozszczelnienie zwiększa straty.</p>
        <h4>Okap kuchenny</h4>
        <p>Okap wyrzucający powietrze bezpośrednio na zewnątrz może wytworzyć znaczne podciśnienie. Trzeba przewidzieć drogę powietrza kompensacyjnego i nie włączać jego dużego przepływu do standardowego bilansu centrali bez sprawdzenia.</p>
        <h4>Kominek i urządzenia spalające paliwo</h4>
        <p>Wymagają doprowadzenia powietrza do spalania oraz weryfikacji bezpieczeństwa i warunków ciągu. Nie wolno zakładać, że sama regulacja rekuperatora rozwiąże każdy przypadek podciśnienia.</p>
        <p>Pomieszczenia z dużymi oknami nadal trzeba obliczać lokalnie. Rekuperacja nie usuwa potrzeby analizy <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">podłogówki przy dużych przeszkleniach</a>.</p>
      </section>

      <section id="rk-rv-zima" class="rk-rv-section">
        <div class="rk-rv-eyebrow">Tryby poza punktem katalogowym</div>
        <h2>Mróz, kondensat, odszranianie i bypass</h2>
        <p>W niskiej temperaturze w wymienniku może wykraplać się wilgoć, a w określonych warunkach powstawać szron. Centrala musi chronić wymiennik, na przykład zmieniając przepływy, uruchamiając nagrzewnicę lub realizując sekwencję odszraniania. Każda strategia może zmienić chwilowy odzysk i pobór energii.</p>
        <div class="rk-rv-grid-2">
          <div class="rk-rv-card rk-rv-card-warm"><h3>Zimą</h3><ul class="rk-rv-list-check"><li>sprawdź drożność odpływu kondensatu,</li><li>poznaj logikę ochrony przeciwzamrożeniowej,</li><li>kontroluj opory filtrów i bilans przepływów.</li></ul></div>
          <div class="rk-rv-card rk-rv-card-accent"><h3>Latem i w okresach przejściowych</h3><ul class="rk-rv-list-check"><li>bypass może omijać odzysk temperatury,</li><li>nocne chłodzenie zależy od temperatur i przepływu,</li><li>rekuperator nie zastępuje aktywnej klimatyzacji.</li></ul></div>
        </div>
        <div class="rk-rv-callout"><strong>Wartość odzysku z etykiety nie opisuje wszystkich trybów centrali.</strong> Do analizy sezonowej potrzebny jest przebieg pracy, dane klimatyczne i sposób sterowania.</div>
      </section>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      function formatKw(value) {
        return formatNumber(value, 2) + " kW";
      }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      calculate();
    }

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", startRekuAnalyzer);
    } else {
      startRekuAnalyzer();
    }
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">Rekuperacja i ogrzewanie podłogowe – czy to się opłaca?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika</title>
		<link>https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 08 Feb 2026 09:42:12 +0000</pubDate>
				<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie niskotemperaturowe]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[budownictwo nowoczesne]]></category>
		<category><![CDATA[chłodzenie płaszczyznowe]]></category>
		<category><![CDATA[cop]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje hvac]]></category>
		<category><![CDATA[jastrych anhydrytowy]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[niskie parametry zasilania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3414</guid>

					<description><![CDATA[<p>Wybór systemu grzewczego to jedna z najważniejszych decyzji podczas budowy nowoczesnego domu. Samo urządzenie to jednak tylko połowa sukcesu. Aby instalacja była naprawdę energooszczędna, niezbędny jest rzetelny i precyzyjnie wykonany projekt ogrzewania podłogowego z pompą ciepła, który połączy fizykę budowli z charakterystyką pracy inwertera. W tym artykule wchodzimy głęboko w techniczne aspekty synergii systemów niskotemperaturowych. Analizujemy wpływ temperatury zasilania na współczynnik COP, wyjaśniamy znaczenie bezwładności jastrychu dla żywotności sprężarki oraz podpowiadamy, jak uniknąć błędów hydraulicznych, które mogą drastycznie podnieść Twoje rachunki za prąd. To obowiązkowa lektura dla każdego świadomego inwestora.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-heat-guide {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbfe;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #d69a16;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }
  #rk-heat-guide,
  #rk-heat-guide * { box-sizing: border-box; }
  #rk-heat-guide img,
  #rk-heat-guide svg { max-width: 100%; }
  #rk-heat-guide button,
  #rk-heat-guide input,
  #rk-heat-guide select,
  #rk-heat-guide label,
  #rk-heat-guide summary,
  #rk-heat-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-heat-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-heat-guide a:hover,
  #rk-heat-guide a:focus-visible { color: var(--rk-red); }
  #rk-heat-guide p,
  #rk-heat-guide ul,
  #rk-heat-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-heat-guide h2,
  #rk-heat-guide h3,
  #rk-heat-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-heat-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-heat-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-heat-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-heat-guide strong { color: var(--rk-dark); }
  #rk-heat-guide [hidden] { display: none !important; }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


<style>
  /* Audyt kompletności projektu — cztery kolejne warstwy, bez pustych kolumn. */
  #rk-heat-guide .rk-pc-audit-group {
    margin-bottom: 16px;
    padding: 21px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 16px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-pc-audit-group:last-child { margin-bottom: 0; }
  #rk-heat-guide .rk-pc-audit-head {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    margin-bottom: 17px;
  }
  #rk-heat-guide .rk-pc-audit-number {
    display: grid;
    flex: 0 0 38px;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    font-size: .78rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-audit-head h4 { margin: 0 0 4px; color: var(--rk-white); }
  #rk-heat-guide .rk-pc-audit-head p { margin: 0; color: #bcd7e1; font-size: .68rem; }
  #rk-heat-guide .rk-pc-stage-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 11px;
    margin: 18px 0;
  }
  #rk-heat-guide .rk-pc-stage {
    min-width: 0;
    padding: 16px;
    border: 1px solid rgba(136, 202, 220, .28);
    border-radius: 14px;
    background: rgba(255, 255, 255, .045);
  }
  #rk-heat-guide .rk-pc-stage::before {
    display: block;
    width: 100%;
    height: 7px;
    margin-bottom: 13px;
    border-radius: 999px;
    background: #ff8b7f;
    content: "";
  }
  #rk-heat-guide .rk-pc-stage.is-partial::before { background: #ffd568; }
  #rk-heat-guide .rk-pc-stage.is-ready::before { background: #4cd7ac; }
  #rk-heat-guide .rk-pc-stage b { display: block; color: var(--rk-white); font-size: .73rem; }
  #rk-heat-guide .rk-pc-stage span { display: block; margin-top: 5px; color: #bcd7e1; font-size: .61rem; line-height: 1.45; }
  #rk-heat-guide .rk-pc-summary {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 16px;
    align-items: center;
    padding: 18px;
    border: 1px solid rgba(136, 202, 220, .28);
    border-radius: 15px;
    background: rgba(255, 255, 255, .045);
  }
  #rk-heat-guide .rk-pc-score {
    display: grid;
    place-items: center;
    width: 92px;
    height: 92px;
    border: 8px solid var(--rk-cyan);
    border-radius: 50%;
    color: var(--rk-white);
    font-size: 1.12rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-summary h4 { margin-bottom: 4px; color: var(--rk-white); }
  #rk-heat-guide .rk-pc-summary p { margin: 0; color: #c6dfe7; font-size: .7rem; }
  #rk-heat-guide .rk-pc-result-columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin-top: 16px;
  }
  #rk-heat-guide .rk-pc-result-box {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 14px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-heat-guide .rk-pc-result-box h4 { color: var(--rk-white); }
  #rk-heat-guide .rk-pc-result-box ul {
    display: grid;
    gap: 7px;
    margin: 0;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-pc-result-box li {
    position: relative;
    margin: 0;
    padding: 9px 10px 9px 32px;
    border-radius: 9px;
    color: #d9eaf0;
    background: rgba(255, 255, 255, .045);
    font-size: .64rem;
    line-height: 1.46;
  }
  #rk-heat-guide .rk-pc-result-box li::before {
    position: absolute;
    top: 9px;
    left: 11px;
    color: #4cd7ac;
    content: "✓";
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-result-box.is-missing li::before { color: #ffd568; content: "!"; }
  #rk-heat-guide .rk-pc-empty { color: #a9c8d3; font-size: .66rem; }
  #rk-heat-guide .rk-pc-tool-foot {
    margin: 16px 0 0;
    padding: 13px 15px;
    border-left: 4px solid #ffd568;
    border-radius: 10px;
    color: #fff0c4;
    background: rgba(214, 154, 22, .13);
    font-size: .66rem;
    line-height: 1.5;
  }
  #rk-heat-guide .rk-pc-tool-foot strong { color: #fff7dd; }
  #rk-heat-guide .rk-pc-doc-list {
    counter-reset: rk-doc;
    display: grid;
    gap: 12px;
    margin: 25px 0;
    padding: 0;
    list-style: none;
  }
  #rk-heat-guide .rk-pc-doc-list li {
    position: relative;
    min-height: 70px;
    margin: 0;
    padding: 17px 17px 17px 70px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }
  #rk-heat-guide .rk-pc-doc-list li::before {
    position: absolute;
    top: 16px;
    left: 17px;
    display: grid;
    place-items: center;
    width: 39px;
    height: 39px;
    border-radius: 11px;
    color: var(--rk-white);
    background: var(--rk-blue);
    counter-increment: rk-doc;
    content: counter(rk-doc);
    font-size: .76rem;
    font-weight: 950;
  }
  #rk-heat-guide .rk-pc-doc-list b { display: block; margin-bottom: 3px; }
  #rk-heat-guide .rk-pc-doc-list span { color: var(--rk-text); font-size: .8rem; }
  #rk-heat-guide .rk-pc-flow {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin: 25px 0;
  }
  #rk-heat-guide .rk-pc-flow > div {
    position: relative;
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-top: 6px solid var(--rk-cyan);
    border-radius: 14px;
    background: var(--rk-white);
  }
  #rk-heat-guide .rk-pc-flow > div:nth-child(2) { border-top-color: var(--rk-orange); }
  #rk-heat-guide .rk-pc-flow > div:nth-child(3) { border-top-color: var(--rk-green); }
  #rk-heat-guide .rk-pc-flow > div:nth-child(4) { border-top-color: var(--rk-purple); }
  #rk-heat-guide .rk-pc-flow b { display: block; margin-bottom: 5px; }
  #rk-heat-guide .rk-pc-flow span { color: var(--rk-muted); font-size: .7rem; line-height: 1.45; }
  @media (max-width: 900px) {
    #rk-heat-guide .rk-pc-stage-grid,
    #rk-heat-guide .rk-pc-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  }
  @media (max-width: 720px) {
    #rk-heat-guide .rk-pc-stage-grid,
    #rk-heat-guide .rk-pc-result-columns,
    #rk-heat-guide .rk-pc-flow { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-pc-summary { grid-template-columns: 1fr; }
    #rk-heat-guide .rk-pc-score { width: 80px; height: 80px; }
    #rk-heat-guide .rk-pc-audit-group { padding: 17px; }
  }
  @media (max-width: 420px) {
    #rk-heat-guide .rk-pc-audit-head { display: block; }
    #rk-heat-guide .rk-pc-audit-number { margin-bottom: 10px; }
    #rk-heat-guide .rk-pc-doc-list li { padding-left: 62px; }
  }
</style>

<div id="rk-heat-guide">
  <article class="rk-heat-shell">
    <header class="rk-heat-hero">
      <span class="rk-heat-kicker">Projekt wykonawczy • podłogówka i pompa ciepła • aktualizacja 2026</span>
      <p class="rk-heat-hero-title">Projekt ogrzewania podłogowego z pompą ciepła <span>łączy budynek, podłogę, hydraulikę i źródło</span></p>
      <p class="rk-heat-lead">Dobry projekt nie kończy się na narysowaniu rur. Musi przeprowadzić obliczenia od strat ciepła każdego pomieszczenia, przez aktywną powierzchnię podłogi i długości pętli, aż do przepływów, nastaw rozdzielacza oraz parametrów pracy pompy ciepła.</p>
      <div class="rk-heat-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-heat-hero-tag">OZC pomieszczeń</span>
        <span class="rk-heat-hero-tag">rozstaw i pętle</span>
        <span class="rk-heat-hero-tag">przepływy i nastawy</span>
        <span class="rk-heat-hero-tag">temperatura zasilania</span>
        <span class="rk-heat-hero-tag">dokumentacja wykonawcza</span>
      </div>
      <div class="rk-heat-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: około 28 minut</span>
        <span>Aktualizacja techniczna: 7 września 2026 r.</span>
      </div>
      <div class="rk-heat-hero-metrics" aria-label="Trzy zasady kompletnego projektu">
        <div class="rk-heat-hero-metric"><b>Najpierw obciążenia pomieszczeń</b><span>Jedna moc całego domu nie wystarcza do rozplanowania podłogi w salonie, łazience i sypialniach.</span></div>
        <div class="rk-heat-hero-metric"><b>Później geometria i hydraulika</b><span>Rozstaw, długość obwodu, przepływ oraz strata ciśnienia muszą dotyczyć tej samej pętli.</span></div>
        <div class="rk-heat-hero-metric"><b>Na końcu zgodność ze źródłem</b><span>Temperatury, minimalny przepływ, sterowanie i praca stref muszą pasować do pompy ciepła.</span></div>
      </div>
    </header>

    <nav class="rk-heat-nav" aria-label="Nawigacja po wszystkich rozdziałach artykułu">
      <span class="rk-heat-nav-label">Na skróty</span>
      <div class="rk-heat-nav-track">
        <a href="#rk-pc-szybka">Szybka odpowiedź</a>
        <a href="#rk-pc-zakres">Zakres projektu</a>
        <a href="#rk-pc-warstwy">Cztery warstwy</a>
        <a href="#rk-pc-dane">Dane wejściowe</a>
        <a href="#rk-pc-ozc">OZC pomieszczeń</a>
        <a href="#rk-pc-powierzchnia">Powierzchnia czynna</a>
        <a href="#rk-pc-temperatury">Temperatury wody</a>
        <a href="#rk-pc-rozstaw">Rozstaw rur</a>
        <a href="#rk-pc-okladziny">Okładziny</a>
        <a href="#rk-pc-petle">Pętle i dobiegi</a>
        <a href="#rk-pc-hydraulika">Przepływy i opory</a>
        <a href="#rk-pc-pompa-obiegowa">Pompa obiegowa</a>
        <a href="#rk-pc-zrodlo">Dobór pompy ciepła</a>
        <a href="#rk-pc-bufor">Bufor i minimalny przepływ</a>
        <a href="#rk-pc-sterowanie">Sterowanie</a>
        <a href="#rk-pc-audyt">Audyt danych</a>
        <a href="#rk-pc-dokumentacja">Dokumentacja</a>
        <a href="#rk-pc-czytanie">Jak czytać projekt</a>
        <a href="#rk-pc-scenariusze">Nowy dom i modernizacja</a>
        <a href="#rk-pc-bledy">Błędy ofert</a>
        <a href="#rk-pc-checklista">Checklista</a>
        <a href="#rk-pc-faq">FAQ</a>
        <a href="#rk-pc-zrodla">Źródła</a>
        <a href="#rk-heat-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-heat-content">
      <section class="rk-heat-section" id="rk-pc-szybka">
        <span class="rk-heat-eyebrow">Odpowiedź w 30 sekund</span>
        <h2>Co powinien zawierać projekt podłogówki z pompą ciepła?</h2>
        <div class="rk-heat-answer">
          <p><strong>Kompletny projekt powinien połączyć obciążenie cieplne każdego pomieszczenia z rzeczywistą powierzchnią grzewczą, parametrami podłogi, geometrią pętli, przepływami oraz warunkami pracy pompy ciepła.</strong> Efektem nie jest sam rysunek rur, lecz zestaw informacji, według których instalację można wykonać, uruchomić i wyregulować.</p>
        </div>
        <p>Na rzucie powinny być widoczne pola z rurami, strefy wyłączone, podział na pętle, ich rozstawy, długości oraz przypisanie do rozdzielaczy. W tabeli obliczeniowej potrzebne są co najmniej: moc pomieszczenia, powierzchnia czynna, temperatura zasilania i powrotu, przepływ, strata ciśnienia oraz nastawa obwodu.</p>
        <p>Tak rozumiany <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">profesjonalny projekt ogrzewania podłogowego</a> pozwala sprawdzić zależności przed zalaniem rur. To zasadnicza różnica między dokumentacją wykonawczą a szkicem instalacji.</p>
        <div class="rk-heat-note"><p><strong>Projekt nie może zaczynać się od rozstawu 10 lub 15 cm.</strong> Rozstaw jest wynikiem obciążenia, powierzchni czynnej, temperatury wody, konstrukcji podłogi i oporu okładziny — nie samym założeniem wejściowym.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-zakres">
        <span class="rk-heat-eyebrow">Od obliczenia do nastawy</span>
        <h2>Rysunek rur to tylko jedna część projektu</h2>
        <p class="rk-heat-intro">Dokumentacja musi odpowiedzieć wykonawcy, gdzie ułożyć rury, ale także wyjaśnić, dlaczego dana pętla ma taki rozstaw, długość i przepływ.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Element</th><th>Co powinno się znaleźć w projekcie</th><th>Do czego służy</th></tr></thead>
            <tbody>
              <tr><td data-label="Element">Założenia</td><td data-label="Zawartość">Temperatury pomieszczeń, warunki zewnętrzne, wentylacja, konstrukcje przegród i podłóg.</td><td data-label="Cel">Umożliwiają odtworzenie obliczeń i późniejszą aktualizację.</td></tr>
              <tr><td data-label="Element">Bilans cieplny</td><td data-label="Zawartość">Obciążenie budynku oraz każdego ogrzewanego pomieszczenia.</td><td data-label="Cel">Określa wymaganą moc źródła i powierzchni grzewczych.</td></tr>
              <tr><td data-label="Element">Rzut instalacji</td><td data-label="Zawartość">Pętle, rozstawy, strefy brzegowe, dobiegi, dylatacje i miejsca bez rur.</td><td data-label="Cel">Daje wykonawcy jednoznaczną geometrię ułożenia.</td></tr>
              <tr><td data-label="Element">Hydraulika</td><td data-label="Zawartość">Długości, przepływy, opory, obwód krytyczny, średnice i nastawy.</td><td data-label="Cel">Pozwala zrównoważyć rozdzielacze i sprawdzić pompę obiegową.</td></tr>
              <tr><td data-label="Element">Źródło i regulacja</td><td data-label="Zawartość">Parametry wody, charakterystyka pompy ciepła, minimalny przepływ i logika sterowania.</td><td data-label="Cel">Łączy odbiorniki z warunkami stabilnej pracy źródła.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Porównanie <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projektu „z głowy” z projektem opartym na obliczeniach</a> najlepiej pokazuje, czego nie da się dopisać już po wykonaniu wylewki. Rury można wyregulować tylko w zakresie, jaki pozostawiła ich geometria.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-warstwy">
        <span class="rk-heat-eyebrow">Jedna instalacja, cztery zależne modele</span>
        <h2>Projekt tworzą cztery warstwy: budynek, podłoga, hydraulika i źródło</h2>
        <div class="rk-pc-flow">
          <div><b>1. Bilans budynku</b><span>Ile watów traci każde pomieszczenie w punkcie projektowym?</span></div>
          <div><b>2. Powierzchnia grzewcza</b><span>Czy aktywna podłoga odda tę moc przy przyjętych temperaturach?</span></div>
          <div><b>3. Hydraulika</b><span>Jak podzielić rury na obwody i uzyskać potrzebne przepływy?</span></div>
          <div><b>4. Pompa ciepła</b><span>Czy źródło pokryje moc i zachowa wymagany przepływ?</span></div>
        </div>
        <p>Każda warstwa przekazuje dane kolejnej. Jeżeli obciążenie łazienki jest nieznane, nie da się odpowiedzialnie wybrać mocy podłogi. Jeżeli nie znamy długości i przepływu krytycznej pętli, nie sprawdzimy wymaganego podnoszenia pompy. Jeżeli źródło i odbiornik analizuje się osobno, łatwo przeoczyć przypadek, w którym <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">pompa ma moc, ale podłoga nie pokrywa obciążenia konkretnego pokoju</a>.</p>
        <div class="rk-heat-warning"><p><strong>Jedna wartość dla całego domu nie zastępuje obliczeń pomieszczeń.</strong> Suma mocy jest potrzebna do analizy źródła, lecz rozstaw rur i przepływ wyznacza się dla lokalnych warunków.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-dane">
        <span class="rk-heat-eyebrow">Jakość wyniku zaczyna się przed obliczeniami</span>
        <h2>Jakie dane trzeba przygotować do projektu?</h2>
        <p class="rk-heat-intro">Im wcześniej zbierzemy komplet informacji, tym mniej założeń trzeba przyjmować i tym mniejsze ryzyko zmian podczas montażu.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">A</span><h3>Architektura i przegrody</h3><p>Rzuty z wymiarami, przekroje, lokalizacja budynku, konstrukcje ścian, dachu, podłogi, okien oraz drzwi.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">I</span><h3>Instalacja i wnętrza</h3><p>Źródło ciepła, lokalizacje rozdzielaczy, pionów i urządzeń, stała zabudowa, dylatacje oraz planowane okładziny.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">T</span><h3>Temperatury i wentylacja</h3><p>Temperatury wewnętrzne, dane wentylacji lub rekuperacji, temperatura projektowa i oczekiwany sposób sterowania.</p></div>
        </div>
        <h3>Dane, których nie warto zgadywać</h3>
        <ul class="rk-heat-list">
          <li>Grubości i materiały przegród zamiast ogólnego określenia „dom dobrze ocieplony”.</li>
          <li>Opór cieplny całej okładziny z podkładem, a nie tylko rodzaj „panel” lub „płytka”.</li>
          <li>Rzeczywiste miejsca szaf, wysp kuchennych, wanien i innych trwałych elementów.</li>
          <li>Model pompy ciepła lub przynajmniej dane do późniejszego sprawdzenia jej charakterystyki.</li>
          <li>Planowane strefy zamykane siłownikami i wymagania dotyczące chłodzenia, jeżeli ma wystąpić.</li>
        </ul>
        <p>Jeżeli inwestor ma już wiarygodne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>, można wykorzystać wyniki pomieszczeń. Jeżeli nie — bilans trzeba opracować na podstawie aktualnej dokumentacji budynku.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-ozc">
        <span class="rk-heat-eyebrow">Moc wymagana w warunkach obliczeniowych</span>
        <h2>OZC każdego pomieszczenia jest punktem wyjścia do rozstawu rur</h2>
        <p>Obciążenie cieplne opisuje moc potrzebną do utrzymania założonej temperatury wewnętrznej przy warunkach projektowych. Obejmuje straty przez przegrody oraz wymianę powietrza. Nie jest rachunkiem rocznym ani prognozą miesięcznego zużycia energii.</p>
        <div class="rk-heat-formula"><strong>Φ<sub>HL</sub> = Φ<sub>T</sub> + Φ<sub>V</sub></strong><span>projektowe straty przez przenikanie oraz wentylację i infiltrację, obliczane dla właściwych warunków</span></div>
        <p>W osobnym poradniku pokazujemy krok po kroku, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne budynku</a>. Dla projektu wykonawczego istotne jest jednak nie tylko łącznych 6 czy 9 kW, ale przykładowo 540 W w sypialni, 1250 W w salonie i 780 W w łazience.</p>
        <h3>Założenia muszą być jawne</h3>
        <p>Metodyka oparta na <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">zasadach obliczeń według PN-EN 12831</a> wymaga spójnych temperatur i danych przegród. Znaczenie ma też lokalizacja, ponieważ <a href="https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/">warunki projektowe różnią się między strefami klimatycznymi</a>.</p>
        <div class="rk-heat-note"><p><strong>Kontrola projektu:</strong> suma mocy pomieszczeń, wynik całego budynku i założenia wentylacyjne powinny być ze sobą zgodne. Rozbieżności trzeba wyjaśnić przed doborem pompy.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-powierzchnia">
        <span class="rk-heat-eyebrow">Metry kwadratowe, które naprawdę grzeją</span>
        <h2>Powierzchnia czynna decyduje o wymaganej mocy podłogi</h2>
        <p class="rk-heat-intro">Moc pomieszczenia trzeba odnieść do fragmentu posadzki, na którym rzeczywiście można ułożyć działające rury.</p>
        <div class="rk-heat-formula"><strong>q<sub>wym</sub> = Q<sub>pomieszczenia</sub> / A<sub>czynna</sub></strong><span>wymagana moc jednostkowa [W/m²] = obciążenie pomieszczenia [W] / aktywna powierzchnia [m²]</span></div>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">20</span><h3>20 m² powierzchni czynnej</h3><p>Przy obciążeniu 1000 W wymaganie wynosi średnio 50 W/m².</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">12</span><h3>12 m² powierzchni czynnej</h3><p>Przy tym samym obciążeniu wymaganie rośnie do około 83 W/m².</p></div>
        </div>
        <p>Z tego powodu rzut musi wskazywać <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">miejsca, w których rur podłogówki nie należy układać</a>. Nie każdą szafkę trzeba wyłączać automatycznie, ale trwałą zabudowę, kominek, brodzik czy mocowania do podłoża należy uzgodnić przed wyznaczeniem pętli.</p>
        <h3>Mała łazienka może być trudniejsza od dużego salonu</h3>
        <p>Łazienka ma często wyższą temperaturę obliczeniową i jednocześnie mało wolnej podłogi. Jeżeli wymagana moc jednostkowa przekracza możliwości przyjętej konstrukcji i dopuszczalnej temperatury powierzchni, projekt powinien wskazać dodatkowy odbiornik albo zmianę założeń — nie tylko zagęścić rury.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-temperatury">
        <span class="rk-heat-eyebrow">Wspólny parametr źródła i odbiornika</span>
        <h2>Temperaturę zasilania i powrotu wyznacza wymagana wydajność</h2>
        <p>Podłogówka współpracuje z pompą ciepła korzystnie, gdy może pokryć obciążenia przy niskiej temperaturze wody. Nie oznacza to jednak, że każdemu budynkowi wolno z góry przypisać 35°C. Parametry wynikają z obciążeń, powierzchni czynnej, rozstawu, oporu podłogi i temperatur wewnętrznych.</p>
        <div class="rk-hp-equation">
          <div><code>θ<sub>m</sub> = (θ<sub>z</sub> + θ<sub>p</sub>) / 2</code><span>Średnia temperatura wody zależy od zasilania i powrotu.</span></div>
          <div><code>Δθ<sub>H</sub> = θ<sub>m</sub> − θ<sub>i</sub></code><span>Różnica względem wnętrza napędza wymianę ciepła przez podłogę.</span></div>
        </div>
        <p>Projekt określa wspólny punkt obliczeniowy, a następnie sprawdza, czy wszystkie pomieszczenia osiągną wymaganą moc. Szczegółowy wpływ <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatury między zasilaniem a powrotem</a> trzeba rozpatrywać razem z przepływem i długością pętli.</p>
        <div class="rk-heat-warning"><p><strong>Niższa temperatura nie jest celem samym w sobie.</strong> Najpierw musi zapewnić komfort przy mrozie, a dopiero później można optymalizować krzywą grzewczą i efektywność.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-rozstaw">
        <span class="rk-heat-eyebrow">Wynik obliczeń, nie etykieta źródła</span>
        <h2>Jak projekt dobiera rozstaw rur do pompy ciepła?</h2>
        <p class="rk-heat-intro">Źródło ciepła wpływa na pożądaną temperaturę wody, ale samo nie wyznacza rozstawu. Ta sama podłoga przy tych samych parametrach emituje podobną moc niezależnie od tego, co ogrzało wodę.</p>
        <p>Procedura dla każdego pomieszczenia wygląda następująco. Punktem odniesienia dla oceny systemu jest <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">metodyka obliczeń ogrzewania podłogowego EN 1264</a>, a nie katalogowa wartość mocy przypisana do samego rozstawu.</p>
        <ol>
          <li>odczytujemy projektowe obciążenie cieplne,</li>
          <li>wyznaczamy rzeczywistą powierzchnię czynną,</li>
          <li>ustalamy konstrukcję podłogi i opór okładziny,</li>
          <li>przyjmujemy temperaturę zasilania i powrotu wspólną dla systemu,</li>
          <li>sprawdzamy wydajność dostępnych rozstawów oraz temperaturę powierzchni,</li>
          <li>wybrany układ przenosimy na geometrię pętli i weryfikujemy hydraulicznie.</li>
        </ol>
        <p>Osobno opisujemy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">dobór rozstawu rur przy pompie ciepła</a> oraz praktyczne porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu 10 i 15 cm przy jednakowych warunkach</a>. W projekcie można zastosować różne rozstawy w jednym budynku, jeżeli wynika to z obciążeń i konstrukcji.</p>
        <h3>Strefy brzegowe i duże przeszklenia</h3>
        <p>Przy fasadach o większych stratach można lokalnie zmienić układ, ale strefa brzegowa nie może być automatycznym paskiem nanoszonym bez obliczeń. Zależności dla <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">podłogówki przy dużych przeszkleniach</a> obejmują także temperaturę powierzchni, głębokość strefy i rzeczywiste obciążenie przy elewacji.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-okladziny">
        <span class="rk-heat-eyebrow">Warstwa nad rurą ma znaczenie</span>
        <h2>Płytki, panele i drewno wchodzą do obliczeń przez opór cieplny</h2>
        <p>Projekt nie powinien przypisywać jednej wydajności wszystkim panelom ani każdej podłodze drewnianej. Potrzebny jest deklarowany opór kompletu: okładziny, podkładu, kleju lub innych warstw przewidzianych przez dostawcę systemu.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Dana</th><th>Dlaczego jest potrzebna</th><th>Co dzieje się po zmianie</th></tr></thead>
            <tbody>
              <tr><td data-label="Dane">Materiał wykończenia</td><td data-label="Znaczenie">Pomaga dobrać sposób montażu i ograniczenia eksploatacyjne.</td><td data-label="Skutek zmiany">Może zmienić bezwładność, sposób mocowania i dopuszczalną temperaturę.</td></tr>
              <tr><td data-label="Dane">Opór R [m²K/W]</td><td data-label="Znaczenie">Jest parametrem używanym do oceny przenikania ciepła przez wykończenie.</td><td data-label="Skutek zmiany">Wyższy opór zwykle wymaga większej różnicy temperatur dla tej samej mocy.</td></tr>
              <tr><td data-label="Dane">Limit temperatury</td><td data-label="Znaczenie">Chroni okładzinę i określa dopuszczalny sposób użytkowania.</td><td data-label="Skutek zmiany">Może ograniczyć dostępną moc powierzchni wcześniej niż sam system grzewczy.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Warto wcześniej sprawdzić, <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">jak okładzina wpływa na wydajność ogrzewania podłogowego</a> i jak interpretować <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny R w m²K/W</a>. Jeżeli materiał zostanie zmieniony po obliczeniach, należy sprawdzić pomieszczenie ponownie.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-petle">
        <span class="rk-heat-eyebrow">Geometria zamieniona na obwody</span>
        <h2>Podział na pętle uwzględnia pole grzewcze, dobiegi i dylatacje</h2>
        <p>Najpierw wyznacza się pola możliwe do ogrzewania, a później prowadzi obwody tak, aby obsłużyć wymagany rozstaw, nie przekroczyć przyjętych ograniczeń hydraulicznych i przejść przez dylatacje w uzgodniony sposób. Długość pętli obejmuje zarówno rurę w polu, jak i zasilający oraz powrotny dobieg do rozdzielacza.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">P</span><h3>Pole</h3><p>Powierzchnia oraz rozstaw wyznaczają orientacyjne zużycie rury w strefie grzewczej.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">D</span><h3>Dobieg</h3><p>Odległość od rozdzielacza może istotnie zmienić długość i opór konkretnego obwodu.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">R</span><h3>Różnica długości</h3><p>Pętle nie muszą być identyczne, ale ich przepływy i dostępne nastawy muszą być policzone.</p></div>
        </div>
        <p>Praktyczne zasady pokazuje poradnik o tym, <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak planować rozmieszczenie pętli grzewczych</a>. Z kolei <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli</a> nie jest jedną liczbą wynikającą wyłącznie ze średnicy rury — zależy również od przepływu, oporów dodatkowych i budżetu ciśnienia.</p>
        <div class="rk-heat-note"><p><strong>Kontrola na budowie:</strong> wykonawca powinien zapisać rzeczywiste długości. Jeśli wyraźnie różnią się od projektu, przepływy i nastawy mogą wymagać ponownego przeliczenia.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-hydraulika">
        <span class="rk-heat-eyebrow">Każdy obwód ma własny bilans</span>
        <h2>Przepływy, spadki ciśnienia i nastawy rozdzielacza</h2>
        <p class="rk-heat-intro">Moc pętli i przyjęta różnica temperatur pozwalają wyznaczyć przepływ. Długość, średnica, właściwości medium i armatura decydują o stracie ciśnienia.</p>
        <div class="rk-hp-equation">
          <div><code>V̇ ≈ Q / (1,163 × ΔT)</code><span>Dla wody: orientacyjny przepływ [l/h] z mocy [W] i różnicy temperatur [K].</span></div>
          <div><code>Δp<sub>obwodu</sub> = Δp<sub>rury</sub> + Δp<sub>armatury</sub></code><span>Opór pełnej drogi od belki zasilającej do powrotnej.</span></div>
        </div>
        <p>W tabeli projektu każda pętla powinna mieć własną moc i przepływ. Nastawa nie jest dzieleniem przepływu całego rozdzielacza po równo. Odczyt i regulację opisuje poradnik o <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach na rozdzielaczu</a>.</p>
        <h3>Obwód krytyczny wyznacza wymagania pompy</h3>
        <p>Pompa nie sumuje spadków wszystkich równoległych pętli. Musi pokonać opór najbardziej wymagającej czynnej drogi przy przepływie całej obsługiwanej instalacji. Projekt powinien więc wskazać obwód krytyczny, opory wspólnej magistrali i elementów dodatkowych.</p>
        <div class="rk-heat-warning"><p><strong>Nie wolno wyznaczać nastaw z samej długości.</strong> Dwie pętle po 80 m mogą przenosić inną moc, wymagać innego przepływu i mieć różne opory zaworów lub dobiegów.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-pompa-obiegowa">
        <span class="rk-heat-eyebrow">Wspólna część układu</span>
        <h2>Magistrala i pompa obiegowa muszą obsłużyć projektowy punkt pracy</h2>
        <p>Po zsumowaniu jednocześnie czynnych przepływów sprawdza się prędkość i spadek ciśnienia w przewodach zasilających rozdzielacze. Pomocniczo można porównać wynik z poradnikiem o <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnicy rury zasilającej rozdzielacz</a>.</p>
        <p>Punkt pracy pompy obiegowej tworzy przecięcie charakterystyki urządzenia z krzywą instalacji. Nie wybiera się jej tylko na podstawie liczby pętli ani powierzchni budynku. <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Analizator doboru pompy obiegowej</a> pomaga zrozumieć relację przepływu i podnoszenia, natomiast projekt korzysta z rzeczywistych oporów wszystkich elementów.</p>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">Q</span><h3>Przepływ całkowity</h3><p>Wynika z sumy obwodów pracujących w rozpatrywanym stanie, nie z maksimum pojedynczego rotametru.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">H</span><h3>Wymagane podnoszenie</h3><p>Wynika z krytycznej drogi wraz z magistralą, rozdzielaczem, zaworami i urządzeniami wspólnymi.</p></div>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-pc-zrodlo">
        <span class="rk-heat-eyebrow">Dopasowanie charakterystyki źródła</span>
        <h2>Dobór pompy ciepła wymaga mocy przy właściwym punkcie A/W</h2>
        <p class="rk-heat-intro">Moc w nazwie modelu lub wartość przy A7/W35 nie mówi jeszcze, ile urządzenie dostarczy podczas temperatury projektowej budynku i przy wodzie wymaganej przez instalację.</p>
        <p>Projekt porównuje OZC z charakterystyką urządzenia przy odpowiedniej temperaturze zewnętrznej i zasilaniu. Ustala także rolę grzałki lub drugiego źródła oraz sposób przygotowania ciepłej wody. Dążenie do <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskiej temperatury zasilania pompy ciepła</a> jest zasadne, ale jej wartość trzeba potwierdzić obliczeniami podłogi.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Pytanie</th><th>Wartość potrzebna do oceny</th><th>Czego nie używać zamiennie</th></tr></thead>
            <tbody>
              <tr><td data-label="Pytanie">Czy pompa pokryje moc?</td><td data-label="Potrzebna wartość">Moc grzewcza przy A<sub>proj</sub>/W<sub>proj</sub>.</td><td data-label="Nie zamieniaj">Moc nominalna z nazwy modelu.</td></tr>
              <tr><td data-label="Pytanie">Jaka będzie efektywność?</td><td data-label="Potrzebna wartość">COP lub dane sezonowe dla porównywalnych warunków.</td><td data-label="Nie zamieniaj">Pojedynczy COP z łagodnego punktu badania.</td></tr>
              <tr><td data-label="Pytanie">Czy instalacja odda moc?</td><td data-label="Potrzebna wartość">Wydajność podłogi przy rzeczywistym rozstawie i oporze.</td><td data-label="Nie zamieniaj">Ogólny limit mocy przypisany wszystkim podłogom.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Jeżeli obliczenia pokazują potrzebę wyższych parametrów, trzeba sprawdzić <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">ograniczenia temperatury zasilania podłogówki</a>, temperaturę powierzchni, okładzinę oraz wpływ punktu pracy na źródło.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-bufor">
        <span class="rk-heat-eyebrow">Stabilność przepływu i objętości</span>
        <h2>Bufor, minimalny przepływ i odszranianie sprawdza się funkcjonalnie</h2>
        <p>Nie każda instalacja z pompą ciepła wymaga bufora i nie ma jednej uniwersalnej pojemności na kilowat. Projekt powinien najpierw ustalić problem, który dodatkowy zbiornik ma rozwiązać: rozdzielenie hydrauliczne, zapewnienie minimalnej objętości, energię do odszraniania, stabilizację pracy czy współpracę z wieloma strefami.</p>
        <p>Analiza <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">funkcji bufora w ogrzewaniu podłogowym</a> powinna uwzględniać wymagania konkretnej pompy, pojemność rur, wielkość zładu, minimalny przepływ oraz to, ile obwodów może zostać zamkniętych.</p>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">V</span><h3>Objętość czynna</h3><p>Liczy się część instalacji rzeczywiście dostępna dla źródła w danym stanie pracy.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">F</span><h3>Przepływ minimalny</h3><p>Zamykanie stref nie może odebrać pompie drogi przepływu wymaganej przez jej automatykę.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">D</span><h3>Defrost</h3><p>W pompach powietrznych trzeba przewidzieć zachowanie układu podczas odszraniania.</p></div>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-pc-sterowanie">
        <span class="rk-heat-eyebrow">Regulacja zgodna z bezwładnością podłogi</span>
        <h2>Krzywa grzewcza, strefy i siłowniki muszą tworzyć jedną logikę</h2>
        <p>Podstawą regulacji niskotemperaturowej instalacji jest zwykle dopasowanie temperatury wody do warunków zewnętrznych. <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">Krzywa grzewcza podłogówki</a> powinna zapewniać najniższą temperaturę, która utrzymuje komfort bez częstego przerywania pracy.</p>
        <p>Regulacja pomieszczeniowa może korygować zyski wewnętrzne i różne harmonogramy, ale masowe zamknięcie siłowników zmienia hydraulikę widzianą przez pompę. Dlatego decyzja, <a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">czy montować sterowniki do ogrzewania podłogowego</a>, powinna wynikać z przeznaczenia pomieszczeń, bezwładności oraz wymagań źródła.</p>
        <div class="rk-heat-note"><p><strong>Projekt powinien opisać stan krytyczny.</strong> Trzeba wiedzieć, co dzieje się z minimalnym przepływem, gdy część stref jest zamknięta, i które obwody pozostają zawsze dostępne.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-audyt">
        <span class="rk-heat-eyebrow">Narzędzie przed zamówieniem obliczeń</span>
        <h2>Interaktywny audyt kompletności danych do projektu</h2>
        <p class="rk-heat-intro">Zaznacz, które materiały masz już przygotowane. Audyt nie projektuje instalacji — pokazuje, co można policzyć od razu, a co wymaga uzupełnienia lub potwierdzenia.</p>

        <div class="rk-heat-tool" id="rk-pc-tool">
          <div class="rk-heat-tool-head">
            <h3>Sprawdź gotowość danych w czterech warstwach</h3>
            <p>Dla każdego punktu wybierz „mam”, „częściowo” albo „brak”. Wynik aktualizuje się automatycznie i nie ocenia jakości technicznej samych dokumentów.</p>
          </div>
          <div class="rk-heat-tool-body">
            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">1</span><div><h4>Bilans cieplny budynku</h4><p>Dane potrzebne do wyznaczenia mocy całego domu i każdego pomieszczenia.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question is-critical"><label for="rk-pc-plan">Aktualne rzuty i przekroje z wymiarami</label><select id="rk-pc-plan" data-group="balance" data-label="aktualnych rzutów i przekrojów"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-envelope">Konstrukcje przegród, okna i współczynniki U albo pełne OZC</label><select id="rk-pc-envelope" data-group="balance" data-label="danych przegród lub pełnego OZC"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-temperatures">Temperatury projektowe pomieszczeń i lokalizacja budynku</label><select id="rk-pc-temperatures" data-group="balance" data-label="temperatur pomieszczeń i lokalizacji"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-ventilation">Projekt wentylacji, rekuperacji lub założenia wymiany powietrza</label><select id="rk-pc-ventilation" data-group="balance" data-label="danych wentylacji i odzysku ciepła"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
              </div>
            </div>

            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">2</span><div><h4>Podłoga i aktywna powierzchnia</h4><p>Dane potrzebne do oceny wydajności każdego pomieszczenia.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question is-critical"><label for="rk-pc-coverings">Okładziny i opór cieplny kompletu warstw</label><select id="rk-pc-coverings" data-group="floor" data-label="okładzin oraz ich oporu cieplnego"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-fixed">Stała zabudowa i wszystkie strefy bez rur</label><select id="rk-pc-fixed" data-group="floor" data-label="stałej zabudowy i stref bez rur"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-layers">Przekrój podłogi: izolacja, system rur i rodzaj jastrychu</label><select id="rk-pc-layers" data-group="floor" data-label="pełnego przekroju podłogi"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-dilatations">Dylatacje, progi, schody i elementy mocowane do podłoża</label><select id="rk-pc-dilatations" data-group="floor" data-label="dylatacji i kolizji budowlanych"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
              </div>
            </div>

            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">3</span><div><h4>Geometria i hydraulika</h4><p>Dane potrzebne do rozplanowania obwodów, magistrali i nastaw.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question is-critical"><label for="rk-pc-manifolds">Uzgodnione lokalizacje rozdzielaczy</label><select id="rk-pc-manifolds" data-group="hydraulics" data-label="lokalizacji rozdzielaczy"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-routes">Trasy zasilania rozdzielaczy i możliwe przejścia dobiegów</label><select id="rk-pc-routes" data-group="hydraulics" data-label="tras magistrali i dobiegów"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-source-place">Lokalizacja pompy ciepła, hydroboxu i pozostałej armatury</label><select id="rk-pc-source-place" data-group="hydraulics" data-label="lokalizacji źródła i armatury"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-special">Dodatkowe odbiorniki, obiegi mieszane lub chłodzenie</label><select id="rk-pc-special" data-group="hydraulics" data-label="informacji o dodatkowych obiegach"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
              </div>
            </div>

            <div class="rk-pc-audit-group">
              <div class="rk-pc-audit-head"><span class="rk-pc-audit-number">4</span><div><h4>Pompa ciepła i sterowanie</h4><p>Dane potrzebne do sprawdzenia zgodności instalacji odbiorczej ze źródłem.</p></div></div>
              <div class="rk-heat-question-grid">
                <div class="rk-heat-question"><label for="rk-pc-model">Wybrany model pompy albo wymagania do jej późniejszego doboru</label><select id="rk-pc-model" data-group="source" data-label="modelu pompy lub kryteriów doboru"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-performance">Moc i COP przy projektowym punkcie A/W</label><select id="rk-pc-performance" data-group="source" data-label="charakterystyki mocy i COP dla punktu A/W"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question is-critical"><label for="rk-pc-minimums">Wymagany minimalny przepływ, objętość i zasady odszraniania</label><select id="rk-pc-minimums" data-group="source" data-label="minimalnego przepływu, objętości i wymagań defrostu"><option value="2">Mam komplet</option><option value="1">Mam częściowo</option><option value="0" selected="">Brak</option></select></div>
                <div class="rk-heat-question"><label for="rk-pc-controls">Plan stref, termostatów, siłowników i regulacji pogodowej</label><select id="rk-pc-controls" data-group="source" data-label="koncepcji sterowania i stref"><option value="2">Mam komplet</option><option value="1" selected="">Mam częściowo</option><option value="0">Brak</option></select></div>
              </div>
            </div>

            <button class="rk-heat-tool-button" type="button" id="rk-pc-run">Aktualizuj audyt danych</button>

            <div class="rk-pc-summary" aria-live="polite">
              <div class="rk-pc-score" id="rk-pc-score">0/16</div>
              <div><h4 id="rk-pc-summary-title">Sprawdzamy kompletność danych</h4><p id="rk-pc-summary-text">Wynik pokaże gotowość czterech warstw projektu i listę informacji do uzupełnienia.</p></div>
            </div>

            <div class="rk-pc-stage-grid" aria-label="Dynamiczna mapa etapów projektu">
              <div class="rk-pc-stage" id="rk-pc-stage-balance"><b>1. Bilans cieplny</b><span id="rk-pc-status-balance">Blokuje część obliczeń</span></div>
              <div class="rk-pc-stage" id="rk-pc-stage-floor"><b>2. Powierzchnia grzewcza</b><span id="rk-pc-status-floor">Blokuje część obliczeń</span></div>
              <div class="rk-pc-stage" id="rk-pc-stage-hydraulics"><b>3. Hydraulika</b><span id="rk-pc-status-hydraulics">Blokuje część obliczeń</span></div>
              <div class="rk-pc-stage" id="rk-pc-stage-source"><b>4. Źródło i sterowanie</b><span id="rk-pc-status-source">Blokuje część obliczeń</span></div>
            </div>

            <div class="rk-pc-result-columns">
              <div class="rk-pc-result-box"><h4>Co można już rozpocząć</h4><ul id="rk-pc-ready-list"><li class="rk-pc-empty">Najpierw uzupełnij odpowiedzi audytu.</li></ul></div>
              <div class="rk-pc-result-box is-missing"><h4>Co trzeba uzupełnić lub potwierdzić</h4><ul id="rk-pc-missing-list"><li class="rk-pc-empty">Lista braków pojawi się po analizie.</li></ul></div>
            </div>
            <p class="rk-pc-tool-foot"><strong>Ważne:</strong> wynik opisuje kompletność zadeklarowanych materiałów. Nie sprawdza poprawności współczynników U, jakości OZC, nośności stropu, zgodności wybranej pompy ani faktycznych możliwości hydraulicznych pętli. Nie jest projektem ani odbiorem technicznym.</p>
          </div>
        </div>
      </section>

      <aside class="rk-heat-sales-cta" aria-label="Zaproszenie do zamówienia projektu po audycie">
        <div class="rk-hp-cta-limits"><strong>Audyt pokazał, które dane są już gotowe, ale nie wyznacza rozstawów, długości pętli ani nastaw rozdzielacza.</strong> Do tego trzeba przypisać obciążenia do konkretnych pomieszczeń, nanieść czynne pola grzewcze na rzut i sprawdzić hydraulikę każdego obwodu.</div>
        <h3>Zamień komplet danych w dokumentację wykonawczą</h3>
        <p>Projekt łączy obciążenia cieplne, układ rur, długości, przepływy, nastawy i parametry wody w jednym spójnym opracowaniu dla wykonawcy.</p>
        <a class="rk-heat-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      </aside>

      <section class="rk-heat-section" id="rk-pc-dokumentacja">
        <span class="rk-heat-eyebrow">Efekt pracy projektowej</span>
        <h2>Co klient powinien otrzymać w dokumentacji?</h2>
        <p class="rk-heat-intro">Zakres musi być opisany przed zamówieniem. Sam plik z liniami rur nie daje wszystkich danych potrzebnych do regulacji i weryfikacji instalacji.</p>
        <ol class="rk-pc-doc-list">
          <li><b>Założenia i bilans cieplny</b><span>Temperatury, warunki zewnętrzne, dane przegród, wentylacja oraz obciążenia pomieszczeń.</span></li>
          <li><b>Rzuty z geometrią pętli</b><span>Rozstawy, kierunki prowadzenia, strefy brzegowe, obszary bez rur, dylatacje, dobiegi i oznaczenia obwodów.</span></li>
          <li><b>Tabela obliczeniowa obwodów</b><span>Powierzchnie, moce, długości, przepływy, straty ciśnienia i parametry pracy.</span></li>
          <li><b>Dobór rozdzielaczy i magistrali</b><span>Liczba sekcji, przypisanie pętli, wymagane przepływy, średnice i obwód krytyczny.</span></li>
          <li><b>Nastawy uruchomieniowe</b><span>Wartości dla rotametrów lub zaworów oraz założona różnica temperatur.</span></li>
          <li><b>Opis współpracy z pompą ciepła</b><span>Projektowy punkt wody, wymagania przepływowe, założenia sterowania i elementy do potwierdzenia dla urządzenia.</span></li>
        </ol>
        <p>Warto przed zamówieniem sprawdzić także <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">co wpływa na cenę projektu ogrzewania podłogowego</a>. Liczy się zakres obliczeń, stopień skomplikowania budynku i jakość danych, a nie tylko liczba metrów kwadratowych.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-czytanie">
        <span class="rk-heat-eyebrow">Rzut i tabela muszą mówić tym samym językiem</span>
        <h2>Jak czytać oznaczenia pętli i tabelę nastaw?</h2>
        <p>Każdy obwód powinien mieć jednoznaczny symbol widoczny zarówno na rzucie, jak i w zestawieniu. Przykładowe oznaczenie R1/P3 może oznaczać trzecią pętlę pierwszego rozdzielacza, ale legenda projektu powinna wyjaśniać przyjęty system.</p>
        <div class="rk-heat-table-wrap">
          <table>
            <thead><tr><th>Pole tabeli</th><th>Jak je rozumieć</th><th>Co sprawdzić na budowie</th></tr></thead>
            <tbody>
              <tr><td data-label="Pole">Pomieszczenie / strefa</td><td data-label="Znaczenie">Obszar obsługiwany przez pętlę.</td><td data-label="Kontrola">Czy przebieg na rzucie odpowiada opisowi.</td></tr>
              <tr><td data-label="Pole">Rozstaw [cm]</td><td data-label="Znaczenie">Odległość między sąsiednimi osiami rur w danej strefie.</td><td data-label="Kontrola">Czy nie został samowolnie zmieniony.</td></tr>
              <tr><td data-label="Pole">Długość [m]</td><td data-label="Znaczenie">Rura pola grzewczego wraz z dobiegami.</td><td data-label="Kontrola">Rzeczywistą długość zapisaną po montażu.</td></tr>
              <tr><td data-label="Pole">Przepływ [l/min]</td><td data-label="Znaczenie">Wartość obliczona dla mocy pętli i przyjętej ΔT.</td><td data-label="Kontrola">Odczyt po odpowietrzeniu i ustabilizowaniu pracy.</td></tr>
              <tr><td data-label="Pole">Δp [kPa]</td><td data-label="Znaczenie">Spadek ciśnienia pełnej drogi obwodu.</td><td data-label="Kontrola">Czy pompa zapewnia punkt pracy dla krytycznej drogi.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Wylewkę, izolację i warunki montażu trzeba czytać razem z rzutem instalacji. Zmiana rodzaju <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewki na ogrzewanie podłogowe</a> albo grubości <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">izolacji pod podłogówką</a> może wymagać sprawdzenia przekroju, wysokości i parametrów cieplnych.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-scenariusze">
        <span class="rk-heat-eyebrow">Inne dane, ta sama kolejność obliczeń</span>
        <h2>Nowy dom, modernizacja i instalacja mieszana</h2>
        <div class="rk-heat-grid-3">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">N</span><h3>Nowy budynek</h3><p>Najłatwiej skoordynować grubości podłogi, dylatacje, zabudowę i lokalizacje rozdzielaczy przed rozpoczęciem robót.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">M</span><h3>Modernizacja</h3><p>Trzeba sprawdzić rzeczywiste przegrody, dostępną wysokość, nośność, stan źródła i ograniczenia istniejących tras.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">2</span><h3>Podłoga i grzejniki</h3><p>Dwa typy odbiorników wymagają spójnych parametrów, prawidłowej hydrauliki i świadomej regulacji.</p></div>
        </div>
        <h3>Projekt przed wyborem modelu pompy</h3>
        <p>Można rozpocząć od bilansu i instalacji odbiorczej, a następnie wyznaczyć warunki, które musi spełnić źródło. Ostateczne sprawdzenie wymaga jednak charakterystyki konkretnego urządzenia: mocy w punkcie projektowym, zakresu modulacji, minimalnego przepływu oraz zaleceń hydraulicznych.</p>
        <h3>Projekt po wyborze pompy</h3>
        <p>Jeżeli model jest już kupiony, instalację należy policzyć bez naginania wyników do urządzenia. Gdy charakterystyka nie pasuje do obciążenia lub wymaganej temperatury, projekt powinien to jasno wskazać wraz z możliwymi zmianami.</p>
      </section>

      <section class="rk-heat-section" id="rk-pc-bledy">
        <span class="rk-heat-eyebrow">Jak rozpoznać niepełną usługę</span>
        <h2>Najczęstsze błędy w ofertach na „projekt podłogówki”</h2>
        <div class="rk-heat-grid-2">
          <div class="rk-heat-card"><span class="rk-heat-card-icon">1</span><h3>Rozstaw wszędzie taki sam</h3><p>Brak obciążeń pomieszczeń i oceny aktywnej powierzchni jest zastąpiony jedną regułą wykonawczą.</p></div>
          <div class="rk-heat-card is-orange"><span class="rk-heat-card-icon">2</span><h3>Brak dobiegów w długościach</h3><p>Pętle wyglądają poprawnie w tabeli, ale rzeczywista rura i opór rosną po doliczeniu drogi do rozdzielacza.</p></div>
          <div class="rk-heat-card is-green"><span class="rk-heat-card-icon">3</span><h3>Równe przepływy dla wszystkich</h3><p>Nastawy nie wynikają z mocy poszczególnych obwodów ani przyjętej różnicy temperatur.</p></div>
          <div class="rk-heat-card is-purple"><span class="rk-heat-card-icon">4</span><h3>Brak punktu pracy pompy ciepła</h3><p>W dokumentacji widnieje 35°C, lecz nie sprawdzono mocy podłogi i źródła przy warunkach projektowych.</p></div>
        </div>
        <ul class="rk-heat-list">
          <li>Projekt powstał wyłącznie z powierzchni domu i informacji „pompa 8 kW”.</li>
          <li>Nie rozróżnia powierzchni całkowitej od czynnej.</li>
          <li>Nie podaje oporu okładzin ani ograniczeń ich temperatury.</li>
          <li>Nie pokazuje przepływów, strat ciśnienia i obwodu krytycznego.</li>
          <li>Nie koordynuje rur z dylatacjami i stałą zabudową.</li>
          <li>Nie opisuje minimalnego przepływu po zamknięciu stref.</li>
        </ul>
        <div class="rk-heat-warning"><p><strong>Ładny rzut nie dowodzi kompletności.</strong> Najważniejsza jest możliwość prześledzenia drogi od obciążenia pomieszczenia do ułożenia rur, przepływu i nastawy.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-checklista">
        <span class="rk-heat-eyebrow">Przed zleceniem i przed zalaniem rur</span>
        <h2>Checklista inwestora do projektu z pompą ciepła</h2>
        <ul class="rk-heat-checklist">
          <li>Rzuty i przekroje są aktualne, zwymiarowane i zgodne z budową.</li>
          <li>Konstrukcje przegród oraz dane wentylacji odpowiadają docelowemu stanowi.</li>
          <li>Podano temperaturę obliczeniową każdego pomieszczenia.</li>
          <li>OZC zawiera wyniki pomieszczeń, nie tylko sumę całego domu.</li>
          <li>Stała zabudowa i wszystkie strefy bez rur są uzgodnione.</li>
          <li>Znane są planowane okładziny i opory całego wykończenia.</li>
          <li>Rozdzielacze mają zaakceptowane, dostępne serwisowo lokalizacje.</li>
          <li>Rzut pokazuje rozstaw, przebieg i oznaczenie każdej pętli.</li>
          <li>Długości obejmują zasilający oraz powrotny dobieg.</li>
          <li>Tabela podaje moce, przepływy, opory i nastawy obwodów.</li>
          <li>Magistrala oraz pompa obiegowa są sprawdzone dla punktu pracy.</li>
          <li>Moc pompy ciepła jest oceniona dla właściwego punktu A/W.</li>
          <li>Zweryfikowano minimalny przepływ, objętość i zachowanie przy defroście.</li>
          <li>Logika stref nie odcina źródłu wymaganej drogi przepływu.</li>
          <li>Zmiany wykonawcze są nanoszone przed zakryciem instalacji.</li>
          <li>Po montażu zapisano długości, próbę, płukanie i nastawy uruchomieniowe.</li>
        </ul>
        <div class="rk-heat-success"><p><strong>Najlepszy moment na korektę to etap projektu.</strong> Po wykonaniu jastrychu pozostaje regulacja istniejącego układu, a nie swobodna zmiana jego geometrii i dostępnej powierzchni.</p></div>
      </section>

      <section class="rk-heat-section" id="rk-pc-faq">
        <span class="rk-heat-eyebrow">Najczęstsze pytania inwestorów</span>
        <h2>FAQ: projekt ogrzewania podłogowego z pompą ciepła</h2>
        <div class="rk-heat-faq">
          <details><summary>Czy do projektu podłogówki potrzebne jest OZC?</summary><div class="rk-heat-faq-answer"><p>Potrzebne są wiarygodne obciążenia cieplne poszczególnych pomieszczeń. Pełne OZC dostarcza te wyniki i założenia budynku. Sama suma mocy całego domu nie pozwala dobrać rozstawów i przepływów lokalnie.</p></div></details>
          <details><summary>Czy przy pompie ciepła wszędzie stosuje się rozstaw 10 cm?</summary><div class="rk-heat-faq-answer"><p>Nie. Rozstaw wynika z obciążenia pomieszczenia, aktywnej powierzchni, temperatur wody, konstrukcji podłogi i oporu okładziny. Źródło wpływa na preferowany zakres temperatur, ale nie wyznacza rozstawu samodzielnie.</p></div></details>
          <details><summary>Czy projekt zawsze przyjmuje zasilanie 35°C?</summary><div class="rk-heat-faq-answer"><p>Nie. To częsty punkt odniesienia dla niskotemperaturowej instalacji, lecz właściwe zasilanie i powrót wynikają z wymaganej wydajności. Projekt powinien sprawdzić wszystkie pomieszczenia przy wspólnych parametrach.</p></div></details>
          <details><summary>Czy jest jedna maksymalna długość pętli?</summary><div class="rk-heat-faq-answer"><p>Nie ma uniwersalnej wartości właściwej dla każdej instalacji. Dopuszczalna długość zależy od średnicy, przepływu, oporów rury i armatury, dostępnego budżetu ciśnienia, dobiegu oraz założeń regulacji.</p></div></details>
          <details><summary>Czy każda pompa ciepła potrzebuje bufora?</summary><div class="rk-heat-faq-answer"><p>Nie. Potrzeba i sposób włączenia bufora wynikają z funkcji, jaką ma pełnić, oraz z wymagań źródła: minimalnego przepływu, objętości, defrostu, modulacji i zachowania stref.</p></div></details>
          <details><summary>Czy można wykonać projekt przed wyborem pompy ciepła?</summary><div class="rk-heat-faq-answer"><p>Można policzyć obciążenia i zaprojektować instalację odbiorczą, a z wyników wyprowadzić wymagania dla źródła. Ostateczne sprawdzenie całego układu wymaga jednak danych konkretnego urządzenia.</p></div></details>
          <details><summary>Jakie pliki są potrzebne do projektu online?</summary><div class="rk-heat-faq-answer"><p>Najlepiej przygotować aktualne rzuty i przekroje, konstrukcje przegród, dane wentylacji, lokalizację, plan okładzin i stałej zabudowy, miejsca rozdzielaczy oraz dane wybranej pompy, jeżeli jest już określona.</p></div></details>
          <details><summary>Czy projekt można przygotować do modernizowanego domu?</summary><div class="rk-heat-faq-answer"><p>Tak, ale dane wejściowe muszą odzwierciedlać stan po modernizacji. Trzeba zweryfikować istniejące przegrody, dostępną wysokość podłogi, nośność, trasy oraz warunki pracy pozostawionych elementów instalacji.</p></div></details>
          <details><summary>Czy nastawy rotametrów wystarczy podać jednakowe?</summary><div class="rk-heat-faq-answer"><p>Nie. Przepływ powinien odpowiadać mocy przypisanej do danej pętli oraz przyjętej różnicy temperatur. Równe wartości mogą być przypadkiem, ale nie powinny wynikać z automatycznego podziału przepływu.</p></div></details>
          <details><summary>Czy wynik interaktywnego audytu jest projektem?</summary><div class="rk-heat-faq-answer"><p>Nie. Audyt porządkuje deklarowaną kompletność materiałów. Nie liczy obciążeń, temperatur powierzchni, rozstawów, długości, strat ciśnienia ani nastaw i nie weryfikuje dokumentacji konkretnej pompy.</p></div></details>
        </div>
      </section>

      <section class="rk-heat-section" id="rk-pc-zrodla">
        <span class="rk-heat-eyebrow">Dokumenty instytucjonalne</span>
        <h2>Źródła wykorzystane do aktualizacji technicznej</h2>
        <p>Źródła zewnętrzne ograniczono do instytucji publicznych i organizacji normalizacyjnej. Dane konkretnego urządzenia trzeba dodatkowo potwierdzić w jego aktualnej dokumentacji technicznej.</p>
        <div class="rk-heat-sources">
          <div class="rk-heat-source"><strong><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — projektowa wydajność systemów powierzchniowych</a></strong><p>Norma opisuje metody wyznaczania mocy powierzchni grzewczych i chłodzących na podstawie parametrów systemu, temperatur i konstrukcji.</p></div>
          <div class="rk-heat-source"><strong><a href="https://www.gov.uk/government/news/heat-pumps-explained-experts-answer-your-questions" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Heat pumps explained</a></strong><p>Materiał rządowy omawia znaczenie strat ciepła, właściwego wymiarowania odbiorników i pracy pomp w chłodnych warunkach.</p></div>
          <div class="rk-heat-source"><strong><a href="https://assets.publishing.service.gov.uk/media/606c39c38fa8f515b4067b08/beis-dhds-final-report__1_.pdf" target="_blank" rel="nofollow noopener noreferrer">BEIS — Heat distribution systems evidence gathering</a></strong><p>Raport analizuje systemy dystrybucji ciepła, temperatury pracy oraz możliwość pokrycia obciążenia przez odbiorniki.</p></div>
          <div class="rk-heat-source"><strong><a href="https://single-market-economy.ec.europa.eu/single-market/goods/european-standards/harmonised-standards/ecodesign-and-energy-labelling-space-heaters_en" target="_blank" rel="nofollow noopener noreferrer">Komisja Europejska — ekoprojekt i etykietowanie ogrzewaczy pomieszczeń</a></strong><p>Oficjalna strona gromadzi ramy i odniesienia dotyczące ekoprojektu oraz informacji energetycznych dla urządzeń grzewczych.</p></div>
        </div>
      </section>

      <section class="rk-heat-author" id="rk-heat-autor" aria-label="Autor opracowania">
        <input type="radio" name="rk-heat-author-tabs" id="rk-heat-author-about" checked="">
        <input type="radio" name="rk-heat-author-tabs" id="rk-heat-author-exp">
        <input type="radio" name="rk-heat-author-tabs" id="rk-heat-author-method">
        <header class="rk-heat-author-head">
          <div><span class="rk-heat-eyebrow">Autor i odpowiedzialność merytoryczna</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego.</p></div>
          <span class="rk-heat-author-mark">OZC • OGRZEWANIE PŁASZCZYZNOWE • HYDRAULIKA • POMPY CIEPŁA</span>
        </header>
        <div class="rk-heat-author-layout">
          <aside class="rk-heat-author-side">
            <div class="rk-heat-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-heat-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/" style="color:#fff;text-decoration:none">Robert Kucharski</a></div>
            <div class="rk-heat-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-heat-author-social-label">Profile autora</div>
            <div class="rk-heat-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5C4.98 4.88 3.87 6 2.5 6S.02 4.88.02 3.5 1.13 1 2.5 1s2.48 1.12 2.48 2.5zM.34 8h4.32v14H.34V8zm7.02 0h4.14v1.91h.06c.58-1.1 1.99-2.26 4.1-2.26 4.38 0 5.19 2.9 5.19 6.66V22h-4.31v-6.82c0-1.63-.03-3.72-2.26-3.72-2.27 0-2.62 1.78-2.62 3.6V22H7.36V8z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Facebook Projekt Ogrzewania"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M24 12.07C24 5.4 18.63 0 12 0S0 5.4 0 12.07C0 18.1 4.39 23.1 10.13 24v-8.44H7.08v-3.49h3.05V9.41c0-3.03 1.79-4.7 4.53-4.7 1.31 0 2.68.24 2.68.24v2.96h-1.51c-1.49 0-1.96.93-1.96 1.89v2.27h3.33l-.53 3.49h-2.8V24C19.61 23.1 24 18.1 24 12.07z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Profil Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.24 2H21.9l-8 9.14L23.31 22h-7.37l-5.77-7.55L3.56 22H-.11l8.39-9.59L-.75 2h7.56l5.22 6.9L18.24 2zm-1.28 18.09h2.03L5.7 3.81H3.52l13.44 16.28z"></path></svg></a>
            </div>
          </aside>
          <div class="rk-heat-author-main">
            <blockquote class="rk-heat-author-quote"><p>„Projekt z pompą ciepła jest spójny dopiero wtedy, gdy obciążenie każdego pokoju prowadzi do konkretnej geometrii pętli, przepływu, nastawy i wspólnego punktu pracy źródła.”</p></blockquote>
            <div class="rk-heat-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-heat-author-tab" for="rk-heat-author-about">O autorze</label>
              <label class="rk-heat-author-tab" for="rk-heat-author-exp">Doświadczenie</label>
              <label class="rk-heat-author-tab" for="rk-heat-author-method">Metodyka pracy</label>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-about">
              <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia strat ciepła i analizy hydrauliczne dla budynków nowych oraz modernizowanych. W dokumentacji łączy parametry przegród i wentylacji z rzeczywistą geometrią pomieszczeń, powierzchnią czynną, konstrukcją podłogi i wymaganiami źródła.</p>
              <p>Specjalizuje się w niskotemperaturowych instalacjach wodnych współpracujących z pompami ciepła. Przygotowuje rozstawy i przebiegi rur, podział na pętle, zestawienia długości, przepływów i strat ciśnienia oraz nastawy rozdzielaczy, które wykonawca może zweryfikować podczas uruchomienia.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-exp">
              <p>Praktyka projektowa pokazuje, że problemy najczęściej powstają na styku branż: zmienia się okładzina, zabudowa zmniejsza aktywną powierzchnię, rozdzielacz trafia w inne miejsce albo strefy odcinają przepływ wymagany przez pompę. Dlatego dokumentacja powinna ujawniać zależności, a nie tylko przedstawiać estetyczny rysunek.</p>
              <p>Doświadczenie obejmuje ocenę obciążeń pomieszczeń, systemów mokrych i suchych, instalacji mieszanych, dużych przeszkleń, ograniczeń modernizacyjnych oraz hydrauliki rozdzielaczy i wspólnych magistrali.</p>
            </div>
            <div class="rk-heat-author-panel rk-heat-author-panel-method">
              <p>Metodyka zaczyna się od jawnych danych wejściowych. Kolejne wyniki — moc pomieszczenia, wymagana wydajność, rozstaw, długość, przepływ i opór — muszą tworzyć możliwy do prześledzenia łańcuch. Założenia odróżnia się od wartości obliczonych oraz danych konkretnego urządzenia.</p>
              <p>Interaktywne narzędzia na portalu mają funkcję edukacyjną: pomagają uporządkować dane i zrozumieć zależności. Nie zastępują dokumentacji wykonawczej, koordynacji budowlanej ani sprawdzenia aktualnych wymagań wybranego źródła.</p>
            </div>
            <div class="rk-heat-mini-label">Portale autora</div>
            <div class="rk-heat-portals">
              <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
              <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a>
              <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-heat-sales-cta" aria-label="Końcowe zaproszenie do zamówienia projektu">
        <h3>Otrzymaj projekt, według którego można ułożyć i wyregulować podłogówkę</h3>
        <p>Przygotujemy dokumentację z obliczeniami pomieszczeń, układem pętli, rozstawami, długościami, przepływami, stratami ciśnienia i nastawami rozdzielacza — z uwzględnieniem współpracy z pompą ciepła.</p>
        <a class="rk-heat-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego</a>
      </aside>
    </div>
  </article>
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "inLanguage": "pl-PL",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "pompy ciepła",
        "projektowe obciążenie cieplne",
        "hydraulika instalacji grzewczych",
        "dobór przepływów",
        "równoważenie hydrauliczne"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Projekt ogrzewania podłogowego z pompą ciepła",
          "item": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webpage",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/",
      "name": "Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika",
      "description": "Kompletny przewodnik po projekcie ogrzewania podłogowego z pompą ciepła: OZC, powierzchnia czynna, rozstawy, pętle, przepływy, temperatury i nastawy.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#breadcrumb" },
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article" },
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-07"
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/",
      "headline": "Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika",
      "description": "Jak połączyć OZC pomieszczeń, wydajność podłogi, geometrię pętli, hydraulikę oraz wymagania pompy ciepła w dokumentacji wykonawczej.",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webpage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-07",
      "inLanguage": "pl-PL",
      "proficiencyLevel": "Beginner to Expert",
      "about": [
        { "@type": "Thing", "name": "Projekt ogrzewania podłogowego" },
        { "@type": "Thing", "name": "Pompa ciepła" },
        { "@type": "Thing", "name": "Projektowe obciążenie cieplne" },
        { "@type": "Thing", "name": "Hydraulika instalacji grzewczej" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#audyt",
      "name": "Interaktywny audyt kompletności danych do projektu podłogówki z pompą ciepła",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#rk-pc-audyt",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "Narzędzie do weryfikacji kompletności danych projektowych",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Włączona obsługa JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "featureList": [
        "Ocena kompletności danych do bilansu cieplnego",
        "Ocena danych podłogi i powierzchni czynnej",
        "Ocena danych geometrii i hydrauliki",
        "Ocena danych pompy ciepła i sterowania",
        "Dynamiczna lista braków do uzupełnienia"
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#howto",
      "name": "Jak przygotować projekt ogrzewania podłogowego z pompą ciepła",
      "description": "Kolejność prac od danych budynku do dokumentacji wykonawczej i nastaw.",
      "inLanguage": "pl-PL",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Zbierz dokumentację budynku",
          "text": "Przygotuj rzuty, przekroje, konstrukcje przegród, dane wentylacji, temperatury i lokalizację."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Oblicz obciążenia cieplne",
          "text": "Wyznacz projektową moc całego budynku oraz każdego ogrzewanego pomieszczenia."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Wyznacz aktywne powierzchnie",
          "text": "Uwzględnij stałą zabudowę, strefy bez rur, okładziny i kompletną konstrukcję podłogi."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Dobierz układ rur",
          "text": "Sprawdź wydajność rozstawów przy wspólnych parametrach wody i rozplanuj pętle z dobiegami."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Policz hydraulikę",
          "text": "Wyznacz przepływy, spadki ciśnienia, obwód krytyczny, magistrale i nastawy rozdzielaczy."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Sprawdź współpracę ze źródłem",
          "text": "Porównaj moc pompy ciepła w projektowym punkcie A/W oraz wymagania przepływu, objętości i sterowania."
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy do projektu podłogówki potrzebne jest OZC?",
          "acceptedAnswer": { "@type": "Answer", "text": "Potrzebne są wiarygodne obciążenia cieplne poszczególnych pomieszczeń. Pełne OZC dostarcza te wyniki i założenia budynku. Sama suma mocy całego domu nie pozwala dobrać rozstawów i przepływów lokalnie." }
        },
        {
          "@type": "Question",
          "name": "Czy przy pompie ciepła wszędzie stosuje się rozstaw 10 cm?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Rozstaw wynika z obciążenia pomieszczenia, aktywnej powierzchni, temperatur wody, konstrukcji podłogi i oporu okładziny. Źródło wpływa na preferowany zakres temperatur, ale nie wyznacza rozstawu samodzielnie." }
        },
        {
          "@type": "Question",
          "name": "Czy projekt zawsze przyjmuje zasilanie 35°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. To częsty punkt odniesienia dla niskotemperaturowej instalacji, lecz właściwe zasilanie i powrót wynikają z wymaganej wydajności. Projekt powinien sprawdzić wszystkie pomieszczenia przy wspólnych parametrach." }
        },
        {
          "@type": "Question",
          "name": "Czy jest jedna maksymalna długość pętli?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie ma uniwersalnej wartości właściwej dla każdej instalacji. Dopuszczalna długość zależy od średnicy, przepływu, oporów rury i armatury, dostępnego budżetu ciśnienia, dobiegu oraz założeń regulacji." }
        },
        {
          "@type": "Question",
          "name": "Czy każda pompa ciepła potrzebuje bufora?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzeba i sposób włączenia bufora wynikają z funkcji, jaką ma pełnić, oraz z wymagań źródła: minimalnego przepływu, objętości, defrostu, modulacji i zachowania stref." }
        },
        {
          "@type": "Question",
          "name": "Czy można wykonać projekt przed wyborem pompy ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Można policzyć obciążenia i zaprojektować instalację odbiorczą, a z wyników wyprowadzić wymagania dla źródła. Ostateczne sprawdzenie całego układu wymaga jednak danych konkretnego urządzenia." }
        },
        {
          "@type": "Question",
          "name": "Jakie pliki są potrzebne do projektu online?",
          "acceptedAnswer": { "@type": "Answer", "text": "Najlepiej przygotować aktualne rzuty i przekroje, konstrukcje przegród, dane wentylacji, lokalizację, plan okładzin i stałej zabudowy, miejsca rozdzielaczy oraz dane wybranej pompy, jeżeli jest już określona." }
        },
        {
          "@type": "Question",
          "name": "Czy projekt można przygotować do modernizowanego domu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, ale dane wejściowe muszą odzwierciedlać stan po modernizacji. Trzeba zweryfikować istniejące przegrody, dostępną wysokość podłogi, nośność, trasy oraz warunki pracy pozostawionych elementów instalacji." }
        },
        {
          "@type": "Question",
          "name": "Czy nastawy rotametrów wystarczy podać jednakowe?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Przepływ powinien odpowiadać mocy przypisanej do danej pętli oraz przyjętej różnicy temperatur. Równe wartości mogą być przypadkiem, ale nie powinny wynikać z automatycznego podziału przepływu." }
        },
        {
          "@type": "Question",
          "name": "Czy wynik interaktywnego audytu jest projektem?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Audyt porządkuje deklarowaną kompletność materiałów. Nie liczy obciążeń, temperatur powierzchni, rozstawów, długości, strat ciśnienia ani nastaw i nie weryfikuje dokumentacji konkretnej pompy." }
        }
      ]
    }
  ]
}
</script>

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

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

  var fields = root.querySelectorAll("select[data-group]");
  var button = document.getElementById("rk-pc-run");
  var scoreNode = document.getElementById("rk-pc-score");
  var titleNode = document.getElementById("rk-pc-summary-title");
  var textNode = document.getElementById("rk-pc-summary-text");
  var readyList = document.getElementById("rk-pc-ready-list");
  var missingList = document.getElementById("rk-pc-missing-list");

  var groupOrder = ["balance", "floor", "hydraulics", "source"];
  var groupNames = {
    balance: "Bilans cieplny",
    floor: "Powierzchnia grzewcza",
    hydraulics: "Hydraulika",
    source: "Źródło i sterowanie"
  };
  var groupCapabilities = {
    balance: "Można oprzeć bilans na zadeklarowanych materiałach i zweryfikować obciążenia pomieszczeń.",
    floor: "Można rozpocząć wyznaczanie powierzchni czynnych i wariantów wydajności podłogi.",
    hydraulics: "Można rozpocząć geometrię pętli, dobiegów, magistrali oraz obwodów krytycznych.",
    source: "Można rozpocząć sprawdzanie punktu A/W, minimalnego przepływu i logiki sterowania."
  };

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

  function addListItem(list, textValue) {
    var item = document.createElement("li");
    item.textContent = textValue;
    list.appendChild(item);
  }

  function evaluateGroup(groupName) {
    var groupFields = root.querySelectorAll('select[data-group="' + groupName + '"]');
    var points = 0;
    var complete = 0;
    var criticalMissing = false;

    Array.prototype.forEach.call(groupFields, function (field) {
      var value = Number(field.value);
      points += value;
      if (value === 2) {
        complete += 1;
      }
      if (value === 0) {
        var question = field.closest(".rk-heat-question");
        if (question) {
          if (question.classList.contains("is-critical")) {
            criticalMissing = true;
          }
        }
      }
    });

    var maxPoints = groupFields.length * 2;
    var state = "blocked";
    var label = "Blokuje część obliczeń";

    if (points >= maxPoints - 1) {
      if (!criticalMissing) {
        state = "ready";
        label = "Gotowe do rozpoczęcia";
      }
    }
    if (state === "blocked") {
      if (!criticalMissing) {
        if (points >= Math.ceil(maxPoints / 2)) {
          state = "partial";
          label = "Wymaga uzupełnienia";
        }
      }
    }

    return {
      state: state,
      label: label,
      points: points,
      maxPoints: maxPoints,
      complete: complete
    };
  }

  function paintStage(groupName, result) {
    var card = document.getElementById("rk-pc-stage-" + groupName);
    var status = document.getElementById("rk-pc-status-" + groupName);
    if (!card) {
      return;
    }
    card.classList.remove("is-ready", "is-partial");
    if (result.state === "ready") {
      card.classList.add("is-ready");
    } else if (result.state === "partial") {
      card.classList.add("is-partial");
    }
    if (status) {
      status.textContent = result.label + " • " + result.points + "/" + result.maxPoints + " pkt";
    }
  }

  function runAudit() {
    var totalPoints = 0;
    var totalMax = fields.length * 2;
    var completeCount = 0;
    var readyGroups = 0;
    var blockedGroups = 0;
    var results = {};

    groupOrder.forEach(function (groupName) {
      var result = evaluateGroup(groupName);
      results[groupName] = result;
      totalPoints += result.points;
      completeCount += result.complete;
      if (result.state === "ready") {
        readyGroups += 1;
      }
      if (result.state === "blocked") {
        blockedGroups += 1;
      }
      paintStage(groupName, result);
    });

    var percent = Math.round((totalPoints / totalMax) * 100);
    scoreNode.textContent = percent + "%";
    scoreNode.setAttribute("aria-label", percent + " procent punktów kompletności; " + completeCount + " z " + fields.length + " pozycji ma status komplet");
    scoreNode.style.borderColor = "#ff8b7f";

    if (percent >= 75) {
      scoreNode.style.borderColor = "#ffd568";
    }
    if (percent >= 90) {
      scoreNode.style.borderColor = "#4cd7ac";
    }

    if (readyGroups === groupOrder.length) {
      titleNode.textContent = "Wszystkie cztery warstwy mają komplet deklarowanych danych";
      textNode.textContent = "Można przejść do szczegółowej weryfikacji jakości materiałów i właściwych obliczeń projektowych.";
    } else if (blockedGroups > 0) {
      titleNode.textContent = "Braki blokują część obliczeń projektowych";
      textNode.textContent = "Kompletne odpowiedzi: " + completeCount + " z " + fields.length + ". Najpierw uzupełnij pozycje oznaczone jako brak, zwłaszcza dane krytyczne.";
    } else {
      titleNode.textContent = "Materiały pozwalają zacząć, ale wymagają potwierdzenia";
      textNode.textContent = "Kompletne odpowiedzi: " + completeCount + " z " + fields.length + ". Pozycje częściowe mogą wymagać pytań i jawnych założeń.";
    }

    clearNode(readyList);
    clearNode(missingList);

    groupOrder.forEach(function (groupName) {
      var result = results[groupName];
      if (result.state === "ready") {
        addListItem(readyList, groupCapabilities[groupName]);
      } else if (result.state === "partial") {
        addListItem(readyList, groupNames[groupName] + ": można rozpocząć pracę wstępną, ale wynik pozostanie warunkowy.");
      }
    });

    if (!readyList.firstChild) {
      addListItem(readyList, "Na tym etapie warto zacząć od uporządkowania dokumentacji bazowej.");
    }

    Array.prototype.forEach.call(fields, function (field) {
      var value = Number(field.value);
      var itemLabel = field.getAttribute("data-label");
      if (value === 0) {
        addListItem(missingList, "Brak: " + itemLabel + ".");
      } else if (value === 1) {
        addListItem(missingList, "Do potwierdzenia: " + itemLabel + ".");
      }
    });

    if (!missingList.firstChild) {
      addListItem(missingList, "Brak zadeklarowanych luk. Kolejny krok to kontrola jakości i aktualności danych.");
    }
  }

  Array.prototype.forEach.call(fields, function (field) {
    field.addEventListener("change", runAudit);
  });

  if (button) {
    button.addEventListener("click", runAudit);
  }

  runAudit();
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">Projekt ogrzewania podłogowego z pompą ciepła – obliczenia, rozstaw rur i hydraulika</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Bilans cieplny budynku – kalkulator strat, mocy i kosztów ogrzewania.</title>
		<link>https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 19 Jan 2026 09:22:38 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Dom energooszczędny]]></category>
		<category><![CDATA[Dom pasywny]]></category>
		<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Termomodernizacja]]></category>
		<category><![CDATA[bilans cieplny]]></category>
		<category><![CDATA[dom energooszczędny]]></category>
		<category><![CDATA[dom pasywny]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[mostki termiczne]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[rekuperacja]]></category>
		<category><![CDATA[straty ciepła]]></category>
		<category><![CDATA[zapotrzebowanie na ciepło]]></category>
		<category><![CDATA[zyski ciepła]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3221</guid>

					<description><![CDATA[<p>Bilans cieplny budynku to coś znacznie więcej niż tabelka z norm i obliczeń inżynierskich. To realna mapa strat i zysków energii, która decyduje o tym, czy dom będzie tani w utrzymaniu, komfortowy i odporny na rosnące ceny energii. W artykule pokazujemy, dlaczego bilans cieplny budynku: fundament efektywności energetycznej i komfortu nie jest pustym hasłem, lecz narzędziem, które pozwala świadomie projektować izolację, wentylację, okna i system ogrzewania. Konkretne wzory, liczby i porównania domów standardowych z pasywnymi pokazują czarno na białym, gdzie naprawdę ucieka ciepło – i jak to zmienić.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">Bilans cieplny budynku – kalkulator strat, mocy i kosztów ogrzewania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-bilans-guide {
    --rk-bh-dark: #102536;
    --rk-bh-navy: #15384d;
    --rk-bh-navy-2: #1c5362;
    --rk-bh-blue: #078fbe;
    --rk-bh-cyan: #25c7d8;
    --rk-bh-cyan-soft: #e9fbfe;
    --rk-bh-orange: #ff6a3d;
    --rk-bh-orange-soft: #fff1eb;
    --rk-bh-green: #16836b;
    --rk-bh-green-soft: #eaf8f3;
    --rk-bh-yellow: #a86a00;
    --rk-bh-yellow-soft: #fff7dd;
    --rk-bh-red: #d94b3d;
    --rk-bh-red-soft: #fff0ee;
    --rk-bh-purple: #695ac9;
    --rk-bh-purple-soft: #f1efff;
    --rk-bh-ink: #1d2d39;
    --rk-bh-text: #465d6c;
    --rk-bh-muted: #6a7f8d;
    --rk-bh-line: #d3e3ea;
    --rk-bh-soft: #f4f9fb;
    --rk-bh-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-bh-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.74;
  }
  #rk-bilans-guide,
  #rk-bilans-guide * { box-sizing: border-box; }
  #rk-bilans-guide img,
  #rk-bilans-guide svg { display: block; max-width: 100%; }
  #rk-bilans-guide button,
  #rk-bilans-guide input,
  #rk-bilans-guide select,
  #rk-bilans-guide label,
  #rk-bilans-guide summary,
  #rk-bilans-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-bilans-guide button { cursor: pointer; }
  #rk-bilans-guide a {
    color: var(--rk-bh-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-bilans-guide a:hover,
  #rk-bilans-guide a:focus-visible { color: var(--rk-bh-red); }
  #rk-bilans-guide button:focus-visible,
  #rk-bilans-guide summary:focus-visible,
  #rk-bilans-guide a:focus-visible,
  #rk-bilans-guide input:focus-visible,
  #rk-bilans-guide select:focus-visible {
    outline: 3px solid rgba(7, 143, 190, .28);
    outline-offset: 3px;
  }
  #rk-bilans-guide p,
  #rk-bilans-guide ul,
  #rk-bilans-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-bilans-guide h2,
  #rk-bilans-guide h3,
  #rk-bilans-guide h4 {
    margin-top: 0;
    color: var(--rk-bh-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }
  #rk-bilans-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.7rem); }
  #rk-bilans-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-bilans-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-bilans-guide strong { font-weight: 860; }
  #rk-bilans-guide [hidden] { display: none !important; }
  #rk-bilans-guide .rk-bh-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;
  }

  #rk-bilans-guide .rk-bh-shell {
    overflow: hidden;
    border: 1px solid var(--rk-bh-line);
    border-radius: 27px;
    background: var(--rk-bh-white);
    box-shadow: 0 24px 72px rgba(16, 37, 54, .11);
  }
  #rk-bilans-guide .rk-bh-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: #ffffff !important;
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .31), transparent 29%),
      radial-gradient(circle at 8% 105%, rgba(255, 106, 61, .23), transparent 31%),
      linear-gradient(135deg, #0d2332 0%, #143e53 56%, #175d64 100%);
  }
  #rk-bilans-guide .rk-bh-hero::after {
    position: absolute;
    right: -58px;
    bottom: -135px;
    width: 370px;
    height: 370px;
    border: 48px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-bilans-guide .rk-bh-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 16px;
    color: #78efff !important;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .095em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-bilans-guide .rk-bh-kicker::before {
    width: 9px;
    height: 9px;
    flex: 0 0 9px;
    border-radius: 50%;
    background: var(--rk-bh-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-bilans-guide .rk-bh-hero-title {
    position: relative;
    z-index: 1;
    max-width: 1040px;
    margin: 0 0 21px;
    color: #ffffff !important;
    font-size: clamp(2.2rem, 7.1vw, 5rem);
    font-weight: 950;
    letter-spacing: -.065em;
    line-height: .99;
  }
  #rk-bilans-guide .rk-bh-hero-title span { color: #66e8f5 !important; }
  #rk-bilans-guide .rk-bh-lead {
    position: relative;
    z-index: 1;
    max-width: 970px;
    margin-bottom: 24px;
    color: #e2f2f5 !important;
    font-size: clamp(1rem, 2.2vw, 1.3rem);
    line-height: 1.56;
  }
  #rk-bilans-guide .rk-bh-tags,
  #rk-bilans-guide .rk-bh-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  #rk-bilans-guide .rk-bh-tag {
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .23);
    border-radius: 999px;
    color: #ffffff !important;
    background: rgba(255, 255, 255, .075);
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.2;
  }
  #rk-bilans-guide .rk-bh-byline {
    margin-top: 27px;
    color: #cbe2e7 !important;
    font-size: .68rem;
    font-weight: 730;
  }
  #rk-bilans-guide .rk-bh-byline strong { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 29px;
  }
  #rk-bilans-guide .rk-bh-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-bilans-guide .rk-bh-hero-metric b {
    display: block;
    margin-bottom: 5px;
    color: #ffffff !important;
    font-size: .75rem;
  }
  #rk-bilans-guide .rk-bh-hero-metric span {
    display: block;
    color: #d2e7ec !important;
    font-size: .64rem;
    line-height: 1.48;
  }

  #rk-bilans-guide .rk-bh-nav {
    padding: 18px clamp(20px, 4vw, 46px);
    border-bottom: 1px solid var(--rk-bh-line);
    background: #ffffff;
  }
  #rk-bilans-guide .rk-bh-nav-label {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-bh-muted);
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-bilans-guide .rk-bh-nav-links { display: flex; flex-wrap: wrap; gap: 8px; }
  #rk-bilans-guide .rk-bh-nav-links a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 7px 11px;
    border: 1px solid var(--rk-bh-line);
    border-radius: 999px;
    color: var(--rk-bh-dark);
    background: var(--rk-bh-soft);
    font-size: .61rem;
    font-weight: 800;
    line-height: 1.2;
    text-decoration: none;
  }
  #rk-bilans-guide .rk-bh-nav-links a:hover,
  #rk-bilans-guide .rk-bh-nav-links a:focus-visible {
    color: #ffffff;
    border-color: var(--rk-bh-blue);
    background: var(--rk-bh-blue);
  }
  #rk-bilans-guide .rk-bh-main { padding: 0 clamp(20px, 5vw, 58px) 52px; }
  #rk-bilans-guide .rk-bh-section {
    scroll-margin-top: 18px;
    padding: clamp(42px, 7vw, 76px) 0;
    border-bottom: 1px solid var(--rk-bh-line);
  }
  #rk-bilans-guide .rk-bh-section:last-child { border-bottom: 0; }
  #rk-bilans-guide .rk-bh-eyebrow {
    display: block;
    margin-bottom: 11px;
    color: var(--rk-bh-orange);
    font-size: .66rem;
    font-weight: 950;
    letter-spacing: .095em;
    line-height: 1.25;
    text-transform: uppercase;
  }
  #rk-bilans-guide .rk-bh-intro { max-width: 950px; color: var(--rk-bh-text); font-size: 1.01rem; }
  #rk-bilans-guide .rk-bh-note {
    margin: 24px 0 0;
    padding: 17px 19px;
    border-left: 5px solid var(--rk-bh-blue);
    border-radius: 0 13px 13px 0;
    color: var(--rk-bh-text);
    background: var(--rk-bh-cyan-soft);
    font-size: .78rem;
  }
  #rk-bilans-guide .rk-bh-note strong { color: var(--rk-bh-dark); }
  #rk-bilans-guide .rk-bh-warning { border-left-color: var(--rk-bh-orange); background: var(--rk-bh-orange-soft); }
  #rk-bilans-guide .rk-bh-grid-2,
  #rk-bilans-guide .rk-bh-grid-3,
  #rk-bilans-guide .rk-bh-grid-4 { display: grid; gap: 15px; margin-top: 24px; }
  #rk-bilans-guide .rk-bh-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-bilans-guide .rk-bh-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-bilans-guide .rk-bh-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-bilans-guide .rk-bh-card {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-bh-line);
    border-radius: 17px;
    background: #ffffff;
  }
  #rk-bilans-guide .rk-bh-card-accent { background: var(--rk-bh-cyan-soft); }
  #rk-bilans-guide .rk-bh-card-orange { background: var(--rk-bh-orange-soft); }
  #rk-bilans-guide .rk-bh-card-green { background: var(--rk-bh-green-soft); }
  #rk-bilans-guide .rk-bh-card-purple { background: var(--rk-bh-purple-soft); }
  #rk-bilans-guide .rk-bh-card p:last-child,
  #rk-bilans-guide .rk-bh-card ul:last-child { margin-bottom: 0; }
  #rk-bilans-guide .rk-bh-card p,
  #rk-bilans-guide .rk-bh-card li { color: var(--rk-bh-text); font-size: .78rem; }
  #rk-bilans-guide .rk-bh-answer {
    display: grid;
    grid-template-columns: 1.25fr .75fr;
    gap: 17px;
    margin-top: 24px;
  }
  #rk-bilans-guide .rk-bh-answer-main {
    padding: clamp(25px, 4vw, 39px);
    border-radius: 20px;
    color: #ffffff !important;
    background: linear-gradient(135deg, var(--rk-bh-dark), var(--rk-bh-navy-2));
  }
  #rk-bilans-guide .rk-bh-answer-main h3,
  #rk-bilans-guide .rk-bh-answer-main p,
  #rk-bilans-guide .rk-bh-answer-main strong { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-answer-main p:last-child { margin-bottom: 0; }
  #rk-bilans-guide .rk-bh-answer-side { display: grid; gap: 12px; }
  #rk-bilans-guide .rk-bh-answer-stat {
    padding: 18px;
    border: 1px solid var(--rk-bh-line);
    border-radius: 15px;
    background: var(--rk-bh-soft);
  }
  #rk-bilans-guide .rk-bh-answer-stat strong { display: block; margin-bottom: 4px; color: var(--rk-bh-dark); font-size: .84rem; }
  #rk-bilans-guide .rk-bh-answer-stat span { display: block; color: var(--rk-bh-text); font-size: .68rem; line-height: 1.5; }

  #rk-bilans-guide .rk-bh-table-wrap {
    width: 100%;
    margin-top: 25px;
    overflow: hidden;
    border: 1px solid var(--rk-bh-line);
    border-radius: 17px;
    background: #ffffff;
  }
  #rk-bilans-guide table { width: 100%; border-collapse: collapse; table-layout: fixed; }
  #rk-bilans-guide th,
  #rk-bilans-guide td { padding: 15px 16px; border-right: 1px solid var(--rk-bh-line); border-bottom: 1px solid var(--rk-bh-line); text-align: left; vertical-align: top; }
  #rk-bilans-guide tr:last-child td { border-bottom: 0; }
  #rk-bilans-guide th:last-child,
  #rk-bilans-guide td:last-child { border-right: 0; }
  #rk-bilans-guide th { color: #ffffff; background: var(--rk-bh-navy); font-size: .7rem; font-weight: 900; line-height: 1.42; }
  #rk-bilans-guide td { color: var(--rk-bh-text); font-size: .72rem; line-height: 1.55; }
  #rk-bilans-guide td strong { color: var(--rk-bh-dark); }
  #rk-bilans-guide .rk-bh-formula {
    margin: 23px 0;
    padding: 17px 19px;
    border: 1px solid #bce3ec;
    border-radius: 14px;
    color: var(--rk-bh-dark);
    background: #f2fbfd;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(.7rem, 2vw, .86rem);
    font-weight: 800;
    line-height: 1.55;
    text-align: center;
    overflow-wrap: anywhere;
  }

  #rk-bilans-guide .rk-bh-numbered-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 25px;
  }
  #rk-bilans-guide .rk-bh-numbered-card {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    min-width: 0;
    padding: 21px;
    border: 1px solid var(--rk-bh-line);
    border-radius: 17px;
    background: #ffffff;
  }
  #rk-bilans-guide .rk-bh-number,
  #rk-bilans-guide .rk-bh-numbered-card > .rk-bh-number,
  #rk-bilans-guide .rk-bh-edu-card > .rk-bh-number,
  #rk-bilans-guide .rk-bh-check-card > .rk-bh-number {
    display: grid !important;
    place-items: center !important;
    align-items: center !important;
    justify-content: center !important;
    width: 52px !important;
    min-width: 52px !important;
    max-width: 52px !important;
    height: 52px !important;
    min-height: 52px !important;
    max-height: 52px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 50% !important;
    color: #17384b !important;
    background: #d9f5f9 !important;
    font-size: .78rem !important;
    font-style: normal !important;
    font-weight: 950 !important;
    letter-spacing: 0 !important;
    line-height: 1 !important;
    text-align: center !important;
    text-indent: 0 !important;
    white-space: nowrap !important;
    transform: none !important;
  }
  #rk-bilans-guide .rk-bh-numbered-card:nth-child(4n+2) > .rk-bh-number,
  #rk-bilans-guide .rk-bh-edu-card:nth-child(4n+2) > .rk-bh-number,
  #rk-bilans-guide .rk-bh-check-card:nth-child(4n+2) > .rk-bh-number { background: #ffe0d5 !important; }
  #rk-bilans-guide .rk-bh-numbered-card:nth-child(4n+3) > .rk-bh-number,
  #rk-bilans-guide .rk-bh-edu-card:nth-child(4n+3) > .rk-bh-number,
  #rk-bilans-guide .rk-bh-check-card:nth-child(4n+3) > .rk-bh-number { background: #dff3eb !important; }
  #rk-bilans-guide .rk-bh-numbered-card:nth-child(4n+4) > .rk-bh-number,
  #rk-bilans-guide .rk-bh-edu-card:nth-child(4n+4) > .rk-bh-number,
  #rk-bilans-guide .rk-bh-check-card:nth-child(4n+4) > .rk-bh-number { background: #e5e0ff !important; }
  #rk-bilans-guide .rk-bh-numbered-card h3 { margin: 3px 0 7px; font-size: 1rem; }
  #rk-bilans-guide .rk-bh-numbered-card p { margin: 0; color: var(--rk-bh-text); font-size: .75rem; }

  #rk-bilans-guide .rk-bh-edu {
    margin-top: 27px;
    overflow: hidden;
    border: 1px solid var(--rk-bh-line);
    border-radius: 22px;
    background: #ffffff;
  }
  #rk-bilans-guide .rk-bh-edu-head {
    padding: 25px clamp(21px, 4vw, 36px);
    color: #ffffff !important;
    background: linear-gradient(115deg, var(--rk-bh-dark), #176b74);
  }
  #rk-bilans-guide .rk-bh-edu-head h3,
  #rk-bilans-guide .rk-bh-edu-head p { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-edu-head p { margin-bottom: 0; font-size: .76rem; }
  #rk-bilans-guide .rk-bh-edu-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    padding: 24px;
  }
  #rk-bilans-guide .rk-bh-edu-card {
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    gap: 13px;
    align-items: start;
    min-width: 0;
    min-height: 152px;
    padding: 18px;
    border: 1px solid var(--rk-bh-line);
    border-radius: 16px;
    color: var(--rk-bh-dark);
    background: #ffffff;
    text-align: left;
  }
  #rk-bilans-guide .rk-bh-edu-card:hover,
  #rk-bilans-guide .rk-bh-edu-card:focus-visible,
  #rk-bilans-guide .rk-bh-edu-card[aria-pressed="true"] {
    border-color: var(--rk-bh-blue);
    background: var(--rk-bh-cyan-soft);
  }
  #rk-bilans-guide .rk-bh-edu-copy { min-width: 0; }
  #rk-bilans-guide .rk-bh-edu-copy strong { display: block; margin: 3px 0 6px; color: var(--rk-bh-dark); font-size: .76rem; line-height: 1.35; }
  #rk-bilans-guide .rk-bh-edu-copy span { display: block; color: var(--rk-bh-text); font-size: .65rem; line-height: 1.48; }
  #rk-bilans-guide .rk-bh-edu-detail {
    margin: 0 24px 24px;
    padding: 23px;
    border-radius: 17px;
    color: #ffffff !important;
    background: var(--rk-bh-navy);
  }
  #rk-bilans-guide .rk-bh-edu-detail h3,
  #rk-bilans-guide .rk-bh-edu-detail p,
  #rk-bilans-guide .rk-bh-edu-detail strong { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-edu-detail p { margin-bottom: 0; font-size: .77rem; }
  #rk-bilans-guide .rk-bh-edu-unit { display: inline-flex; margin-bottom: 11px; padding: 6px 10px; border-radius: 999px; color: #0e3447 !important; background: #75eaf6; font-size: .61rem; font-weight: 900; }

  #rk-bilans-guide .rk-bh-tool {
    margin-top: 28px;
    overflow: hidden;
    border: 1px solid #c9e0e9;
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 18px 48px rgba(16, 37, 54, .08);
  }
  #rk-bilans-guide .rk-bh-tool-head {
    padding: 25px clamp(21px, 4vw, 36px);
    color: #ffffff !important;
    background: linear-gradient(125deg, #102536, #17626e);
  }
  #rk-bilans-guide .rk-bh-tool-head h3,
  #rk-bilans-guide .rk-bh-tool-head p { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-tool-head p { max-width: 930px; margin-bottom: 0; font-size: .76rem; }
  #rk-bilans-guide .rk-bh-tool-body { padding: clamp(20px, 4vw, 34px); }
  #rk-bilans-guide .rk-bh-field-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 13px; }
  #rk-bilans-guide .rk-bh-field { min-width: 0; }
  #rk-bilans-guide .rk-bh-field label { display: block; margin-bottom: 6px; color: var(--rk-bh-dark); font-size: .64rem; font-weight: 850; line-height: 1.35; }
  #rk-bilans-guide .rk-bh-field small { display: block; margin-top: 5px; color: var(--rk-bh-muted); font-size: .55rem; line-height: 1.4; }
  #rk-bilans-guide .rk-bh-field input,
  #rk-bilans-guide .rk-bh-field select {
    width: 100%;
    min-height: 47px;
    padding: 9px 11px;
    border: 1px solid #bfcfd7;
    border-radius: 10px;
    color: var(--rk-bh-dark);
    background: #ffffff;
    font-size: .73rem;
    font-weight: 720;
  }
  #rk-bilans-guide .rk-bh-subhead { margin: 27px 0 11px; color: var(--rk-bh-dark); font-size: .72rem; font-weight: 920; letter-spacing: .02em; text-transform: uppercase; }
  #rk-bilans-guide .rk-bh-input-table th:first-child { width: 28%; }
  #rk-bilans-guide .rk-bh-input-table th { background: #eaf5f8; color: var(--rk-bh-dark); }
  #rk-bilans-guide .rk-bh-input-table td { vertical-align: middle; }
  #rk-bilans-guide .rk-bh-input-table input {
    width: 100%;
    min-height: 43px;
    padding: 8px 9px;
    border: 1px solid #c1d2da;
    border-radius: 9px;
    color: var(--rk-bh-dark);
    background: #ffffff;
    font-size: .7rem;
    font-weight: 720;
  }
  #rk-bilans-guide .rk-bh-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
  #rk-bilans-guide .rk-bh-action {
    min-height: 48px;
    padding: 11px 17px;
    border: 1px solid var(--rk-bh-blue);
    border-radius: 11px;
    color: #ffffff;
    background: var(--rk-bh-blue);
    font-size: .69rem;
    font-weight: 880;
  }
  #rk-bilans-guide .rk-bh-action:hover,
  #rk-bilans-guide .rk-bh-action:focus-visible { background: #087da5; }
  #rk-bilans-guide .rk-bh-action-secondary { color: var(--rk-bh-dark); border-color: var(--rk-bh-line); background: #ffffff; }
  #rk-bilans-guide .rk-bh-action-secondary:hover,
  #rk-bilans-guide .rk-bh-action-secondary:focus-visible { color: #ffffff; border-color: var(--rk-bh-dark); background: var(--rk-bh-dark); }
  #rk-bilans-guide .rk-bh-error { margin-top: 14px; padding: 11px 14px; border-radius: 10px; color: #8a2823; background: var(--rk-bh-red-soft); font-size: .66rem; font-weight: 760; }
  #rk-bilans-guide .rk-bh-results {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-top: 24px;
  }
  #rk-bilans-guide .rk-bh-result {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-bh-line);
    border-radius: 15px;
    background: var(--rk-bh-soft);
  }
  #rk-bilans-guide .rk-bh-result-featured { color: #ffffff !important; border-color: var(--rk-bh-navy); background: var(--rk-bh-navy); }
  #rk-bilans-guide .rk-bh-result span { display: block; margin-bottom: 7px; color: var(--rk-bh-muted); font-size: .57rem; font-weight: 850; letter-spacing: .04em; line-height: 1.35; text-transform: uppercase; }
  #rk-bilans-guide .rk-bh-result strong { display: block; color: var(--rk-bh-dark); font-size: clamp(1.05rem, 2.5vw, 1.48rem); line-height: 1.15; overflow-wrap: anywhere; }
  #rk-bilans-guide .rk-bh-result small { display: block; margin-top: 7px; color: var(--rk-bh-muted); font-size: .56rem; line-height: 1.4; }
  #rk-bilans-guide .rk-bh-result-featured span,
  #rk-bilans-guide .rk-bh-result-featured strong,
  #rk-bilans-guide .rk-bh-result-featured small { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-result-line { margin-top: 19px; padding: 16px 18px; border-radius: 13px; color: var(--rk-bh-dark); background: var(--rk-bh-green-soft); font-size: .72rem; font-weight: 760; }
  #rk-bilans-guide .rk-bh-disclaimer { margin: 21px 0 0; color: var(--rk-bh-muted); font-size: .61rem; line-height: 1.55; }

  #rk-bilans-guide .rk-bh-cost-table th:first-child { width: 23%; }
  #rk-bilans-guide .rk-bh-cost-table td { vertical-align: middle; }
  #rk-bilans-guide .rk-bh-cost-table input { width: 100%; min-height: 42px; padding: 8px 9px; border: 1px solid #c1d2da; border-radius: 9px; color: var(--rk-bh-dark); background: #ffffff; font-size: .68rem; font-weight: 720; }
  #rk-bilans-guide .rk-bh-cost-table .rk-bh-source { color: var(--rk-bh-dark); font-weight: 900; }
  #rk-bilans-guide .rk-bh-cost-table .rk-bh-source small { display: block; margin-top: 4px; color: var(--rk-bh-muted); font-size: .54rem; font-weight: 600; line-height: 1.35; }
  #rk-bilans-guide .rk-bh-rank { display: grid; gap: 9px; margin-top: 20px; }
  #rk-bilans-guide .rk-bh-rank-row { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; gap: 11px; align-items: center; padding: 11px 13px; border: 1px solid var(--rk-bh-line); border-radius: 12px; background: #ffffff; }
  #rk-bilans-guide .rk-bh-rank-pos { display: grid; place-items: center; width: 30px; height: 30px; padding: 0; border-radius: 50%; color: #ffffff; background: var(--rk-bh-green); font-size: .62rem; font-weight: 900; line-height: 1; text-align: center; }
  #rk-bilans-guide .rk-bh-rank-name { color: var(--rk-bh-dark); font-size: .68rem; font-weight: 850; }
  #rk-bilans-guide .rk-bh-rank-cost { color: var(--rk-bh-dark); font-size: .7rem; font-weight: 900; text-align: right; }

  #rk-bilans-guide .rk-bh-chart {
    margin-top: 27px;
    overflow: hidden;
    border: 1px solid var(--rk-bh-line);
    border-radius: 21px;
    background: #ffffff;
  }
  #rk-bilans-guide .rk-bh-chart-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 23px; border-bottom: 1px solid var(--rk-bh-line); background: var(--rk-bh-soft); }
  #rk-bilans-guide .rk-bh-chart-head h3 { margin-bottom: 6px; }
  #rk-bilans-guide .rk-bh-chart-head p { margin: 0; color: var(--rk-bh-text); font-size: .69rem; }
  #rk-bilans-guide .rk-bh-chart-tabs { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 8px; }
  #rk-bilans-guide .rk-bh-chart-tab { min-height: 40px; padding: 8px 12px; border: 1px solid var(--rk-bh-line); border-radius: 999px; color: var(--rk-bh-dark); background: #ffffff; font-size: .61rem; font-weight: 850; }
  #rk-bilans-guide .rk-bh-chart-tab[aria-pressed="true"] { color: #ffffff; border-color: var(--rk-bh-blue); background: var(--rk-bh-blue); }
  #rk-bilans-guide .rk-bh-chart-body { padding: 24px; }
  #rk-bilans-guide .rk-bh-bars { display: grid; gap: 17px; }
  #rk-bilans-guide .rk-bh-bar-group { min-width: 0; }
  #rk-bilans-guide .rk-bh-bar-label { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 7px; color: var(--rk-bh-dark); font-size: .65rem; font-weight: 850; }
  #rk-bilans-guide .rk-bh-bar-lines { display: grid; gap: 5px; }
  #rk-bilans-guide .rk-bh-bar-track { position: relative; height: 26px; overflow: hidden; border-radius: 7px; background: #edf3f6; }
  #rk-bilans-guide .rk-bh-bar-fill { display: flex; align-items: center; justify-content: flex-end; width: 0; height: 100%; min-width: 2px; padding-right: 7px; border-radius: 7px; color: #ffffff; background: var(--rk-bh-orange); font-size: .54rem; font-weight: 900; line-height: 1; transition: width .35s ease; }
  #rk-bilans-guide .rk-bh-bar-fill-alt { background: var(--rk-bh-blue); }
  #rk-bilans-guide .rk-bh-chart-legend { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 17px; color: var(--rk-bh-text); font-size: .61rem; }
  #rk-bilans-guide .rk-bh-chart-key { display: inline-flex; align-items: center; gap: 7px; }
  #rk-bilans-guide .rk-bh-chart-dot { width: 11px; height: 11px; border-radius: 3px; background: var(--rk-bh-orange); }
  #rk-bilans-guide .rk-bh-chart-dot-alt { background: var(--rk-bh-blue); }
  #rk-bilans-guide .rk-bh-chart-caption { margin: 18px 0 0; padding: 13px 15px; border-radius: 11px; color: var(--rk-bh-text); background: var(--rk-bh-soft); font-size: .62rem; }

  #rk-bilans-guide .rk-bh-cta {
    margin: 31px 0 0;
    padding: clamp(27px, 5vw, 43px);
    border-radius: 21px;
    color: #ffffff !important;
    background:
      radial-gradient(circle at 93% 14%, rgba(37, 199, 216, .25), transparent 27%),
      linear-gradient(135deg, #102536, #164b5e);
  }
  #rk-bilans-guide .rk-bh-cta .rk-bh-eyebrow { color: #75ebf8 !important; }
  #rk-bilans-guide .rk-bh-cta h3,
  #rk-bilans-guide .rk-bh-cta p,
  #rk-bilans-guide .rk-bh-cta strong { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-cta h3 { max-width: 910px; font-size: clamp(1.38rem, 3.3vw, 2.25rem); }
  #rk-bilans-guide .rk-bh-cta p { max-width: 930px; color: #d7e9ed !important; }
  #rk-bilans-guide .rk-bh-cta-context { margin: 18px 0; padding: 16px 18px; border: 1px solid rgba(255, 255, 255, .18); border-radius: 13px; color: #eef8fa !important; background: rgba(255, 255, 255, .07); font-size: .72rem; }
  #rk-bilans-guide .rk-bh-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 51px;
    padding: 12px 18px;
    border-radius: 11px;
    color: #ffffff !important;
    background: var(--rk-bh-orange);
    font-size: .72rem;
    font-weight: 900;
    line-height: 1.3;
    text-align: center;
    text-decoration: none;
  }
  #rk-bilans-guide .rk-bh-cta-button:hover,
  #rk-bilans-guide .rk-bh-cta-button:focus-visible { color: #ffffff !important; background: #e95734; }

  #rk-bilans-guide .rk-bh-check-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 13px; margin-top: 24px; }
  #rk-bilans-guide .rk-bh-check-card { display: grid; grid-template-columns: 52px minmax(0, 1fr); gap: 15px; align-items: start; min-width: 0; padding: 19px; border: 1px solid var(--rk-bh-line); border-radius: 16px; background: #ffffff; }
  #rk-bilans-guide .rk-bh-check-card h3 { margin: 3px 0 6px; font-size: .92rem; }
  #rk-bilans-guide .rk-bh-check-card p { margin: 0; color: var(--rk-bh-text); font-size: .71rem; }
  #rk-bilans-guide .rk-bh-source-list { display: grid; gap: 11px; margin-top: 23px; padding: 0; list-style: none; }
  #rk-bilans-guide .rk-bh-source-list li { padding: 16px 18px; border: 1px solid var(--rk-bh-line); border-radius: 13px; color: var(--rk-bh-text); background: #ffffff; font-size: .7rem; }
  #rk-bilans-guide .rk-bh-source-list a { overflow-wrap: anywhere; }
  #rk-bilans-guide .rk-bh-faq { display: grid; gap: 11px; margin-top: 23px; }
  #rk-bilans-guide .rk-bh-faq details { overflow: hidden; border: 1px solid var(--rk-bh-line); border-radius: 14px; background: #ffffff; }
  #rk-bilans-guide .rk-bh-faq summary { position: relative; padding: 16px 54px 16px 18px; color: var(--rk-bh-dark); cursor: pointer; font-size: .76rem; font-weight: 880; line-height: 1.45; list-style: none; }
  #rk-bilans-guide .rk-bh-faq summary::-webkit-details-marker { display: none; }
  #rk-bilans-guide .rk-bh-faq summary::after { position: absolute; top: 10px; right: 18px; color: var(--rk-bh-blue); content: "+"; font-size: 1.5rem; font-weight: 700; }
  #rk-bilans-guide .rk-bh-faq details[open] summary::after { content: "−"; }
  #rk-bilans-guide .rk-bh-faq-answer { padding: 17px 18px; border-top: 1px solid var(--rk-bh-line); color: var(--rk-bh-text); font-size: .8rem; }
  #rk-bilans-guide .rk-bh-faq-answer p:last-child { margin-bottom: 0; }

  #rk-bilans-guide .rk-bh-author {
    overflow: hidden;
    color: #ffffff !important;
    background: linear-gradient(135deg, #102b3c, #164e5d);
  }
  #rk-bilans-guide .rk-bh-author-head { padding: clamp(30px, 5vw, 51px) clamp(24px, 5vw, 54px); border-bottom: 1px solid rgba(255, 255, 255, .13); }
  #rk-bilans-guide .rk-bh-author-head .rk-bh-eyebrow { color: #70eaf8 !important; }
  #rk-bilans-guide .rk-bh-author-head h2,
  #rk-bilans-guide .rk-bh-author-head p { color: #ffffff !important; }
  #rk-bilans-guide .rk-bh-author-head p { max-width: 910px; margin: 0; color: #d6eaee !important; }
  #rk-bilans-guide .rk-bh-author-update { display: inline-flex; margin-top: 15px; padding: 7px 12px; border: 1px solid rgba(255, 255, 255, .18); border-radius: 999px; color: #ffffff !important; font-size: .61rem; font-weight: 850; }
  #rk-bilans-guide .rk-bh-author-layout { display: grid; grid-template-columns: 310px minmax(0, 1fr); }
  #rk-bilans-guide .rk-bh-author-side { padding: 38px 27px; border-right: 1px solid rgba(255, 255, 255, .13); text-align: center; }
  #rk-bilans-guide .rk-bh-author-photo { width: 168px; height: 168px; margin: 0 auto 19px; overflow: hidden; border: 7px solid rgba(255, 255, 255, .18); border-radius: 50%; background: #ffffff; }
  #rk-bilans-guide .rk-bh-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-bilans-guide .rk-bh-author-name { color: #ffffff !important; font-size: 1.12rem; font-weight: 930; }
  #rk-bilans-guide .rk-bh-author-name a { color: #ffffff !important; text-decoration: none; }
  #rk-bilans-guide .rk-bh-author-role { margin: 6px 0 0; color: #c7dee4 !important; font-size: .68rem; line-height: 1.55; }
  #rk-bilans-guide .rk-bh-author-social-label { margin-top: 23px; color: #73e8f5 !important; font-size: .56rem; font-weight: 950; letter-spacing: .08em; text-transform: uppercase; }
  #rk-bilans-guide .rk-bh-author-social { display: flex; justify-content: center; gap: 10px; margin-top: 11px; }
  #rk-bilans-guide .rk-bh-author-social a { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #487080; border-radius: 50%; color: #e6f3f5 !important; text-decoration: none; }
  #rk-bilans-guide .rk-bh-author-social a:hover,
  #rk-bilans-guide .rk-bh-author-social a:focus-visible { color: var(--rk-bh-dark) !important; border-color: var(--rk-bh-cyan); background: var(--rk-bh-cyan); }
  #rk-bilans-guide .rk-bh-author-main { min-width: 0; padding: 38px clamp(24px, 4vw, 46px); }
  #rk-bilans-guide .rk-bh-author-quote { position: relative; margin: 0 0 24px; padding: 18px 20px 18px 62px; border-radius: 15px; background: rgba(255, 255, 255, .075); }
  #rk-bilans-guide .rk-bh-author-quote::before { position: absolute; top: 4px; left: 18px; color: #65e8f7; content: "“"; font-size: 3.3rem; font-weight: 950; line-height: 1; }
  #rk-bilans-guide .rk-bh-author-quote p { margin: 0; color: #ffffff !important; font-size: 1.01rem; font-style: italic; font-weight: 760; }
  #rk-bilans-guide .rk-bh-author-main > p { color: #d2e6ea !important; }
  #rk-bilans-guide .rk-bh-author-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 23px; }
  #rk-bilans-guide .rk-bh-author-fact { min-width: 0; padding: 17px; border: 1px solid rgba(255, 255, 255, .14); border-radius: 14px; background: rgba(255, 255, 255, .075); }
  #rk-bilans-guide .rk-bh-author-fact strong { display: block; margin-bottom: 6px; color: #73eaf8 !important; font-size: .66rem; }
  #rk-bilans-guide .rk-bh-author-fact span { display: block; color: #d8e9ed !important; font-size: .64rem; line-height: 1.5; }
  #rk-bilans-guide .rk-bh-author-portals { margin-top: 21px; color: #d2e5e9 !important; font-size: .7rem; }
  #rk-bilans-guide .rk-bh-author-portals a { display: inline-flex; margin: 7px 7px 0 0; padding: 7px 11px; border: 1px solid #4b7482; border-radius: 999px; color: #ffffff !important; text-decoration: none; }

  @media (max-width: 980px) {
    #rk-bilans-guide .rk-bh-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-bilans-guide .rk-bh-field-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-bilans-guide .rk-bh-results { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-bilans-guide .rk-bh-edu-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-bilans-guide .rk-bh-author-layout { grid-template-columns: 250px minmax(0, 1fr); }
    #rk-bilans-guide .rk-bh-author-facts { grid-template-columns: 1fr; }
  }
  @media (max-width: 760px) {
    #rk-bilans-guide { margin-top: 18px; font-size: 17px; }
    #rk-bilans-guide .rk-bh-shell { border-radius: 20px; }
    #rk-bilans-guide .rk-bh-hero-metrics,
    #rk-bilans-guide .rk-bh-grid-3,
    #rk-bilans-guide .rk-bh-answer { grid-template-columns: 1fr; }
    #rk-bilans-guide .rk-bh-grid-2,
    #rk-bilans-guide .rk-bh-numbered-grid,
    #rk-bilans-guide .rk-bh-check-grid { grid-template-columns: 1fr; }
    #rk-bilans-guide .rk-bh-chart-head { display: grid; }
    #rk-bilans-guide .rk-bh-chart-tabs { justify-content: flex-start; }
    #rk-bilans-guide .rk-bh-author-layout { grid-template-columns: 1fr; }
    #rk-bilans-guide .rk-bh-author-side { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .13); }

    #rk-bilans-guide .rk-bh-table-wrap { overflow: visible; border: 0; border-radius: 0; background: transparent; }
    #rk-bilans-guide table,
    #rk-bilans-guide thead,
    #rk-bilans-guide tbody,
    #rk-bilans-guide tr,
    #rk-bilans-guide th,
    #rk-bilans-guide td { display: block; width: 100% !important; }
    #rk-bilans-guide thead { position: absolute; width: 1px !important; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    #rk-bilans-guide tbody { display: grid; gap: 12px; }
    #rk-bilans-guide tr { overflow: hidden; border: 1px solid var(--rk-bh-line); border-radius: 14px; background: #ffffff; }
    #rk-bilans-guide td { display: grid; grid-template-columns: minmax(105px, .75fr) minmax(0, 1.25fr); gap: 12px; padding: 12px 14px; border-right: 0; text-align: left; }
    #rk-bilans-guide td::before { color: var(--rk-bh-dark); content: attr(data-label); font-size: .61rem; font-weight: 880; line-height: 1.4; }
    #rk-bilans-guide td:last-child { border-bottom: 0; }
    #rk-bilans-guide .rk-bh-input-table td,
    #rk-bilans-guide .rk-bh-cost-table td { align-items: center; }
    #rk-bilans-guide .rk-bh-cost-table .rk-bh-source small { margin-top: 2px; }
  }
  @media (max-width: 560px) {
    #rk-bilans-guide { margin-right: -2px; margin-left: -2px; font-size: 16px; }
    #rk-bilans-guide .rk-bh-hero { padding-right: 20px; padding-left: 20px; }
    #rk-bilans-guide .rk-bh-main { padding-right: 17px; padding-left: 17px; }
    #rk-bilans-guide .rk-bh-grid-4,
    #rk-bilans-guide .rk-bh-field-grid,
    #rk-bilans-guide .rk-bh-results,
    #rk-bilans-guide .rk-bh-edu-grid { grid-template-columns: 1fr; }
    #rk-bilans-guide .rk-bh-numbered-card,
    #rk-bilans-guide .rk-bh-check-card { grid-template-columns: 48px minmax(0, 1fr); gap: 13px; padding: 17px; }
    #rk-bilans-guide .rk-bh-number,
    #rk-bilans-guide .rk-bh-numbered-card > .rk-bh-number,
    #rk-bilans-guide .rk-bh-edu-card > .rk-bh-number,
    #rk-bilans-guide .rk-bh-check-card > .rk-bh-number { width: 46px !important; min-width: 46px !important; max-width: 46px !important; height: 46px !important; min-height: 46px !important; max-height: 46px !important; }
    #rk-bilans-guide .rk-bh-edu-grid { padding: 16px; }
    #rk-bilans-guide .rk-bh-edu-card { grid-template-columns: 46px minmax(0, 1fr); min-height: 0; padding: 16px; }
    #rk-bilans-guide .rk-bh-edu-detail { margin: 0 16px 16px; padding: 18px; }
    #rk-bilans-guide .rk-bh-action,
    #rk-bilans-guide .rk-bh-cta-button { width: 100%; }
    #rk-bilans-guide .rk-bh-rank-row { grid-template-columns: 30px minmax(0, 1fr); }
    #rk-bilans-guide .rk-bh-rank-cost { grid-column: 2; text-align: left; }
    #rk-bilans-guide .rk-bh-chart-body { padding: 18px 15px; }
    #rk-bilans-guide .rk-bh-bar-label { align-items: flex-start; flex-direction: column; gap: 2px; }
    #rk-bilans-guide td { grid-template-columns: 1fr; gap: 5px; }
    #rk-bilans-guide .rk-bh-author-main { padding-right: 18px; padding-left: 18px; }
    #rk-bilans-guide .rk-bh-author-quote { padding-left: 55px; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-bilans-guide * { scroll-behavior: auto !important; transition: none !important; }
  }
</style>

<article id="rk-bilans-guide" aria-label="Bilans cieplny budynku — kalkulator strat, mocy i kosztów ogrzewania">
  <div class="rk-bh-shell">
    <header class="rk-bh-hero">
      <span class="rk-bh-kicker">Od współczynnika U do mocy i rachunku</span>
      <div class="rk-bh-hero-title">Bilans cieplny budynku <span>bez mieszania kW, kWh i zł</span></div>
      <p class="rk-bh-lead">Bilans cieplny budynku odpowiada na kilka różnych pytań: ile ciepła dom traci w warunkach projektowych, ile energii potrzebuje przez sezon i ile kosztuje jej dostarczenie. Ten poradnik prowadzi od przegród i wentylacji do mocy źródła, podłogówki oraz kosztów — z jawnymi założeniami zamiast uniwersalnego wskaźnika W/m².</p>
      <div class="rk-bh-tags" aria-label="Zakres poradnika">
        <span class="rk-bh-tag">bilans cieplny budynku</span>
        <span class="rk-bh-tag">straty ciepła</span>
        <span class="rk-bh-tag">OZC</span>
        <span class="rk-bh-tag">moc w kW</span>
        <span class="rk-bh-tag">koszt w zł/rok</span>
      </div>
      <div class="rk-bh-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 34 minuty</strong></span>
        <span>Aktualizacja techniczna: <strong>14 września 2026 r.</strong></span>
      </div>
      <div class="rk-bh-hero-metrics">
        <div class="rk-bh-hero-metric"><b>Projektowa moc</b><span>W lub kW w przyjętej temperaturze zewnętrznej. Służy do doboru mocy i emiterów.</span></div>
        <div class="rk-bh-hero-metric"><b>Roczna energia</b><span>kWh/rok wynikające z całego sezonu, klimatu, zysków, akumulacji i sposobu użytkowania.</span></div>
        <div class="rk-bh-hero-metric"><b>Koszt eksploatacji</b><span>Energia pobrana przez źródło razy cena, powiększona o opłaty stałe i serwis.</span></div>
      </div>
    </header>

    <nav class="rk-bh-nav" aria-label="Na skróty — wszystkie rozdziały">
      <span class="rk-bh-nav-label">Na skróty</span>
      <div class="rk-bh-nav-links">
        <a href="#rk-bh-odpowiedz">Odpowiedź</a>
        <a href="#rk-bh-wyniki">Trzy wyniki</a>
        <a href="#rk-bh-dane">Dane</a>
        <a href="#rk-bh-mapa">Mapa obliczeń</a>
        <a href="#rk-bh-kalkulator-mocy">Kalkulator mocy</a>
        <a href="#rk-bh-interpretacja">Interpretacja</a>
        <a href="#rk-bh-przegrody">Przegrody</a>
        <a href="#rk-bh-grunt">Grunt</a>
        <a href="#rk-bh-wentylacja">Wentylacja</a>
        <a href="#rk-bh-mostki-zyski">Mostki i zyski</a>
        <a href="#rk-bh-kalkulator-kosztow">Kalkulator kosztów</a>
        <a href="#rk-bh-wykres">Wykres</a>
        <a href="#rk-bh-podlogowka">Podłogówka</a>
        <a href="#rk-bh-pompa">Pompa ciepła</a>
        <a href="#rk-bh-bledy">Błędy</a>
        <a href="#rk-bh-checklista">Checklista</a>
        <a href="#rk-bh-podsumowanie">Podsumowanie</a>
        <a href="#rk-bh-zrodla">Źródła</a>
        <a href="#rk-bh-faq">FAQ</a>
        <a href="#rk-bh-autor">Autor</a>
      </div>
    </nav>

    <main class="rk-bh-main">
      <section class="rk-bh-section" id="rk-bh-odpowiedz">
        <span class="rk-bh-eyebrow">Najważniejsze w 30 sekund</span>
        <h2>Czym jest bilans cieplny budynku i co naprawdę można z niego odczytać?</h2>
        <p class="rk-bh-intro"><strong>Bilans cieplny budynku</strong> to uporządkowane zestawienie przepływów ciepła w zdefiniowanych warunkach. Dla doboru ogrzewania najpierw wyznacza się projektowe straty przez przegrody, mostki i wymianę powietrza. Wynik dla całego domu mówi, jakiej mocy potrzebuje źródło, ale projekt ogrzewania podłogowego wymaga jeszcze obliczeń osobno dla każdego pomieszczenia. Roczne zużycie energii i koszt powstają z innego rachunku — uwzględniają przebieg pogody, zyski, akumulację, sterowanie, sprawność źródła i cenę nośnika.</p>
        <div class="rk-bh-answer">
          <div class="rk-bh-answer-main">
            <h3>Jedna liczba nie opisuje całego budynku</h3>
            <p><strong>kW odpowiada na pytanie „jak duża moc?”, kWh/rok — „ile ciepła przez sezon?”, a zł/rok — „ile zapłacę przy konkretnym źródle i cenach?”.</strong> Przeliczanie tych wielkości jednym stałym współczynnikiem daje pozorną precyzję.</p>
          </div>
          <div class="rk-bh-answer-side">
            <div class="rk-bh-answer-stat"><strong>Najpierw pomieszczenia</strong><span>Suma domu jest potrzebna, lecz rozstaw, przepływ i powierzchnia czynna wynikają z obciążeń poszczególnych stref.</span></div>
            <div class="rk-bh-answer-stat"><strong>Potem instalacja</strong><span>Emiter musi oddać wymaganą moc przy temperaturze wody zgodnej ze źródłem oraz ograniczeniami podłogi.</span></div>
          </div>
        </div>
        <div class="rk-bh-note"><strong>Zakres kalkulatorów:</strong> pierwsze narzędzie pokazuje uproszczone projektowe straty dla dwóch wariantów przegród i wentylacji. Drugie liczy koszty z podanego rocznego zapotrzebowania na ciepło. Żadne z nich nie jest obliczeniem normowym, świadectwem energetycznym ani projektem.</div>
      </section>

      <section class="rk-bh-section" id="rk-bh-wyniki">
        <span class="rk-bh-eyebrow">Moc, energia i pieniądze</span>
        <h2>Bilans cieplny a energetyczny: dlaczego kW, kWh i zł nie są zamienne?</h2>
        <p class="rk-bh-intro">To najważniejsze rozróżnienie w całym artykule. Projektowe obciążenie cieplne wyznacza chwilową moc przy ustalonych temperaturach obliczeniowych. Zapotrzebowanie na energię obejmuje wiele godzin sezonu o różnych warunkach. Koszt zależy jeszcze od tego, ile energii końcowej pobierze urządzenie oraz jak rozlicza ją sprzedawca.</p>
        <div class="rk-bh-table-wrap">
          <table>
            <thead><tr><th>Wynik</th><th>Jednostka</th><th>Do czego służy?</th><th>Czego nie rozstrzyga?</th></tr></thead>
            <tbody>
              <tr><td data-label="Wynik"><strong>Projektowe obciążenie cieplne</strong></td><td data-label="Jednostka">W lub kW</td><td data-label="Do czego służy?">Dobór mocy źródła i sprawdzenie mocy grzewczej pomieszczeń.</td><td data-label="Czego nie rozstrzyga?">Nie jest rocznym zużyciem ani rachunkiem.</td></tr>
              <tr><td data-label="Wynik"><strong>Roczne zapotrzebowanie na energię użytkową</strong></td><td data-label="Jednostka">kWh/rok lub kWh/(m²·rok)</td><td data-label="Do czego służy?">Opisuje ciepło potrzebne strefom w całym okresie obliczeniowym.</td><td data-label="Czego nie rozstrzyga?">Nie mówi jeszcze, ile prądu, gazu lub pelletu pobierze źródło.</td></tr>
              <tr><td data-label="Wynik"><strong>Energia końcowa</strong></td><td data-label="Jednostka">kWh nośnika/rok</td><td data-label="Do czego służy?">Uwzględnia sprawność sezonową albo SCOP urządzenia i straty systemu.</td><td data-label="Czego nie rozstrzyga?">Nie uwzględnia automatycznie taryf, abonamentów i serwisu.</td></tr>
              <tr><td data-label="Wynik"><strong>Koszt eksploatacji</strong></td><td data-label="Jednostka">zł/rok</td><td data-label="Do czego służy?">Porównuje warianty przy tych samych potrzebach budynku i jawnych cenach.</td><td data-label="Czego nie rozstrzyga?">Nie gwarantuje przyszłych cen ani konkretnej sprawności w realnej instalacji.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-bh-formula">moc projektowa [kW] ≠ energia użytkowa [kWh/rok] ≠ energia kupiona [kWh/rok] ≠ koszt [zł/rok]</div>
        <p>Jeżeli potrzebujesz dokładnego rozwinięcia pierwszego wyniku, zobacz poradnik o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a> oraz omówienie tego, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne w budynkach</a>.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-dane">
        <span class="rk-bh-eyebrow">Wejście decyduje o wyniku</span>
        <h2>Jakie dane są potrzebne do obliczenia strat ciepła budynku?</h2>
        <p class="rk-bh-intro">Dobry bilans nie zaczyna się od wyboru kotła ani pompy ciepła. Zaczyna się od geometrii, warstw przegród, temperatur projektowych, stref nieogrzewanych, wentylacji i mostków. Im więcej danych zastępuje się wartościami „typowymi”, tym większy jest przedział niepewności.</p>
        <div class="rk-bh-numbered-grid">
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">1</span><div><h3>Geometria i strefy</h3><p>Powierzchnie netto ścian, dachu, okien, drzwi i podłogi, kubatura, sąsiedztwo gruntu oraz przestrzeni nieogrzewanych.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">2</span><div><h3>Współczynniki U</h3><p>Wartości wynikające z pełnego układu warstw, mostków powtarzalnych i rzeczywistej stolarki, a nie z samej nazwy materiału.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">3</span><div><h3>Temperatury projektowe</h3><p>Temperatura zewnętrzna właściwa lokalizacji oraz osobne temperatury wewnętrzne dla salonu, sypialni, łazienki i innych stref.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">4</span><div><h3>Wymiana powietrza</h3><p>Strumienie higieniczne, sposób wentylacji, odzysk ciepła, infiltracja i zachowanie centrali podczas mrozu.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">5</span><div><h3>Mostki termiczne</h3><p>Długości złączy i liniowe współczynniki przenikania dla wieńców, ościeży, balkonów, cokołu i połączeń przegród.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">6</span><div><h3>Cel obliczenia</h3><p>Inne założenia są potrzebne do doboru mocy, inne do rocznej energii, świadectwa, audytu i oceny kosztów.</p></div></article>
        </div>
        <p class="rk-bh-note rk-bh-warning"><strong>Wskaźnik W/m² jest wynikiem kontrolnym, nie danymi wejściowymi.</strong> Dwa domy o tej samej powierzchni mogą mieć inną bryłę, przeszklenia, wentylację, temperatury i ekspozycję. Dlatego pytanie „ile kW na 150 m²?” bez tych danych nie ma jednej odpowiedzi.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-mapa">
        <span class="rk-bh-eyebrow">Interaktywna grafika edukacyjna</span>
        <h2>Od przegrody do rachunku: sześć etapów jednego procesu</h2>
        <p class="rk-bh-intro">Kliknij etap, aby zobaczyć jego jednostkę, znaczenie i granice zastosowania. Moduły są rozdzielone, bo właśnie na przejściu między nimi najczęściej powstają błędne skróty.</p>
        <div class="rk-bh-edu">
          <div class="rk-bh-edu-head"><h3>Mapa obliczeń budynku</h3><p>Każdy kafel jest samodzielny na telefonie i komputerze. Wynik kolejnego etapu wymaga dodatkowych danych — nie powstaje przez prostą zmianę jednostki.</p></div>
          <div class="rk-bh-edu-grid" role="group" aria-label="Etapy bilansu cieplnego i kosztowego">
            <button type="button" class="rk-bh-edu-card" data-rk-edu="0" aria-pressed="true" aria-controls="rk-bh-edu-detail"><span class="rk-bh-number" aria-hidden="true">1</span><span class="rk-bh-edu-copy"><strong>Warunki obliczeniowe</strong><span>Lokalizacja, temperatury, geometria i sposób użytkowania.</span></span></button>
            <button type="button" class="rk-bh-edu-card" data-rk-edu="1" aria-pressed="false" aria-controls="rk-bh-edu-detail"><span class="rk-bh-number" aria-hidden="true">2</span><span class="rk-bh-edu-copy"><strong>Przenikanie</strong><span>Ściany, dach, stolarka, grunt i mostki cieplne.</span></span></button>
            <button type="button" class="rk-bh-edu-card" data-rk-edu="2" aria-pressed="false" aria-controls="rk-bh-edu-detail"><span class="rk-bh-number" aria-hidden="true">3</span><span class="rk-bh-edu-copy"><strong>Wentylacja</strong><span>Strumień powietrza, odzysk ciepła oraz infiltracja.</span></span></button>
            <button type="button" class="rk-bh-edu-card" data-rk-edu="3" aria-pressed="false" aria-controls="rk-bh-edu-detail"><span class="rk-bh-number" aria-hidden="true">4</span><span class="rk-bh-edu-copy"><strong>Moc projektowa</strong><span>Chwilowe obciążenie całego domu i pomieszczeń.</span></span></button>
            <button type="button" class="rk-bh-edu-card" data-rk-edu="4" aria-pressed="false" aria-controls="rk-bh-edu-detail"><span class="rk-bh-number" aria-hidden="true">5</span><span class="rk-bh-edu-copy"><strong>Energia sezonowa</strong><span>Pogoda, zyski, akumulacja, harmonogramy i regulacja.</span></span></button>
            <button type="button" class="rk-bh-edu-card" data-rk-edu="5" aria-pressed="false" aria-controls="rk-bh-edu-detail"><span class="rk-bh-number" aria-hidden="true">6</span><span class="rk-bh-edu-copy"><strong>Koszt ogrzewania</strong><span>Sprawność źródła, ceny nośnika, opłaty i serwis.</span></span></button>
          </div>
          <div class="rk-bh-edu-detail" id="rk-bh-edu-detail" aria-live="polite">
            <span class="rk-bh-edu-unit" id="rk-bh-edu-unit">Dane wejściowe</span>
            <h3 id="rk-bh-edu-title">Warunki obliczeniowe</h3>
            <p id="rk-bh-edu-text">Najpierw definiuje się oceniany budynek, strefy, geometrię, temperaturę zewnętrzną właściwą lokalizacji i temperatury wewnętrzne. Bez tego żadna późniejsza wartość nie ma jednoznacznego znaczenia.</p>
          </div>
        </div>
      </section>

      <section class="rk-bh-section" id="rk-bh-kalkulator-mocy">
        <span class="rk-bh-eyebrow">Narzędzie 1 — wariant obecny i po zmianie</span>
        <h2>Kalkulator bilansu cieplnego budynku i zapotrzebowania na moc grzewczą</h2>
        <p class="rk-bh-intro">Wprowadź powierzchnie oraz współczynniki U dla wariantu A i B. Kalkulator sumuje współczynniki strat przez przegrody, uproszczony udział podłogi na gruncie, mostki oraz wentylację. Wyniki aktualizują się również na wykresie w dalszej części artykułu.</p>
        <div class="rk-bh-tool" data-rk-tool="heat">
          <div class="rk-bh-tool-head">
            <h3>Uproszczone porównanie projektowych strat ciepła</h3>
            <p>Wariant A może opisywać stan istniejący, a wariant B — modernizację lub drugi standard. Dla przegród do powietrza używany jest iloczyn A × U, dla podłogi dodatkowo jawny współczynnik redukcyjny b. W pełnym obliczeniu straty do gruntu wymagają geometrii i metody właściwej dla kontaktu z gruntem.</p>
          </div>
          <div class="rk-bh-tool-body">
            <div class="rk-bh-field-grid">
              <div class="rk-bh-field"><label for="rk-bh-ti">Temperatura wewnętrzna [°C]</label><input id="rk-bh-ti" type="number" min="5" max="35" step="0.5" value="20" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-te">Temperatura zewnętrzna [°C]</label><input id="rk-bh-te" type="number" min="-40" max="15" step="0.5" value="-20" inputmode="decimal"><small>Dobierz do lokalizacji i celu obliczenia.</small></div>
              <div class="rk-bh-field"><label for="rk-bh-floor-area">Powierzchnia ogrzewana [m²]</label><input id="rk-bh-floor-area" type="number" min="10" max="2000" step="1" value="120" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-ground-b">Współczynnik redukcyjny podłogi b</label><input id="rk-bh-ground-b" type="number" min="0" max="1" step="0.05" value="0.40" inputmode="decimal"><small>Wyłącznie parametr uproszczonego porównania.</small></div>
            </div>

            <div class="rk-bh-subhead">Przegrody — geometria wspólna, parametry dwóch wariantów</div>
            <div class="rk-bh-table-wrap">
              <table class="rk-bh-input-table">
                <thead><tr><th>Element</th><th>Powierzchnia A [m²]</th><th>U — wariant A [W/(m²·K)]</th><th>U — wariant B [W/(m²·K)]</th></tr></thead>
                <tbody>
                  <tr><td data-label="Element"><strong>Ściany zewnętrzne netto</strong></td><td data-label="Powierzchnia A [m²]"><input id="rk-bh-a-wall" type="number" min="0" max="5000" step="1" value="160" inputmode="decimal" aria-label="Powierzchnia ścian"></td><td data-label="U — wariant A"><input id="rk-bh-u1-wall" type="number" min="0.03" max="5" step="0.01" value="0.25" inputmode="decimal" aria-label="U ścian wariant A"></td><td data-label="U — wariant B"><input id="rk-bh-u2-wall" type="number" min="0.03" max="5" step="0.01" value="0.15" inputmode="decimal" aria-label="U ścian wariant B"></td></tr>
                  <tr><td data-label="Element"><strong>Dach lub strop</strong></td><td data-label="Powierzchnia A [m²]"><input id="rk-bh-a-roof" type="number" min="0" max="5000" step="1" value="120" inputmode="decimal" aria-label="Powierzchnia dachu"></td><td data-label="U — wariant A"><input id="rk-bh-u1-roof" type="number" min="0.03" max="5" step="0.01" value="0.20" inputmode="decimal" aria-label="U dachu wariant A"></td><td data-label="U — wariant B"><input id="rk-bh-u2-roof" type="number" min="0.03" max="5" step="0.01" value="0.12" inputmode="decimal" aria-label="U dachu wariant B"></td></tr>
                  <tr><td data-label="Element"><strong>Okna</strong></td><td data-label="Powierzchnia A [m²]"><input id="rk-bh-a-window" type="number" min="0" max="2000" step="0.5" value="25" inputmode="decimal" aria-label="Powierzchnia okien"></td><td data-label="U — wariant A"><input id="rk-bh-u1-window" type="number" min="0.1" max="8" step="0.05" value="0.90" inputmode="decimal" aria-label="U okien wariant A"></td><td data-label="U — wariant B"><input id="rk-bh-u2-window" type="number" min="0.1" max="8" step="0.05" value="0.70" inputmode="decimal" aria-label="U okien wariant B"></td></tr>
                  <tr><td data-label="Element"><strong>Drzwi zewnętrzne</strong></td><td data-label="Powierzchnia A [m²]"><input id="rk-bh-a-door" type="number" min="0" max="500" step="0.5" value="5" inputmode="decimal" aria-label="Powierzchnia drzwi"></td><td data-label="U — wariant A"><input id="rk-bh-u1-door" type="number" min="0.1" max="8" step="0.05" value="1.30" inputmode="decimal" aria-label="U drzwi wariant A"></td><td data-label="U — wariant B"><input id="rk-bh-u2-door" type="number" min="0.1" max="8" step="0.05" value="1.00" inputmode="decimal" aria-label="U drzwi wariant B"></td></tr>
                  <tr><td data-label="Element"><strong>Podłoga na gruncie — uproszczenie</strong></td><td data-label="Powierzchnia A [m²]"><input id="rk-bh-a-ground" type="number" min="0" max="5000" step="1" value="120" inputmode="decimal" aria-label="Powierzchnia podłogi"></td><td data-label="U — wariant A"><input id="rk-bh-u1-ground" type="number" min="0.03" max="5" step="0.01" value="0.25" inputmode="decimal" aria-label="U podłogi wariant A"></td><td data-label="U — wariant B"><input id="rk-bh-u2-ground" type="number" min="0.03" max="5" step="0.01" value="0.15" inputmode="decimal" aria-label="U podłogi wariant B"></td></tr>
                </tbody>
              </table>
            </div>

            <div class="rk-bh-subhead">Mostki i wentylacja</div>
            <div class="rk-bh-field-grid">
              <div class="rk-bh-field"><label for="rk-bh-bridge1">Mostki H<sub>TB</sub> — wariant A [W/K]</label><input id="rk-bh-bridge1" type="number" min="0" max="1000" step="1" value="20" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-bridge2">Mostki H<sub>TB</sub> — wariant B [W/K]</label><input id="rk-bh-bridge2" type="number" min="0" max="1000" step="1" value="10" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-airflow">Strumień wentylacji [m³/h]</label><input id="rk-bh-airflow" type="number" min="0" max="10000" step="5" value="150" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-eta1">Odzysk — wariant A [%]</label><input id="rk-bh-eta1" type="number" min="0" max="95" step="1" value="0" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-eta2">Odzysk — wariant B [%]</label><input id="rk-bh-eta2" type="number" min="0" max="95" step="1" value="80" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-infil1">Infiltracja — wariant A [m³/h]</label><input id="rk-bh-infil1" type="number" min="0" max="5000" step="5" value="20" inputmode="decimal"></div>
              <div class="rk-bh-field"><label for="rk-bh-infil2">Infiltracja — wariant B [m³/h]</label><input id="rk-bh-infil2" type="number" min="0" max="5000" step="5" value="15" inputmode="decimal"></div>
            </div>

            <div class="rk-bh-actions">
              <button type="button" class="rk-bh-action" id="rk-bh-heat-run">Przelicz oba warianty</button>
              <button type="button" class="rk-bh-action rk-bh-action-secondary" id="rk-bh-heat-reset">Przywróć dane przykładowe</button>
            </div>
            <div class="rk-bh-error" id="rk-bh-heat-error" role="alert" hidden="">Sprawdź pola. Powierzchnie i strumienie nie mogą być ujemne, współczynniki U muszą być dodatnie, a temperatura wewnętrzna wyższa od zewnętrznej.</div>
            <div class="rk-bh-results" aria-live="polite">
              <div class="rk-bh-result rk-bh-result-featured"><span>Moc projektowa — wariant A</span><strong id="rk-bh-q1">—</strong><small id="rk-bh-wm1">—</small></div>
              <div class="rk-bh-result rk-bh-result-featured"><span>Moc projektowa — wariant B</span><strong id="rk-bh-q2">—</strong><small id="rk-bh-wm2">—</small></div>
              <div class="rk-bh-result"><span>Redukcja mocy</span><strong id="rk-bh-q-save">—</strong><small id="rk-bh-q-save-pct">—</small></div>
              <div class="rk-bh-result"><span>Współczynnik strat H — A / B</span><strong id="rk-bh-h-pair">—</strong><small>W/K, przed pomnożeniem przez różnicę temperatur</small></div>
            </div>
            <div class="rk-bh-result-line" id="rk-bh-heat-summary">Wprowadź dane, aby porównać udział przegród, mostków i wentylacji.</div>
            <p class="rk-bh-disclaimer"><strong>Ważne:</strong> model ma wartość edukacyjną i porównawczą. Nie uwzględnia m.in. pełnej metody strat do gruntu, sąsiednich stref, nagrzewania po osłabieniu, bilansu wentylacji dla konkretnych pomieszczeń ani wszystkich zasad obliczeń projektowych. Nie dobieraj z niego urządzenia „na styk”.</p>
          </div>
        </div>
      </section>

      <section class="rk-bh-section" id="rk-bh-interpretacja">
        <span class="rk-bh-eyebrow">Co oznacza wynik?</span>
        <h2>Jak interpretować kalkulator zapotrzebowania na moc grzewczą?</h2>
        <p>Wynik całkowity pokazuje skalę projektowych strat przy wpisanej różnicy temperatur. Pozwala sprawdzić, czy większy wpływ ma przenikanie, czy wymiana powietrza, oraz porównać dwa zestawy założeń. Wartość W/m² pomaga wychwycić nietypowy wynik, ale nie zastępuje zestawienia pomieszczeń.</p>
        <div class="rk-bh-grid-3">
          <article class="rk-bh-card rk-bh-card-accent"><h3>Sprawdź największy składnik</h3><p>Modernizacja powinna odpowiadać na przyczynę. Jeżeli dominuje dach, wymiana okien może dać mniejszy efekt niż wynika z intuicji. Wykres pokazuje to bez ukrywania udziałów.</p></article>
          <article class="rk-bh-card rk-bh-card-orange"><h3>Nie dodawaj automatycznego zapasu</h3><p>Rezerwa nie naprawia błędnych danych. Powinna wynikać z celu obliczenia, sposobu pracy i wymagań systemu, a nie z uniwersalnego „plus 20%”.</p></article>
          <article class="rk-bh-card rk-bh-card-green"><h3>Rozdziel wynik na pokoje</h3><p>Salon i łazienka mogą mieć zupełnie inne W/m². Dopiero obciążenie pomieszczenia porównuje się z mocą możliwą do oddania przez jego czynną podłogę.</p></article>
        </div>
        <p class="rk-bh-note">Wartość po modernizacji nie jest prognozą rachunku. Roczna pogoda rzadko odpowiada przez cały sezon temperaturze projektowej, dlatego koszt wymaga rocznej energii użytkowej. Do tego służy drugi kalkulator.</p>

        <aside class="rk-bh-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
          <span class="rk-bh-eyebrow">Od bilansu budynku do instalacji</span>
          <h3>Masz orientacyjną moc całego domu. Projekt podłogówki musi jeszcze rozdzielić ją między pomieszczenia.</h3>
          <p>Jedna wartość w kW nie wyznacza rozstawu rur, długości pętli, przepływów ani temperatury zasilania. Potrzebne są obciążenia pomieszczeń, rzeczywista powierzchnia czynna, konstrukcja podłogi i opór okładziny.</p>
          <div class="rk-bh-cta-context"><strong>To naturalny punkt przejścia:</strong> bilans mówi, ile ciepła trzeba dostarczyć, a projekt instalacji określa, jak zrobić to równomiernie i przy parametrach odpowiednich dla źródła.</div>
          <a class="rk-bh-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        </aside>
      </section>

      <section class="rk-bh-section" id="rk-bh-przegrody">
        <span class="rk-bh-eyebrow">Ściany, dach, okna i drzwi</span>
        <h2>Jak obliczyć straty ciepła przez przegrody budynku?</h2>
        <p>Dla jednorodnej przegrody oddzielającej wnętrze od powietrza zewnętrznego podstawową zależność można zapisać jako iloczyn powierzchni, współczynnika przenikania i różnicy temperatur. W obliczeniu całego budynku trzeba używać powierzchni netto, właściwych temperatur po obu stronach oraz osobno ująć mostki cieplne.</p>
        <div class="rk-bh-formula">Φ<sub>T</sub> = A × U × ΔT &nbsp; [W]</div>
        <div class="rk-bh-grid-3">
          <article class="rk-bh-card"><h3>A — powierzchnia</h3><p>Ściana netto nie obejmuje okien i drzwi liczonych oddzielnie. Błąd geometrii przenosi się wprost na wynik.</p></article>
          <article class="rk-bh-card"><h3>U — przenikanie</h3><p>Współczynnik obejmuje układ warstw przegrody. Nie jest tym samym co lambda pojedynczego materiału izolacyjnego.</p></article>
          <article class="rk-bh-card"><h3>ΔT — warunki</h3><p>Dla ściany zewnętrznej to różnica między temperaturą strefy a temperaturą zewnętrzną. Dla innych sąsiedztw warunek jest inny.</p></article>
        </div>
        <p>Współczynnika U nie należy przepisywać automatycznie z etykiety jednej warstwy. Znaczenie mają grubości, przewodność, opory przejmowania oraz ciągłość rozwiązania. Podobnie okna o tym samym Ug szyby mogą mieć inne Uw całego wyrobu. Szczegółowe zasady warto połączyć z artykułem o tym, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak liczyć straty cieplne</a>, a wynik zweryfikować przez <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">zakres normy PN-EN 12831</a>.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-grunt">
        <span class="rk-bh-eyebrow">Najczęściej nadmiernie upraszczany element</span>
        <h2>Straty ciepła przez podłogę na gruncie nie są zwykłym A × U × ΔT</h2>
        <p>Grunt nie zachowuje się jak powietrze zewnętrzne o tej samej temperaturze. Strumień zależy między innymi od pola podłogi, obwodu, geometrii, zagłębienia, izolacji podłogi i ścian oraz właściwości gruntu. Dlatego w pełnych obliczeniach stosuje się metodę przeznaczoną dla przegród stykających się z gruntem.</p>
        <div class="rk-bh-grid-2">
          <article class="rk-bh-card rk-bh-card-accent"><h3>Co robi kalkulator?</h3><p>Używa jawnego współczynnika redukcyjnego b, aby nie traktować całej różnicy temperatura wewnętrzna–zewnętrzna jak warunku dla gruntu. To uproszczenie pomaga porównać warianty, lecz nie odtwarza obliczenia geometrycznego.</p></article>
          <article class="rk-bh-card rk-bh-card-orange"><h3>Co robi pełne opracowanie?</h3><p>Rozpoznaje typ podłogi, obwód, wymiar charakterystyczny, izolację obwodową, warunki brzegowe i strefy przyległe. Wynik może różnić się od prostego iloczynu.</p></article>
        </div>
        <p>To szczególnie ważne, gdy ogrzewanie znajduje się w <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-plycie-fundamentowej-techniczny-przewodnik-po-projektowaniu-i-montazu/">płycie fundamentowej</a> albo inwestor porównuje różne warianty <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/">izolacji pod ogrzewanie podłogowe</a>. Sama grubość styropianu nie opisuje całej drogi ucieczki ciepła.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-wentylacja">
        <span class="rk-bh-eyebrow">Powietrze też przenosi ciepło</span>
        <h2>Jak policzyć straty wentylacyjne z rekuperacją i infiltracją?</h2>
        <p>Uproszczony współczynnik strat wentylacyjnych dla suchego powietrza zapisuje się często jako 0,34 razy strumień powietrza w m³/h. Przy odzysku ciepła nie wystarczy jednak wpisać sprawności z folderu centrali. Trzeba oddzielić strumień mechaniczny od infiltracji, uwzględnić pracę odszraniania i sprawdzić rzeczywiste strumienie nawiewu oraz wywiewu.</p>
        <div class="rk-bh-formula">Φ<sub>V</sub> ≈ 0,34 × [V̇<sub>went</sub> × (1 − η<sub>odz</sub>) + V̇<sub>inf</sub>] × ΔT &nbsp; [W]</div>
        <div class="rk-bh-table-wrap">
          <table>
            <thead><tr><th>Parametr</th><th>Co oznacza?</th><th>Typowy błąd</th></tr></thead>
            <tbody>
              <tr><td data-label="Parametr"><strong>V̇<sub>went</sub></strong></td><td data-label="Co oznacza?">Projektowy strumień powietrza wynikający z funkcji i użytkowania pomieszczeń.</td><td data-label="Typowy błąd">Zastąpienie go jedną wymianą powietrza bez bilansu nawiewu i wywiewu.</td></tr>
              <tr><td data-label="Parametr"><strong>η<sub>odz</sub></strong></td><td data-label="Co oznacza?">Efektywny udział odzysku w przyjętym punkcie pracy.</td><td data-label="Typowy błąd">Użycie maksymalnej wartości katalogowej w każdych warunkach mrozu.</td></tr>
              <tr><td data-label="Parametr"><strong>V̇<sub>inf</sub></strong></td><td data-label="Co oznacza?">Niekontrolowany napływ powietrza przez nieszczelności.</td><td data-label="Typowy błąd">Założenie, że rekuperator odzyskuje również ciepło z infiltracji.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Rekuperacja może istotnie ograniczyć straty wentylacyjne, ale nie zmienia współczynników U przegród. Jej współpraca z instalacją została szerzej omówiona w poradniku <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja i ogrzewanie podłogowe</a>.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-mostki-zyski">
        <span class="rk-bh-eyebrow">Dwie pozycje, których nie wolno liczyć procentem z przyzwyczajenia</span>
        <h2>Mostki termiczne i zyski ciepła: kiedy je dodawać, a kiedy odejmować?</h2>
        <p>Mostki liniowe opisuje się iloczynem długości złącza i liniowego współczynnika przenikania ψ. Zestawienie złączy jest bardziej przejrzyste niż stały narzut 20–30% do wszystkich przegród. Taki procent może przypadkiem zbliżyć się do wyniku jednego domu i jednocześnie mocno zniekształcić inny.</p>
        <div class="rk-bh-formula">H<sub>TB</sub> = Σ(ψ × l) &nbsp; [W/K]</div>
        <p>Zyski słoneczne i wewnętrzne są ważne w rocznym bilansie energetycznym oraz w analizie przegrzewania. Nie są jednak bezwarunkową, stałą mocą dostępną dokładnie podczas projektowego mrozu. Ich wartość zależy od pory dnia, zachmurzenia, orientacji, zacienienia, obecności ludzi i pracy urządzeń. Dlatego proste odjęcie pełnych zysków od strat projektowych może prowadzić do niedowymiarowania ogrzewania.</p>
        <div class="rk-bh-grid-3">
          <article class="rk-bh-card"><h3>Zyski słoneczne</h3><p>Wymagają powierzchni i orientacji szyb, współczynnika g, zacienienia oraz danych klimatycznych. Duże przeszklenia mogą jednocześnie zwiększać straty i chwilowe zyski.</p></article>
          <article class="rk-bh-card"><h3>Zyski wewnętrzne</h3><p>Zależą od liczby osób, urządzeń, oświetlenia i harmonogramów. Nie należy zakładać ich stałej obecności w każdym pomieszczeniu.</p></article>
          <article class="rk-bh-card"><h3>Akumulacja</h3><p>Masa budynku przesuwa reakcję temperatury w czasie. Nie usuwa energii z bilansu i nie gwarantuje, że każde nasłonecznienie zostanie użyte bez przegrzania.</p></article>
        </div>
        <p>W osobnym materiale pokazano, jak <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">podłogówka reaguje na pasywne zyski ciepła</a> i dlaczego duże okna wymagają obliczeń <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">strefy przy przeszkleniach</a>, a nie uniwersalnego pasa lub narzutu mocy.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-kalkulator-kosztow">
        <span class="rk-bh-eyebrow">Narzędzie 2 — energia i źródła ciepła</span>
        <h2>Kalkulator rocznych kosztów ogrzewania dla pompy ciepła, gazu, pelletu i prądu</h2>
        <p class="rk-bh-intro">Do kalkulatora wpisuje się <strong>roczne zapotrzebowanie na energię użytkową do ogrzewania</strong>, najlepiej z charakterystyki energetycznej, audytu lub modelu rocznego. Nie jest ono automatycznie wyprowadzane z projektowej mocy w kW. Ceny i parametry startowe są wyłącznie przykładowe — przed porównaniem zastąp je własną taryfą, ofertą paliwa i zakładanymi kosztami stałymi.</p>
        <div class="rk-bh-tool" data-rk-tool="cost">
          <div class="rk-bh-tool-head">
            <h3>Porównanie kosztów dla tych samych potrzeb budynku</h3>
            <p>Każde źródło pokrywa identyczne Q<sub>H,nd</sub>. Różni się ilością kupowanej energii, parametrem sezonowym i kosztami stałymi. Zakres ±20% pokazuje wpływ niepewności rocznego zapotrzebowania, ale nie prognozuje cen.</p>
          </div>
          <div class="rk-bh-tool-body">
            <div class="rk-bh-field-grid">
              <div class="rk-bh-field"><label for="rk-bh-qh">Energia użytkowa Q<sub>H,nd</sub> [kWh/rok]</label><input id="rk-bh-qh" type="number" min="100" max="500000" step="100" value="9000" inputmode="decimal"><small>Nie wpisuj mocy źródła w kW.</small></div>
              <div class="rk-bh-field"><label for="rk-bh-years">Horyzont porównania [lat]</label><input id="rk-bh-years" type="number" min="1" max="30" step="1" value="20" inputmode="numeric"></div>
              <div class="rk-bh-field"><label for="rk-bh-growth">Wzrost kosztów [%/rok]</label><input id="rk-bh-growth" type="number" min="0" max="20" step="0.1" value="2.5" inputmode="decimal"><small>Wspólne założenie scenariusza, nie prognoza.</small></div>
              <div class="rk-bh-field"><label for="rk-bh-season-months">Miesiące sezonu do średniej</label><input id="rk-bh-season-months" type="number" min="1" max="12" step="1" value="7" inputmode="numeric"></div>
            </div>

            <div class="rk-bh-subhead">Edytowalne parametry źródeł</div>
            <div class="rk-bh-table-wrap">
              <table class="rk-bh-cost-table">
                <thead><tr><th>Źródło</th><th>SCOP lub sprawność</th><th>Cena energii wejściowej [zł/kWh]</th><th>Koszty stałe i serwis [zł/rok]</th></tr></thead>
                <tbody>
                  <tr><td data-label="Źródło"><span class="rk-bh-source">Pompa ciepła<small>Q użytkowe ÷ SCOP</small></span></td><td data-label="SCOP lub sprawność"><input id="rk-bh-factor-hp" type="number" min="1" max="8" step="0.1" value="3.5" inputmode="decimal" aria-label="SCOP pompy ciepła"></td><td data-label="Cena energii wejściowej"><input id="rk-bh-price-hp" type="number" min="0" max="20" step="0.01" value="1.10" inputmode="decimal" aria-label="Cena prądu dla pompy ciepła"></td><td data-label="Koszty stałe i serwis"><input id="rk-bh-fixed-hp" type="number" min="0" max="50000" step="50" value="350" inputmode="decimal" aria-label="Koszty stałe pompy ciepła"></td></tr>
                  <tr><td data-label="Źródło"><span class="rk-bh-source">Kocioł gazowy<small>Q użytkowe ÷ η sezonowa</small></span></td><td data-label="SCOP lub sprawność"><input id="rk-bh-factor-gas" type="number" min="0.1" max="1.2" step="0.01" value="0.92" inputmode="decimal" aria-label="Sprawność sezonowa kotła gazowego"></td><td data-label="Cena energii wejściowej"><input id="rk-bh-price-gas" type="number" min="0" max="20" step="0.01" value="0.34" inputmode="decimal" aria-label="Cena energii z gazu"></td><td data-label="Koszty stałe i serwis"><input id="rk-bh-fixed-gas" type="number" min="0" max="50000" step="50" value="900" inputmode="decimal" aria-label="Koszty stałe kotła gazowego"></td></tr>
                  <tr><td data-label="Źródło"><span class="rk-bh-source">Kocioł na pellet<small>Q użytkowe ÷ η sezonowa</small></span></td><td data-label="SCOP lub sprawność"><input id="rk-bh-factor-pellet" type="number" min="0.1" max="1.2" step="0.01" value="0.85" inputmode="decimal" aria-label="Sprawność sezonowa kotła na pellet"></td><td data-label="Cena energii wejściowej"><input id="rk-bh-price-pellet" type="number" min="0" max="20" step="0.01" value="0.38" inputmode="decimal" aria-label="Cena energii w pellecie"></td><td data-label="Koszty stałe i serwis"><input id="rk-bh-fixed-pellet" type="number" min="0" max="50000" step="50" value="1200" inputmode="decimal" aria-label="Koszty stałe kotła na pellet"></td></tr>
                  <tr><td data-label="Źródło"><span class="rk-bh-source">Ogrzewanie elektryczne<small>Q użytkowe ÷ sprawność</small></span></td><td data-label="SCOP lub sprawność"><input id="rk-bh-factor-electric" type="number" min="0.1" max="1.2" step="0.01" value="1.00" inputmode="decimal" aria-label="Sprawność ogrzewania elektrycznego"></td><td data-label="Cena energii wejściowej"><input id="rk-bh-price-electric" type="number" min="0" max="20" step="0.01" value="1.10" inputmode="decimal" aria-label="Cena prądu dla ogrzewania elektrycznego"></td><td data-label="Koszty stałe i serwis"><input id="rk-bh-fixed-electric" type="number" min="0" max="50000" step="50" value="100" inputmode="decimal" aria-label="Koszty stałe ogrzewania elektrycznego"></td></tr>
                </tbody>
              </table>
            </div>

            <div class="rk-bh-actions">
              <button type="button" class="rk-bh-action" id="rk-bh-cost-run">Przelicz koszty źródeł</button>
              <button type="button" class="rk-bh-action rk-bh-action-secondary" id="rk-bh-cost-reset">Przywróć scenariusz przykładowy</button>
            </div>
            <div class="rk-bh-error" id="rk-bh-cost-error" role="alert" hidden="">Sprawdź pola: energia, horyzont i liczba miesięcy muszą być dodatnie, ceny oraz koszty nie mogą być ujemne, a SCOP lub sprawność muszą być większe od zera.</div>
            <div class="rk-bh-results" aria-live="polite">
              <div class="rk-bh-result rk-bh-result-featured"><span>Najniższy koszt roczny</span><strong id="rk-bh-best-annual">—</strong><small id="rk-bh-best-name">—</small></div>
              <div class="rk-bh-result"><span>Średnio na miesiąc sezonu</span><strong id="rk-bh-best-month">—</strong><small id="rk-bh-season-note">—</small></div>
              <div class="rk-bh-result"><span>Najniższy koszt w horyzoncie</span><strong id="rk-bh-best-total">—</strong><small id="rk-bh-years-note">—</small></div>
              <div class="rk-bh-result"><span>Zakres przy ±20% Q<sub>H,nd</sub></span><strong id="rk-bh-best-range">—</strong><small>Przy niezmienionych cenach i kosztach stałych</small></div>
            </div>
            <div class="rk-bh-rank" id="rk-bh-ranking" aria-live="polite"></div>
            <p class="rk-bh-disclaimer"><strong>Uwaga:</strong> porównanie nie zawiera kosztu inwestycji, finansowania, wymian urządzeń ani różnic w przygotowaniu ciepłej wody. Cena gazu lub pelletu powinna być przeliczona na kWh energii paliwa zgodnie z własną fakturą i parametrami paliwa. SCOP pompy ciepła zależy od klimatu, temperatury zasilania, doboru, odszraniania, pomp pomocniczych oraz sterowania.</p>
          </div>
        </div>
        <p>Jeżeli chcesz zestawić koszt inwestycji z eksploatacją, użyj osobno analizy <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">zwrotu z inwestycji w ogrzewanie podłogowe</a>. Porównanie samej podłogówki wodnej z elektryczną opisuje kalkulator <a href="https://projekt-ogrzewania.pl/ogrzewanie-elektryczne-vs-wodna-podlogowka-kalkulator-kosztow-eksploatacji/">ogrzewanie elektryczne a wodna podłogówka</a>.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-wykres">
        <span class="rk-bh-eyebrow">Wyniki bez ukrywania założeń</span>
        <h2>Interaktywny wykres strat ciepła i kosztów ogrzewania</h2>
        <p class="rk-bh-intro">Przełącz widok, aby zobaczyć skład projektowych strat w wariantach A i B albo roczne koszty czterech źródeł. Wykres korzysta dokładnie z danych wpisanych powyżej i nie dodaje własnego scenariusza.</p>
        <div class="rk-bh-chart">
          <div class="rk-bh-chart-head">
            <div><h3 id="rk-bh-chart-title">Składniki projektowych strat ciepła</h3><p id="rk-bh-chart-subtitle">Porównanie mocy w W przy wpisanej różnicy temperatur.</p></div>
            <div class="rk-bh-chart-tabs" role="group" aria-label="Rodzaj wykresu">
              <button type="button" class="rk-bh-chart-tab" data-rk-chart="loss" aria-pressed="true">Straty ciepła</button>
              <button type="button" class="rk-bh-chart-tab" data-rk-chart="cost" aria-pressed="false">Koszty źródeł</button>
            </div>
          </div>
          <div class="rk-bh-chart-body">
            <div class="rk-bh-bars" id="rk-bh-bars" aria-live="polite"></div>
            <div class="rk-bh-chart-legend" id="rk-bh-chart-legend">
              <span class="rk-bh-chart-key"><span class="rk-bh-chart-dot" aria-hidden="true"></span>Wariant A</span>
              <span class="rk-bh-chart-key"><span class="rk-bh-chart-dot rk-bh-chart-dot-alt" aria-hidden="true"></span>Wariant B</span>
            </div>
            <p class="rk-bh-chart-caption" id="rk-bh-chart-caption">Długość słupka pokazuje udział wobec największego składnika. Wartość bezwzględna jest podana w każdym słupku.</p>
          </div>
        </div>
      </section>

      <section class="rk-bh-section" id="rk-bh-podlogowka">
        <span class="rk-bh-eyebrow">Od obciążenia pomieszczenia do emitera</span>
        <h2>Jak bilans cieplny wpływa na projekt ogrzewania podłogowego?</h2>
        <p>Ogrzewanie podłogowe nie zmniejsza strat ścian, dachu ani wentylacji. Ma dostarczyć do każdej strefy moc wynikającą z obciążenia przy zachowaniu komfortu i dopuszczalnych temperatur powierzchni. Dlatego projekt nie zaczyna się od zasady „rura co 10 lub 15 cm”, lecz od porównania wymaganej mocy z możliwościami konkretnej podłogi.</p>
        <div class="rk-bh-numbered-grid">
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">1</span><div><h3>Obciążenie pomieszczenia</h3><p>Projektowe straty w W przy temperaturze właściwej dla danej strefy, nie tylko suma całego budynku.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">2</span><div><h3>Powierzchnia czynna</h3><p>Fragment podłogi rzeczywiście dostępny do oddawania ciepła po uwzględnieniu zabudowy i ograniczeń.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">3</span><div><h3>Opór warstw i okładziny</h3><p>Wylewka, system suchy lub mokry oraz wykończenie zmieniają wymaganą temperaturę średnią czynnika.</p></div></article>
          <article class="rk-bh-numbered-card"><span class="rk-bh-number" aria-hidden="true">4</span><div><h3>Rozstaw, pętla i przepływ</h3><p>Geometria musi równocześnie spełnić warunki cieplne, hydrauliczne i wykonawcze.</p></div></article>
        </div>
        <p>W praktyce trzeba połączyć <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">dobór rozstawu rur</a>, <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">rozmieszczenie pętli grzewczych</a>, <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicę rur</a>, <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">wymagany przepływ i pompę obiegową</a> oraz <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny okładziny</a>. Żaden z tych parametrów nie wynika samodzielnie z powierzchni domu.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-pompa">
        <span class="rk-bh-eyebrow">Moc budynku to nie symbol urządzenia</span>
        <h2>Jak dobrać moc pompy ciepła z OZC i bilansu cieplnego?</h2>
        <p>Projektowe obciążenie cieplne jest kluczowym wejściem do doboru, ale nie kończy analizy. Trzeba znać charakterystykę mocy urządzenia w funkcji temperatury zewnętrznej i wymaganej temperatury wody, punkt biwalentny, udział grzałki, przygotowanie ciepłej wody, minimalną moc modulacji oraz wymagany przepływ.</p>
        <div class="rk-bh-grid-3">
          <article class="rk-bh-card rk-bh-card-accent"><h3>Moc przy warunkach pracy</h3><p>Wartość z nazwy modelu nie musi być mocą dostępną podczas mrozu i przy konkretnej temperaturze zasilania.</p></article>
          <article class="rk-bh-card rk-bh-card-orange"><h3>Modulacja i częściowe obciążenie</h3><p>Przewymiarowanie może nasilać taktowanie w łagodnej pogodzie. Sam zapas mocy nie gwarantuje lepszej pracy.</p></article>
          <article class="rk-bh-card rk-bh-card-green"><h3>Temperatura instalacji</h3><p>Niższa wymagana temperatura wody zwykle sprzyja sprawności, ale musi wystarczyć do pokrycia strat każdego pomieszczenia.</p></article>
        </div>
        <p>Pełne powiązanie opisuje poradnik <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>. Warto też sprawdzić, dlaczego deklarowane <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">35°C nie jest uniwersalną temperaturą zasilania</a> oraz jak ustawia się <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywą grzewczą podłogówki</a>.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-bledy">
        <span class="rk-bh-eyebrow">Kontrola jakości obliczeń</span>
        <h2>Najczęstsze błędy w bilansie cieplnym budynku</h2>
        <div class="rk-bh-table-wrap">
          <table>
            <thead><tr><th>Błąd</th><th>Dlaczego zniekształca wynik?</th><th>Co zrobić?</th></tr></thead>
            <tbody>
              <tr><td data-label="Błąd"><strong>Moc tylko z W/m²</strong></td><td data-label="Dlaczego zniekształca wynik?">Pomija geometrię, przegrody, wentylację, klimat i temperatury pomieszczeń.</td><td data-label="Co zrobić?">Liczyć składniki i używać W/m² dopiero jako kontroli.</td></tr>
              <tr><td data-label="Błąd"><strong>Podłoga na gruncie jak ściana</strong></td><td data-label="Dlaczego zniekształca wynik?">Grunt ma inne warunki brzegowe i zależność od geometrii.</td><td data-label="Co zrobić?">Zastosować metodę dla gruntu; uproszczenie wyraźnie oznaczyć.</td></tr>
              <tr><td data-label="Błąd"><strong>Stałe 20–30% na mostki</strong></td><td data-label="Dlaczego zniekształca wynik?">Nie opisuje długości ani jakości konkretnych złączy.</td><td data-label="Co zrobić?">Sumować ψ × l albo stosować jawny, uzasadniony model zastępczy.</td></tr>
              <tr><td data-label="Błąd"><strong>Pełne odjęcie zysków w mrozie</strong></td><td data-label="Dlaczego zniekształca wynik?">Słońce, ludzie i urządzenia nie są stałą mocą gwarantowaną w każdej strefie.</td><td data-label="Co zrobić?">Rozdzielić obliczenie projektowe od rocznego bilansu z wykorzystaniem zysków.</td></tr>
              <tr><td data-label="Błąd"><strong>kW × 8760 = kWh/rok</strong></td><td data-label="Dlaczego zniekształca wynik?">Zakłada całoroczną pracę z mocą projektową.</td><td data-label="Co zrobić?">Roczną energię liczyć z przebiegu warunków, harmonogramów i bilansu sezonowego.</td></tr>
              <tr><td data-label="Błąd"><strong>Dobór źródła do sumy domu</strong></td><td data-label="Dlaczego zniekształca wynik?">Nie sprawdza mocy emiterów w poszczególnych pomieszczeniach ani parametrów urządzenia.</td><td data-label="Co zrobić?">Połączyć OZC pomieszczeń z obliczeniami instalacji i charakterystyką źródła.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Warto również przejrzeć zestawienie <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projekt „z głowy” a projekt z obliczeniami</a> oraz listę <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-na-budowie-ktore-psuja-nawet-najlepszy-projekt-ogrzewania-podlogowego/">błędów wykonawczych psujących wynik projektu</a>.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-checklista">
        <span class="rk-bh-eyebrow">Przed zleceniem lub odbiorem obliczeń</span>
        <h2>Checklista danych do bilansu cieplnego, OZC i projektu podłogówki</h2>
        <div class="rk-bh-check-grid">
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">1</span><div><h3>Rzuty i przekroje</h3><p>Wymiary, wysokości, powierzchnie, strefy, orientacja i poziomy terenu.</p></div></article>
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">2</span><div><h3>Warstwy przegród</h3><p>Ściany, dach, stropy, podłoga, fundament oraz materiały i grubości.</p></div></article>
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">3</span><div><h3>Stolarka</h3><p>Wymiary, Uw, drzwi, bramy, współczynnik g i sposób montażu.</p></div></article>
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">4</span><div><h3>Wentylacja</h3><p>System, strumienie, sprawność odzysku, infiltracja i tryb mrozowy.</p></div></article>
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">5</span><div><h3>Temperatury stref</h3><p>Założenia dla każdego pomieszczenia oraz warunki po drugiej stronie przegród.</p></div></article>
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">6</span><div><h3>Mostki</h3><p>Złącza, długości, detale, przyjęte ψ i sposób udokumentowania uproszczeń.</p></div></article>
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">7</span><div><h3>Podłoga i zabudowa</h3><p>Powierzchnia czynna, warstwy, okładziny, stała zabudowa i ograniczenia producentów.</p></div></article>
          <article class="rk-bh-check-card"><span class="rk-bh-number" aria-hidden="true">8</span><div><h3>Źródło i parametry</h3><p>Rodzaj urządzenia, charakterystyka mocy, oczekiwana temperatura wody i sposób regulacji.</p></div></article>
        </div>
        <p class="rk-bh-note">Jeżeli dokumentacja nie zawiera obciążeń poszczególnych pomieszczeń, trudno rzetelnie sprawdzić powierzchnię czynną, rozstawy i przepływy. W artykule <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt podłogówki</a> pokazano, jakich informacji oczekiwać na rysunkach i w zestawieniach.</p>
      </section>

      <section class="rk-bh-section" id="rk-bh-podsumowanie">
        <span class="rk-bh-eyebrow">Wniosek końcowy</span>
        <h2>Dobry bilans cieplny prowadzi od przyczyny strat do poprawnej instalacji</h2>
        <p>Rzetelna analiza nie obiecuje jednej uniwersalnej wartości dla każdego domu. Pokazuje osobno straty przez przegrody, grunt, mostki oraz wentylację, a następnie wyznacza projektowe obciążenia pomieszczeń. Roczna energia powstaje z modelu sezonu, a koszt dopiero po uwzględnieniu sprawności i cen. Taka kolejność pozwala porównywać modernizacje, dobrać źródło oraz sprawdzić, czy ogrzewanie podłogowe pokryje wymagania przy rozsądnej temperaturze wody.</p>
        <div class="rk-bh-grid-3">
          <article class="rk-bh-card rk-bh-card-accent"><h3>W/kW</h3><p>Dobór mocy i sprawdzenie emiterów w warunkach projektowych.</p></article>
          <article class="rk-bh-card rk-bh-card-green"><h3>kWh/rok</h3><p>Roczny bilans z klimatem, zyskami, akumulacją i użytkowaniem.</p></article>
          <article class="rk-bh-card rk-bh-card-orange"><h3>zł/rok</h3><p>Energia końcowa, ceny, taryfy, opłaty stałe i serwis źródła.</p></article>
        </div>
        <aside class="rk-bh-cta" aria-label="Końcowe zamówienie projektu ogrzewania podłogowego">
          <span class="rk-bh-eyebrow">Obliczenia zamiast uniwersalnych recept</span>
          <h3>Przełóż obciążenia pomieszczeń na pętle, rozstawy, przepływy i temperaturę zasilania.</h3>
          <p>Indywidualny projekt ogrzewania podłogowego łączy bilans cieplny z geometrią instalacji, konstrukcją podłogi, ograniczeniami okładzin i wymaganiami źródła ciepła.</p>
          <div class="rk-bh-cta-context"><strong>Zakres musi odpowiadać budynkowi:</strong> przed zamówieniem przygotuj rzuty, warstwy przegród, informacje o wentylacji, źródle, okładzinach i stałej zabudowie. To skraca drogę od danych do spójnego projektu.</div>
          <a class="rk-bh-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
        </aside>
      </section>

      <section class="rk-bh-section" id="rk-bh-zrodla">
        <span class="rk-bh-eyebrow">Podstawa techniczna</span>
        <h2>Źródła dotyczące obciążeń cieplnych i charakterystyki energetycznej</h2>
        <p>Artykuł rozdziela projektową moc, roczną energię i koszt zgodnie z odmiennym celem tych obliczeń. Pełne opracowania wymagają aktualnych norm, przepisów oraz danych konkretnego budynku; kalkulatory na stronie są świadomie uproszczone.</p>
        <ul class="rk-bh-source-list">
          <li><a href="https://repo.pw.edu.pl/info/article/WUT7c194b7443134803a9d035c593eba8a2/" target="_blank" rel="nofollow noopener noreferrer">Politechnika Warszawska — materiały dotyczące obliczania projektowego obciążenia cieplnego według PN-EN 12831-1</a>.</li>
          <li><a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20130000926/O/D20130926.pdf" target="_blank" rel="nofollow noopener noreferrer">Internetowy System Aktów Prawnych — wymagania techniczne i przywołane metody obliczeń cieplnych budynków</a>.</li>
          <li><a href="https://eli.gov.pl/eli/DU/2015/376/ogl/pol" target="_blank" rel="nofollow noopener noreferrer">Elektroniczny Dziennik Ustaw — metodologia wyznaczania charakterystyki energetycznej budynku</a>.</li>
          <li><a href="https://eli.gov.pl/eli/DU/2023/697/ogl/pol" target="_blank" rel="nofollow noopener noreferrer">Elektroniczny Dziennik Ustaw — zmiana metodologii charakterystyki energetycznej z 2023 r.</a>.</li>
        </ul>
      </section>

      <section class="rk-bh-section" id="rk-bh-faq">
        <span class="rk-bh-eyebrow">Najczęstsze pytania</span>
        <h2>FAQ — bilans cieplny budynku, moc, energia i koszty ogrzewania</h2>
        <div class="rk-bh-faq">
          <details><summary>Co to jest bilans cieplny budynku?</summary><div class="rk-bh-faq-answer"><p>To zestawienie przepływów ciepła dla określonego celu i warunków. W obliczeniu projektowym obejmuje przede wszystkim straty przez przegrody, mostki i wymianę powietrza, a w bilansie rocznym również zmienność klimatu, zyski oraz akumulację.</p></div></details>
          <details><summary>Czy bilans cieplny i OZC oznaczają to samo?</summary><div class="rk-bh-faq-answer"><p>W języku potocznym pojęcia bywają używane zamiennie, ale warto podać zakres opracowania. Projektowe obciążenie cieplne dotyczy mocy w warunkach obliczeniowych, natomiast bilans może też oznaczać roczne zapotrzebowanie na energię.</p></div></details>
          <details><summary>Ile kW ogrzewania potrzebuje dom 100 lub 150 m²?</summary><div class="rk-bh-faq-answer"><p>Nie da się tego poprawnie ustalić z samej powierzchni. Potrzebne są geometria, współczynniki U, stolarka, mostki, wentylacja, szczelność, lokalizacja i temperatury pomieszczeń. W/m² może służyć do kontroli gotowego wyniku, nie do zastąpienia obliczeń.</p></div></details>
          <details><summary>Czy od strat projektowych odejmuje się zyski słoneczne i od ludzi?</summary><div class="rk-bh-faq-answer"><p>Nie należy bezwarunkowo odejmować pełnej, stałej wartości. Dostępność zysków zależy od czasu, pogody i użytkowania. Sposób ich ujęcia musi odpowiadać metodzie i celowi obliczenia, szczególnie przy doborze mocy w warunkach projektowych.</p></div></details>
          <details><summary>Jak policzyć straty wentylacyjne przy rekuperacji?</summary><div class="rk-bh-faq-answer"><p>Trzeba znać projektowy strumień powietrza, efektywny odzysk w ocenianych warunkach, infiltrację oraz sposób pracy centrali podczas mrozu. Rekuperator nie odzyskuje ciepła z powietrza napływającego przez nieszczelności.</p></div></details>
          <details><summary>Czy moc w kW można przeliczyć na kWh/rok?</summary><div class="rk-bh-faq-answer"><p>Nie jednym uniwersalnym mnożnikiem. Moc projektowa dotyczy konkretnego punktu obliczeniowego, a roczna energia zależy od przebiegu pogody, temperatur wewnętrznych, zysków, akumulacji, przerw i regulacji przez cały sezon.</p></div></details>
          <details><summary>Czy kalkulator kosztów może przyjąć moc pompy ciepła zamiast QH,nd?</summary><div class="rk-bh-faq-answer"><p>Nie. Do porównania kosztów potrzebna jest roczna energia użytkowa, a następnie sezonowa sprawność lub SCOP źródła. Moc urządzenia opisuje zdolność pokrycia chwilowego obciążenia, a nie automatycznie roczne zużycie.</p></div></details>
          <details><summary>Czy ogrzewanie podłogowe zmniejsza bilans cieplny budynku?</summary><div class="rk-bh-faq-answer"><p>Nie zmienia współczynników U ani strumieni wentylacji. Może umożliwić pracę źródła przy niższej temperaturze wody i wpływać na komfort oraz regulację, ale nadal musi dostarczyć moc wynikającą ze strat każdego pomieszczenia.</p></div></details>
          <details><summary>Czy wynik bilansu całego domu wystarczy do zaprojektowania podłogówki?</summary><div class="rk-bh-faq-answer"><p>Nie. Niezbędne są obciążenia poszczególnych pomieszczeń, powierzchnie czynne, warstwy podłogi, okładziny, temperatury zasilania i powrotu, geometria pętli, przepływy oraz opory hydrauliczne.</p></div></details>
          <details><summary>Czy kalkulatory z artykułu zastępują obliczenia projektowe?</summary><div class="rk-bh-faq-answer"><p>Nie. Pierwszy jest uproszczonym narzędziem porównawczym, a drugi przelicza koszt z podanego rocznego zapotrzebowania. Nie zastępują OZC, charakterystyki energetycznej, audytu ani projektu instalacji i źródła ciepła.</p></div></details>
        </div>
      </section>
    </main>

    <section class="rk-bh-author" id="rk-bh-autor" aria-labelledby="rk-bh-author-heading">
      <div class="rk-bh-author-head">
        <span class="rk-bh-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
        <h2 id="rk-bh-author-heading">Autor i weryfikacja merytoryczna</h2>
        <p>Treść przygotowana z perspektywy obliczeń cieplnych budynków, projektowania wodnego ogrzewania podłogowego, hydrauliki instalacji i współpracy z różnymi źródłami ciepła.</p>
        <span class="rk-bh-author-update">Aktualizacja: 14.09.2026</span>
      </div>
      <div class="rk-bh-author-layout">
        <aside class="rk-bh-author-side">
          <div class="rk-bh-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-bh-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-bh-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-bh-author-social-label">Profile branżowe</div>
          <div class="rk-bh-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-bh-author-main">
          <blockquote class="rk-bh-author-quote"><p>Moim zdaniem najdroższym błędem jest traktowanie jednej liczby jak odpowiedzi na wszystkie pytania. Projektowe kW dobierają moc, roczne kWh opisują energię, a złotówki zależą jeszcze od sprawności źródła i cen — tych wartości nie wolno mieszać.</p></blockquote>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz poradniki techniczne dla inwestorów i wykonawców. W analizie łączy obciążenia pomieszczeń, powierzchnię czynną, konstrukcję podłogi, temperatury wody, przepływy, opory rozdzielaczy i wymagania źródła.</p>
          <p>W tej aktualizacji rozdzielono projektową moc od rocznej energii oraz kosztu. Usunięto uniwersalne narzuty na mostki, bezwarunkowe odejmowanie zysków i proste traktowanie podłogi na gruncie. Kalkulatory pokazują zależności oraz wrażliwość wyniku, a ich ograniczenia są opisane przy danych i rezultatach.</p>
          <div class="rk-bh-author-facts">
            <div class="rk-bh-author-fact"><strong>Praktyka projektowa</strong><span>OZC pomieszczeń, powierzchnie czynne, pętle, przepływy, rozdzielacze, źródła i automatyka.</span></div>
            <div class="rk-bh-author-fact"><strong>Metoda</strong><span>Oddzielenie W i kW od kWh/rok oraz od kosztu energii końcowej, opłat i serwisu.</span></div>
            <div class="rk-bh-author-fact"><strong>Zakres aktualizacji</strong><span>Przegrody, grunt, mostki, wentylacja, zyski, kalkulatory, wykres i powiązanie z projektem podłogówki.</span></div>
          </div>
          <p class="rk-bh-author-portals">Autor i właściciel serwisów:<br>
            <a href="https://projekt-ogrzewania.pl/author/admin3399/">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>
          </p>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg"
      },
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image" },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ],
      "knowsAbout": [
        "bilans cieplny budynku",
        "projektowe obciążenie cieplne",
        "ogrzewanie podłogowe",
        "hydraulika instalacji",
        "pompy ciepła",
        "koszty ogrzewania"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu.webp",
      "width": 945,
      "height": 945,
      "caption": "Bilans cieplny budynku — kalkulator strat, mocy i kosztów ogrzewania",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "caption": "Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#webpage",
      "url": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/",
      "name": "Bilans cieplny budynku – kalkulator strat, mocy i kosztów ogrzewania",
      "description": "Bilans cieplny budynku: oblicz straty przez przegrody i wentylację, potrzebną moc grzewczą oraz koszty ogrzewania pompą ciepła, gazem, pelletem i prądem online.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#primaryimage" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#breadcrumb" },
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#article" },
      "datePublished": "2026-01-19T09:22:38+00:00",
      "dateModified": "2026-09-14",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Efektywność cieplna", "item": "https://projekt-ogrzewania.pl/category/efektywnosc-cieplna/" },
        { "@type": "ListItem", "position": 3, "name": "Bilans cieplny budynku", "item": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" }
      ]
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#article",
      "headline": "Bilans cieplny budynku – kalkulator strat, mocy i kosztów ogrzewania",
      "description": "Praktyczny poradnik rozdzielający projektowe straty i moc w kW, roczne zapotrzebowanie na energię w kWh oraz koszt ogrzewania w złotych.",
      "url": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#webpage" },
      "image": { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "reviewedBy": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2026-01-19T09:22:38+00:00",
      "dateModified": "2026-09-14",
      "timeRequired": "PT34M",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "proficiencyLevel": "Beginner to Intermediate",
      "about": [
        { "@type": "Thing", "name": "Bilans cieplny budynku" },
        { "@type": "Thing", "name": "Projektowe obciążenie cieplne" },
        { "@type": "Thing", "name": "Straty ciepła" },
        { "@type": "Thing", "name": "Zapotrzebowanie na energię" },
        { "@type": "Thing", "name": "Koszty ogrzewania" },
        { "@type": "Thing", "name": "Ogrzewanie podłogowe" }
      ],
      "mentions": [
        { "@type": "Thing", "name": "Rekuperacja" },
        { "@type": "Thing", "name": "Mostki termiczne" },
        { "@type": "Thing", "name": "Pompa ciepła" },
        { "@type": "Thing", "name": "Kocioł gazowy" },
        { "@type": "Thing", "name": "Kocioł na pellet" }
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#heat-calculator" },
        { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#cost-calculator" },
        { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#interactive-chart" },
        { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#faq" }
      ],
      "citation": [
        "https://repo.pw.edu.pl/info/article/WUT7c194b7443134803a9d035c593eba8a2/",
        "https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20130000926/O/D20130926.pdf",
        "https://eli.gov.pl/eli/DU/2015/376/ogl/pol",
        "https://eli.gov.pl/eli/DU/2023/697/ogl/pol"
      ],
      "keywords": "bilans cieplny budynku kalkulator, straty ciepła budynku, projektowe obciążenie cieplne, OZC, ile kW potrzebuje dom, kW a kWh, kalkulator kosztów ogrzewania, ogrzewanie podłogowe"
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#heat-calculator",
      "name": "Kalkulator bilansu cieplnego i projektowych strat budynku",
      "url": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#rk-bh-kalkulator-mocy",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "creator": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "description": "Uproszczone narzędzie porównuje projektowe straty przez przegrody, grunt, mostki i wentylację dla dwóch wariantów budynku.",
      "featureList": [
        "Porównanie dwóch wariantów przegród",
        "Oddzielny udział mostków cieplnych",
        "Wentylacja z odzyskiem i infiltracją",
        "Wynik w kW, W/m² oraz W/K",
        "Połączenie z interaktywnym wykresem"
      ],
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#cost-calculator",
      "name": "Kalkulator rocznych kosztów ogrzewania dla czterech źródeł",
      "url": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#rk-bh-kalkulator-kosztow",
      "applicationCategory": "FinanceApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "creator": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "description": "Kalkulator porównuje roczne i wieloletnie koszty pompy ciepła, kotła gazowego, kotła na pellet i ogrzewania elektrycznego dla tej samej energii użytkowej.",
      "featureList": [
        "Edytowalne zapotrzebowanie na energię użytkową",
        "Edytowalne SCOP i sprawności sezonowe",
        "Edytowalne ceny oraz koszty stałe",
        "Zakres wyniku przy zmianie energii o 20 procent",
        "Ranking roczny i wieloletni"
      ],
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#interactive-chart",
      "name": "Interaktywny wykres strat ciepła i kosztów ogrzewania",
      "url": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#rk-bh-wykres",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "creator": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "description": "Wykres przełącza się między składem strat projektowych dwóch wariantów oraz rocznymi kosztami czterech źródeł i reaguje na dane kalkulatorów.",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#howto",
      "name": "Jak przejść od danych budynku do kosztu ogrzewania",
      "description": "Sześć etapów oddzielających warunki obliczeniowe, straty, moc, energię sezonową i koszt.",
      "totalTime": "PT30M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Zdefiniuj warunki i strefy", "text": "Zbierz geometrię, warstwy, temperatury, lokalizację, wentylację oraz sposób użytkowania budynku." },
        { "@type": "HowToStep", "position": 2, "name": "Oblicz straty przez przenikanie", "text": "Policz przegrody do powietrza, gruntu i stref sąsiednich oraz oddzielnie ujmij mostki cieplne." },
        { "@type": "HowToStep", "position": 3, "name": "Oblicz straty wentylacyjne", "text": "Ustal strumienie powietrza, odzysk ciepła, infiltrację i tryb pracy systemu podczas mrozu." },
        { "@type": "HowToStep", "position": 4, "name": "Wyznacz moc projektową", "text": "Określ obciążenie cieplne każdego pomieszczenia oraz sumę dla źródła w zdefiniowanych warunkach." },
        { "@type": "HowToStep", "position": 5, "name": "Wyznacz energię sezonową", "text": "Zastosuj model roczny uwzględniający pogodę, zyski, akumulację, harmonogramy i regulację." },
        { "@type": "HowToStep", "position": 6, "name": "Policz energię końcową i koszt", "text": "Podziel potrzeby użytkowe przez sprawność sezonową lub SCOP, a następnie zastosuj ceny, opłaty i serwis." }
      ],
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/#faq",
      "mainEntity": [
        { "@type": "Question", "name": "Co to jest bilans cieplny budynku?", "acceptedAnswer": { "@type": "Answer", "text": "To zestawienie przepływów ciepła dla określonego celu i warunków. W obliczeniu projektowym obejmuje przede wszystkim straty przez przegrody, mostki i wymianę powietrza, a w bilansie rocznym także klimat, zyski i akumulację." } },
        { "@type": "Question", "name": "Czy bilans cieplny i OZC oznaczają to samo?", "acceptedAnswer": { "@type": "Answer", "text": "Pojęcia bywają używane zamiennie, ale zakres trzeba doprecyzować. Projektowe obciążenie cieplne dotyczy mocy w warunkach obliczeniowych, natomiast bilans może też oznaczać roczne zapotrzebowanie na energię." } },
        { "@type": "Question", "name": "Ile kW ogrzewania potrzebuje dom 100 lub 150 m²?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można tego poprawnie ustalić z samej powierzchni. Potrzebne są geometria, współczynniki U, stolarka, mostki, wentylacja, szczelność, lokalizacja i temperatury pomieszczeń." } },
        { "@type": "Question", "name": "Czy od strat projektowych odejmuje się zyski słoneczne i od ludzi?", "acceptedAnswer": { "@type": "Answer", "text": "Nie należy bezwarunkowo odejmować pełnej stałej wartości. Dostępność zysków zależy od czasu, pogody i użytkowania, a sposób ich ujęcia musi odpowiadać metodzie oraz celowi obliczenia." } },
        { "@type": "Question", "name": "Jak policzyć straty wentylacyjne przy rekuperacji?", "acceptedAnswer": { "@type": "Answer", "text": "Trzeba znać projektowy strumień powietrza, efektywny odzysk w ocenianych warunkach, infiltrację oraz sposób pracy centrali podczas mrozu. Rekuperator nie odzyskuje ciepła z infiltracji." } },
        { "@type": "Question", "name": "Czy moc w kW można przeliczyć na kWh rocznie?", "acceptedAnswer": { "@type": "Answer", "text": "Nie jednym uniwersalnym mnożnikiem. Moc projektowa dotyczy konkretnego punktu, a roczna energia zależy od przebiegu pogody, temperatur, zysków, akumulacji, przerw i regulacji." } },
        { "@type": "Question", "name": "Czy kalkulator kosztów może przyjąć moc pompy ciepła zamiast QH,nd?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Do porównania kosztów potrzebna jest roczna energia użytkowa, a następnie sezonowa sprawność lub SCOP. Moc urządzenia opisuje zdolność pokrycia chwilowego obciążenia." } },
        { "@type": "Question", "name": "Czy ogrzewanie podłogowe zmniejsza bilans cieplny budynku?", "acceptedAnswer": { "@type": "Answer", "text": "Nie zmienia współczynników U ani strumieni wentylacji. Może umożliwić pracę źródła przy niższej temperaturze wody, ale nadal musi pokryć straty każdego pomieszczenia." } },
        { "@type": "Question", "name": "Czy wynik bilansu całego domu wystarczy do zaprojektowania podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzebne są obciążenia pomieszczeń, powierzchnie czynne, warstwy podłogi, okładziny, temperatury wody, geometria pętli, przepływy i opory hydrauliczne." } },
        { "@type": "Question", "name": "Czy kalkulatory z artykułu zastępują obliczenia projektowe?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Pierwszy jest uproszczonym narzędziem porównawczym, a drugi przelicza koszt z podanej energii rocznej. Nie zastępują OZC, charakterystyki energetycznej, audytu ani projektu instalacji." } }
      ],
      "inLanguage": "pl-PL"
    },
    {
      "@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": "Projektowanie instalacji ogrzewania podłogowego",
      "description": "Projekt pętli, rozstawów, przepływów, rozdzielaczy i parametrów wodnego ogrzewania podłogowego przygotowany dla konkretnego budynku.",
      "audience": { "@type": "Audience", "audienceType": "Inwestorzy budujący i modernizujący dom" }
    }
  ]
}
</script>

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

  var heatDefaults = {
    "rk-bh-ti": 20,
    "rk-bh-te": -20,
    "rk-bh-floor-area": 120,
    "rk-bh-ground-b": 0.40,
    "rk-bh-a-wall": 160,
    "rk-bh-u1-wall": 0.25,
    "rk-bh-u2-wall": 0.15,
    "rk-bh-a-roof": 120,
    "rk-bh-u1-roof": 0.20,
    "rk-bh-u2-roof": 0.12,
    "rk-bh-a-window": 25,
    "rk-bh-u1-window": 0.90,
    "rk-bh-u2-window": 0.70,
    "rk-bh-a-door": 5,
    "rk-bh-u1-door": 1.30,
    "rk-bh-u2-door": 1.00,
    "rk-bh-a-ground": 120,
    "rk-bh-u1-ground": 0.25,
    "rk-bh-u2-ground": 0.15,
    "rk-bh-bridge1": 20,
    "rk-bh-bridge2": 10,
    "rk-bh-airflow": 150,
    "rk-bh-eta1": 0,
    "rk-bh-eta2": 80,
    "rk-bh-infil1": 20,
    "rk-bh-infil2": 15
  };

  var costDefaults = {
    "rk-bh-qh": 9000,
    "rk-bh-years": 20,
    "rk-bh-growth": 2.5,
    "rk-bh-season-months": 7,
    "rk-bh-factor-hp": 3.5,
    "rk-bh-price-hp": 1.10,
    "rk-bh-fixed-hp": 350,
    "rk-bh-factor-gas": 0.92,
    "rk-bh-price-gas": 0.34,
    "rk-bh-fixed-gas": 900,
    "rk-bh-factor-pellet": 0.85,
    "rk-bh-price-pellet": 0.38,
    "rk-bh-fixed-pellet": 1200,
    "rk-bh-factor-electric": 1.00,
    "rk-bh-price-electric": 1.10,
    "rk-bh-fixed-electric": 100
  };

  var eduData = [
    {
      unit: "Dane wejściowe",
      title: "Warunki obliczeniowe",
      text: "Najpierw definiuje się oceniany budynek, strefy, geometrię, temperaturę zewnętrzną właściwą lokalizacji i temperatury wewnętrzne. Bez tego żadna późniejsza wartość nie ma jednoznacznego znaczenia."
    },
    {
      unit: "W/K oraz W",
      title: "Przenikanie przez przegrody i mostki",
      text: "Powierzchnie i współczynniki U tworzą współczynniki strat przegród, a długości złączy i wartości psi — udział mostków. Po uwzględnieniu warunków brzegowych oraz różnicy temperatur otrzymuje się moc strat."
    },
    {
      unit: "m³/h, W/K oraz W",
      title: "Wentylacja, odzysk i infiltracja",
      text: "Strumień wymaganej wymiany powietrza przenosi ciepło. Odzysk może ograniczyć część strat wentylacyjnych, lecz infiltracja pozostaje osobną drogą napływu i nie korzysta automatycznie z wymiennika."
    },
    {
      unit: "W lub kW",
      title: "Projektowe obciążenie cieplne",
      text: "To chwilowa moc potrzebna przy zdefiniowanych warunkach. Liczy się ją dla pomieszczeń i całego budynku. Służy do sprawdzenia emiterów oraz doboru źródła, ale nie jest rocznym zużyciem."
    },
    {
      unit: "kWh/rok",
      title: "Roczne zapotrzebowanie na energię",
      text: "Bilans sezonowy uwzględnia zmienną pogodę, zyski słoneczne i wewnętrzne, akumulację, harmonogramy oraz regulację. Nie powstaje przez pomnożenie projektowej mocy przez stałą liczbę godzin."
    },
    {
      unit: "zł/rok",
      title: "Koszt energii końcowej i obsługi",
      text: "Potrzeby użytkowe dzieli się przez sezonową sprawność lub SCOP, a energię kupowaną mnoży przez aktualną cenę. Do wyniku dodaje się opłaty stałe, serwis i inne koszty właściwe wariantowi."
    }
  ];

  var state = {
    chartMode: "loss",
    loss: [],
    cost: []
  };

  function getRoot() {
    return document.getElementById("rk-bilans-guide");
  }

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

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

  function isFiniteNumber(value) {
    return typeof value === "number" ? Number.isFinite(value) : false;
  }

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

  function formatNumber(value, digits) {
    if (!isFiniteNumber(value)) { return "—"; }
    try {
      return new Intl.NumberFormat("pl-PL", {
        minimumFractionDigits: digits,
        maximumFractionDigits: digits
      }).format(value);
    } catch (error) {
      return value.toFixed(digits).replace(".", ",");
    }
  }

  function formatMoney(value) {
    if (!isFiniteNumber(value)) { return "—"; }
    try {
      return new Intl.NumberFormat("pl-PL", {
        style: "currency",
        currency: "PLN",
        maximumFractionDigits: 0
      }).format(value);
    } catch (error) {
      return formatNumber(value, 0) + " zł";
    }
  }

  function formatPower(value) {
    if (!isFiniteNumber(value)) { return "—"; }
    if (value >= 1000) {
      return formatNumber(value / 1000, 2) + " kW";
    }
    return formatNumber(value, 0) + " W";
  }

  function setDefaults(values) {
    Object.keys(values).forEach(function (id) {
      var element = byId(id);
      if (element) { element.value = values[id]; }
    });
  }

  function calculateHeat() {
    var errorBox = byId("rk-bh-heat-error");
    var ti = readNumber("rk-bh-ti");
    var te = readNumber("rk-bh-te");
    var heatedArea = readNumber("rk-bh-floor-area");
    var groundB = readNumber("rk-bh-ground-b");
    var bridge1 = readNumber("rk-bh-bridge1");
    var bridge2 = readNumber("rk-bh-bridge2");
    var airflow = readNumber("rk-bh-airflow");
    var eta1 = readNumber("rk-bh-eta1");
    var eta2 = readNumber("rk-bh-eta2");
    var infil1 = readNumber("rk-bh-infil1");
    var infil2 = readNumber("rk-bh-infil2");
    var keys = ["wall", "roof", "window", "door", "ground"];
    var labels = ["Ściany", "Dach / strop", "Okna", "Drzwi", "Podłoga / grunt"];
    var components = [];
    var valid = true;

    [ti, te, heatedArea, groundB, bridge1, bridge2, airflow, eta1, eta2, infil1, infil2].forEach(function (value) {
      if (!isFiniteNumber(value)) { valid = false; }
    });
    if (isFiniteNumber(ti)) {
      if (isFiniteNumber(te)) {
        if (ti <= te) { valid = false; }
      }
    }
    if (heatedArea <= 0) { valid = false; }
    if (groundB < 0) { valid = false; }
    if (groundB > 1) { valid = false; }
    if (bridge1 < 0) { valid = false; }
    if (bridge2 < 0) { valid = false; }
    if (airflow < 0) { valid = false; }
    if (infil1 < 0) { valid = false; }
    if (infil2 < 0) { valid = false; }
    if (eta1 < 0) { valid = false; }
    if (eta1 > 95) { valid = false; }
    if (eta2 < 0) { valid = false; }
    if (eta2 > 95) { valid = false; }

    keys.forEach(function (key, index) {
      var area = readNumber("rk-bh-a-" + key);
      var u1 = readNumber("rk-bh-u1-" + key);
      var u2 = readNumber("rk-bh-u2-" + key);
      if (!isFiniteNumber(area)) { valid = false; }
      if (!isFiniteNumber(u1)) { valid = false; }
      if (!isFiniteNumber(u2)) { valid = false; }
      if (area < 0) { valid = false; }
      if (u1 <= 0) { valid = false; }
      if (u2 <= 0) { valid = false; }
      components.push({
        key: key,
        label: labels[index],
        area: area,
        u1: u1,
        u2: u2
      });
    });

    if (!valid) {
      if (errorBox) { errorBox.hidden = false; }
      return false;
    }
    if (errorBox) { errorBox.hidden = true; }

    var deltaT = ti - te;
    var h1 = 0;
    var h2 = 0;
    var lossRows = [];

    components.forEach(function (component) {
      var reduction = 1;
      if (component.key === "ground") { reduction = groundB; }
      var componentH1 = component.area * component.u1 * reduction;
      var componentH2 = component.area * component.u2 * reduction;
      h1 += componentH1;
      h2 += componentH2;
      lossRows.push({
        label: component.label,
        a: componentH1 * deltaT,
        b: componentH2 * deltaT
      });
    });

    h1 += bridge1;
    h2 += bridge2;
    lossRows.push({ label: "Mostki cieplne", a: bridge1 * deltaT, b: bridge2 * deltaT });

    var hVent1 = 0.34 * (airflow * (1 - eta1 / 100) + infil1);
    var hVent2 = 0.34 * (airflow * (1 - eta2 / 100) + infil2);
    h1 += hVent1;
    h2 += hVent2;
    lossRows.push({ label: "Wentylacja i infiltracja", a: hVent1 * deltaT, b: hVent2 * deltaT });

    var q1 = h1 * deltaT;
    var q2 = h2 * deltaT;
    var saving = q1 - q2;
    var savingPct = q1 > 0 ? saving / q1 * 100 : 0;
    var wm1 = q1 / heatedArea;
    var wm2 = q2 / heatedArea;

    setText("rk-bh-q1", formatPower(q1));
    setText("rk-bh-q2", formatPower(q2));
    setText("rk-bh-wm1", formatNumber(wm1, 1) + " W/m² powierzchni ogrzewanej");
    setText("rk-bh-wm2", formatNumber(wm2, 1) + " W/m² powierzchni ogrzewanej");
    setText("rk-bh-q-save", formatPower(saving));
    setText("rk-bh-q-save-pct", formatNumber(savingPct, 1) + "% względem wariantu A");
    setText("rk-bh-h-pair", formatNumber(h1, 1) + " / " + formatNumber(h2, 1));
    setText("rk-bh-heat-summary", "Dla ΔT = " + formatNumber(deltaT, 1) + " K wariant A daje " + formatPower(q1) + ", a wariant B " + formatPower(q2) + ". Różnica wynosi " + formatPower(saving) + ". To porównanie projektowej mocy, nie rocznej energii.");

    state.loss = lossRows;
    if (state.chartMode === "loss") { renderChart(); }
    return true;
  }

  function geometricFactor(growth, years) {
    if (growth === 0) { return years; }
    return (Math.pow(1 + growth, years) - 1) / growth;
  }

  function calculateCost() {
    var errorBox = byId("rk-bh-cost-error");
    var qh = readNumber("rk-bh-qh");
    var yearsRaw = readNumber("rk-bh-years");
    var growthRaw = readNumber("rk-bh-growth");
    var monthsRaw = readNumber("rk-bh-season-months");
    var years = Math.round(yearsRaw);
    var months = Math.round(monthsRaw);
    var sources = [
      { key: "hp", name: "Pompa ciepła" },
      { key: "gas", name: "Kocioł gazowy" },
      { key: "pellet", name: "Kocioł na pellet" },
      { key: "electric", name: "Ogrzewanie elektryczne" }
    ];
    var valid = true;

    [qh, yearsRaw, growthRaw, monthsRaw].forEach(function (value) {
      if (!isFiniteNumber(value)) { valid = false; }
    });
    if (qh <= 0) { valid = false; }
    if (years < 1) { valid = false; }
    if (years > 30) { valid = false; }
    if (growthRaw < 0) { valid = false; }
    if (growthRaw > 20) { valid = false; }
    if (months < 1) { valid = false; }
    if (months > 12) { valid = false; }

    sources.forEach(function (source) {
      source.factor = readNumber("rk-bh-factor-" + source.key);
      source.price = readNumber("rk-bh-price-" + source.key);
      source.fixed = readNumber("rk-bh-fixed-" + source.key);
      if (!isFiniteNumber(source.factor)) { valid = false; }
      if (!isFiniteNumber(source.price)) { valid = false; }
      if (!isFiniteNumber(source.fixed)) { valid = false; }
      if (source.factor <= 0) { valid = false; }
      if (source.price < 0) { valid = false; }
      if (source.fixed < 0) { valid = false; }
    });

    if (!valid) {
      if (errorBox) { errorBox.hidden = false; }
      return false;
    }
    if (errorBox) { errorBox.hidden = true; }

    var growth = growthRaw / 100;
    var factorYears = geometricFactor(growth, years);
    var results = sources.map(function (source) {
      var inputEnergy = qh / source.factor;
      var variableCost = inputEnergy * source.price;
      var annual = variableCost + source.fixed;
      var annualLow = qh * 0.8 / source.factor * source.price + source.fixed;
      var annualHigh = qh * 1.2 / source.factor * source.price + source.fixed;
      return {
        key: source.key,
        name: source.name,
        annual: annual,
        annualLow: annualLow,
        annualHigh: annualHigh,
        inputEnergy: inputEnergy,
        total: annual * factorYears
      };
    });

    results.sort(function (a, b) { return a.annual - b.annual; });
    var best = results[0];
    setText("rk-bh-best-annual", formatMoney(best.annual));
    setText("rk-bh-best-name", best.name + ", przy wpisanych parametrach");
    setText("rk-bh-best-month", formatMoney(best.annual / months));
    setText("rk-bh-season-note", "średnio przez " + months + " miesięcy sezonu");
    setText("rk-bh-best-total", formatMoney(best.total));
    setText("rk-bh-years-note", best.name + ", horyzont " + years + " lat");
    setText("rk-bh-best-range", formatMoney(best.annualLow) + "–" + formatMoney(best.annualHigh));

    var ranking = byId("rk-bh-ranking");
    if (ranking) {
      ranking.innerHTML = results.map(function (result, index) {
        return '<div class="rk-bh-rank-row"><span class="rk-bh-rank-pos">' + (index + 1) + '</span><span class="rk-bh-rank-name">' + result.name + '<br><small>' + formatNumber(result.inputEnergy, 0) + ' kWh energii wejściowej/rok</small></span><span class="rk-bh-rank-cost">' + formatMoney(result.annual) + '/rok<br><small>' + formatMoney(result.total) + ' / ' + years + ' lat</small></span></div>';
      }).join("");
    }

    state.cost = results;
    if (state.chartMode === "cost") { renderChart(); }
    return true;
  }

  function renderChart() {
    var bars = byId("rk-bh-bars");
    var legend = byId("rk-bh-chart-legend");
    if (!bars) { return; }

    if (state.chartMode === "cost") {
      setText("rk-bh-chart-title", "Roczne koszty czterech źródeł");
      setText("rk-bh-chart-subtitle", "Wyniki dla tego samego QH,nd oraz edytowalnych cen i parametrów sezonowych.");
      setText("rk-bh-chart-caption", "Najkrótszy słupek nie oznacza automatycznie najniższego całkowitego kosztu inwestycji. Wykres obejmuje wyłącznie obliczony koszt eksploatacyjny.");
      if (legend) {
        legend.innerHTML = '<span class="rk-bh-chart-key"><span class="rk-bh-chart-dot rk-bh-chart-dot-alt" aria-hidden="true"></span>Koszt roczny przy wpisanych założeniach</span>';
      }
      var maxCost = 1;
      state.cost.forEach(function (item) {
        if (item.annual > maxCost) { maxCost = item.annual; }
      });
      bars.innerHTML = state.cost.map(function (item) {
        var width = Math.max(2, item.annual / maxCost * 100);
        return '<div class="rk-bh-bar-group"><div class="rk-bh-bar-label"><span>' + item.name + '</span><span>' + formatMoney(item.annual) + '/rok</span></div><div class="rk-bh-bar-lines"><div class="rk-bh-bar-track"><div class="rk-bh-bar-fill rk-bh-bar-fill-alt" style="width:' + width.toFixed(2) + '%"><span>' + formatMoney(item.annual) + '</span></div></div></div></div>';
      }).join("");
      return;
    }

    setText("rk-bh-chart-title", "Składniki projektowych strat ciepła");
    setText("rk-bh-chart-subtitle", "Porównanie mocy w W przy wpisanej różnicy temperatur.");
    setText("rk-bh-chart-caption", "Długość słupka pokazuje udział wobec największego składnika. Wartość bezwzględna jest podana w każdym słupku.");
    if (legend) {
      legend.innerHTML = '<span class="rk-bh-chart-key"><span class="rk-bh-chart-dot" aria-hidden="true"></span>Wariant A</span><span class="rk-bh-chart-key"><span class="rk-bh-chart-dot rk-bh-chart-dot-alt" aria-hidden="true"></span>Wariant B</span>';
    }
    var maxLoss = 1;
    state.loss.forEach(function (item) {
      if (item.a > maxLoss) { maxLoss = item.a; }
      if (item.b > maxLoss) { maxLoss = item.b; }
    });
    bars.innerHTML = state.loss.map(function (item) {
      var widthA = Math.max(2, item.a / maxLoss * 100);
      var widthB = Math.max(2, item.b / maxLoss * 100);
      return '<div class="rk-bh-bar-group"><div class="rk-bh-bar-label"><span>' + item.label + '</span><span>A: ' + formatPower(item.a) + ' · B: ' + formatPower(item.b) + '</span></div><div class="rk-bh-bar-lines"><div class="rk-bh-bar-track"><div class="rk-bh-bar-fill" style="width:' + widthA.toFixed(2) + '%"><span>' + formatNumber(item.a, 0) + ' W</span></div></div><div class="rk-bh-bar-track"><div class="rk-bh-bar-fill rk-bh-bar-fill-alt" style="width:' + widthB.toFixed(2) + '%"><span>' + formatNumber(item.b, 0) + ' W</span></div></div></div></div>';
    }).join("");
  }

  function selectEdu(index) {
    var item = eduData[index];
    if (!item) { return; }
    setText("rk-bh-edu-unit", item.unit);
    setText("rk-bh-edu-title", item.title);
    setText("rk-bh-edu-text", item.text);
    var buttons = document.querySelectorAll("#rk-bilans-guide [data-rk-edu]");
    buttons.forEach(function (button) {
      var isActive = Number(button.getAttribute("data-rk-edu")) === index;
      button.setAttribute("aria-pressed", isActive ? "true" : "false");
    });
  }

  function selectChart(mode) {
    if (mode !== "loss") {
      if (mode !== "cost") { return; }
    }
    state.chartMode = mode;
    var buttons = document.querySelectorAll("#rk-bilans-guide [data-rk-chart]");
    buttons.forEach(function (button) {
      var isActive = button.getAttribute("data-rk-chart") === mode;
      button.setAttribute("aria-pressed", isActive ? "true" : "false");
    });
    renderChart();
  }

  function bindAutoCalculation(root) {
    var heatTool = root.querySelector('[data-rk-tool="heat"]');
    var costTool = root.querySelector('[data-rk-tool="cost"]');
    if (heatTool) {
      heatTool.querySelectorAll("input").forEach(function (input) {
        input.addEventListener("input", calculateHeat);
        input.addEventListener("change", calculateHeat);
      });
    }
    if (costTool) {
      costTool.querySelectorAll("input").forEach(function (input) {
        input.addEventListener("input", calculateCost);
        input.addEventListener("change", calculateCost);
      });
    }
  }

  function init() {
    var root = getRoot();
    if (!root) { return false; }
    if (root.getAttribute("data-rk-ready") === "1") { return true; }

    var heatRun = byId("rk-bh-heat-run");
    var heatReset = byId("rk-bh-heat-reset");
    var costRun = byId("rk-bh-cost-run");
    var costReset = byId("rk-bh-cost-reset");

    if (heatRun) { heatRun.addEventListener("click", calculateHeat); }
    if (heatReset) {
      heatReset.addEventListener("click", function () {
        setDefaults(heatDefaults);
        calculateHeat();
      });
    }
    if (costRun) { costRun.addEventListener("click", calculateCost); }
    if (costReset) {
      costReset.addEventListener("click", function () {
        setDefaults(costDefaults);
        calculateCost();
      });
    }

    root.querySelectorAll("[data-rk-edu]").forEach(function (button) {
      button.addEventListener("click", function () {
        selectEdu(Number(button.getAttribute("data-rk-edu")));
      });
    });
    root.querySelectorAll("[data-rk-chart]").forEach(function (button) {
      button.addEventListener("click", function () {
        selectChart(button.getAttribute("data-rk-chart"));
      });
    });

    bindAutoCalculation(root);
    root.setAttribute("data-rk-ready", "1");
    calculateHeat();
    calculateCost();
    selectEdu(0);
    selectChart("loss");
    return true;
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", init);
  } else {
    init();
  }

  var attempts = 0;
  var retryTimer = window.setInterval(function () {
    attempts += 1;
    if (init()) {
      window.clearInterval(retryTimer);
    } else if (attempts > 20) {
      window.clearInterval(retryTimer);
    }
  }, 300);
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">Bilans cieplny budynku – kalkulator strat, mocy i kosztów ogrzewania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Sterowanie pogodowe w ogrzewaniu podłogowym – jak działa cały układ?</title>
		<link>https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/</link>
					<comments>https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 11 Jan 2026 17:12:18 +0000</pubDate>
				<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Sterowanie ogrzewaniem]]></category>
		<category><![CDATA[Sterowniki do podłogówki]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[automatyka grzewcza]]></category>
		<category><![CDATA[czujnik temperatury zewnętrznej]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje niskotemperaturowe]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[krzywa grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[sterowanie pogodowe]]></category>
		<category><![CDATA[zawór mieszający]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3147</guid>

					<description><![CDATA[<p>Sterowanie pogodowe w ogrzewaniu podłogowym to rozwiązanie, które diametralnie zmienia sposób myślenia o komforcie cieplnym i kosztach eksploatacji domu. Nie reaguje ono na skutki zmian temperatury, lecz przewiduje je z wyprzedzeniem, analizując warunki atmosferyczne na zewnątrz budynku. Dzięki temu instalacja pracuje stabilnie, efektywnie i bez niepotrzebnych strat energii. W artykule szczegółowo omawiamy, jak działa sterowanie pogodowe w ogrzewaniu podłogowym, dlaczego jest kluczowe przy systemach niskotemperaturowych oraz jak poprawnie je zaprojektować i ustawić, aby w pełni wykorzystać jego potencjał.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">Sterowanie pogodowe w ogrzewaniu podłogowym – jak działa cały układ?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-weather-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: #ce443b;
    --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-weather-guide,
  #rk-weather-guide * { box-sizing: border-box; }
  #rk-weather-guide img,
  #rk-weather-guide svg { max-width: 100%; }
  #rk-weather-guide button,
  #rk-weather-guide input,
  #rk-weather-guide select,
  #rk-weather-guide label,
  #rk-weather-guide summary,
  #rk-weather-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-weather-guide button,
  #rk-weather-guide input,
  #rk-weather-guide select { max-width: 100%; }
  #rk-weather-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-weather-guide a:hover,
  #rk-weather-guide a:focus-visible { color: var(--rk-red); }
  #rk-weather-guide p,
  #rk-weather-guide ul,
  #rk-weather-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-weather-guide h2,
  #rk-weather-guide h3,
  #rk-weather-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
    overflow-wrap: anywhere;
  }
  #rk-weather-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-weather-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-weather-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-weather-guide strong { color: var(--rk-dark); }
  #rk-weather-guide [hidden] { display: none !important; }

  #rk-weather-guide .rk-wx-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-weather-guide .rk-wx-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-weather-guide .rk-wx-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-weather-guide .rk-wx-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-weather-guide .rk-wx-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-weather-guide .rk-wx-hero-title {
    position: relative;
    z-index: 1;
    max-width: 1050px;
    margin: 0 0 21px;
    color: var(--rk-white);
    font-size: clamp(2.25rem, 7.1vw, 5rem);
    font-weight: 950;
    letter-spacing: -.065em;
    line-height: .98;
  }
  #rk-weather-guide .rk-wx-hero-title span { color: #67e7f5; }
  #rk-weather-guide .rk-wx-lead {
    position: relative;
    z-index: 1;
    max-width: 960px;
    margin-bottom: 24px;
    color: #e2f2f5;
    font-size: clamp(1rem, 2.2vw, 1.3rem);
    line-height: 1.55;
  }
  #rk-weather-guide .rk-wx-hero-tags,
  #rk-weather-guide .rk-wx-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  #rk-weather-guide .rk-wx-hero-tag {
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    color: var(--rk-white);
    background: rgba(255, 255, 255, .07);
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.2;
  }
  #rk-weather-guide .rk-wx-byline {
    margin-top: 27px;
    color: #cae0e6;
    font-size: .68rem;
    font-weight: 760;
  }
  #rk-weather-guide .rk-wx-byline strong { color: var(--rk-white); }

  #rk-weather-guide .rk-wx-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 22px clamp(18px, 4vw, 45px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
    overflow: visible;
  }
  #rk-weather-guide .rk-wx-nav-label {
    display: flex;
    align-items: center;
    padding: 7px 5px;
    color: var(--rk-dark);
    font-size: .61rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }
  #rk-weather-guide .rk-wx-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 39px;
    padding: 8px 13px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: #f0f6f8;
    font-size: .65rem;
    font-weight: 880;
    line-height: 1.2;
    text-decoration: none;
    white-space: normal;
  }
  #rk-weather-guide .rk-wx-nav a:hover,
  #rk-weather-guide .rk-wx-nav a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

  #rk-weather-guide .rk-wx-main { padding: 0 clamp(22px, 5.2vw, 65px) 58px; }
  #rk-weather-guide .rk-wx-section { padding: 62px 0 10px; scroll-margin-top: 24px; }
  #rk-weather-guide .rk-wx-section + .rk-wx-section { border-top: 1px solid var(--rk-line); }
  #rk-weather-guide .rk-wx-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: .63rem;
    font-weight: 950;
    letter-spacing: .085em;
    text-transform: uppercase;
  }
  #rk-weather-guide .rk-wx-intro { max-width: 960px; color: var(--rk-text); font-size: 1.04rem; }
  #rk-weather-guide .rk-wx-grid-2,
  #rk-weather-guide .rk-wx-grid-3,
  #rk-weather-guide .rk-wx-grid-4 { display: grid; gap: 16px; margin-top: 24px; }
  #rk-weather-guide .rk-wx-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-weather-guide .rk-wx-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-weather-guide .rk-wx-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-weather-guide .rk-wx-card {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
  }
  #rk-weather-guide .rk-wx-card.is-soft { background: var(--rk-soft); }
  #rk-weather-guide .rk-wx-card.is-cyan { border-color: #b9ebf1; background: var(--rk-cyan-soft); }
  #rk-weather-guide .rk-wx-card.is-orange { border-color: #ffd0c1; background: var(--rk-orange-soft); }
  #rk-weather-guide .rk-wx-card.is-green { border-color: #bde4d8; background: var(--rk-green-soft); }
  #rk-weather-guide .rk-wx-card.is-yellow { border-color: #ecd995; background: var(--rk-yellow-soft); }
  #rk-weather-guide .rk-wx-card p:last-child,
  #rk-weather-guide .rk-wx-card ul:last-child { margin-bottom: 0; }
  #rk-weather-guide .rk-wx-number {
    display: grid;
    place-items: center;
    width: 39px;
    height: 39px;
    margin-bottom: 14px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-weight: 950;
  }
  #rk-weather-guide .rk-wx-list { padding-left: 1.15em; }
  #rk-weather-guide .rk-wx-list li { margin-bottom: .42em; }
  #rk-weather-guide .rk-wx-checklist { display: grid; gap: 10px; padding: 0; list-style: none; }
  #rk-weather-guide .rk-wx-checklist li {
    position: relative;
    padding: 13px 14px 13px 44px;
    border: 1px solid var(--rk-line);
    border-radius: 12px;
    background: var(--rk-white);
  }
  #rk-weather-guide .rk-wx-checklist li::before {
    position: absolute;
    top: 13px;
    left: 14px;
    display: grid;
    place-items: center;
    width: 21px;
    height: 21px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    content: "✓";
    font-size: .7rem;
    font-weight: 950;
  }
  #rk-weather-guide .rk-wx-note,
  #rk-weather-guide .rk-wx-warning,
  #rk-weather-guide .rk-wx-success {
    margin: 22px 0;
    padding: 17px 19px;
    border-radius: 13px;
    color: var(--rk-ink);
  }
  #rk-weather-guide .rk-wx-note { border-left: 5px solid var(--rk-blue); background: var(--rk-cyan-soft); }
  #rk-weather-guide .rk-wx-warning { border-left: 5px solid var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-weather-guide .rk-wx-success { border-left: 5px solid var(--rk-green); background: var(--rk-green-soft); }
  #rk-weather-guide .rk-wx-note p:last-child,
  #rk-weather-guide .rk-wx-warning p:last-child,
  #rk-weather-guide .rk-wx-success p:last-child { margin-bottom: 0; color: var(--rk-ink); }
  #rk-weather-guide .rk-wx-equation {
    margin: 22px 0;
    padding: 19px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(.9rem, 2vw, 1.08rem);
    font-weight: 850;
    text-align: center;
    overflow-wrap: anywhere;
  }
  #rk-weather-guide .rk-wx-table-wrap { margin-top: 24px; overflow-x: auto; border: 1px solid var(--rk-line); border-radius: 15px; }
  #rk-weather-guide .rk-wx-table { width: 100%; border-collapse: collapse; background: var(--rk-white); }
  #rk-weather-guide .rk-wx-table th,
  #rk-weather-guide .rk-wx-table td { padding: 15px 16px; border-bottom: 1px solid var(--rk-line); text-align: left; vertical-align: top; }
  #rk-weather-guide .rk-wx-table th { color: var(--rk-white); background: var(--rk-dark); font-size: .69rem; line-height: 1.35; }
  #rk-weather-guide .rk-wx-table td { color: var(--rk-text); font-size: .76rem; line-height: 1.55; }
  #rk-weather-guide .rk-wx-table tr:last-child td { border-bottom: 0; }
  #rk-weather-guide .rk-wx-badge {
    display: inline-flex;
    padding: 5px 9px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    font-size: .58rem;
    font-weight: 900;
  }

  #rk-weather-guide .rk-wx-tool {
    margin-top: 25px;
    overflow: hidden;
    border-radius: 22px;
    color: var(--rk-white);
    background: var(--rk-dark);
    box-shadow: 0 22px 55px rgba(16, 37, 54, .2);
  }
  #rk-weather-guide .rk-wx-tool-head {
    padding: clamp(24px, 5vw, 40px);
    border-bottom: 1px solid rgba(255, 255, 255, .1);
    background: linear-gradient(120deg, #12364a, #18566a);
  }
  #rk-weather-guide .rk-wx-tool-head h3 { margin-bottom: 7px; color: var(--rk-white); font-size: clamp(1.4rem, 3.2vw, 2.15rem); }
  #rk-weather-guide .rk-wx-tool-head p { max-width: 900px; margin: 0; color: #d8eef3; font-size: .79rem; }
  #rk-weather-guide .rk-wx-tool-body { padding: clamp(18px, 4vw, 32px); }
  #rk-weather-guide .rk-wx-tool-step {
    margin-bottom: 22px;
    padding: clamp(17px, 3vw, 25px);
    border: 1px solid #355c6c;
    border-radius: 16px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-weather-guide .rk-wx-tool-step:last-child { margin-bottom: 0; }
  #rk-weather-guide .rk-wx-tool-step-title { display: flex; gap: 12px; align-items: center; margin-bottom: 17px; }
  #rk-weather-guide .rk-wx-tool-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-weather-guide .rk-wx-tool-step-title h4 { margin: 0; color: var(--rk-white); }
  #rk-weather-guide .rk-wx-fields { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
  #rk-weather-guide .rk-wx-field { min-width: 0; }
  #rk-weather-guide .rk-wx-field label {
    display: block;
    margin-bottom: 6px;
    color: #e8f4f7;
    font-size: .63rem;
    font-weight: 850;
    line-height: 1.35;
  }
  #rk-weather-guide .rk-wx-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 37px 10px 12px;
    border: 1px solid #c6d6dc;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-weight: 700;
  }
  #rk-weather-guide .rk-wx-field small { display: block; margin-top: 5px; color: #9fc2ce; font-size: .55rem; line-height: 1.35; }
  #rk-weather-guide .rk-wx-tool-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    margin-top: 18px;
    padding: 13px 20px;
    border: 0;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    cursor: pointer;
    font-weight: 930;
  }
  #rk-weather-guide .rk-wx-tool-button:hover,
  #rk-weather-guide .rk-wx-tool-button:focus-visible { background: #72e9f5; }
  #rk-weather-guide .rk-wx-status {
    display: flex;
    gap: 14px;
    align-items: center;
    margin-bottom: 18px;
    padding: 17px;
    border: 1px solid #466877;
    border-radius: 13px;
    background: #17384a;
  }
  #rk-weather-guide .rk-wx-status-icon {
    display: grid;
    flex: 0 0 43px;
    place-items: center;
    width: 43px;
    height: 43px;
    border-radius: 50%;
    color: var(--rk-dark);
    background: #ffd568;
    font-weight: 950;
  }
  #rk-weather-guide .rk-wx-status h4 { margin: 0 0 2px; color: var(--rk-white); }
  #rk-weather-guide .rk-wx-status p { margin: 0; color: #cce2e8; font-size: .67rem; line-height: 1.45; }
  #rk-weather-guide .rk-wx-status.is-good { border-color: #3a8c78; background: #153f3a; }
  #rk-weather-guide .rk-wx-status.is-watch { border-color: #b28d32; background: #41371e; }
  #rk-weather-guide .rk-wx-status.is-conflict { border-color: #b7544d; background: #4a292b; }
  #rk-weather-guide .rk-wx-status.is-good .rk-wx-status-icon { background: #64dfbc; }
  #rk-weather-guide .rk-wx-status.is-conflict .rk-wx-status-icon { color: var(--rk-white); background: var(--rk-orange); }
  #rk-weather-guide .rk-wx-flow {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 20px;
    margin: 20px 0;
  }
  #rk-weather-guide .rk-wx-flow-node {
    position: relative;
    min-width: 0;
    min-height: 137px;
    padding: 17px 14px;
    border: 1px solid #3f6575;
    border-radius: 14px;
    background: #163447;
  }
  #rk-weather-guide .rk-wx-flow-node:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -20px;
    width: 20px;
    color: var(--rk-cyan);
    content: "→";
    font-size: 1.25rem;
    font-weight: 950;
    text-align: center;
    transform: translateY(-50%);
  }
  #rk-weather-guide .rk-wx-flow-node span { display: block; margin-bottom: 8px; color: #75ddeb; font-size: .54rem; font-weight: 950; letter-spacing: .075em; text-transform: uppercase; }
  #rk-weather-guide .rk-wx-flow-node strong { display: block; color: var(--rk-white); font-size: .78rem; line-height: 1.35; overflow-wrap: anywhere; }
  #rk-weather-guide .rk-wx-flow-node small { display: block; margin-top: 8px; color: #afccd5; font-size: .57rem; line-height: 1.4; overflow-wrap: anywhere; }
  #rk-weather-guide .rk-wx-flow-node.is-watch { border-color: #c09538; box-shadow: inset 0 0 0 1px rgba(255, 213, 104, .15); }
  #rk-weather-guide .rk-wx-flow-node.is-conflict { border-color: #d45d50; box-shadow: inset 0 0 0 1px rgba(255, 106, 61, .18); }
  #rk-weather-guide .rk-wx-result-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  #rk-weather-guide .rk-wx-result-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid #355c6c;
    border-radius: 14px;
    background: #173548;
  }
  #rk-weather-guide .rk-wx-result-card h4 { color: var(--rk-white); }
  #rk-weather-guide .rk-wx-output { display: grid; gap: 9px; padding: 0; margin: 0; list-style: none; }
  #rk-weather-guide .rk-wx-output li {
    position: relative;
    padding: 10px 10px 10px 32px;
    border-radius: 8px;
    color: #d9eaf0;
    background: rgba(255, 255, 255, .045);
    font-size: .63rem;
    line-height: 1.48;
    overflow-wrap: anywhere;
  }
  #rk-weather-guide .rk-wx-output li::before {
    position: absolute;
    top: 9px;
    left: 10px;
    color: var(--rk-cyan);
    content: "•";
    font-size: 1rem;
    font-weight: 950;
  }
  #rk-weather-guide .rk-wx-output.is-warning li::before { color: #ffd568; content: "!"; }
  #rk-weather-guide .rk-wx-output.is-order { counter-reset: rk-wx-step; }
  #rk-weather-guide .rk-wx-output.is-order li { padding-left: 37px; counter-increment: rk-wx-step; }
  #rk-weather-guide .rk-wx-output.is-order li::before {
    top: 10px;
    display: grid;
    place-items: center;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    content: counter(rk-wx-step);
    font-size: .5rem;
  }
  #rk-weather-guide .rk-wx-tool-note {
    margin: 18px 0 0;
    padding: 14px 16px;
    border-left: 4px solid #ffd568;
    border-radius: 10px;
    color: #fff0c4;
    background: rgba(214, 154, 22, .13);
    font-size: .66rem;
    line-height: 1.5;
  }
  #rk-weather-guide .rk-wx-tool-note strong { color: #fff7dd; }

  #rk-weather-guide .rk-wx-sales-cta {
    margin: 38px 0 2px;
    padding: clamp(25px, 5vw, 42px);
    border-radius: 20px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 10%, rgba(37, 199, 216, .25), transparent 30%),
      linear-gradient(125deg, #102536, #17566a);
  }
  #rk-weather-guide .rk-wx-sales-cta h3 { margin-bottom: 10px; color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-weather-guide .rk-wx-sales-cta p { max-width: 930px; color: #d6e9ee; }
  #rk-weather-guide .rk-wx-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-weather-guide .rk-wx-cta-limits strong { color: var(--rk-white); }
  #rk-weather-guide .rk-wx-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 13px 20px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-orange);
    box-shadow: 0 14px 30px rgba(255, 106, 61, .22);
    font-weight: 930;
    line-height: 1.25;
    text-decoration: none;
  }
  #rk-weather-guide .rk-wx-cta-button:hover,
  #rk-weather-guide .rk-wx-cta-button:focus-visible { color: var(--rk-white); background: #e9552d; }

  #rk-weather-guide .rk-wx-faq { display: grid; gap: 11px; }
  #rk-weather-guide .rk-wx-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 13px; background: var(--rk-white); }
  #rk-weather-guide .rk-wx-faq summary {
    position: relative;
    padding: 17px 54px 17px 18px;
    color: var(--rk-dark);
    cursor: pointer;
    font-weight: 880;
    list-style: none;
  }
  #rk-weather-guide .rk-wx-faq summary::-webkit-details-marker { display: none; }
  #rk-weather-guide .rk-wx-faq summary::after {
    position: absolute;
    top: 50%;
    right: 17px;
    display: grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    color: var(--rk-blue);
    background: var(--rk-cyan-soft);
    content: "+";
    transform: translateY(-50%);
    font-weight: 950;
  }
  #rk-weather-guide .rk-wx-faq details[open] summary::after { content: "−"; }
  #rk-weather-guide .rk-wx-faq-answer { padding: 0 18px 17px; color: var(--rk-text); }
  #rk-weather-guide .rk-wx-faq-answer p { margin: 0; }
  #rk-weather-guide .rk-wx-sources { display: grid; gap: 11px; }
  #rk-weather-guide .rk-wx-source { padding: 17px; border: 1px solid var(--rk-line); border-radius: 13px; background: var(--rk-soft); }
  #rk-weather-guide .rk-wx-source p { margin: 5px 0 0; color: var(--rk-text); font-size: .75rem; }

  #rk-weather-guide .rk-wx-author {
    margin-top: 58px;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 21px;
    background: var(--rk-soft);
    scroll-margin-top: 24px;
  }
  #rk-weather-guide .rk-wx-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-weather-guide .rk-wx-author-head {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: flex-start;
    padding: 25px clamp(21px, 4vw, 34px);
    border-bottom: 1px solid var(--rk-line);
  }
  #rk-weather-guide .rk-wx-author-head h2 { margin-bottom: 5px; font-size: clamp(1.55rem, 3vw, 2.2rem); }
  #rk-weather-guide .rk-wx-author-head p { margin: 0; color: var(--rk-text); }
  #rk-weather-guide .rk-wx-author-mark {
    max-width: 420px;
    padding: 9px 12px;
    border-radius: 999px;
    color: var(--rk-blue);
    background: var(--rk-cyan-soft);
    font-size: .58rem;
    font-weight: 950;
    letter-spacing: .055em;
    text-align: center;
  }
  #rk-weather-guide .rk-wx-author-layout { display: grid; grid-template-columns: 255px minmax(0, 1fr); }
  #rk-weather-guide .rk-wx-author-side { padding: 29px 24px; color: var(--rk-white); text-align: center; background: var(--rk-dark); }
  #rk-weather-guide .rk-wx-author-photo { width: 154px; height: 154px; margin: 0 auto 18px; overflow: hidden; border: 6px solid rgba(255, 255, 255, .17); border-radius: 50%; background: var(--rk-white); }
  #rk-weather-guide .rk-wx-author-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
  #rk-weather-guide .rk-wx-author-name { color: var(--rk-white); font-size: 1.02rem; font-weight: 930; }
  #rk-weather-guide .rk-wx-author-role { margin-top: 5px; color: #bdd3dc; font-size: .67rem; line-height: 1.5; }
  #rk-weather-guide .rk-wx-author-social-label { margin-top: 22px; color: #87a8b5; font-size: .56rem; font-weight: 950; letter-spacing: .08em; text-transform: uppercase; }
  #rk-weather-guide .rk-wx-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 10px; }
  #rk-weather-guide .rk-wx-author-social a { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #3a6173; border-radius: 50%; color: #cfe2e8; }
  #rk-weather-guide .rk-wx-author-social a:hover { color: var(--rk-white); border-color: var(--rk-cyan); background: rgba(37, 199, 216, .12); }
  #rk-weather-guide .rk-wx-author-social svg { width: 19px; height: 19px; fill: currentColor; }
  #rk-weather-guide .rk-wx-author-main { min-width: 0; padding: 29px clamp(20px, 4vw, 38px); }
  #rk-weather-guide .rk-wx-author-quote { position: relative; margin: 0 0 21px; padding: 19px 20px 19px 61px; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); }
  #rk-weather-guide .rk-wx-author-quote::before { position: absolute; top: 5px; left: 18px; color: var(--rk-cyan); content: "“"; font-size: 3.2rem; font-weight: 950; line-height: 1; }
  #rk-weather-guide .rk-wx-author-quote p { margin: 0; color: var(--rk-dark); font-weight: 780; }
  #rk-weather-guide .rk-wx-author-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 18px; }
  #rk-weather-guide .rk-wx-author-tab { padding: 8px 14px; border-radius: 999px; color: var(--rk-muted); background: #e6eff3; cursor: pointer; font-size: .64rem; font-weight: 900; }
  #rk-weather-guide .rk-wx-author-panel { display: none; color: var(--rk-text); }
  #rk-weather-guide #rk-wx-author-about:checked ~ .rk-wx-author-layout .rk-wx-author-panel-about,
  #rk-weather-guide #rk-wx-author-exp:checked ~ .rk-wx-author-layout .rk-wx-author-panel-exp,
  #rk-weather-guide #rk-wx-author-method:checked ~ .rk-wx-author-layout .rk-wx-author-panel-method { display: block; }
  #rk-weather-guide #rk-wx-author-about:checked ~ .rk-wx-author-layout label[for="rk-wx-author-about"],
  #rk-weather-guide #rk-wx-author-exp:checked ~ .rk-wx-author-layout label[for="rk-wx-author-exp"],
  #rk-weather-guide #rk-wx-author-method:checked ~ .rk-wx-author-layout label[for="rk-wx-author-method"] { color: var(--rk-white); background: var(--rk-blue); }
  #rk-weather-guide .rk-wx-mini-label { margin-top: 18px; color: var(--rk-muted); font-size: .57rem; font-weight: 950; letter-spacing: .08em; text-transform: uppercase; }
  #rk-weather-guide .rk-wx-portals { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 9px; }
  #rk-weather-guide .rk-wx-portals a { padding: 7px 11px; border-radius: 999px; background: var(--rk-white); font-size: .62rem; text-decoration: none; }

  @media (max-width: 980px) {
    #rk-weather-guide .rk-wx-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-weather-guide .rk-wx-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-weather-guide .rk-wx-flow-node:not(:last-child)::after { display: none; }
    #rk-weather-guide .rk-wx-flow-node:last-child { grid-column: 1 / -1; min-height: 0; }
    #rk-weather-guide .rk-wx-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-weather-guide .rk-wx-author-layout { grid-template-columns: 225px minmax(0, 1fr); }
  }
  @media (max-width: 760px) {
    #rk-weather-guide { margin: 18px auto 45px; font-size: 16px; }
    #rk-weather-guide .rk-wx-shell { border-radius: 17px; }
    #rk-weather-guide .rk-wx-main { padding-right: 15px; padding-left: 15px; }
    #rk-weather-guide .rk-wx-hero { padding-right: 21px; padding-left: 21px; }
    #rk-weather-guide .rk-wx-nav { padding: 17px 14px; }
    #rk-weather-guide .rk-wx-nav-label { flex-basis: 100%; }
    #rk-weather-guide .rk-wx-nav a { flex: 1 1 135px; justify-content: center; text-align: center; }
    #rk-weather-guide .rk-wx-section { padding-top: 48px; }
    #rk-weather-guide .rk-wx-grid-2,
    #rk-weather-guide .rk-wx-grid-3,
    #rk-weather-guide .rk-wx-grid-4,
    #rk-weather-guide .rk-wx-fields,
    #rk-weather-guide .rk-wx-flow,
    #rk-weather-guide .rk-wx-result-grid { grid-template-columns: minmax(0, 1fr); }
    #rk-weather-guide .rk-wx-flow-node,
    #rk-weather-guide .rk-wx-flow-node:last-child { grid-column: auto; min-height: 0; }
    #rk-weather-guide .rk-wx-tool-body { padding-right: 12px; padding-left: 12px; }
    #rk-weather-guide .rk-wx-tool-step { padding-right: 13px; padding-left: 13px; }
    #rk-weather-guide .rk-wx-status { align-items: flex-start; }
    #rk-weather-guide .rk-wx-table-wrap { overflow: visible; border: 0; border-radius: 0; }
    #rk-weather-guide .rk-wx-table,
    #rk-weather-guide .rk-wx-table tbody,
    #rk-weather-guide .rk-wx-table tr,
    #rk-weather-guide .rk-wx-table td { display: block; width: 100%; }
    #rk-weather-guide .rk-wx-table thead { display: none; }
    #rk-weather-guide .rk-wx-table tr { margin-bottom: 13px; overflow: hidden; border: 1px solid var(--rk-line); border-radius: 13px; background: var(--rk-white); }
    #rk-weather-guide .rk-wx-table td { display: grid; grid-template-columns: minmax(92px, 38%) minmax(0, 1fr); gap: 12px; padding: 12px 13px; overflow-wrap: anywhere; }
    #rk-weather-guide .rk-wx-table td::before { color: var(--rk-dark); content: attr(data-label); font-size: .63rem; font-weight: 900; line-height: 1.4; }
    #rk-weather-guide .rk-wx-author-head { display: block; }
    #rk-weather-guide .rk-wx-author-mark { display: inline-block; margin-top: 12px; text-align: left; }
    #rk-weather-guide .rk-wx-author-layout { grid-template-columns: minmax(0, 1fr); }
    #rk-weather-guide .rk-wx-author-main { padding: 24px 18px; }
    #rk-weather-guide .rk-wx-author-quote { padding-left: 56px; }
    #rk-weather-guide .rk-wx-cta-button { width: 100%; text-align: center; }
  }
  @media (max-width: 390px) {
    #rk-weather-guide .rk-wx-hero-title { font-size: 2.05rem; }
    #rk-weather-guide .rk-wx-nav a { flex-basis: 122px; padding-right: 9px; padding-left: 9px; }
    #rk-weather-guide .rk-wx-table td { grid-template-columns: minmax(80px, 35%) minmax(0, 1fr); gap: 9px; }
  }
</style>

<article id="rk-weather-guide">
  <div class="rk-wx-shell">
    <header class="rk-wx-hero">
      <span class="rk-wx-kicker">Automatyka instalacji · aktualizacja 2026</span>
      <div class="rk-wx-hero-title">Sterowanie pogodowe podłogówki — <span>cały układ, nie jeden sterownik</span></div>
      <p class="rk-wx-lead">Sprawdź, kto powinien wyznaczać temperaturę wody, kiedy potrzebny jest mieszacz, jak pogodówka współpracuje z termostatami i dlaczego krzywa grzewcza nie naprawi błędów cieplnych ani hydraulicznych.</p>
      <div class="rk-wx-hero-tags" aria-label="Najważniejsze zagadnienia">
        <span class="rk-wx-hero-tag">temperatura zasilania</span>
        <span class="rk-wx-hero-tag">źródło lub mieszacz</span>
        <span class="rk-wx-hero-tag">termostaty i siłowniki</span>
        <span class="rk-wx-hero-tag">minimalny przepływ</span>
        <span class="rk-wx-hero-tag">diagnostyka objawów</span>
      </div>
      <div class="rk-wx-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>
    </header>

    <nav class="rk-wx-nav" aria-label="Nawigacja po wszystkich sekcjach artykułu">
      <span class="rk-wx-nav-label">Na skróty</span>
      <a href="#rk-wx-szybka">Szybka odpowiedź</a>
      <a href="#rk-wx-czym-jest">Czym jest?</a>
      <a href="#rk-wx-prognoza">Pogoda czy prognoza?</a>
      <a href="#rk-wx-bezwladnosc">Bezwładność</a>
      <a href="#rk-wx-granice">Co kontroluje?</a>
      <a href="#rk-wx-analizator">Analizator układu</a>
      <a href="#rk-wx-architektury">3 architektury</a>
      <a href="#rk-wx-mieszacz">Czy potrzebny mieszacz?</a>
      <a href="#rk-wx-krzywa">Krzywa grzewcza</a>
      <a href="#rk-wx-punkt">Punkt projektowy</a>
      <a href="#rk-wx-nachylenie">Nachylenie i poziom</a>
      <a href="#rk-wx-czujnik">Czujnik zewnętrzny</a>
      <a href="#rk-wx-termostat">Pogodówka a termostat</a>
      <a href="#rk-wx-silowniki">Siłowniki i przepływ</a>
      <a href="#rk-wx-pompa-ciepla">Pompa ciepła</a>
      <a href="#rk-wx-kociol-gazowy">Kocioł kondensacyjny</a>
      <a href="#rk-wx-pellet">Pellet i bufor</a>
      <a href="#rk-wx-obnizenie">Obniżenie nocne</a>
      <a href="#rk-wx-zyski">Zyski słoneczne</a>
      <a href="#rk-wx-hydraulika">Hydraulika</a>
      <a href="#rk-wx-uruchomienie">Uruchomienie</a>
      <a href="#rk-wx-diagnoza">Diagnoza objawów</a>
      <a href="#rk-wx-chlodzenie">Chłodzenie</a>
      <a href="#rk-wx-bledy">Błędy</a>
      <a href="#rk-wx-checklista">Checklista</a>
      <a href="#rk-wx-faq">FAQ</a>
      <a href="#rk-wx-zrodla">Źródła</a>
      <a href="#rk-wx-autor">Autor</a>
    </nav>

    <div class="rk-wx-main">
      <section class="rk-wx-section" id="rk-wx-szybka">
        <span class="rk-wx-eyebrow">Odpowiedź w 30 sekund</span>
        <h2>Czy sterowanie pogodowe ma sens przy ogrzewaniu podłogowym?</h2>
        <p class="rk-wx-intro"><strong>Najczęściej tak.</strong> Pogodówka może być nadrzędnym sposobem prowadzenia wodnej podłogówki, ponieważ dopasowuje zadaną temperaturę zasilania do temperatury zewnętrznej. Nie jest jednak gwarancją komfortu ani oszczędności. Musi otrzymać prawidłowe założenia projektowe i współpracować z hydrauliką, źródłem oraz regulacją pomieszczeń.</p>
        <div class="rk-wx-grid-3">
          <div class="rk-wx-card is-green"><span class="rk-wx-number">1</span><h3>Pogodówka wyznacza cel</h3><p>Określa temperaturę zasilania odpowiadającą bieżącym warunkom zewnętrznym.</p></div>
          <div class="rk-wx-card is-cyan"><span class="rk-wx-number">2</span><h3>Układ wykonuje polecenie</h3><p>Temperaturę realizuje bezpośrednio źródło albo odpowiednio sterowany obieg mieszający.</p></div>
          <div class="rk-wx-card is-orange"><span class="rk-wx-number">3</span><h3>Podłoga oddaje moc</h3><p>Rzeczywisty efekt zależy od powierzchni, rozstawu, okładziny, przepływu i temperatury powrotu.</p></div>
        </div>
        <div class="rk-wx-warning"><p><strong>Regulator nie „produkuje” mocy.</strong> Jeżeli podłoga nie może pokryć obciążenia pomieszczenia albo instalacja nie ma przepływu, podnoszenie <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">temperatury zasilania podłogówki</a> może jedynie ukrywać przyczynę i pogarszać warunki pracy źródła.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-czym-jest">
        <span class="rk-wx-eyebrow">Zasada działania</span>
        <h2>Czym naprawdę jest sterowanie pogodowe?</h2>
        <p>Sterowanie pogodowe, nazywane też regulacją według temperatury zewnętrznej, wyznacza zadaną temperaturę wody na podstawie pomiaru na zewnątrz oraz zapisanej charakterystyki. Sygnał może pochodzić z fizycznego czujnika albo z danych internetowych, jeżeli konkretny układ to przewiduje.</p>
        <div class="rk-wx-equation">θ<sub>zasilania,zadana</sub> = f(θ<sub>zewnętrzna</sub>, ustawienia krzywej, limity, korekty)</div>
        <p>Sam <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">regulator pogodowy</a> jest tylko jednym elementem toru. Po wyznaczeniu temperatury potrzebny jest element wykonawczy: modulowane źródło, siłownik mieszacza albo inny układ przewidziany w schemacie.</p>
        <div class="rk-wx-note"><p><strong>Ważne rozróżnienie:</strong> pogodówka zwykle zmienia zadaną temperaturę wody. Nie reguluje automatycznie przepływu każdej pętli i nie zastępuje równoważenia hydraulicznego.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-prognoza">
        <span class="rk-wx-eyebrow">Dwie różne funkcje</span>
        <h2>Sterowanie pogodowe a sterowanie z prognozą pogody</h2>
        <p>Klasyczna pogodówka nie zna przyszłości. Reaguje na aktualną temperaturę zewnętrzną i dlatego może zacząć zmieniać temperaturę wody wcześniej niż zwykły termostat oczekujący na spadek temperatury w pokoju. To jednak nadal reakcja na bieżący pomiar, a nie prognozowanie.</p>
        <div class="rk-wx-grid-2">
          <div class="rk-wx-card is-cyan"><h3>Klasyczna regulacja pogodowa</h3><ul class="rk-wx-list"><li>bieżący pomiar temperatury zewnętrznej,</li><li>zapisana krzywa grzewcza,</li><li>limity i ewentualny wpływ pomieszczenia,</li><li>sterowanie źródłem albo mieszaczem.</li></ul></div>
          <div class="rk-wx-card is-yellow"><h3>Regulacja predykcyjna</h3><ul class="rk-wx-list"><li>prognoza pogody lub dane online,</li><li>historia reakcji budynku,</li><li>przewidywane zyski i bezwładność,</li><li>algorytm adaptacyjny konkretnego systemu.</li></ul></div>
        </div>
        <p>Algorytm predykcyjny może ograniczać część problemów przy gwałtownej odwilży, ale nadal nie gwarantuje braku przegrzewania. Musi uwzględniać jakość prognozy, konstrukcję budynku i sposób pomiaru temperatury wewnętrznej.</p>
      </section>

      <section class="rk-wx-section" id="rk-wx-bezwladnosc">
        <span class="rk-wx-eyebrow">Podłoga reaguje z opóźnieniem</span>
        <h2>Dlaczego pogodówka pasuje do bezwładności ogrzewania podłogowego?</h2>
        <p>Zmiana temperatury zewnętrznej wpływa na straty budynku szybciej, niż ciężki jastrych zdąży wyraźnie zmienić temperaturę pomieszczenia. Pogodówka może więc korygować temperaturę wody bez czekania na duży błąd na termostacie pokojowym.</p>
        <p>Nie oznacza to jednak, że eliminuje <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładność cieplną podłogi</a>. Energia zakumulowana w jastrychu nadal będzie oddawana po ograniczeniu grzania, a nagłe słońce lub duże zyski wewnętrzne mogą przejściowo podnieść temperaturę w pomieszczeniu.</p>
        <div class="rk-wx-grid-3">
          <div class="rk-wx-card is-soft"><h3>Sygnał zewnętrzny</h3><p>Informuje o zmianie warunków, zanim termostat pokojowy zobaczy pełny skutek.</p></div>
          <div class="rk-wx-card is-soft"><h3>Masa podłogi</h3><p>Opóźnia nagrzewanie i wychładzanie; nie znika po zamontowaniu automatyki.</p></div>
          <div class="rk-wx-card is-soft"><h3>Zyski wewnętrzne</h3><p>Słońce, ludzie i urządzenia wymagają korekty pokojowej albo świadomego ograniczenia strefy.</p></div>
        </div>
      </section>

      <section class="rk-wx-section" id="rk-wx-granice">
        <span class="rk-wx-eyebrow">Granice automatyki</span>
        <h2>Co pogodówka kontroluje, a czego nie może naprawić?</h2>
        <div class="rk-wx-table-wrap">
          <table class="rk-wx-table">
            <thead><tr><th>Obszar</th><th>Co może zrobić pogodówka?</th><th>Czego nie zastępuje?</th></tr></thead>
            <tbody>
              <tr><td data-label="Obszar"><strong>Temperatura wody</strong></td><td data-label="Możliwość">Wyznaczyć zadaną temperaturę zależnie od warunków zewnętrznych.</td><td data-label="Nie zastępuje">Obliczenia projektowej temperatury zasilania i powrotu.</td></tr>
              <tr><td data-label="Obszar"><strong>Moc pomieszczenia</strong></td><td data-label="Możliwość">Dopasować wspólny poziom zasilania do zmiany obciążenia budynku.</td><td data-label="Nie zastępuje"><a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowego obciążenia cieplnego</a>, powierzchni czynnej i doboru rozstawu.</td></tr>
              <tr><td data-label="Obszar"><strong>Hydraulika</strong></td><td data-label="Możliwość">Współpracować z pompą lub zaworem zgodnie ze schematem.</td><td data-label="Nie zastępuje">Obliczenia przepływów, oporów, nastaw i minimalnego przepływu źródła.</td></tr>
              <tr><td data-label="Obszar"><strong>Temperatura pomieszczeń</strong></td><td data-label="Możliwość">Prowadzić cały budynek blisko potrzebnej mocy.</td><td data-label="Nie zastępuje">Lokalnej korekty zysków, różnych nastaw i problemów pojedynczego pomieszczenia.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-wx-warning"><p><strong>Jedna zimna strefa nie jest automatycznie sygnałem do podniesienia całej krzywej.</strong> Najpierw trzeba sprawdzić moc tej strefy, powierzchnię czynną, przepływ, siłownik, zapowietrzenie i opór okładziny.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-analizator">
        <span class="rk-wx-eyebrow">Narzędzie systemowe</span>
        <h2>Interaktywny analizator architektury sterowania pogodowego</h2>
        <p class="rk-wx-intro">Wybierz układ i obserwowany objaw. Narzędzie uporządkuje role źródła, regulatora, mieszacza, hydrauliki i regulacji pomieszczeń. Nie wybiera marki ani modelu urządzenia i nie obiecuje określonego procentu oszczędności.</p>

        <div class="rk-wx-tool" id="rk-wx-analyzer">
          <div class="rk-wx-tool-head">
            <h3>Sprawdź, czy elementy sterowania nie wchodzą sobie w drogę</h3>
            <p>Analiza dotyczy logiki funkcjonalnej. Każdy wynik trzeba skonfrontować ze schematem hydraulicznym, dokumentacją urządzeń i obliczeniami budynku.</p>
          </div>
          <div class="rk-wx-tool-body">
            <div class="rk-wx-tool-step">
              <div class="rk-wx-tool-step-title"><b>1</b><h4>Opisz instalację</h4></div>
              <div class="rk-wx-fields">
                <div class="rk-wx-field">
                  <label for="rk-wx-source">Źródło ciepła</label>
                  <select id="rk-wx-source">
                    <option value="heatpump">Pompa ciepła</option>
                    <option value="condensing">Kocioł kondensacyjny</option>
                    <option value="pellet">Kocioł na pellet / paliwo stałe</option>
                    <option value="other">Inne albo jeszcze nieustalone</option>
                  </select>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-system">Układ odbiorników</label>
                  <select id="rk-wx-system">
                    <option value="floor">Tylko ogrzewanie podłogowe</option>
                    <option value="mixed">Podłogówka i grzejniki</option>
                    <option value="multi">Kilka obiegów podłogowych</option>
                  </select>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-direct">Czy źródło bezpośrednio moduluje niską temperaturę?</label>
                  <select id="rk-wx-direct">
                    <option value="yes">Tak, potwierdzone</option>
                    <option value="unknown">Nie wiem</option>
                    <option value="no">Nie / wymaga obiegu mieszanego</option>
                  </select>
                  <small>Nie chodzi tylko o zakres na wyświetlaczu, ale o dopuszczony schemat pracy.</small>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-mixer">Sposób regulacji mieszacza</label>
                  <select id="rk-wx-mixer">
                    <option value="none">Brak zaworu mieszającego</option>
                    <option value="weather">Mieszacz z siłownikiem pogodowym</option>
                    <option value="fixed">Mieszacz / zestaw ze stałą nastawą</option>
                    <option value="unknown">Nie wiem</option>
                  </select>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-separator">Bufor lub rozdzielenie hydrauliczne</label>
                  <select id="rk-wx-separator">
                    <option value="none">Brak</option>
                    <option value="buffer">Bufor ciepła</option>
                    <option value="separator">Sprzęgło hydrauliczne</option>
                    <option value="unknown">Nie wiem</option>
                  </select>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-zones">Termostaty i zamykane strefy</label>
                  <select id="rk-wx-zones">
                    <option value="few">Kilka stref korygujących</option>
                    <option value="none">Brak zamykanych stref</option>
                    <option value="many">Większość pętli może się zamknąć</option>
                    <option value="unknown">Nie wiem</option>
                  </select>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-room">Wpływ czujnika pokojowego na pogodówkę</label>
                  <select id="rk-wx-room">
                    <option value="limit">Mała korekta / ograniczenie</option>
                    <option value="none">Brak wpływu</option>
                    <option value="strong">Silna korekta albo wyłączanie</option>
                    <option value="unknown">Nie wiem</option>
                  </select>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-minflow">Minimalny przepływ i objętość źródła</label>
                  <select id="rk-wx-minflow">
                    <option value="yes">Sprawdzone i zapewnione</option>
                    <option value="unknown">Nie wiem</option>
                    <option value="no">Nie są zapewnione</option>
                  </select>
                </div>
                <div class="rk-wx-field">
                  <label for="rk-wx-symptom">Najważniejszy objaw</label>
                  <select id="rk-wx-symptom">
                    <option value="none">Brak problemu — planuję układ</option>
                    <option value="coldfrost">Cały dom za chłodny tylko przy mrozie</option>
                    <option value="warmmild">Cały dom za ciepły przy łagodnej pogodzie</option>
                    <option value="onecold">Tylko jedno pomieszczenie jest chłodne</option>
                    <option value="solar">Przegrzewanie po nasłonecznieniu</option>
                    <option value="cycling">Źródło często się włącza i wyłącza</option>
                    <option value="unstable">Temperatura wielu pomieszczeń faluje</option>
                  </select>
                </div>
              </div>
              <button class="rk-wx-tool-button" id="rk-wx-run" type="button">Przeanalizuj architekturę sterowania</button>
            </div>

            <div class="rk-wx-tool-step" aria-live="polite">
              <div class="rk-wx-tool-step-title"><b>2</b><h4>Wynik i kolejność diagnostyki</h4></div>
              <div class="rk-wx-status is-watch" id="rk-wx-status">
                <div class="rk-wx-status-icon" id="rk-wx-status-icon">!</div>
                <div><h4 id="rk-wx-status-title">Układ wymaga weryfikacji</h4><p id="rk-wx-status-text">Sprawdź sposób realizowania temperatury zasilania i minimalny przepływ źródła.</p></div>
              </div>

              <div class="rk-wx-flow" aria-label="Dynamiczny schemat toru sterowania">
                <div class="rk-wx-flow-node" id="rk-wx-node-input"><span>1 · sygnał</span><strong id="rk-wx-flow-input">Temperatura zewnętrzna</strong><small>czujnik lub dane dopuszczone przez regulator</small></div>
                <div class="rk-wx-flow-node" id="rk-wx-node-control"><span>2 · regulator nadrzędny</span><strong id="rk-wx-flow-control">Pogodówka źródła</strong><small>wyznacza zadaną temperaturę wody</small></div>
                <div class="rk-wx-flow-node" id="rk-wx-node-executor"><span>3 · wykonanie</span><strong id="rk-wx-flow-executor">Modulacja źródła</strong><small id="rk-wx-flow-executor-note">bez dodatkowego mieszania</small></div>
                <div class="rk-wx-flow-node" id="rk-wx-node-hydraulic"><span>4 · hydraulika</span><strong id="rk-wx-flow-hydraulic">Rozdzielacz i pompa</strong><small id="rk-wx-flow-hydraulic-note">przepływy zgodne z projektem</small></div>
                <div class="rk-wx-flow-node" id="rk-wx-node-room"><span>5 · pomieszczenia</span><strong id="rk-wx-flow-room">Łagodna korekta stref</strong><small id="rk-wx-flow-room-note">termostaty nie zastępują regulacji zasilania</small></div>
              </div>

              <div class="rk-wx-result-grid">
                <div class="rk-wx-result-card"><h4>Co w układzie ma sens?</h4><ul class="rk-wx-output" id="rk-wx-good"></ul></div>
                <div class="rk-wx-result-card"><h4>Co trzeba zweryfikować?</h4><ul class="rk-wx-output is-warning" id="rk-wx-checks"></ul></div>
                <div class="rk-wx-result-card"><h4>Kolejność dalszych działań</h4><ol class="rk-wx-output is-order" id="rk-wx-order"></ol></div>
              </div>
              <p class="rk-wx-tool-note"><strong>Wynik jest mapą funkcji, nie projektem.</strong> Nie oblicza strat ciepła, temperatur projektowych, przepływów, Kv zaworu, sprężu pompy, pojemności bufora ani nastaw konkretnego regulatora.</p>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-wx-sales-cta" aria-label="Zamówienie projektu po analizatorze">
        <h3>Analizator pokazał architekturę — projekt musi nadać jej konkretne parametry</h3>
        <div class="rk-wx-cta-limits"><strong>Analizator może wskazać konflikt między źródłem, mieszaczem i regulacją strefową, ale nie zna strat ciepła pomieszczeń, czynnej powierzchni podłogi, oporu okładzin, długości pętli ani wymaganych przepływów.</strong></div>
        <p>Krzywa pogodowa może realizować tylko temperatury, które wcześniej wynikają z obliczeń. W projekcie otrzymasz pętle, przepływy, parametry zasilania i powrotu oraz założenia do sterowania dopasowane do konkretnego budynku.</p>
        <a class="rk-wx-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki z parametrami sterowania</a>
      </aside>

      <section class="rk-wx-section" id="rk-wx-architektury">
        <span class="rk-wx-eyebrow">Temperatura może być realizowana różnie</span>
        <h2>Trzy poprawne architektury sterowania pogodowego</h2>
        <div class="rk-wx-grid-3">
          <div class="rk-wx-card is-green"><span class="rk-wx-badge">Układ 1</span><h3>Bezpośredni obieg niskotemperaturowy</h3><p>Źródło otrzymuje temperaturę zewnętrzną, wyznacza temperaturę zasilania i bezpośrednio zasila podłogówkę. To może być właściwe przy jednym niskotemperaturowym <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obiegu grzewczym</a>, jeżeli dokumentacja źródła dopuszcza taki schemat.</p></div>
          <div class="rk-wx-card is-cyan"><span class="rk-wx-badge">Układ 2</span><h3>Obieg mieszany z własną pogodówką</h3><p>Źródło pracuje według własnych wymagań, a siłownik zaworu mieszającego realizuje niższą temperaturę dla podłogówki. Regulator musi otrzymywać wiarygodny pomiar temperatury obiegu.</p></div>
          <div class="rk-wx-card is-yellow"><span class="rk-wx-badge">Układ 3</span><h3>Podłogówka i grzejniki</h3><p>Instalacja mieszana może potrzebować różnych temperatur albo osobnych charakterystyk. Samo równoległe <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">podłączenie podłogówki do grzejników</a> nie rozwiązuje koordynacji obiegów.</p></div>
        </div>
        <div class="rk-wx-note"><p><strong>Nie ma jednej obowiązkowej architektury.</strong> Wybór zależy od źródła, liczby obiegów, wymaganych temperatur, minimalnych przepływów i sposobu rozdzielenia hydraulicznego.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-mieszacz">
        <span class="rk-wx-eyebrow">Częsty błąd w poradnikach</span>
        <h2>Czy ogrzewanie podłogowe zawsze potrzebuje zaworu mieszającego?</h2>
        <p><strong>Nie.</strong> Jeżeli źródło może bezpośrednio i stabilnie realizować wymaganą niską temperaturę, dodatkowy mieszacz może być zbędny. Jeżeli podłogówka jest osobnym obiegiem niższotemperaturowym, mieszacz z siłownikiem może być właściwym elementem wykonawczym.</p>
        <p>Nie należy natomiast zakładać, że każdy zestaw z ręczną lub stałą nastawą realizuje pełne sterowanie pogodowe. Zasady doboru i roli <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworu mieszającego w podłogówce</a> trzeba oceniać w kontekście całego schematu.</p>
        <div class="rk-wx-grid-2">
          <div class="rk-wx-card is-green"><h3>Mieszacz może być uzasadniony</h3><ul class="rk-wx-list"><li>przy obiegach o różnych temperaturach,</li><li>gdy źródło nie prowadzi bezpośrednio niskiego parametru,</li><li>gdy podłogówka ma własny regulator i pompę,</li><li>gdy wymaga tego zatwierdzony schemat źródła.</li></ul></div>
          <div class="rk-wx-card is-orange"><h3>Mieszacz może komplikować układ</h3><ul class="rk-wx-list"><li>gdy dubluje modulację źródła,</li><li>gdy ma stałą zbyt wysoką nastawę,</li><li>gdy nie ma poprawnego pomiaru temperatury,</li><li>gdy został dodany bez obliczenia przepływu i Kv.</li></ul></div>
        </div>
        <p>Bufor ani <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a> także nie są automatycznym dodatkiem do pogodówki. Rozdzielają hydraulikę, ale nie zastępują logiki sterowania temperaturą.</p>
      </section>

      <section class="rk-wx-section" id="rk-wx-krzywa">
        <span class="rk-wx-eyebrow">Charakterystyka temperatury</span>
        <h2>Krzywa grzewcza — co naprawdę opisuje?</h2>
        <p>Krzywa przypisuje temperaturze zewnętrznej zadaną temperaturę zasilania. Nie mówi sama z siebie, czy podłoga odda wymaganą moc, ponieważ wynik zależy również od temperatury powrotu, konstrukcji podłogi, rozstawu, oporu okładziny i temperatury pomieszczenia.</p>
        <div class="rk-wx-equation">temperatura zewnętrzna → temperatura zasilania zadana → moc możliwa do oddania przez konkretną podłogę</div>
        <p>Szczegółowe ustawianie punktów, nachylenia i przesunięcia rozwija osobny poradnik: <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza w ogrzewaniu podłogowym</a>. Tutaj najważniejsze jest jej miejsce w całej architekturze sterowania.</p>
        <div class="rk-wx-warning"><p><strong>Nie kopiuj gotowej krzywej z innego domu.</strong> Dwa budynki o podobnym metrażu mogą mieć inne straty, powierzchnie czynne, okładziny, przepływy i temperatury projektowe.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-punkt">
        <span class="rk-wx-eyebrow">Dwa końce zamiast magicznej liczby</span>
        <h2>Punkt projektowy i granica wyłączenia ogrzewania</h2>
        <p>Najczytelniej opisywać krzywą przez dwa punkty i limity. Zimny koniec powinien odpowiadać obliczeniowym warunkom zewnętrznym oraz temperaturze wody potrzebnej do pokrycia strat. Ciepły koniec określa pracę przy łagodnej pogodzie i współpracuje z granicą wyłączenia ogrzewania.</p>
        <div class="rk-wx-grid-2">
          <div class="rk-wx-card is-cyan"><h3>Zimny punkt projektowy</h3><p>Wynika z obliczeniowej temperatury zewnętrznej, wymaganej temperatury pomieszczeń oraz mocy dostępnej z podłogi. Podstawą jest <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczenie strat ciepła budynku i pomieszczeń</a>.</p></div>
          <div class="rk-wx-card is-yellow"><h3>Ciepły punkt i wyłączenie</h3><p>Decyduje, kiedy instalacja jeszcze grzeje oraz jaką minimalną temperaturę zadaną utrzymuje. Zbyt wysoki ciepły koniec często powoduje przegrzewanie w okresach przejściowych.</p></div>
        </div>
        <p>Do tego dochodzą ograniczenia minimalnej i maksymalnej temperatury wody oraz funkcje ochronne źródła. Krzywa nie może omijać wymagań urządzenia ani warunków bezpiecznej pracy podłogi.</p>
      </section>

      <section class="rk-wx-section" id="rk-wx-nachylenie">
        <span class="rk-wx-eyebrow">Dwie różne korekty</span>
        <h2>Nachylenie krzywej a równoległe przesunięcie</h2>
        <div class="rk-wx-table-wrap">
          <table class="rk-wx-table">
            <thead><tr><th>Objaw w wielu pomieszczeniach</th><th>Prawdopodobny kierunek</th><th>Najpierw sprawdź</th></tr></thead>
            <tbody>
              <tr><td data-label="Objaw"><strong>Za chłodno głównie przy dużym mrozie</strong></td><td data-label="Kierunek">Zimny koniec albo nachylenie mogą być zbyt niskie.</td><td data-label="Sprawdź">Czy przepływy i moc podłogi pozwalają osiągnąć projektowy wynik.</td></tr>
              <tr><td data-label="Objaw"><strong>Za ciepło głównie przy dużym mrozie</strong></td><td data-label="Kierunek">Zimny koniec albo nachylenie mogą być zbyt wysokie.</td><td data-label="Sprawdź">Czy problem dotyczy całego domu, a nie pojedynczej strefy.</td></tr>
              <tr><td data-label="Objaw"><strong>Podobny błąd przy łagodnej i zimnej pogodzie</strong></td><td data-label="Kierunek">Poziom lub równoległe przesunięcie może wymagać korekty.</td><td data-label="Sprawdź">Pomiar temperatury, harmonogram i wpływ czujnika pokojowego.</td></tr>
              <tr><td data-label="Objaw"><strong>Problem tylko w jednym pokoju</strong></td><td data-label="Kierunek">Nie zaczynaj od globalnej krzywej.</td><td data-label="Sprawdź">Moc, przepływ, siłownik, odpowietrzenie i okładzinę tej strefy.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-wx-note"><p><strong>Uwaga na nazewnictwo:</strong> liczba określająca „nachylenie” nie musi oznaczać tego samego w regulatorach różnych producentów. Porównuj faktyczne punkty temperatur, a nie sam numer krzywej.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-czujnik">
        <span class="rk-wx-eyebrow">Jakość wejścia decyduje o wyniku</span>
        <h2>Gdzie zamontować czujnik temperatury zewnętrznej?</h2>
        <p>Czujnik powinien mierzyć warunki reprezentatywne dla budynku. Zwykle wybiera się miejsce zacienione, bez bezpośredniego słońca i oddalone od lokalnych źródeł ciepła. Dokładną orientację, wysokość oraz sposób mocowania należy przyjąć z dokumentacji konkretnego urządzenia.</p>
        <div class="rk-wx-grid-2">
          <div class="rk-wx-card is-green"><h3>Szukaj miejsca reprezentatywnego</h3><ul class="rk-wx-list"><li>bez bezpośredniego nasłonecznienia,</li><li>z naturalnym przepływem powietrza,</li><li>bez wpływu otwartych okien i drzwi,</li><li>zgodnego z instrukcją regulatora.</li></ul></div>
          <div class="rk-wx-card is-orange"><h3>Unikaj lokalnych zakłóceń</h3><ul class="rk-wx-list"><li>wyrzutni wentylacji i klimatyzacji,</li><li>kominów i ciepłych przegród,</li><li>wnęk z zastojem powietrza,</li><li>miejsc okresowo ogrzewanych przez słońce.</li></ul></div>
        </div>
        <div class="rk-wx-warning"><p><strong>Nie stosujemy uniwersalnych odległości bez dokumentacji.</strong> Wymóg daszka, dystansu od elewacji czy konkretnej wysokości zależy od konstrukcji czujnika i instrukcji systemu.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-termostat">
        <span class="rk-wx-eyebrow">Nadrzędne i lokalne sterowanie</span>
        <h2>Sterowanie pogodowe a termostat pokojowy</h2>
        <p>Te elementy nie muszą ze sobą konkurować. Pogodówka prowadzi wspólną temperaturę zasilania, a <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostat ogrzewania podłogowego</a> może ograniczać lub korygować temperaturę w konkretnej strefie.</p>
        <div class="rk-wx-grid-3">
          <div class="rk-wx-card is-cyan"><h3>Pogodówka</h3><p>Reaguje na zmianę warunków zewnętrznych i prowadzi temperaturę wody całego obiegu.</p></div>
          <div class="rk-wx-card is-green"><h3>Termostat</h3><p>Widząc lokalne zyski albo inną nastawę, zgłasza potrzebę lub ogranicza konkretną strefę.</p></div>
          <div class="rk-wx-card is-yellow"><h3>Czujnik podłogi</h3><p>Może pilnować limitu powierzchni lub okładziny; jego rolę wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/czujnik-podlogowy/">czujniku podłogowym</a>.</p></div>
        </div>
        <p>Silny wpływ temperatury pokojowej na krzywą oraz jednoczesne agresywne zamykanie wielu stref mogą powodować niestabilność. Jedna dobrze zdefiniowana warstwa powinna prowadzić temperaturę zasilania, a pozostałe wykonywać spokojne korekty.</p>
      </section>

      <section class="rk-wx-section" id="rk-wx-silowniki">
        <span class="rk-wx-eyebrow">Zamykanie pętli zmienia hydraulikę</span>
        <h2>Siłowniki, sterowanie strefowe i minimalny przepływ</h2>
        <p><a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">Siłowniki termoelektryczne</a> ograniczają przepływ przez wybrane pętle. Gdy zamyka się ich dużo, zmieniają się warunki pracy pompy, rozdzielacza i źródła. Pogodówka nie neutralizuje tego zjawiska.</p>
        <p>Przed wdrożeniem rozbudowanego <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowania strefowego</a> trzeba ustalić:</p>
        <ul class="rk-wx-checklist">
          <li>jaki minimalny przepływ wymaga źródło ciepła,</li>
          <li>czy zapewniona jest wymagana objętość wodna instalacji,</li>
          <li>co uruchamia i zatrzymuje pompę obiegową,</li>
          <li>co dzieje się, gdy wszystkie albo prawie wszystkie strefy są zamknięte,</li>
          <li>czy regulator źródła otrzymuje prawidłowe zgłoszenie zapotrzebowania.</li>
        </ul>
        <div class="rk-wx-warning"><p><strong>Obejście nie jest uniwersalną odpowiedzią.</strong> Sposób zapewnienia przepływu i objętości musi wynikać ze schematu, wymagań źródła oraz obliczeń hydraulicznych.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-pompa-ciepla">
        <span class="rk-wx-eyebrow">Niska temperatura jako cel projektowy</span>
        <h2>Sterowanie pogodowe podłogówki z pompą ciepła</h2>
        <p>Właściwie ustawiona pogodówka może utrzymywać temperaturę zasilania na poziomie wystarczającym do pokrycia strat bez niepotrzebnego jej zawyżania. Zwykle sprzyja to warunkom pracy pompy ciepła, ale nie daje podstaw do obiecywania stałego wzrostu COP ani określonego procentu oszczędności.</p>
        <p>W <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie podłogówki z pompą ciepła</a> trzeba skoordynować temperaturę projektową, przepływy, minimalną objętość, odszranianie, źródło szczytowe oraz logikę termostatów.</p>
        <div class="rk-wx-grid-3">
          <div class="rk-wx-card is-green"><h3>Temperatura</h3><p>Tak niska, jak to możliwe, ale wystarczająca do pokrycia obciążenia pomieszczeń.</p></div>
          <div class="rk-wx-card is-cyan"><h3>Przepływ</h3><p>Zgodny z wymaganą mocą, różnicą temperatur i zakresem pracy urządzenia.</p></div>
          <div class="rk-wx-card is-yellow"><h3>Strefy</h3><p>Nie mogą przypadkowo odbierać źródłu minimalnego przepływu w czasie pracy.</p></div>
        </div>
      </section>

      <section class="rk-wx-section" id="rk-wx-kociol-gazowy">
        <span class="rk-wx-eyebrow">Modulacja i kondensacja</span>
        <h2>Sterowanie pogodowe z kotłem kondensacyjnym</h2>
        <p>Kocioł kondensacyjny może bezpośrednio prowadzić niskotemperaturowy obieg, jeżeli urządzenie i schemat są do tego przeznaczone. Przy dodatkowym obiegu o innej temperaturze może pojawić się mieszacz i oddzielna charakterystyka.</p>
        <p>Ważna jest nie tylko maksymalna moc kotła. Znaczenie mają minimalna moc modulacji, minimalny przepływ, logika palnika i sposób przekazania żądania grzania. Szerzej omawia to poradnik o współpracy <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kotła gazowego z ogrzewaniem podłogowym</a>.</p>
        <div class="rk-wx-note"><p><strong>Pogodówka nie gwarantuje długiej pracy palnika.</strong> Przewymiarowane źródło, mała pojemność układu albo szybkie zamykanie stref mogą nadal wywoływać częste cykle.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-pellet">
        <span class="rk-wx-eyebrow">Źródło o innej dynamice</span>
        <h2>Kocioł na pellet, bufor i sterowanie pogodowe</h2>
        <p>W układzie z <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/">kotłem na pellet</a> pogodówka może sterować obiegiem podłogowym, ale źródło ma inne wymagania niż pompa ciepła. Trzeba uwzględnić ochronę powrotu, zakres modulacji, sposób rozpalania i wygaszania oraz odbiór energii.</p>
        <p><a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">Bufor ciepła</a> może oddzielić dynamikę źródła od odbiorników, ale nie oznacza automatycznie pracy kotła „zawsze z pełną mocą i maksymalną sprawnością”. Jego pojemność, temperatury ładowania i logika obiegów wymagają osobnego doboru.</p>
        <div class="rk-wx-warning"><p><strong>Nie przenoś ustawień z pompy ciepła na pellet.</strong> Wspólnym celem jest pokrycie potrzeb budynku, ale ograniczenia i właściwa kolejność sterowania mogą być zupełnie inne.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-obnizenie">
        <span class="rk-wx-eyebrow">Harmonogram dopasowany do masy</span>
        <h2>Bezwładność podłogi i obniżenie nocne</h2>
        <p>Duże obniżenie temperatury na kilka godzin nie zawsze oszczędza energię w sposób oczekiwany przez użytkownika. Ciężka podłoga może nie zdążyć wyraźnie ostygnąć, a po zakończeniu obniżenia system będzie długo odbudowywał temperaturę.</p>
        <p>Jastrych działa jak <a href="https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/">duży magazyn ciepła w budynku</a>. Dlatego ustawianie harmonogramu powinno uwzględniać jego masę, rodzaj źródła i rzeczywisty czas reakcji.</p>
        <div class="rk-wx-grid-2">
          <div class="rk-wx-card is-green"><h3>Rozsądny początek</h3><p>Najpierw ustabilizuj krzywą i przepływy. Następnie testuj małą zmianę nastawy przez odpowiednio długi okres.</p></div>
          <div class="rk-wx-card is-orange"><h3>Częsty błąd</h3><p>Głębokie obniżenie, krótki czas powrotu i podniesienie krzywej, aby podłoga szybciej „nadrobiła”.</p></div>
        </div>
      </section>

      <section class="rk-wx-section" id="rk-wx-zyski">
        <span class="rk-wx-eyebrow">Pogodówka nie widzi słońca w salonie</span>
        <h2>Zyski słoneczne, kominek i wpływ temperatury pomieszczenia</h2>
        <p>Czujnik zewnętrzny nie wie, że przez duże przeszklenie wpada słońce albo że w salonie pracuje kominek. Takie <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywne zyski ciepła</a> wymagają lokalnej informacji lub świadomego ograniczenia strefy.</p>
        <p>W budynku z <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">dużymi przeszkleniami</a> ważne są również rozkład strat, powierzchnia czynna i geometria pętli. Termostat może ograniczyć dopływ ciepła, ale jastrych nadal oddaje wcześniej zakumulowaną energię.</p>
        <div class="rk-wx-note"><p><strong>Silny wpływ pokojowy nie zawsze jest lepszy.</strong> Zbyt agresywna korekta może rozhuśtać zasilanie całego obiegu. Zacznij od małego wpływu lub funkcji ograniczającej, jeśli przewiduje ją regulator.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-hydraulika">
        <span class="rk-wx-eyebrow">Temperatura bez przepływu nie daje wyniku</span>
        <h2>Hydraulika, rotametry i pompa obiegowa</h2>
        <p>Moc przenoszona przez obieg zależy od przepływu i różnicy temperatur. Pogodówka może obniżyć temperaturę zasilania, ale nie wyrówna automatycznie źle zdławionych ani zapowietrzonych pętli.</p>
        <div class="rk-wx-equation">Q̇ = ρ · c<sub>p</sub> · V̇ · ΔT</div>
        <div class="rk-wx-grid-3">
          <div class="rk-wx-card is-cyan"><h3>Przepływy pętli</h3><p>Sprawdza się na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a> i porównuje z wartościami projektowymi.</p></div>
          <div class="rk-wx-card is-green"><h3>Pompa obiegowa</h3><p>Musi zapewnić wymagany przepływ przy oporze obiegu krytycznego. Pomaga w tym <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>.</p></div>
          <div class="rk-wx-card is-yellow"><h3>Różnica temperatur</h3><p><a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">ΔT zasilania i powrotu</a> pomaga ocenić pracę obiegu, ale nie diagnozuje jej bez przepływu i mocy.</p></div>
        </div>
        <div class="rk-wx-warning"><p><strong>Nie podnoś krzywej, zanim sprawdzisz hydraulikę.</strong> Zimny pokój może mieć prawidłową temperaturę zasilania, ale zbyt mały przepływ albo brak rzeczywistego odbioru ciepła.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-uruchomienie">
        <span class="rk-wx-eyebrow">Jedna zmiana naraz</span>
        <h2>Jak uruchomić i regulować sterowanie pogodowe?</h2>
        <ol class="rk-wx-checklist">
          <li><strong>Zbierz dane projektowe:</strong> temperaturę zewnętrzną, temperatury pomieszczeń, zasilanie, powrót, moc i przepływy.</li>
          <li><strong>Sprawdź architekturę:</strong> ustal, kto prowadzi temperaturę — źródło czy mieszacz.</li>
          <li><strong>Ustabilizuj hydraulikę:</strong> otwórz wymagane obiegi, odpowietrz instalację i ustaw przepływy.</li>
          <li><strong>Wprowadź dwa punkty krzywej:</strong> zimny projektowy oraz ciepły wraz z granicą grzania.</li>
          <li><strong>Ogranicz agresywne korekty:</strong> na początku wyłącz duże obniżenia i silny wpływ pokojowy.</li>
          <li><strong>Obserwuj pełny cykl pogody:</strong> zapisuj temperaturę zewnętrzną, zasilanie, powrót i temperatury pomieszczeń.</li>
          <li><strong>Zmieniaj jeden parametr:</strong> inaczej nie ustalisz, która korekta rzeczywiście pomogła.</li>
        </ol>
        <p>Po uruchomieniu warto zachować protokół i wracać do niego podczas późniejszego <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">serwisu ogrzewania podłogowego</a>. Same ustawienia bez informacji o przepływach i temperaturach są trudne do porównania.</p>
      </section>

      <section class="rk-wx-section" id="rk-wx-diagnoza">
        <span class="rk-wx-eyebrow">Objaw wskazuje kolejność, nie gotową odpowiedź</span>
        <h2>Diagnostyka sterowania pogodowego na podstawie objawów</h2>
        <div class="rk-wx-table-wrap">
          <table class="rk-wx-table">
            <thead><tr><th>Objaw</th><th>Najpierw sprawdź</th><th>Dopiero później</th></tr></thead>
            <tbody>
              <tr><td data-label="Objaw"><strong>Za chłodno tylko podczas mrozu</strong></td><td data-label="Najpierw">Czy problem dotyczy wszystkich pomieszczeń, czy podłoga osiąga projektowe przepływy i temperatury.</td><td data-label="Później">Korekta zimnego końca krzywej.</td></tr>
              <tr><td data-label="Objaw"><strong>Za ciepło przy pogodzie przejściowej</strong></td><td data-label="Najpierw">Ciepły punkt, granicę wyłączenia, pomiar zewnętrzny i zyski słoneczne.</td><td data-label="Później">Poziom krzywej lub wpływ pomieszczenia.</td></tr>
              <tr><td data-label="Objaw"><strong>Jedno zimne pomieszczenie</strong></td><td data-label="Najpierw">Przepływ, siłownik, odpowietrzenie, powierzchnię czynną i okładzinę.</td><td data-label="Później">Zmianę globalnej temperatury zasilania.</td></tr>
              <tr><td data-label="Objaw"><strong>Źródło często taktuje</strong></td><td data-label="Najpierw">Minimalną moc, minimalny przepływ, liczbę zamkniętych stref i objętość instalacji.</td><td data-label="Później">Parametry krzywej i histerezę.</td></tr>
              <tr><td data-label="Objaw"><strong>Niestabilna temperatura wielu stref</strong></td><td data-label="Najpierw">Czy kilka regulatorów jednocześnie zmienia źródło, mieszacz i przepływy.</td><td data-label="Później">Zmniejszenie agresywności korekt.</td></tr>
            </tbody>
          </table>
        </div>
        <p>Jeżeli przepływ zanika albo słychać powietrze, sprawdź również <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawy zapowietrzenia podłogówki</a>. Przy dużych oporach zweryfikuj <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">długość pętli ogrzewania podłogowego</a> zamiast kompensować problem coraz wyższą temperaturą.</p>
      </section>

      <section class="rk-wx-section" id="rk-wx-chlodzenie">
        <span class="rk-wx-eyebrow">To nie jest odwrócona krzywa bez zabezpieczeń</span>
        <h2>Sterowanie pogodowe podczas chłodzenia podłogowego</h2>
        <p>Chłodzenie płaszczyznowe wymaga źródła zdolnego do chłodzenia, odpowiedniej hydrauliki oraz kontroli kondensacji. Sama zależność od temperatury zewnętrznej nie wystarcza, ponieważ bezpieczna temperatura wody zależy również od temperatury i wilgotności powietrza wewnętrznego.</p>
        <p>Kluczowym ograniczeniem jest <a href="https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/">punkt rosy przy chłodzeniu podłogowym</a>. System powinien zachować odpowiedni margines oraz reagować na ryzyko kondensacji na powierzchni i elementach instalacji.</p>
        <div class="rk-wx-grid-4">
          <div class="rk-wx-card is-soft"><h3>Temperatura</h3><p>Pomiar zasilania, powrotu i powierzchni.</p></div>
          <div class="rk-wx-card is-soft"><h3>Wilgotność</h3><p>Aktualny pomiar w reprezentatywnych strefach.</p></div>
          <div class="rk-wx-card is-soft"><h3>Punkt rosy</h3><p>Dynamicznie wyznaczana granica bezpieczeństwa.</p></div>
          <div class="rk-wx-card is-soft"><h3>Zabezpieczenie</h3><p>Ograniczenie lub zatrzymanie chłodzenia przed kondensacją.</p></div>
        </div>
      </section>

      <section class="rk-wx-section" id="rk-wx-bledy">
        <span class="rk-wx-eyebrow">Najczęstsze skróty myślowe</span>
        <h2>Najczęstsze błędy sterowania pogodowego podłogówki</h2>
        <div class="rk-wx-grid-3">
          <div class="rk-wx-card is-orange"><h3>Gotowa krzywa z internetu</h3><p>Nie uwzględnia strat pomieszczeń, powierzchni czynnej, konstrukcji i przepływów konkretnego budynku.</p></div>
          <div class="rk-wx-card is-orange"><h3>Mieszacz w każdym układzie</h3><p>Może dublować modulację źródła albo utrzymywać stałą temperaturę zamiast realizować pogodówkę.</p></div>
          <div class="rk-wx-card is-orange"><h3>Korekta całego domu przez jeden pokój</h3><p>Lokalny problem hydrauliczny lub cieplny prowadzi do przegrzewania pozostałych stref.</p></div>
          <div class="rk-wx-card is-orange"><h3>Wszystkie pętle sterowane ON/OFF</h3><p>Bez sprawdzenia minimalnego przepływu zamykanie stref może rozregulować źródło i pompę.</p></div>
          <div class="rk-wx-card is-orange"><h3>Duże obniżenie nocne</h3><p>Ciężka podłoga nie reaguje jak grzejnik, a późniejsze „odrabianie” może wymagać wyższej temperatury.</p></div>
          <div class="rk-wx-card is-orange"><h3>Brak zapisu pomiarów</h3><p>Kilka korekt naraz bez historii temperatur uniemożliwia ocenę rzeczywistej przyczyny.</p></div>
        </div>
        <p>Więcej błędów, których później nie naprawi automatyka, pokazuje poradnik o <a href="https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/">samodzielnym montażu ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-wx-section" id="rk-wx-checklista">
        <span class="rk-wx-eyebrow">Przed pierwszym sezonem i po każdej większej zmianie</span>
        <h2>Checklista ustawień sterowania pogodowego</h2>
        <div class="rk-wx-grid-2">
          <div class="rk-wx-card is-cyan"><h3>Dane cieplne i temperaturowe</h3><ul class="rk-wx-checklist"><li>Obciążenie cieplne każdego pomieszczenia jest znane.</li><li>Znane są projektowe temperatury zasilania i powrotu.</li><li>Sprawdzono powierzchnię czynną, rozstaw i opór okładziny.</li><li>Zdefiniowano zimny punkt i granicę wyłączenia grzania.</li></ul></div>
          <div class="rk-wx-card is-green"><h3>Hydraulika i automatyka</h3><ul class="rk-wx-checklist"><li>Wiadomo, czy temperaturę realizuje źródło, czy mieszacz.</li><li>Przepływy pętli odpowiadają wartościom projektowym.</li><li>Minimalny przepływ i objętość źródła są zapewnione.</li><li>Termostaty mają określoną funkcję i nie dublują pogodówki.</li></ul></div>
        </div>
        <div class="rk-wx-success"><p><strong>Dobra regulacja ma dokumentację.</strong> Zapisz ustawienia początkowe, temperatury podczas obserwacji, datę każdej zmiany oraz jej efekt. Pozwoli to wrócić do działającego punktu i ułatwi późniejszy serwis.</p></div>
      </section>

      <section class="rk-wx-section" id="rk-wx-faq">
        <span class="rk-wx-eyebrow">Pytania inwestorów i użytkowników</span>
        <h2>FAQ — sterowanie pogodowe w ogrzewaniu podłogowym</h2>
        <div class="rk-wx-faq">
          <details><summary>Czy sterowanie pogodowe jest konieczne przy podłogówce?</summary><div class="rk-wx-faq-answer"><p>Nie jest uniwersalnie obowiązkowe w każdym układzie, ale często jest bardzo dobrym sposobem nadrzędnego prowadzenia wodnej podłogówki. O zasadności decydują źródło, schemat, wymagane temperatury i sposób regulacji pomieszczeń.</p></div></details>
          <details><summary>Czy pogodówka przewiduje pogodę?</summary><div class="rk-wx-faq-answer"><p>Klasyczna pogodówka reaguje na aktualną temperaturę zewnętrzną. Dopiero system korzystający z prognozy, historii i algorytmu predykcyjnego może uwzględniać nadchodzące zmiany pogody.</p></div></details>
          <details><summary>Czy przy pogodówce potrzebny jest termostat pokojowy?</summary><div class="rk-wx-faq-answer"><p>Nie zawsze jako główny regulator. Może jednak korygować zyski słoneczne, różne nastawy i harmonogramy stref. Jego wpływ powinien być skoordynowany z regulacją temperatury zasilania.</p></div></details>
          <details><summary>Czy podłogówka zawsze wymaga zaworu mieszającego?</summary><div class="rk-wx-faq-answer"><p>Nie. Źródło zdolne do bezpośredniej modulacji niskiej temperatury może zasilać jeden obieg podłogowy bez dodatkowego mieszacza. Mieszacz jest uzasadniony, gdy wymaga go podział temperatur i konkretny schemat.</p></div></details>
          <details><summary>Jak ustawić krzywą grzewczą do podłogówki?</summary><div class="rk-wx-faq-answer"><p>Zacznij od temperatur projektowych wynikających z obliczeń oraz ciepłego punktu i granicy grzania. Ustabilizuj hydraulikę, obserwuj budynek i zmieniaj jeden parametr naraz. Nie kopiuj numeru krzywej z innej instalacji.</p></div></details>
          <details><summary>Dlaczego dom jest za ciepły przy dodatniej temperaturze?</summary><div class="rk-wx-faq-answer"><p>Możliwy jest zbyt wysoki ciepły koniec krzywej, zbyt niska granica wyłączenia, zakłócony pomiar zewnętrzny, silny wpływ pokojowy lub duże zyski słoneczne. Najpierw ustal, czy problem dotyczy całego domu.</p></div></details>
          <details><summary>Dlaczego podłogówka nie dogrzewa podczas mrozu?</summary><div class="rk-wx-faq-answer"><p>Przyczyną może być zbyt niski zimny punkt, ale także brak mocy podłogi, za mała powierzchnia czynna, zbyt mały przepływ, zapowietrzenie albo zbyt duży opór pętli. Krzywą koryguj po sprawdzeniu tych elementów.</p></div></details>
          <details><summary>Czy pogodówka zmienia przepływ w pętlach?</summary><div class="rk-wx-faq-answer"><p>Zwykle bezpośrednio zmienia zadaną temperaturę wody. Przepływ zależy od pompy, oporów, nastaw rozdzielacza i położenia zaworów. Nie należy utożsamiać regulacji temperatury z hydraulicznym równoważeniem pętli.</p></div></details>
          <details><summary>Czy pogodówka zawsze obniża rachunki?</summary><div class="rk-wx-faq-answer"><p>Nie można zagwarantować uniwersalnego procentu. Efekt zależy od wcześniejszego sposobu regulacji, temperatur instalacji, źródła, budynku, hydrauliki oraz zachowania użytkowników.</p></div></details>
          <details><summary>Czy przy pompie ciepła można zamykać wszystkie pętle?</summary><div class="rk-wx-faq-answer"><p>Tylko jeżeli zatwierdzony schemat zapewnia minimalny przepływ i wymaganą objętość wodną w każdej sytuacji. Przypadkowe zamknięcie większości pętli może powodować alarmy, taktowanie lub pogorszenie pracy.</p></div></details>
          <details><summary>Czy warto stosować obniżenie nocne?</summary><div class="rk-wx-faq-answer"><p>Nie należy zaczynać od dużego obniżenia. Ciężka podłoga reaguje wolno, dlatego zwykle najpierw stabilizuje się pracę ciągłą, a następnie testuje niewielką korektę i obserwuje pełny cykl.</p></div></details>
          <details><summary>Czy pogodówka wystarczy do chłodzenia podłogowego?</summary><div class="rk-wx-faq-answer"><p>Nie. Potrzebna jest kontrola wilgotności i punktu rosy, zabezpieczenie przed kondensacją, dopuszczony tryb źródła oraz odpowiednia hydraulika i automatyka chłodzenia.</p></div></details>
        </div>
      </section>

      <section class="rk-wx-section" id="rk-wx-zrodla">
        <span class="rk-wx-eyebrow">Materiały pierwotne i instytucjonalne</span>
        <h2>Źródła oficjalne i zakres odpowiedzialności</h2>
        <div class="rk-wx-sources">
          <div class="rk-wx-source"><strong><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wydajność powierzchni grzewczej</a></strong><p>Metodyka wyznaczania mocy wbudowanych systemów płaszczyznowych w zależności od temperatur i konstrukcji.</p></div>
          <div class="rk-wx-source"><strong><a href="https://assets.publishing.service.gov.uk/media/69c122a6cfa346b9d4704a55/ADL1_2026.pdf" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Approved Document L 2026</a></strong><p>Oficjalny dokument opisujący weather compensation oraz możliwość zmiany temperatury zasilania przez bezpośrednią modulację albo zawór mieszający. Dokument brytyjski nie jest polskim przepisem.</p></div>
          <div class="rk-wx-source"><strong><a href="https://assets.publishing.service.gov.uk/media/678e8c98432c55fe2988f69b/raising-product-standards-for-space-heating-consultation.pdf" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Raising product standards for space heating</a></strong><p>Definicje i omówienie regulacji pogodowej, sygnału z czujnika zewnętrznego lub danych online oraz wpływu temperatury pracy na układ.</p></div>
          <div class="rk-wx-source"><strong><a href="https://assets.publishing.service.gov.uk/media/5a82e1daed915d74e62381a7/heating-controls-international-evidence.pdf" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Heating controls: international evidence review</a></strong><p>Przegląd dowodów dotyczących automatyki grzewczej, zróżnicowanych wyników oszczędności i ograniczonej liczby pełnych analiz opłacalności.</p></div>
          <div class="rk-wx-source"><strong><a href="https://assets.publishing.service.gov.uk/media/6a4519a2d200ca05e289e2ac/cfp-report-heat-pump-transition.pdf" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Heat Pump Transition report</a></strong><p>Raport wskazujący temperaturę zasilania, sterowanie pogodowe, dobór i uruchomienie jako czynniki wpływające na rzeczywistą pracę pomp ciepła.</p></div>
          <div class="rk-wx-source"><strong><a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32013R0811" target="_blank" rel="nofollow noopener noreferrer">EUR-Lex — rozporządzenie delegowane UE nr 811/2013</a></strong><p>Oficjalny akt klasyfikujący między innymi regulatory temperaturowe wykorzystujące kompensację pogodową.</p></div>
        </div>
        <div class="rk-wx-warning"><p><strong>Zakres poradnika:</strong> artykuł porządkuje funkcje sterowania i kolejność diagnostyki. Nie jest instrukcją konkretnego regulatora, schematem elektrycznym ani hydraulicznym i nie zastępuje wymagań źródła ciepła.</p></div>
      </section>

      <section class="rk-wx-author" id="rk-wx-autor" aria-labelledby="rk-wx-author-heading">
        <input type="radio" name="rk-wx-author-tabs" id="rk-wx-author-about" checked="">
        <input type="radio" name="rk-wx-author-tabs" id="rk-wx-author-exp">
        <input type="radio" name="rk-wx-author-tabs" id="rk-wx-author-method">

        <div class="rk-wx-author-head">
          <div>
            <span class="rk-wx-eyebrow">Opracowanie eksperckie</span>
            <h2 id="rk-wx-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Artykuł łączy obliczenia cieplne, hydraulikę i funkcjonalną architekturę automatyki.</p>
          </div>
          <span class="rk-wx-author-mark">E-E-A-T · praktyka projektowa HVAC</span>
        </div>

        <div class="rk-wx-author-layout">
          <aside class="rk-wx-author-side">
            <div class="rk-wx-author-photo"><img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="154" height="154" loading="lazy"></div>
            <div class="rk-wx-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/" style="color:#fff;text-decoration:none">Robert Kucharski</a></div>
            <div class="rk-wx-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-wx-author-social-label">Profile autora</div>
            <div class="rk-wx-author-social">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="Robert Kucharski na LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4.98 3.5a2.5 2.5 0 1 1 0 5 2.5 2.5 0 0 1 0-5ZM3 9h4v12H3V9Zm6.5 0h3.84v1.64h.06c.53-1.01 1.84-2.08 3.79-2.08C21.24 8.56 22 11.23 22 14.7V21h-4v-5.59c0-1.33-.02-3.05-1.86-3.05-1.86 0-2.14 1.45-2.14 2.95V21h-4V9Z"></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="M22 12.06C22 6.5 17.52 2 12 2S2 6.5 2 12.06C2 17.08 5.66 21.25 10.44 22v-7.03H7.9v-2.91h2.54V9.85c0-2.52 1.49-3.91 3.77-3.91 1.09 0 2.23.2 2.23.2v2.47h-1.25c-1.24 0-1.63.77-1.63 1.56v1.89h2.77l-.44 2.91h-2.33V22C18.34 21.25 22 17.08 22 12.06Z"></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 2H22l-6.77 7.74L23.2 22h-6.24l-4.89-6.39L6.48 22H3.36l7.25-8.29L2.96 2H9.36l4.42 5.84L18.9 2Zm-1.1 17.84h1.73L8.42 4.05H6.57L17.8 19.84Z"></path></svg></a>
            </div>
          </aside>

          <div class="rk-wx-author-main">
            <blockquote class="rk-wx-author-quote"><p>Sterowanie pogodowe powinno prowadzić temperaturę, którą instalacja rzeczywiście potrafi wykorzystać. Najpierw liczymy moc i przepływy, później nadajemy automatyce właściwą rolę.</p></blockquote>
            <div class="rk-wx-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-wx-author-tab" for="rk-wx-author-about">O autorze</label>
              <label class="rk-wx-author-tab" for="rk-wx-author-exp">Doświadczenie</label>
              <label class="rk-wx-author-tab" for="rk-wx-author-method">Metoda pracy</label>
            </div>
            <div class="rk-wx-author-panel rk-wx-author-panel-about">
              <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W poradnikach oddziela parametry wynikające z obliczeń od ustawień automatyki i deklaracji marketingowych urządzeń.</p>
              <p>W obszarze sterowania analizuje nie tylko krzywą grzewczą, lecz także wpływ zaworów, pomp, siłowników, zamykanych stref i minimalnego przepływu na zachowanie całej instalacji.</p>
            </div>
            <div class="rk-wx-author-panel rk-wx-author-panel-exp">
              <p>Zakres pracy obejmuje bilanse cieplne pomieszczeń, dobór temperatur zasilania i powrotu, rozmieszczenie oraz długości pętli, nastawy przepływów, opory hydrauliczne i wytyczne współpracy podłogówki z pompami ciepła, kotłami oraz automatyką.</p>
              <p>Treści są aktualizowane po weryfikacji norm, źródeł instytucjonalnych i powtarzających się problemów widocznych podczas uruchamiania oraz eksploatacji instalacji.</p>
            </div>
            <div class="rk-wx-author-panel rk-wx-author-panel-method">
              <p>Analiza zaczyna się od obciążenia pomieszczeń i możliwości powierzchni grzewczej. Następnie określa się temperatury, przepływy i hydraulikę, a dopiero na końcu wybiera sposób prowadzenia źródła, mieszacza i stref.</p>
              <p>Artykuł nie zastępuje dokumentacji urządzeń. Jego celem jest pokazanie hierarchii decyzji, dzięki której regulator nie próbuje kompensować błędów wykonawczych ani sprzecznych poleceń innych elementów automatyki.</p>
            </div>
            <div class="rk-wx-mini-label">Publikacje i serwisy autora</div>
            <div class="rk-wx-portals">
              <a href="https://projekt-ogrzewania.pl/blog/">Blog Projekt Ogrzewania</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-wx-sales-cta" aria-label="Końcowe zamówienie projektu">
        <h3>Zaprojektuj podłogówkę i sposób jej sterowania jako jeden system</h3>
        <p>Otrzymasz projekt oparty na obciążeniach pomieszczeń, rzeczywistej powierzchni czynnej, długościach pętli i obliczonych przepływach. Parametry zasilania, powrotu oraz wytyczne do regulacji będą wynikać z konkretnego budynku i źródła ciepła.</p>
        <a class="rk-wx-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      </aside>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "sterowanie pogodowe",
        "krzywe grzewcze",
        "hydraulika instalacji grzewczych",
        "pompy ciepła",
        "obliczenia cieplne",
        "regulacja strefowa"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-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": "Sterowanie pogodowe w ogrzewaniu podłogowym", "item": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/",
      "name": "Sterowanie pogodowe w ogrzewaniu podłogowym – jak działa cały układ?",
      "description": "Techniczny poradnik o współpracy pogodówki, źródła ciepła, mieszacza, termostatów, siłowników i hydrauliki ogrzewania podłogowego.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#breadcrumb" },
      "dateModified": "2026-09-07",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#article",
      "headline": "Sterowanie pogodowe w ogrzewaniu podłogowym – jak działa cały układ?",
      "description": "Poradnik o ustawieniach, architekturze i diagnostyce sterowania pogodowego wodnej podłogówki.",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#webpage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-07",
      "inLanguage": "pl-PL",
      "proficiencyLevel": "Intermediate",
      "keywords": [
        "sterowanie pogodowe ogrzewanie podłogowe",
        "sterowanie pogodowe podłogówka",
        "krzywa grzewcza",
        "czujnik temperatury zewnętrznej",
        "sterowanie pogodowe a termostat",
        "zawór mieszający",
        "pompa ciepła"
      ],
      "mentions": [
        { "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#analizator" },
        { "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#faq" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#analizator",
      "name": "Interaktywny analizator architektury sterowania pogodowego",
      "url": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#rk-wx-analizator",
      "description": "Narzędzie porządkujące role źródła, regulatora, mieszacza, hydrauliki, termostatów i siłowników w układzie ogrzewania podłogowego.",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "Włączona obsługa JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#howto",
      "name": "Jak uruchomić sterowanie pogodowe ogrzewania podłogowego",
      "description": "Siedem kroków od danych projektowych do obserwacji i korekty krzywej grzewczej.",
      "inLanguage": "pl-PL",
      "totalTime": "PT2H",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Zbierz dane projektowe", "text": "Przygotuj obciążenia pomieszczeń, temperaturę projektową, zasilanie, powrót i wymagane przepływy." },
        { "@type": "HowToStep", "position": 2, "name": "Ustal element nadrzędny", "text": "Określ, czy temperaturę zasilania prowadzi automatyka źródła, czy regulator obiegu mieszanego." },
        { "@type": "HowToStep", "position": 3, "name": "Sprawdź hydraulikę", "text": "Odpowietrz instalację, ustaw przepływy i zapewnij wymagany minimalny przepływ źródła." },
        { "@type": "HowToStep", "position": 4, "name": "Wprowadź punkty krzywej", "text": "Ustaw zimny punkt projektowy, ciepły punkt i granicę wyłączenia ogrzewania." },
        { "@type": "HowToStep", "position": 5, "name": "Ogranicz dodatkowe korekty", "text": "Na czas pierwszej regulacji unikaj dużego obniżenia nocnego i agresywnego wpływu pokojowego." },
        { "@type": "HowToStep", "position": 6, "name": "Obserwuj instalację", "text": "Zapisuj temperaturę zewnętrzną, zasilanie, powrót i temperatury pomieszczeń podczas różnych warunków." },
        { "@type": "HowToStep", "position": 7, "name": "Koryguj jedną zmienną", "text": "Zmieniaj pojedynczy parametr i pozostaw czas na ocenę reakcji bezwładnej podłogi." }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        { "@type": "Question", "name": "Czy sterowanie pogodowe jest konieczne przy podłogówce?", "acceptedAnswer": { "@type": "Answer", "text": "Nie jest uniwersalnie obowiązkowe w każdym układzie, ale często jest bardzo dobrym sposobem nadrzędnego prowadzenia wodnej podłogówki. O zasadności decydują źródło, schemat, wymagane temperatury i regulacja pomieszczeń." } },
        { "@type": "Question", "name": "Czy pogodówka przewiduje pogodę?", "acceptedAnswer": { "@type": "Answer", "text": "Klasyczna pogodówka reaguje na aktualną temperaturę zewnętrzną. Prognozę uwzględnia dopiero system predykcyjny korzystający z danych pogodowych i historii reakcji budynku." } },
        { "@type": "Question", "name": "Czy przy pogodówce potrzebny jest termostat pokojowy?", "acceptedAnswer": { "@type": "Answer", "text": "Nie zawsze jako główny regulator. Może korygować lokalne zyski, różne nastawy i harmonogramy, ale jego wpływ powinien być skoordynowany z regulacją temperatury zasilania." } },
        { "@type": "Question", "name": "Czy podłogówka zawsze wymaga zaworu mieszającego?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Źródło zdolne do bezpośredniej modulacji niskiej temperatury może zasilać jeden obieg podłogowy bez dodatkowego mieszacza. Mieszacz jest uzasadniony, gdy wynika to z podziału temperatur i schematu." } },
        { "@type": "Question", "name": "Jak ustawić krzywą grzewczą do podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Zacznij od temperatur projektowych wynikających z obliczeń, ciepłego punktu i granicy grzania. Ustabilizuj hydraulikę, obserwuj budynek i zmieniaj jeden parametr naraz." } },
        { "@type": "Question", "name": "Dlaczego dom jest za ciepły przy dodatniej temperaturze?", "acceptedAnswer": { "@type": "Answer", "text": "Możliwy jest zbyt wysoki ciepły koniec krzywej, niewłaściwa granica wyłączenia, zakłócony pomiar zewnętrzny, silny wpływ pokojowy lub duże zyski słoneczne." } },
        { "@type": "Question", "name": "Dlaczego podłogówka nie dogrzewa podczas mrozu?", "acceptedAnswer": { "@type": "Answer", "text": "Przyczyną może być zbyt niski zimny punkt, ale także brak mocy podłogi, mała powierzchnia czynna, zbyt mały przepływ, zapowietrzenie albo duży opór pętli." } },
        { "@type": "Question", "name": "Czy pogodówka zmienia przepływ w pętlach?", "acceptedAnswer": { "@type": "Answer", "text": "Zwykle bezpośrednio zmienia zadaną temperaturę wody. Przepływ zależy od pompy, oporów, nastaw rozdzielacza i położenia zaworów." } },
        { "@type": "Question", "name": "Czy pogodówka zawsze obniża rachunki?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można zagwarantować uniwersalnego procentu. Efekt zależy od wcześniejszej regulacji, temperatur instalacji, źródła, budynku, hydrauliki i zachowania użytkowników." } },
        { "@type": "Question", "name": "Czy przy pompie ciepła można zamykać wszystkie pętle?", "acceptedAnswer": { "@type": "Answer", "text": "Tylko jeżeli zatwierdzony schemat zapewnia minimalny przepływ i wymaganą objętość wodną w każdej sytuacji. Przypadkowe zamknięcie większości pętli może powodować nieprawidłową pracę." } },
        { "@type": "Question", "name": "Czy warto stosować obniżenie nocne?", "acceptedAnswer": { "@type": "Answer", "text": "Nie należy zaczynać od dużego obniżenia. Ciężka podłoga reaguje wolno, dlatego najpierw stabilizuje się pracę ciągłą, a później testuje niewielką korektę." } },
        { "@type": "Question", "name": "Czy pogodówka wystarczy do chłodzenia podłogowego?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Potrzebna jest kontrola wilgotności i punktu rosy, zabezpieczenie przed kondensacją, dopuszczony tryb źródła oraz odpowiednia hydraulika chłodzenia." } }
      ]
    }
  ]
}
</script>

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

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

  var source = document.getElementById("rk-wx-source");
  var system = document.getElementById("rk-wx-system");
  var direct = document.getElementById("rk-wx-direct");
  var mixer = document.getElementById("rk-wx-mixer");
  var separator = document.getElementById("rk-wx-separator");
  var zones = document.getElementById("rk-wx-zones");
  var room = document.getElementById("rk-wx-room");
  var minflow = document.getElementById("rk-wx-minflow");
  var symptom = document.getElementById("rk-wx-symptom");
  var button = document.getElementById("rk-wx-run");

  var status = document.getElementById("rk-wx-status");
  var statusIcon = document.getElementById("rk-wx-status-icon");
  var statusTitle = document.getElementById("rk-wx-status-title");
  var statusText = document.getElementById("rk-wx-status-text");
  var goodList = document.getElementById("rk-wx-good");
  var checkList = document.getElementById("rk-wx-checks");
  var orderList = document.getElementById("rk-wx-order");

  var flowInput = document.getElementById("rk-wx-flow-input");
  var flowControl = document.getElementById("rk-wx-flow-control");
  var flowExecutor = document.getElementById("rk-wx-flow-executor");
  var flowExecutorNote = document.getElementById("rk-wx-flow-executor-note");
  var flowHydraulic = document.getElementById("rk-wx-flow-hydraulic");
  var flowHydraulicNote = document.getElementById("rk-wx-flow-hydraulic-note");
  var flowRoom = document.getElementById("rk-wx-flow-room");
  var flowRoomNote = document.getElementById("rk-wx-flow-room-note");

  var nodeControl = document.getElementById("rk-wx-node-control");
  var nodeExecutor = document.getElementById("rk-wx-node-executor");
  var nodeHydraulic = document.getElementById("rk-wx-node-hydraulic");
  var nodeRoom = document.getElementById("rk-wx-node-room");

  function addUnique(items, text) {
    if (items.indexOf(text) === -1) { items.push(text); }
  }

  function renderList(target, items) {
    while (target.firstChild) { target.removeChild(target.firstChild); }
    items.forEach(function (text) {
      var item = document.createElement("li");
      item.textContent = text;
      target.appendChild(item);
    });
  }

  function clearNodeStates() {
    [nodeControl, nodeExecutor, nodeHydraulic, nodeRoom].forEach(function (node) {
      node.classList.remove("is-watch");
      node.classList.remove("is-conflict");
    });
  }

  function sourceName(value) {
    if (value === "heatpump") { return "Pompa ciepła"; }
    if (value === "condensing") { return "Kocioł kondensacyjny"; }
    if (value === "pellet") { return "Kocioł na pellet"; }
    return "Źródło do ustalenia";
  }

  function analyze() {
    var good = [];
    var checks = [];
    var conflicts = [];
    var order = [];
    var sourceLabel = sourceName(source.value);

    clearNodeStates();
    flowInput.textContent = "Temperatura zewnętrzna";
    flowControl.textContent = "Pogodówka: " + sourceLabel;

    if (direct.value === "yes") {
      flowExecutor.textContent = "Bezpośrednia modulacja źródła";
      flowExecutorNote.textContent = "źródło realizuje niską temperaturę zasilania";
      addUnique(good, "Źródło ma potwierdzoną możliwość bezpośredniego prowadzenia niskiej temperatury.");
    } else if (direct.value === "no") {
      flowExecutor.textContent = "Potrzebny obieg niższej temperatury";
      flowExecutorNote.textContent = "temperaturę musi realizować właściwy element wykonawczy";
      nodeExecutor.classList.add("is-watch");
    } else {
      flowExecutor.textContent = "Sposób wykonania do potwierdzenia";
      flowExecutorNote.textContent = "sprawdź dokumentację i zatwierdzony schemat źródła";
      nodeExecutor.classList.add("is-watch");
      addUnique(checks, "Potwierdź, czy źródło może bezpośrednio modulować wymagany niski parametr.");
    }

    if (mixer.value === "weather") {
      flowExecutor.textContent = "Mieszacz z siłownikiem pogodowym";
      flowExecutorNote.textContent = "regulator obiegu realizuje zadaną temperaturę";
      addUnique(good, "Mieszacz ma siłownik i może realizować temperaturę zależną od warunków zewnętrznych.");
      if (direct.value === "yes") {
        if (system.value === "floor") {
          addUnique(conflicts, "Przy jednym obiegu podłogowym mieszacz może dublować bezpośrednią modulację źródła.");
          nodeExecutor.classList.add("is-conflict");
        } else {
          addUnique(checks, "Potwierdź, czy źródło i mieszacz prowadzą różne obiegi, a nie korygują tej samej temperatury.");
        }
      }
    } else if (mixer.value === "fixed") {
      flowExecutor.textContent = "Mieszacz ze stałą nastawą";
      flowExecutorNote.textContent = "nie realizuje pełnej zmiennej temperatury pogodowej";
      nodeExecutor.classList.add("is-watch");
      addUnique(checks, "Stała nastawa mieszacza może przenieść regulację na częste zamykanie stref.");
      if (direct.value === "no") {
        addUnique(conflicts, "Źródło nie prowadzi niskiej temperatury, a mieszacz nie realizuje krzywej pogodowej obiegu.");
        nodeExecutor.classList.add("is-conflict");
      }
    } else if (mixer.value === "unknown") {
      flowExecutor.textContent = "Mieszacz do identyfikacji";
      flowExecutorNote.textContent = "sprawdź zawór, siłownik, czujnik i regulator";
      nodeExecutor.classList.add("is-watch");
      addUnique(checks, "Zidentyfikuj zawór mieszający oraz sposób sterowania jego siłownikiem.");
    } else {
      if (direct.value === "no") {
        addUnique(conflicts, "Brakuje potwierdzonego elementu, który zrealizuje niską temperaturę obiegu podłogowego.");
        nodeExecutor.classList.add("is-conflict");
      }
      if (direct.value === "yes") {
        addUnique(good, "Brak mieszacza może być logiczny, jeżeli to źródło bezpośrednio prowadzi jedyny obieg niskotemperaturowy.");
      }
    }

    if (system.value === "mixed") {
      flowHydraulic.textContent = "Oddzielne obiegi: podłoga i grzejniki";
      flowHydraulicNote.textContent = "sprawdź temperatury, pompy, priorytety i rozdzielenie";
      nodeHydraulic.classList.add("is-watch");
      addUnique(checks, "Ustal osobne wymagane temperatury i sposób koordynacji obiegu podłogowego z grzejnikowym.");
      if (mixer.value === "weather") {
        addUnique(good, "Osobny pogodowy obieg mieszany może prawidłowo obsługiwać podłogówkę w instalacji mieszanej.");
      }
    } else if (system.value === "multi") {
      flowHydraulic.textContent = "Kilka obiegów podłogowych";
      flowHydraulicNote.textContent = "porównaj wymagane temperatury i punkty pracy pomp";
      addUnique(checks, "Sprawdź, czy wszystkie obiegi mogą pracować według tej samej krzywej i temperatury projektowej.");
    } else {
      flowHydraulic.textContent = "Jeden obieg podłogowy";
      flowHydraulicNote.textContent = "rozdzielacz, pompa i przepływy według projektu";
      addUnique(good, "Jeden poziom temperatury ułatwia zbudowanie czytelnej hierarchii sterowania.");
    }

    if (separator.value === "buffer") {
      addUnique(checks, "Zweryfikuj pojemność, temperatury, miejsce czujników i logikę ładowania bufora.");
      flowHydraulicNote.textContent += "; w układzie jest bufor";
    } else if (separator.value === "separator") {
      addUnique(checks, "Sprawdź bilans przepływów po obu stronach sprzęgła i położenie czujnika temperatury obiegu.");
      flowHydraulicNote.textContent += "; w układzie jest sprzęgło";
    } else if (separator.value === "unknown") {
      addUnique(checks, "Zidentyfikuj bufor, sprzęgło lub inne rozdzielenie hydrauliczne przed ustawianiem pomp.");
      nodeHydraulic.classList.add("is-watch");
    }

    if (zones.value === "none") {
      flowRoom.textContent = "Brak zamykanych stref";
      flowRoomNote.textContent = "temperaturę pomieszczeń prowadzi głównie układ pogodowy";
      addUnique(good, "Brak zamykania pętli ogranicza ryzyko nagłej utraty przepływu.");
    } else if (zones.value === "few") {
      flowRoom.textContent = "Kilka stref korygujących";
      flowRoomNote.textContent = "lokalne zyski i odmienne nastawy bez przejmowania całej regulacji";
      addUnique(good, "Kilka świadomie dobranych stref może korygować lokalne odchylenia.");
    } else if (zones.value === "many") {
      flowRoom.textContent = "Większość pętli może się zamknąć";
      flowRoomNote.textContent = "warunki przepływu zmieniają się dynamicznie";
      nodeRoom.classList.add("is-watch");
      nodeHydraulic.classList.add("is-watch");
      addUnique(checks, "Sprawdź reakcję pompy i źródła, gdy większość siłowników jest zamknięta.");
      if (minflow.value === "no") {
        addUnique(conflicts, "Wiele pętli może się zamknąć, a minimalny przepływ źródła nie jest zapewniony.");
        nodeHydraulic.classList.add("is-conflict");
        nodeRoom.classList.add("is-conflict");
      } else if (minflow.value === "unknown") {
        addUnique(checks, "Ustal minimalny przepływ i objętość wodną przed uruchomieniem wszystkich termostatów.");
      }
    } else {
      flowRoom.textContent = "Sterowanie strefowe do identyfikacji";
      flowRoomNote.textContent = "sprawdź przypisanie termostatów, listwy i siłowników";
      nodeRoom.classList.add("is-watch");
      addUnique(checks, "Zidentyfikuj liczbę stref oraz pętle zamykane przez każdy termostat.");
    }

    if (minflow.value === "yes") {
      addUnique(good, "Minimalny przepływ i wymagana objętość źródła zostały sprawdzone.");
    } else if (minflow.value === "no") {
      addUnique(conflicts, "Źródło nie ma zapewnionego wymaganego minimalnego przepływu lub objętości.");
      nodeHydraulic.classList.add("is-conflict");
    } else {
      addUnique(checks, "Sprawdź w dokumentacji źródła minimalny przepływ, objętość i zachowanie przy zamkniętych strefach.");
      nodeHydraulic.classList.add("is-watch");
    }

    if (room.value === "none") {
      addUnique(good, "Brak wpływu pokojowego upraszcza pierwsze strojenie samej krzywej.");
    } else if (room.value === "limit") {
      addUnique(good, "Łagodna korekta pokojowa może ograniczać lokalne zyski bez przejmowania regulacji zasilania.");
    } else if (room.value === "strong") {
      nodeControl.classList.add("is-watch");
      nodeRoom.classList.add("is-watch");
      addUnique(checks, "Silny wpływ pokojowy może rozhuśtać temperaturę zasilania; sprawdź jego wagę i miejsce czujnika.");
      if (zones.value === "many") {
        addUnique(conflicts, "Silna korekta centralna i agresywne zamykanie wielu stref mogą tworzyć sprzeczne polecenia.");
        nodeControl.classList.add("is-conflict");
        nodeRoom.classList.add("is-conflict");
      }
    } else {
      addUnique(checks, "Ustal, czy czujnik pokojowy tylko ogranicza grzanie, przesuwa krzywą czy wyłącza obieg.");
      nodeControl.classList.add("is-watch");
    }

    if (source.value === "heatpump") {
      addUnique(checks, "Potwierdź logikę odszraniania, grzałki, minimalnej objętości i zgłaszania zapotrzebowania pompy ciepła.");
    } else if (source.value === "condensing") {
      addUnique(checks, "Potwierdź minimalną moc modulacji kotła i sposób zgłaszania zapotrzebowania przez obiegi.");
    } else if (source.value === "pellet") {
      addUnique(checks, "Sprawdź ochronę powrotu, odbiór energii, modulację oraz zasadność i sterowanie buforem.");
    } else {
      addUnique(checks, "Ustal typ źródła, jego zakres temperatur, minimalny przepływ i dopuszczone schematy.");
    }

    addUnique(order, "Porównaj schemat rzeczywisty z dokumentacją źródła i regulatora.");

    if (symptom.value === "coldfrost") {
      addUnique(checks, "Cały dom chłodny przy mrozie może wskazywać zbyt niski zimny punkt, ale najpierw potwierdź moc i przepływy.");
      addUnique(order, "Sprawdź temperaturę zasilania i powrotu oraz przepływy przy zimnej pogodzie.");
      addUnique(order, "Porównaj moc dostępną z podłogi z obciążeniem pomieszczeń.");
      addUnique(order, "Jeżeli hydraulika i moc są prawidłowe, koryguj zimny koniec krzywej.");
    } else if (symptom.value === "warmmild") {
      addUnique(checks, "Przegrzewanie przy łagodnej pogodzie kieruje uwagę na ciepły punkt, granicę grzania i pomiar zewnętrzny.");
      addUnique(order, "Sprawdź wiarygodność temperatury zewnętrznej i granicę wyłączenia grzania.");
      addUnique(order, "Porównaj zadaną i rzeczywistą temperaturę zasilania.");
      addUnique(order, "Koryguj ciepły koniec lub poziom dopiero po wykluczeniu zysków lokalnych.");
    } else if (symptom.value === "onecold") {
      addUnique(checks, "Jedno chłodne pomieszczenie wskazuje najpierw na problem lokalny, nie na globalną krzywą.");
      addUnique(order, "Sprawdź termostat, siłownik i przypisanie właściwej pętli.");
      addUnique(order, "Sprawdź przepływ, odpowietrzenie, długość pętli i temperaturę powierzchni.");
      addUnique(order, "Porównaj obciążenie pomieszczenia z czynną powierzchnią podłogi.");
    } else if (symptom.value === "solar") {
      addUnique(checks, "Pogodówka nie widzi bezpośrednio lokalnych zysków słonecznych w pomieszczeniu.");
      addUnique(order, "Sprawdź miejsce czujnika pokojowego i przypisanie strefy nasłonecznionej.");
      addUnique(order, "Oceń bezwładność podłogi i moment ograniczania przepływu.");
      addUnique(order, "Dopiero później zwiększaj wpływ pokojowy lub wprowadzaj funkcję predykcyjną.");
    } else if (symptom.value === "cycling") {
      addUnique(checks, "Taktowanie wymaga sprawdzenia minimalnej mocy, przepływu, objętości i liczby zamkniętych pętli.");
      addUnique(order, "Zapisz czas pracy i postoju oraz liczbę otwartych stref.");
      addUnique(order, "Porównaj przepływ instalacji z minimalnym wymaganiem źródła.");
      addUnique(order, "Sprawdź moc minimalną, histerezę i logikę bufora lub sprzęgła.");
    } else if (symptom.value === "unstable") {
      addUnique(checks, "Wahania wielu pomieszczeń mogą wynikać z nakładania się korekty pogodowej, pokojowej i strefowej.");
      addUnique(order, "Na czas testu uprość sterowanie i usuń duże harmonogramy.");
      addUnique(order, "Sprawdź, który regulator zmienia źródło, mieszacz, pompę i siłowniki.");
      addUnique(order, "Przywracaj korekty pojedynczo, obserwując pełną reakcję podłogi.");
    } else {
      addUnique(order, "Potwierdź projektowe temperatury i przepływy każdego obiegu.");
      addUnique(order, "Uruchom układ bez dużych obniżeń i agresywnych korekt pokojowych.");
      addUnique(order, "Zapisuj pomiary i zmieniaj tylko jeden parametr naraz.");
    }

    if (good.length === 0) { addUnique(good, "Podział funkcji można uporządkować po uzupełnieniu danych o źródle i hydraulice."); }
    if (checks.length === 0) { addUnique(checks, "Porównaj przyjęte ustawienia z projektem oraz dokumentacją urządzeń."); }

    status.classList.remove("is-good");
    status.classList.remove("is-watch");
    status.classList.remove("is-conflict");

    if (conflicts.length > 0) {
      status.classList.add("is-conflict");
      statusIcon.textContent = "×";
      statusTitle.textContent = "W architekturze jest konflikt do rozwiązania";
      statusText.textContent = conflicts.join(" ");
      conflicts.forEach(function (item) { addUnique(checks, item); });
    } else if (checks.length > 4) {
      status.classList.add("is-watch");
      statusIcon.textContent = "!";
      statusTitle.textContent = "Kierunek jest możliwy, ale wymaga weryfikacji";
      statusText.textContent = "Najpierw potwierdź element wykonawczy, przepływy i zakres korekt pomieszczeń.";
    } else {
      status.classList.add("is-good");
      statusIcon.textContent = "✓";
      statusTitle.textContent = "Architektura funkcjonalna jest spójna";
      statusText.textContent = "Pozostaje nadać jej parametry wynikające z projektu i dokumentacji urządzeń.";
    }

    renderList(goodList, good);
    renderList(checkList, checks);
    renderList(orderList, order);
  }

  [source, system, direct, mixer, separator, zones, room, minflow, symptom].forEach(function (field) {
    field.addEventListener("change", analyze);
  });
  button.addEventListener("click", analyze);
  analyze();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">Sterowanie pogodowe w ogrzewaniu podłogowym – jak działa cały układ?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Spadek temperatury (ΔT): Różnica między temperaturą zasilania a powrotu.</title>
		<link>https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 09 Jan 2026 09:36:16 +0000</pubDate>
				<category><![CDATA[Hydraulika budowlana]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></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 instalacji]]></category>
		<category><![CDATA[Projekty instalacyjne]]></category>
		<category><![CDATA[Regulacja hydrauliczna]]></category>
		<category><![CDATA[Regulacja instalacji]]></category>
		<category><![CDATA[delta t]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kocioł kondensacyjny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[regulacja przepływu]]></category>
		<category><![CDATA[spadek temperatury]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3122</guid>

					<description><![CDATA[<p>Spadek temperatury (ΔT) to jeden z tych parametrów, które na pierwszy rzut oka wydają się czysto techniczne, ale w praktyce decydują o komforcie, rachunkach i trwałości całej instalacji. W artykule wyjaśniamy, czym dokładnie jest spadek temperatury (ΔT) w ogrzewaniu podłogowym, dlaczego projektanci przywiązują do niego tak dużą wagę oraz jak wpływa on na równomierność grzania, pracę pompy obiegowej i sprawność kotła lub pompy ciepła. To praktyczny przewodnik, który pozwala zrozumieć nie tylko teorię, ale i realne konsekwencje złych decyzji projektowych i regulacyjnych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Spadek temperatury (ΔT): Różnica między temperaturą zasilania a powrotu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-delta-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #28c9da;
    --rk-cyan-soft: #eafcff;
    --rk-orange: #ff7438;
    --rk-red: #e34837;
    --rk-green: #148369;
    --rk-green-soft: #eaf8f4;
    --rk-yellow: #f1b83d;
    --rk-yellow-soft: #fff9e8;
    --rk-ink: #1f2937;
    --rk-text: #465866;
    --rk-muted: #687986;
    --rk-line: #dce8ee;
    --rk-soft: #f5f9fb;
    --rk-warm: #fff4ed;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 70px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.76;
  }

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

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

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

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

  #rk-delta-guide a:hover,
  #rk-delta-guide a:focus-visible {
    color: var(--rk-red);
  }

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

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

  #rk-delta-guide h3 {
    margin-bottom: 12px;
    font-size: clamp(1.16rem, 2.5vw, 1.52rem);
  }

  #rk-delta-guide h4 {
    margin-bottom: 8px;
    font-size: 1.04rem;
    letter-spacing: -0.018em;
  }

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

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

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

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

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

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

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

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

  #rk-delta-guide .rk-delta-hero::before {
    content: "ΔT";
    position: absolute;
    z-index: -1;
    right: -30px;
    bottom: -95px;
    color: rgba(255, 255, 255, 0.045);
    font-size: clamp(12rem, 30vw, 27rem);
    font-weight: 950;
    letter-spacing: -0.1em;
    line-height: 1;
    pointer-events: none;
  }

  #rk-delta-guide .rk-delta-hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.17fr) minmax(270px, 0.83fr);
    gap: clamp(28px, 5vw, 62px);
    align-items: center;
  }

  #rk-delta-guide .rk-delta-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 23px;
    padding: 8px 15px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 999px;
    color: #9ef5ff;
    background: rgba(255, 255, 255, 0.06);
    font-size: 0.76rem;
    font-weight: 900;
    letter-spacing: 0.105em;
    line-height: 1.25;
    text-transform: uppercase;
  }

  #rk-delta-guide .rk-delta-eyebrow b {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 116, 56, 0.17);
  }

  #rk-delta-guide .rk-delta-hero-title {
    max-width: 800px;
    margin: 0 0 24px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5vw, 4rem);
    font-weight: 950;
    letter-spacing: -0.055em;
    line-height: 1.02;
  }

  #rk-delta-guide .rk-delta-hero-lead {
    max-width: 790px;
    margin-bottom: 26px;
    color: #dcecf4;
    font-size: clamp(1.02rem, 2.1vw, 1.24rem);
    line-height: 1.62;
  }

  #rk-delta-guide .rk-delta-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 22px;
    color: #c8d9e3;
    font-size: 0.82rem;
    font-weight: 780;
  }

  #rk-delta-guide .rk-delta-meta span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
  }

  #rk-delta-guide .rk-delta-meta i {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--rk-orange);
  }

  #rk-delta-guide .rk-delta-hero-panel {
    padding: 28px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 24px;
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.12);
    backdrop-filter: blur(7px);
  }

  #rk-delta-guide .rk-delta-hero-panel small {
    display: block;
    margin-bottom: 13px;
    color: #89effa;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-delta-guide .rk-delta-hero-temperatures {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    gap: 10px;
    align-items: center;
  }

  #rk-delta-guide .rk-delta-hero-temp {
    padding: 17px 10px;
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.09);
    text-align: center;
  }

  #rk-delta-guide .rk-delta-hero-temp span {
    display: block;
    color: #c7dae4;
    font-size: 0.66rem;
    font-weight: 850;
    text-transform: uppercase;
  }

  #rk-delta-guide .rk-delta-hero-temp strong {
    display: block;
    margin-top: 5px;
    color: var(--rk-white);
    font-size: 1.55rem;
    font-weight: 950;
  }

  #rk-delta-guide .rk-delta-hero-arrow {
    color: var(--rk-orange);
    font-size: 1.45rem;
    font-weight: 950;
  }

  #rk-delta-guide .rk-delta-hero-result {
    margin-top: 14px;
    padding: 15px;
    border-radius: 15px;
    color: var(--rk-white);
    background: rgba(40, 201, 218, 0.16);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 1.1rem;
    font-weight: 900;
    text-align: center;
  }

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

  #rk-delta-guide .rk-delta-nav a {
    flex: 0 0 auto;
    padding: 8px 13px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 0.74rem;
    font-weight: 880;
    text-decoration: none;
    white-space: nowrap;
  }

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

  #rk-delta-guide .rk-delta-body {
    padding: clamp(28px, 6vw, 70px);
  }

  #rk-delta-guide .rk-delta-section {
    margin-bottom: clamp(55px, 8vw, 94px);
  }

  #rk-delta-guide .rk-delta-section:last-child {
    margin-bottom: 0;
  }

  #rk-delta-guide .rk-delta-kicker {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-orange);
    font-size: 0.73rem;
    font-weight: 930;
    letter-spacing: 0.095em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-delta-guide .rk-delta-lead {
    max-width: 930px;
    font-size: 1.08rem;
    line-height: 1.82;
  }

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

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

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

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

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

  #rk-delta-guide .rk-delta-card {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-card-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    height: 48px;
    margin-bottom: 16px;
    padding: 0 12px;
    border-radius: 14px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.8rem;
    font-weight: 930;
  }

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

  #rk-delta-guide .rk-delta-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.12fr) minmax(270px, 0.88fr);
    gap: 22px;
    align-items: stretch;
    margin-top: 27px;
  }

  #rk-delta-guide .rk-delta-answer-main {
    padding: clamp(25px, 4vw, 40px);
    border: 1px solid #bddce7;
    border-radius: 23px;
    background: var(--rk-cyan-soft);
  }

  #rk-delta-guide .rk-delta-answer-main code {
    display: block;
    margin: 18px 0;
    color: var(--rk-dark);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(1.25rem, 3vw, 1.9rem);
    font-weight: 950;
    text-align: center;
  }

  #rk-delta-guide .rk-delta-answer-side {
    padding: clamp(25px, 4vw, 40px);
    border-radius: 23px;
    color: var(--rk-white);
    background: var(--rk-dark);
  }

  #rk-delta-guide .rk-delta-answer-side h3 {
    color: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-answer-side p {
    color: #d6e7ef;
  }

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

  #rk-delta-guide .rk-delta-note,
  #rk-delta-guide .rk-delta-warning,
  #rk-delta-guide .rk-delta-success,
  #rk-delta-guide .rk-delta-danger {
    margin-top: 22px;
    padding: 20px 22px;
    border-left: 6px solid var(--rk-blue);
    border-radius: 9px 17px 17px 9px;
    background: var(--rk-cyan-soft);
  }

  #rk-delta-guide .rk-delta-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-delta-guide .rk-delta-success {
    border-left-color: var(--rk-green);
    background: var(--rk-green-soft);
  }

  #rk-delta-guide .rk-delta-danger {
    border-left-color: var(--rk-red);
    background: #fff1ef;
  }

  #rk-delta-guide .rk-delta-note p:last-child,
  #rk-delta-guide .rk-delta-warning p:last-child,
  #rk-delta-guide .rk-delta-success p:last-child,
  #rk-delta-guide .rk-delta-danger p:last-child {
    margin-bottom: 0;
  }

  #rk-delta-guide .rk-delta-correction {
    overflow: hidden;
    border: 1px solid #efc9b9;
    border-radius: 24px;
    background: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-correction-head {
    padding: 27px clamp(25px, 5vw, 45px);
    background: var(--rk-warm);
  }

  #rk-delta-guide .rk-delta-correction-head h2 {
    margin-bottom: 8px;
  }

  #rk-delta-guide .rk-delta-correction-head p {
    margin-bottom: 0;
  }

  #rk-delta-guide .rk-delta-correction-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1px;
    background: var(--rk-line);
  }

  #rk-delta-guide .rk-delta-correction-item {
    padding: 24px;
    background: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-correction-item b {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    margin-bottom: 13px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-orange);
    font-size: 0.76rem;
  }

  #rk-delta-guide .rk-delta-correction-item p:last-child {
    margin-bottom: 0;
  }

  #rk-delta-guide .rk-delta-lab {
    overflow: hidden;
    border: 1px solid #b9dce7;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 24px 62px rgba(16, 37, 54, 0.12);
  }

  #rk-delta-guide .rk-delta-lab-head {
    padding: clamp(30px, 5vw, 54px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 5%, rgba(255, 116, 56, 0.34), transparent 28%),
      linear-gradient(125deg, var(--rk-dark), #174b63);
  }

  #rk-delta-guide .rk-delta-lab-head h2 {
    max-width: 870px;
    margin-bottom: 13px;
    color: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-lab-head p {
    max-width: 910px;
    margin-bottom: 0;
    color: #d7e9f1;
  }

  #rk-delta-guide .rk-delta-lab-layout {
    display: grid;
    grid-template-columns: minmax(315px, 0.84fr) minmax(0, 1.16fr);
  }

  #rk-delta-guide .rk-delta-controls {
    padding: clamp(25px, 4vw, 40px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

  #rk-delta-guide .rk-delta-control {
    margin-bottom: 21px;
  }

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

  #rk-delta-guide .rk-delta-control label {
    display: block;
    margin-bottom: 8px;
    color: var(--rk-dark);
    font-size: 0.82rem;
    font-weight: 880;
    line-height: 1.45;
  }

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

  #rk-delta-guide .rk-delta-control input,
  #rk-delta-guide .rk-delta-control select {
    display: block;
    width: 100%;
    min-height: 49px;
    padding: 9px 12px;
    border: 1px solid #bfd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-weight: 780;
    outline: none;
  }

  #rk-delta-guide .rk-delta-control input:focus,
  #rk-delta-guide .rk-delta-control select:focus {
    border-color: var(--rk-blue);
    box-shadow: 0 0 0 4px rgba(7, 143, 190, 0.12);
  }

  #rk-delta-guide .rk-delta-results {
    min-width: 0;
    padding: clamp(25px, 4vw, 40px);
  }

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

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

  #rk-delta-guide .rk-delta-result-card.is-main {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: linear-gradient(135deg, var(--rk-blue), #0a718f);
  }

  #rk-delta-guide .rk-delta-result-card small {
    display: block;
    margin-bottom: 6px;
    color: var(--rk-muted);
    font-size: 0.66rem;
    font-weight: 880;
    letter-spacing: 0.045em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-delta-guide .rk-delta-result-card.is-main small {
    color: #caf6ff;
  }

  #rk-delta-guide .rk-delta-result-number {
    overflow-wrap: anywhere;
    color: var(--rk-dark);
    font-size: clamp(1.32rem, 2.8vw, 1.95rem);
    font-weight: 950;
    letter-spacing: -0.04em;
    line-height: 1.1;
  }

  #rk-delta-guide .rk-delta-result-card.is-main .rk-delta-result-number {
    color: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-status {
    margin-top: 18px;
    padding: 18px 20px;
    border-left: 5px solid var(--rk-blue);
    border-radius: 8px 15px 15px 8px;
    background: var(--rk-cyan-soft);
  }

  #rk-delta-guide .rk-delta-status.is-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-delta-guide .rk-delta-status.is-danger {
    border-left-color: var(--rk-red);
    background: #fff1ef;
  }

  #rk-delta-guide .rk-delta-status.is-success {
    border-left-color: var(--rk-green);
    background: var(--rk-green-soft);
  }

  #rk-delta-guide .rk-delta-status strong,
  #rk-delta-guide .rk-delta-status span {
    display: block;
  }

  #rk-delta-guide .rk-delta-status span {
    margin-top: 5px;
    color: var(--rk-text);
    font-size: 0.8rem;
    line-height: 1.58;
  }

  #rk-delta-guide .rk-delta-chart {
    margin-top: 24px;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-chart h3 {
    margin-bottom: 5px;
    font-size: 1.14rem;
  }

  #rk-delta-guide .rk-delta-chart p {
    margin-bottom: 16px;
    font-size: 0.76rem;
  }

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

  #rk-delta-guide .rk-delta-chart-grid {
    stroke: #d8e6ec;
    stroke-width: 1;
  }

  #rk-delta-guide .rk-delta-chart-axis {
    stroke: #6f8795;
    stroke-width: 1.5;
  }

  #rk-delta-guide .rk-delta-chart-label {
    fill: #5f7380;
    font-size: 13px;
    font-weight: 700;
  }

  #rk-delta-guide .rk-delta-chart-area {
    fill: rgba(40, 201, 218, 0.12);
  }

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

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

  #rk-delta-guide .rk-delta-inline-cta {
    padding: clamp(27px, 4vw, 43px);
    border-top: 1px solid rgba(255, 255, 255, 0.14);
    color: var(--rk-white);
    background: var(--rk-dark);
  }

  #rk-delta-guide .rk-delta-inline-cta h3 {
    margin-bottom: 9px;
    color: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-inline-cta p {
    color: #d7e8ef;
  }

  #rk-delta-guide .rk-delta-cta-button {
    display: flex;
    width: 100%;
    min-height: 62px;
    align-items: center;
    justify-content: center;
    margin-top: 21px;
    padding: 15px 22px;
    border-radius: 16px;
    color: var(--rk-white);
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-red));
    box-shadow: 0 16px 36px rgba(227, 72, 55, 0.28);
    font-weight: 950;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-delta-guide .rk-delta-cta-button:hover,
  #rk-delta-guide .rk-delta-cta-button:focus-visible {
    color: var(--rk-white);
    background: linear-gradient(90deg, var(--rk-red), var(--rk-orange));
    transform: translateY(-1px);
  }

  #rk-delta-guide .rk-delta-disclosure {
    display: block;
    margin-top: 11px;
    color: #bcd1dc;
    font-size: 0.69rem;
    line-height: 1.5;
    text-align: center;
  }

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

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

  #rk-delta-guide .rk-delta-formula span {
    display: block;
    margin-bottom: 8px;
    color: var(--rk-orange);
    font-size: 0.7rem;
    font-weight: 930;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-delta-guide .rk-delta-formula code {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-dark);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.91rem;
    font-weight: 850;
    line-height: 1.55;
    white-space: normal;
  }

  #rk-delta-guide .rk-delta-formula p {
    margin-bottom: 0;
    font-size: 0.79rem;
    line-height: 1.62;
  }

  #rk-delta-guide .rk-delta-table-wrap {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
  }

  #rk-delta-guide table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    table-layout: fixed;
  }

  #rk-delta-guide th,
  #rk-delta-guide td {
    padding: 15px 17px;
    border: 0;
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-text);
    text-align: left;
    vertical-align: top;
  }

  #rk-delta-guide th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.74rem;
    font-weight: 900;
    line-height: 1.4;
  }

  #rk-delta-guide td {
    font-size: 0.84rem;
    line-height: 1.55;
  }

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

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

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

  #rk-delta-guide .rk-delta-diagnostic {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-diagnostic-head {
    padding: 17px 20px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-weight: 900;
  }

  #rk-delta-guide .rk-delta-diagnostic.is-hot .rk-delta-diagnostic-head {
    background: var(--rk-orange);
  }

  #rk-delta-guide .rk-delta-diagnostic.is-danger .rk-delta-diagnostic-head {
    background: var(--rk-red);
  }

  #rk-delta-guide .rk-delta-diagnostic-body {
    padding: 20px;
  }

  #rk-delta-guide .rk-delta-diagnostic-body p:last-child {
    margin-bottom: 0;
  }

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

  #rk-delta-guide .rk-delta-step {
    position: relative;
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-soft);
    counter-increment: rk-delta-step;
  }

  #rk-delta-guide .rk-delta-step::before {
    content: counter(rk-delta-step, decimal-leading-zero);
    display: inline-flex;
    width: 46px;
    height: 46px;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    border-radius: 14px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.76rem;
    font-weight: 930;
  }

  #rk-delta-guide .rk-delta-step p:last-child {
    margin-bottom: 0;
  }

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

  #rk-delta-guide .rk-delta-checklist li {
    position: relative;
    margin: 0;
    padding: 17px 18px 17px 52px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    color: var(--rk-text);
    background: var(--rk-soft);
    font-size: 0.84rem;
    line-height: 1.6;
  }

  #rk-delta-guide .rk-delta-checklist li::before {
    content: "✓";
    position: absolute;
    top: 17px;
    left: 17px;
    display: inline-flex;
    width: 24px;
    height: 24px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    font-size: 0.72rem;
    font-weight: 950;
  }

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

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

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

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

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

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

  #rk-delta-guide .rk-delta-faq-answer {
    padding: 18px 20px;
  }

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

  #rk-delta-guide .rk-delta-sources {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
    font-size: 0.76rem;
    line-height: 1.65;
  }

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

  #rk-delta-guide .rk-delta-author {
    overflow: hidden;
    margin-bottom: clamp(55px, 8vw, 90px);
    border: 1px solid #bdd9e5;
    border-radius: 27px;
    background: var(--rk-white);
    box-shadow: 0 22px 50px rgba(16, 37, 54, 0.09);
  }

  #rk-delta-guide .rk-delta-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
  }

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

  #rk-delta-guide .rk-delta-author-head h2 {
    margin-bottom: 7px;
    color: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-author-head p {
    margin-bottom: 0;
    color: #d5e7ef;
  }

  #rk-delta-guide .rk-delta-author-mark {
    flex: 0 0 auto;
    padding: 10px 15px;
    border: 1px solid rgba(40, 201, 218, 0.38);
    border-radius: 15px;
    color: #6aefff;
    font-size: 0.75rem;
    font-weight: 950;
    letter-spacing: 0.08em;
    white-space: nowrap;
  }

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

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

  #rk-delta-guide .rk-delta-author-photo {
    width: 184px;
    height: 184px;
    margin: 0 auto 21px;
    overflow: hidden;
    border: 8px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 14px 34px rgba(16, 37, 54, 0.15);
  }

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

  #rk-delta-guide .rk-delta-author-name {
    color: var(--rk-dark);
    font-size: 1.35rem;
    font-weight: 950;
    letter-spacing: -0.035em;
  }

  #rk-delta-guide .rk-delta-author-role {
    margin-top: 6px;
    color: var(--rk-blue);
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.06em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-delta-guide .rk-delta-author-main {
    min-width: 0;
    padding: 34px 38px 38px;
  }

  #rk-delta-guide .rk-delta-author-quote {
    margin: 0 0 26px;
    padding: 23px 25px 23px 72px;
    border: 0;
    border-radius: 19px;
    background: var(--rk-cyan-soft);
  }

  #rk-delta-guide .rk-delta-author-quote::before {
    content: "“";
    position: absolute;
    margin: -15px 0 0 -49px;
    color: var(--rk-cyan);
    font-size: 3.7rem;
    font-weight: 950;
    line-height: 1;
  }

  #rk-delta-guide .rk-delta-author-quote p {
    margin-bottom: 0;
    color: var(--rk-dark);
    font-style: italic;
    font-weight: 820;
  }

  #rk-delta-guide .rk-delta-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    margin-bottom: 0;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 15px 15px 0 0;
  }

  #rk-delta-guide .rk-delta-author-tab {
    padding: 14px 10px;
    color: var(--rk-muted);
    background: var(--rk-soft);
    font-size: 0.73rem;
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-transform: uppercase;
    cursor: pointer;
  }

  #rk-delta-guide .rk-delta-author-tab + .rk-delta-author-tab {
    border-left: 1px solid var(--rk-line);
  }

  #rk-delta-guide .rk-delta-author-panel {
    display: none;
    min-height: 168px;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 15px 15px;
  }

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

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

  #rk-delta-author-about:checked ~ .rk-delta-author-layout label[for="rk-delta-author-about"],
  #rk-delta-author-exp:checked ~ .rk-delta-author-layout label[for="rk-delta-author-exp"],
  #rk-delta-author-sites:checked ~ .rk-delta-author-layout label[for="rk-delta-author-sites"] {
    color: var(--rk-blue);
    background: var(--rk-white);
    box-shadow: inset 0 -5px 0 var(--rk-blue);
  }

  #rk-delta-guide .rk-delta-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
  }

  #rk-delta-guide .rk-delta-site-links a {
    padding: 8px 13px;
    border: 1px solid #c6dbe4;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.75rem;
    font-weight: 900;
    text-decoration: none;
  }

  #rk-delta-guide .rk-delta-site-links a:hover,
  #rk-delta-guide .rk-delta-site-links a:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-delta-guide .rk-delta-final-cta {
    overflow: hidden;
    border-radius: 27px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 92% 15%, rgba(255, 116, 56, 0.38), transparent 28%),
      linear-gradient(125deg, var(--rk-dark), #15465e);
  }

  #rk-delta-guide .rk-delta-final-cta-content {
    padding: clamp(30px, 5vw, 53px);
  }

  #rk-delta-guide .rk-delta-final-cta h2 {
    max-width: 900px;
    margin-bottom: 13px;
    color: var(--rk-white);
  }

  #rk-delta-guide .rk-delta-final-cta p {
    max-width: 920px;
    color: #d8e9f1;
  }

  @media (max-width: 980px) {
    #rk-delta-guide .rk-delta-hero-grid,
    #rk-delta-guide .rk-delta-answer,
    #rk-delta-guide .rk-delta-lab-layout,
    #rk-delta-guide .rk-delta-author-layout {
      grid-template-columns: 1fr;
    }

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

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

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

  @media (max-width: 720px) {
    #rk-delta-guide {
      margin-top: 20px;
      font-size: 16px;
    }

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

    #rk-delta-guide .rk-delta-hero,
    #rk-delta-guide .rk-delta-body {
      padding: 27px 19px;
    }

    #rk-delta-guide .rk-delta-grid-2,
    #rk-delta-guide .rk-delta-grid-3,
    #rk-delta-guide .rk-delta-grid-4,
    #rk-delta-guide .rk-delta-result-grid,
    #rk-delta-guide .rk-delta-formulas,
    #rk-delta-guide .rk-delta-diagnostic-grid,
    #rk-delta-guide .rk-delta-steps,
    #rk-delta-guide .rk-delta-checklist,
    #rk-delta-guide .rk-delta-correction-grid {
      grid-template-columns: 1fr;
    }

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

    #rk-delta-guide .rk-delta-author-mark {
      display: inline-block;
      margin-top: 16px;
    }

    #rk-delta-guide .rk-delta-author-main {
      padding: 25px 18px 28px;
    }

    #rk-delta-guide .rk-delta-author-quote {
      padding: 22px;
    }

    #rk-delta-guide .rk-delta-author-quote::before {
      display: none;
    }

    #rk-delta-guide .rk-delta-author-tabs {
      grid-template-columns: 1fr;
      border-radius: 14px 14px 0 0;
    }

    #rk-delta-guide .rk-delta-author-tab + .rk-delta-author-tab {
      border-top: 1px solid var(--rk-line);
      border-left: 0;
    }

    #rk-delta-guide .rk-delta-table-wrap {
      overflow: visible;
      border: 0;
      border-radius: 0;
    }

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

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

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

    #rk-delta-guide td,
    #rk-delta-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(115px, 0.75fr) minmax(0, 1.25fr);
      gap: 12px;
      padding: 12px 14px;
      background: var(--rk-white);
    }

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

  @media (max-width: 430px) {
    #rk-delta-guide .rk-delta-hero-temperatures {
      grid-template-columns: 1fr;
    }

    #rk-delta-guide .rk-delta-hero-arrow {
      transform: rotate(90deg);
      text-align: center;
    }

    #rk-delta-guide td,
    #rk-delta-guide tbody tr:nth-child(even) td {
      grid-template-columns: 1fr;
      gap: 4px;
    }
  }

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

<article id="rk-delta-guide" data-rk-delta-version="2026-08-26" aria-label="Spadek temperatury ΔT w ogrzewaniu podłogowym">
  <div class="rk-delta-shell">
    <div class="rk-delta-progress-track" aria-hidden="true"><div class="rk-delta-progress"></div></div>

    <header class="rk-delta-hero">
      <div class="rk-delta-hero-grid">
        <div>
          <span class="rk-delta-eyebrow"><b aria-hidden="true"></b> Hydraulika ogrzewania • analiza techniczna 2026</span>
          <div class="rk-delta-hero-title" role="heading" aria-level="2">Spadek temperatury ΔT między zasilaniem a powrotem</div>
          <p class="rk-delta-hero-lead">Dowiedz się, co naprawdę pokazuje różnica temperatur, jak obliczyć wymagany przepływ oraz dlaczego małego lub dużego ΔT nie wolno oceniać bez mocy, stanu pracy i miejsca pomiaru.</p>
          <div class="rk-delta-meta">
            <span><i aria-hidden="true"></i> Autor: Robert Kucharski</span>
            <span><i aria-hidden="true"></i> Aktualizacja: 26 sierpnia 2026 r.</span>
            <span><i aria-hidden="true"></i> Czas czytania: ok. 17 minut</span>
          </div>
        </div>

        <aside class="rk-delta-hero-panel" aria-label="Przykład obliczenia różnicy temperatur">
          <small>Najprostszy przykład</small>
          <div class="rk-delta-hero-temperatures">
            <div class="rk-delta-hero-temp"><span>Zasilanie</span><strong>35°C</strong></div>
            <div class="rk-delta-hero-arrow" aria-hidden="true">→</div>
            <div class="rk-delta-hero-temp"><span>Powrót</span><strong>28°C</strong></div>
          </div>
          <div class="rk-delta-hero-result">ΔT = 35 − 28 = 7 K</div>
        </aside>
      </div>
    </header>

    <nav class="rk-delta-nav" aria-label="Spis treści artykułu">
      <a href="#rk-delta-answer">Szybka odpowiedź</a>
      <a href="#rk-delta-corrections">Ważne korekty</a>
      <a href="#rk-delta-lab">Laboratorium ΔT</a>
      <a href="#rk-delta-formulas">Wzory</a>
      <a href="#rk-delta-sources">Źródła ciepła</a>
      <a href="#rk-delta-diagnostics">Diagnostyka</a>
      <a href="#rk-delta-regulation">Regulacja</a>
      <a href="#rk-delta-faq">FAQ</a>
      <a href="#rk-delta-author">Autor</a>
    </nav>

    <div class="rk-delta-body">
      <section class="rk-delta-section" id="rk-delta-answer">
        <span class="rk-delta-kicker">Odpowiedź bez skrótów myślowych</span>
        <h2>Co oznacza spadek temperatury ΔT?</h2>
        <p class="rk-delta-lead rk-delta-dropcap"><strong>Spadek temperatury ΔT</strong> jest różnicą między temperaturą czynnika wpływającego do analizowanego odcinka instalacji a temperaturą czynnika z niego wypływającego. W pętli ogrzewania podłogowego pokazuje, o ile woda ochłodziła się podczas oddawania energii do podłogi. Sam wynik nie mówi jednak, czy instalacja działa prawidłowo — trzeba znać również moc, przepływ, temperaturę pomieszczenia, stan pracy oraz punkt wykonania pomiaru.</p>

        <div class="rk-delta-answer">
          <div class="rk-delta-answer-main">
            <h3>Podstawowy wzór</h3>
            <code>ΔT = T<sub>z</sub> − T<sub>p</sub></code>
            <p>Temperaturę zasilania i powrotu podajemy w stopniach Celsjusza, natomiast ich różnicę technicznie zapisujemy w kelwinach. Różnica 5°C ma tę samą wartość liczbową co 5 K.</p>
          </div>
          <div class="rk-delta-answer-side">
            <h3>Najważniejszy wniosek</h3>
            <p><strong style="color:#fff">ΔT jest wynikiem relacji mocy i przepływu.</strong> Dla tej samej przekazywanej mocy zmniejszenie delty wymaga zwiększenia przepływu.</p>
            <p>Dlatego nie ustawia się instalacji „na 5 K” bez znajomości obliczeniowego przepływu.</p>
          </div>
        </div>

        <div class="rk-delta-grid-4" style="margin-top:22px">
          <article class="rk-delta-card"><span class="rk-delta-card-number">Tz</span><h3>Temperatura zasilania</h3><p>Temperatura wody wchodzącej do źródła, rozdzielacza albo konkretnej pętli — zależnie od punktu pomiaru.</p></article>
          <article class="rk-delta-card"><span class="rk-delta-card-number">Tp</span><h3>Temperatura powrotu</h3><p>Temperatura wody wracającej z dokładnie tego samego analizowanego fragmentu instalacji.</p></article>
          <article class="rk-delta-card"><span class="rk-delta-card-number">ΔT</span><h3>Różnica temperatur</h3><p>Wartość zależna od odbieranej mocy i wielkości przepływu, mierzona dopiero po stabilizacji układu.</p></article>
          <article class="rk-delta-card"><span class="rk-delta-card-number">Tśr</span><h3>Średnia temperatura wody</h3><p>Uproszczone przybliżenie `(Tz + Tp) / 2`, ważne przy ocenie warunków oddawania ciepła.</p></article>
        </div>
      </section>

      <section class="rk-delta-section" id="rk-delta-corrections">
        <div class="rk-delta-correction">
          <div class="rk-delta-correction-head">
            <span class="rk-delta-kicker">Cztery ważne rozróżnienia</span>
            <h2>Małe ΔT nie zawsze oznacza dobrą instalację, a duże ΔT nie zawsze oznacza awarię</h2>
            <p>Różnicę temperatur trzeba interpretować w kontekście. Poniższe zasady eliminują najczęstsze błędy diagnostyczne.</p>
          </div>
          <div class="rk-delta-correction-grid">
            <article class="rk-delta-correction-item"><b>01</b><h3>Powrót a sama delta</h3><p>Przy stałym zasilaniu większe ΔT oznacza niższą temperaturę powrotu: dla 35°C i 5 K powrót ma 30°C, a dla 10 K — 25°C.</p></article>
            <article class="rk-delta-correction-item"><b>02</b><h3>Przepływ a delta</h3><p>Przy stałej mocy dwukrotne zmniejszenie ΔT wymaga około dwukrotnie większego przepływu. Wzrosną wtedy opory hydrauliczne i zapotrzebowanie pompy obiegowej.</p></article>
            <article class="rk-delta-correction-item"><b>03</b><h3>Rozruch a stan ustalony</h3><p>Podczas nagrzewania zimnego jastrychu delta może być wysoka i dynamiczna. Taki odczyt nie powinien być porównywany bezpośrednio z wartością projektową.</p></article>
            <article class="rk-delta-correction-item"><b>04</b><h3>Pomiar źródła a pomiar pętli</h3><p>ΔT na pompie ciepła, przed sprzęgłem, na rozdzielaczu i na pojedynczej pętli może się różnić. Wyniki są porównywalne tylko dla tego samego odcinka.</p></article>
          </div>
        </div>
      </section>

      <section class="rk-delta-section" id="rk-delta-lab">
        <div class="rk-delta-lab">
          <div class="rk-delta-lab-head">
            <span class="rk-delta-kicker" style="color:#76f2ff">Interaktywne laboratorium hydrauliczne</span>
            <h2>Oblicz ΔT, przepływ i średnią różnicę temperatury wody względem pomieszczenia</h2>
            <p>Wprowadź odczyty oraz moc analizowanej pętli lub instalacji. Narzędzie pokaże zależności, ale nie zastąpi projektu hydraulicznego ani dokumentacji źródła ciepła.</p>
          </div>

          <div class="rk-delta-lab-layout">
            <form class="rk-delta-controls" id="rk-delta-form" aria-label="Dane do laboratorium ΔT">
              <div class="rk-delta-control">
                <label for="rk-delta-supply">Temperatura zasilania Tz [°C]</label>
                <input id="rk-delta-supply" type="number" min="5" max="80" step="0.1" value="35" inputmode="decimal">
                <small>Odczyt wykonany w tym samym miejscu układu co temperatura powrotu.</small>
              </div>
              <div class="rk-delta-control">
                <label for="rk-delta-return">Temperatura powrotu Tp [°C]</label>
                <input id="rk-delta-return" type="number" min="5" max="80" step="0.1" value="28" inputmode="decimal">
                <small>Do porównania potrzebne są równoczesne i poprawnie skorygowane czujniki.</small>
              </div>
              <div class="rk-delta-control">
                <label for="rk-delta-room">Temperatura pomieszczenia Ti [°C]</label>
                <input id="rk-delta-room" type="number" min="5" max="35" step="0.1" value="20" inputmode="decimal">
                <small>Potrzebna do obliczenia średniej różnicy temperatury czynnika względem wnętrza.</small>
              </div>
              <div class="rk-delta-control">
                <label for="rk-delta-power">Moc przekazywana Q [W]</label>
                <input id="rk-delta-power" type="number" min="100" max="30000" step="50" value="1000" inputmode="decimal">
                <small>Moc pętli albo całej analizowanej części instalacji — zgodna z punktem pomiaru.</small>
              </div>
              <div class="rk-delta-control">
                <label for="rk-delta-loops">Liczba jednakowo obciążonych pętli</label>
                <input id="rk-delta-loops" type="number" min="1" max="40" step="1" value="1" inputmode="numeric">
                <small>Podział przepływu na pętle jest poglądowy i zakłada równy udział mocy.</small>
              </div>
              <div class="rk-delta-control">
                <label for="rk-delta-state">Stan pracy podczas pomiaru</label>
                <select id="rk-delta-state">
                  <option value="steady" selected="">Praca ustalona</option>
                  <option value="warmup">Rozruch / nagrzewanie jastrychu</option>
                  <option value="partial">Część pętli lub siłowników zamknięta</option>
                </select>
                <small>Stan przejściowy może całkowicie zmienić interpretację różnicy temperatur.</small>
              </div>
            </form>

            <div class="rk-delta-results" aria-live="polite">
              <div class="rk-delta-result-grid">
                <div class="rk-delta-result-card is-main"><small>Spadek temperatury</small><div class="rk-delta-result-number" id="rk-delta-result-delta">7,0 K</div></div>
                <div class="rk-delta-result-card"><small>Wymagany przepływ</small><div class="rk-delta-result-number" id="rk-delta-result-flow">122,8 l/h</div></div>
                <div class="rk-delta-result-card"><small>Przepływ na pętlę</small><div class="rk-delta-result-number" id="rk-delta-result-loop">122,8 l/h</div></div>
                <div class="rk-delta-result-card"><small>Przepływ całkowity</small><div class="rk-delta-result-number" id="rk-delta-result-m3">0,123 m³/h</div></div>
                <div class="rk-delta-result-card"><small>Średnia temperatura wody</small><div class="rk-delta-result-number" id="rk-delta-result-mean">31,5°C</div></div>
                <div class="rk-delta-result-card"><small>Średnia różnica woda–pokój</small><div class="rk-delta-result-number" id="rk-delta-result-lmtd">11,1 K</div></div>
              </div>

              <div class="rk-delta-status" id="rk-delta-status">
                <strong id="rk-delta-status-title">Wynik w typowym obszarze projektowym</strong>
                <span id="rk-delta-status-copy">Porównaj go z projektem, wymaganym przepływem i warunkami pracy źródła.</span>
              </div>

              <div class="rk-delta-chart" aria-label="Wykres zależności przepływu od różnicy temperatur">
                <h3>Ta sama moc, różne ΔT — wymagany przepływ</h3>
                <p id="rk-delta-chart-copy">Krzywa dla mocy 1000 W. Im mniejsze ΔT, tym większy przepływ.</p>
                <svg viewBox="0 0 700 310" role="img" aria-labelledby="rk-delta-chart-title rk-delta-chart-desc">
                  <title id="rk-delta-chart-title">Zależność przepływu od różnicy temperatur</title>
                  <desc id="rk-delta-chart-desc">Wykres pokazuje wymagany przepływ wody dla zadanej mocy w zależności od ΔT.</desc>
                  <line class="rk-delta-chart-grid" x1="72" y1="35" x2="660" y2="35"></line>
                  <line class="rk-delta-chart-grid" x1="72" y1="95" x2="660" y2="95"></line>
                  <line class="rk-delta-chart-grid" x1="72" y1="155" x2="660" y2="155"></line>
                  <line class="rk-delta-chart-grid" x1="72" y1="215" x2="660" y2="215"></line>
                  <line class="rk-delta-chart-grid" x1="72" y1="275" x2="660" y2="275"></line>
                  <line class="rk-delta-chart-axis" x1="72" y1="35" x2="72" y2="275"></line>
                  <line class="rk-delta-chart-axis" x1="72" y1="275" x2="660" y2="275"></line>
                  <text class="rk-delta-chart-label" id="rk-delta-y4" x="62" y="40" text-anchor="end">430</text>
                  <text class="rk-delta-chart-label" id="rk-delta-y3" x="62" y="100" text-anchor="end">323</text>
                  <text class="rk-delta-chart-label" id="rk-delta-y2" x="62" y="160" text-anchor="end">215</text>
                  <text class="rk-delta-chart-label" id="rk-delta-y1" x="62" y="220" text-anchor="end">108</text>
                  <text class="rk-delta-chart-label" x="62" y="280" text-anchor="end">0</text>
                  <text class="rk-delta-chart-label" x="72" y="298" text-anchor="middle">2</text>
                  <text class="rk-delta-chart-label" x="208" y="298" text-anchor="middle">5</text>
                  <text class="rk-delta-chart-label" x="343" y="298" text-anchor="middle">8</text>
                  <text class="rk-delta-chart-label" x="479" y="298" text-anchor="middle">11</text>
                  <text class="rk-delta-chart-label" x="660" y="298" text-anchor="middle">15 K</text>
                  <text class="rk-delta-chart-label" x="15" y="160" text-anchor="middle" transform="rotate(-90 15 160)">Przepływ [l/h]</text>
                  <path class="rk-delta-chart-area" id="rk-delta-chart-area" d=""></path>
                  <path class="rk-delta-chart-line" id="rk-delta-chart-line" d=""></path>
                  <circle class="rk-delta-chart-marker" id="rk-delta-chart-marker" cx="298" cy="205" r="8"></circle>
                </svg>
              </div>
            </div>
          </div>

          <div class="rk-delta-inline-cta">
            <h3>Znasz temperaturę zasilania i powrotu, ale nie wiesz, jakie przepływy ustawić na poszczególnych pętlach?</h3>
            <p>Sam pomiar ΔT pokazuje skutek. Projekt określa moc, długość, wymagany przepływ i opór hydrauliczny każdego obwodu oraz nastawy rozdzielacza. Bez tych danych regulacja rotametrów staje się zgadywaniem.</p>
            <a class="rk-delta-cta-button rk-delta-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczonymi przepływami</a>
            <small class="rk-delta-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
          </div>
        </div>
      </section>

      <section class="rk-delta-section" id="rk-delta-formulas">
        <span class="rk-delta-kicker">Obliczenia krok po kroku</span>
        <h2>Wzory na spadek temperatury ΔT, przepływ i temperaturę średnią</h2>
        <p class="rk-delta-lead">W ogrzewaniu podłogowym sama różnica między zasilaniem a powrotem nie jest celem regulacji. Jest jednym z wyników bilansu cieplnego. Poniższe zależności pozwalają sprawdzić, czy odczyty temperatur są spójne z mocą i przepływem przyjętym dla analizowanego odcinka.</p>

        <div class="rk-delta-formulas">
          <article class="rk-delta-formula">
            <span>Różnica temperatur</span>
            <code>ΔT = T<sub>z</sub> − T<sub>p</sub></code>
            <p>T<sub>z</sub> to temperatura zasilania, a T<sub>p</sub> — temperatura powrotu. Wynik podajemy w kelwinach.</p>
          </article>
          <article class="rk-delta-formula">
            <span>Temperatura powrotu</span>
            <code>T<sub>p</sub> = T<sub>z</sub> − ΔT</code>
            <p>Przy niezmienionej temperaturze zasilania większa delta oznacza niższy powrót, a nie wyższy.</p>
          </article>
          <article class="rk-delta-formula">
            <span>Średnia arytmetyczna</span>
            <code>T<sub>śr</sub> ≈ (T<sub>z</sub> + T<sub>p</sub>) / 2</code>
            <p>Przybliżenie przydatne do szybkiej oceny średniej temperatury wody w pętli.</p>
          </article>
          <article class="rk-delta-formula">
            <span>Przepływ objętościowy wody</span>
            <code>V̇ [l/h] ≈ Q [W] / (1,163 × ΔT [K])</code>
            <p>Współczynnik 1,163 dotyczy wody w typowym zakresie temperatur instalacji grzewczej.</p>
          </article>
          <article class="rk-delta-formula">
            <span>Bilans mocy</span>
            <code>Q = ρ × c<sub>p</sub> × V̇ × ΔT</code>
            <p>Pełna zależność łączy gęstość, ciepło właściwe, strumień objętości i zmianę temperatury czynnika.</p>
          </article>
          <article class="rk-delta-formula">
            <span>Średnia różnica woda–pomieszczenie</span>
            <code>Δθ<sub>H</sub> = (T<sub>z</sub> − T<sub>p</sub>) / ln[(T<sub>z</sub> − T<sub>i</sub>) / (T<sub>p</sub> − T<sub>i</sub>)]</code>
            <p>Logarytmiczna średnia różnica temperatur lepiej opisuje warunki wymiany ciepła niż samo hydrauliczne ΔT.</p>
          </article>
        </div>

        <div class="rk-delta-warning">
          <p><strong>Ważne:</strong> uproszczony współczynnik dla wody nie powinien być bezkrytycznie stosowany do mieszanin z glikolem. Zmiana gęstości i ciepła właściwego wpływa na wymagany przepływ, a większa lepkość może zwiększyć opory hydrauliczne.</p>
        </div>

        <h3 style="margin-top:38px">Jak zmienia się przepływ przy tej samej mocy 1 kW?</h3>
        <p>Jeżeli moc pozostaje stała, przepływ jest odwrotnie proporcjonalny do ΔT. To wyjaśnia, dlaczego wymuszanie bardzo małej różnicy temperatur może niepotrzebnie zwiększać pracę pompy i straty ciśnienia.</p>

        <div class="rk-delta-table-wrap">
          <table aria-label="Przepływ wody dla mocy jednego kilowata przy różnych wartościach delta T">
            <thead>
              <tr><th>ΔT</th><th>Przepływ [l/h]</th><th>Przepływ [l/min]</th><th>Interpretacja hydrauliczna</th></tr>
            </thead>
            <tbody>
              <tr><td data-label="ΔT"><strong>3 K</strong></td><td data-label="Przepływ [l/h]">286,6</td><td data-label="Przepływ [l/min]">4,78</td><td data-label="Interpretacja">Bardzo duży przepływ jak na 1 kW; konieczna kontrola oporów i zakresu rotametru.</td></tr>
              <tr><td data-label="ΔT"><strong>5 K</strong></td><td data-label="Przepływ [l/h]">172,0</td><td data-label="Przepływ [l/min]">2,87</td><td data-label="Interpretacja">Często spotykany punkt projektowy, ale nie jest uniwersalną nastawą.</td></tr>
              <tr><td data-label="ΔT"><strong>7 K</strong></td><td data-label="Przepływ [l/h]">122,8</td><td data-label="Przepływ [l/min]">2,05</td><td data-label="Interpretacja">Mniejszy przepływ przy tej samej mocy; trzeba sprawdzić temperaturę średnią i komfort.</td></tr>
              <tr><td data-label="ΔT"><strong>8 K</strong></td><td data-label="Przepływ [l/h]">107,5</td><td data-label="Przepływ [l/min]">1,79</td><td data-label="Interpretacja">Wynik może być poprawny, jeżeli odpowiada obliczeniom i podłoga pokrywa obciążenie.</td></tr>
              <tr><td data-label="ΔT"><strong>10 K</strong></td><td data-label="Przepływ [l/h]">86,0</td><td data-label="Przepływ [l/min]">1,43</td><td data-label="Interpretacja">Wymaga oceny rozkładu temperatury posadzki i warunków pracy źródła.</td></tr>
              <tr><td data-label="ΔT"><strong>12 K</strong></td><td data-label="Przepływ [l/h]">71,6</td><td data-label="Przepływ [l/min]">1,19</td><td data-label="Interpretacja">Może wskazywać mały przepływ, lecz sam odczyt nie rozstrzyga o przyczynie.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-delta-grid-3" style="margin-top:22px">
          <article class="rk-delta-card"><span class="rk-delta-card-number">A</span><h3>Pętla 700 W, ΔT 5 K</h3><p>V̇ = 700 / (1,163 × 5) = <strong>120,4 l/h</strong>, czyli około <strong>2,01 l/min</strong>.</p></article>
          <article class="rk-delta-card"><span class="rk-delta-card-number">B</span><h3>Pętla 700 W, ΔT 7 K</h3><p>V̇ = 700 / (1,163 × 7) = <strong>86,0 l/h</strong>, czyli około <strong>1,43 l/min</strong>.</p></article>
          <article class="rk-delta-card"><span class="rk-delta-card-number">C</span><h3>Instalacja 6 kW</h3><p>Dla 5 K potrzeba około <strong>1,032 m³/h</strong>, a dla 7 K około <strong>0,737 m³/h</strong>.</p></article>
        </div>

        <div class="rk-delta-note">
          <p>Wyższy przepływ nie jest „za darmo”. Strata ciśnienia rośnie silnie wraz z przepływem, a rzeczywisty punkt pracy zależy od długości i średnicy rur, liczby łuków, armatury, rozdzielacza oraz charakterystyki pompy. Dlatego warto analizować ΔT razem z <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">długością pętli ogrzewania podłogowego</a>, a nie jako oderwaną liczbę.</p>
        </div>
      </section>

      <section class="rk-delta-section" id="rk-delta-measurement">
        <span class="rk-delta-kicker">Punkt pomiaru zmienia znaczenie wyniku</span>
        <h2>Gdzie mierzyć temperaturę zasilania i powrotu?</h2>
        <p class="rk-delta-lead">Prawidłowe ΔT powstaje z dwóch odczytów wykonanych jednocześnie, na tej samej części układu i po osiągnięciu możliwie stabilnego stanu. Temperatura przy źródle nie zawsze odpowiada temperaturze na rozdzielaczu, szczególnie gdy instalacja zawiera mieszanie, bufor albo sprzęgło hydrauliczne.</p>

        <div class="rk-delta-grid-3">
          <article class="rk-delta-card"><span class="rk-delta-card-number">01</span><h3>Na źródle ciepła</h3><p>Odczyt zasilania i powrotu przy pompie ciepła lub kotle opisuje obieg źródłowy. Jest ważny dla oceny pracy urządzenia, lecz nie musi być równy delcie pojedynczych pętli.</p></article>
          <article class="rk-delta-card"><span class="rk-delta-card-number">02</span><h3>Na rozdzielaczu</h3><p>Pomiar na belkach zasilającej i powrotnej opisuje sumę pracujących obwodów za rozdzielaczem. Zamknięcie części siłowników może szybko zmienić wynik.</p></article>
          <article class="rk-delta-card"><span class="rk-delta-card-number">03</span><h3>Na jednej pętli</h3><p>Porównanie początku i końca konkretnego obwodu pomaga diagnozować jego przepływ, ale wymaga wiarygodnych czujników i ustalonej pracy pomieszczenia.</p></article>
        </div>

        <p style="margin-top:24px">Jeżeli pomiędzy źródłem a ogrzewaniem występuje <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> albo układ mieszający, przepływy po obu stronach mogą być różne. Mieszanie strumieni zmienia temperatury, więc nie należy porównywać bezpośrednio czujnika z kotła z termometrem na powrocie rozdzielacza.</p>

        <div class="rk-delta-success">
          <p><strong>Dobra praktyka pomiarowa:</strong> sprawdź poprawność czujników na tej samej powierzchni, zapewnij podobny sposób ich zamocowania i izolacji, zaczekaj na stabilizację, zanotuj stan pompy oraz siłowników i dopiero wtedy porównaj wynik z dokumentacją projektową.</p>
        </div>
      </section>

      <section class="rk-delta-section" id="rk-delta-sources">
        <span class="rk-delta-kicker">Pompa ciepła i kocioł kondensacyjny</span>
        <h2>Jak spadek temperatury ΔT wpływa na źródło ciepła?</h2>
        <p class="rk-delta-lead">Nie da się ocenić sprawności źródła wyłącznie na podstawie delty. Dwa układy mogą mieć identyczne ΔT, lecz zupełnie inne temperatury bezwzględne, przepływy oraz warunki wymiany ciepła. Trzeba analizować cały punkt pracy.</p>

        <div class="rk-delta-grid-2">
          <article class="rk-delta-card">
            <span class="rk-delta-card-number">PC</span>
            <h3>ΔT przy pompie ciepła</h3>
            <p>Dla pompy ciepła znaczenie ma przede wszystkim wymagana temperatura zasilania oraz przepływ mieszczący się w zakresie urządzenia. Zbyt mały przepływ może powodować wysokie ΔT i problemy z odbiorem mocy. Zbyt duży przepływ zwiększa opory oraz pobór energii pompy obiegowej.</p>
            <p>Wartość docelową należy odczytać z dokumentacji konkretnego urządzenia i zestawić z projektem instalacji. Więcej zależności opisuje poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">jak działa pompa ciepła w instalacji ogrzewania</a>.</p>
          </article>
          <article class="rk-delta-card">
            <span class="rk-delta-card-number">KG</span>
            <h3>ΔT przy kotle kondensacyjnym</h3>
            <p>Warunki kondensacji wiążą się z temperaturą powrotu, a nie z samą różnicą temperatur. Przy tym samym zasilaniu większe ΔT obniża powrót, lecz jednocześnie zmniejsza wymagany przepływ. Ostateczny efekt zależy od modulacji, hydrauliki i sterowania.</p>
            <p>Praktyczne kryteria doboru opisuje artykuł o tym, <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">jak dobierać kocioł gazowy</a> do niskotemperaturowej instalacji.</p>
          </article>
        </div>

        <div class="rk-delta-warning">
          <p><strong>Nie porównuj samych delt:</strong> 35/30°C i 45/40°C oznacza w obu przypadkach ΔT = 5 K, ale średnia temperatura wody, zdolność podłogi do oddawania mocy i warunki pracy źródła są inne.</p>
        </div>
      </section>

      <section class="rk-delta-section" id="rk-delta-diagnostics">
        <span class="rk-delta-kicker">Macierz objawów i możliwych przyczyn</span>
        <h2>Co może oznaczać za duża albo za mała różnica temperatur?</h2>
        <p class="rk-delta-lead">Poniższa diagnostyka nie zastępuje pomiarów przepływu i obliczeń, ale porządkuje kolejność kontroli. Ten sam wynik ΔT może mieć różne przyczyny zależnie od temperatury w pomieszczeniu i stanu pracy instalacji.</p>

        <div class="rk-delta-diagnostic-grid">
          <article class="rk-delta-diagnostic is-danger">
            <div class="rk-delta-diagnostic-head">Wysokie ΔT + pomieszczenie niedogrzane</div>
            <div class="rk-delta-diagnostic-body"><p>Sprawdź przede wszystkim zbyt mały przepływ, zapowietrzenie, zabrudzony filtr, przymknięty zawór, niewłaściwą nastawę rotametru, za długą pętlę albo niedostateczną wysokość podnoszenia pompy.</p></div>
          </article>
          <article class="rk-delta-diagnostic">
            <div class="rk-delta-diagnostic-head">Niskie ΔT + prawidłowo ogrzane pomieszczenie</div>
            <div class="rk-delta-diagnostic-body"><p>Wynik może być prawidłowy przy małym chwilowym obciążeniu albo dużym przepływie. Oceń zużycie energii pompy i zgodność przepływu z projektem, zamiast automatycznie korygować rotametr.</p></div>
          </article>
          <article class="rk-delta-diagnostic is-hot">
            <div class="rk-delta-diagnostic-head">Niskie ΔT + pomieszczenie nadal zimne</div>
            <div class="rk-delta-diagnostic-body"><p>Możliwa jest zbyt niska temperatura zasilania, mała moc powierzchniowa, duży opór okładziny, niedoszacowane straty ciepła lub pomiar wykonany podczas krótkiego obiegu bez skutecznego oddawania energii.</p></div>
          </article>
          <article class="rk-delta-diagnostic is-hot">
            <div class="rk-delta-diagnostic-head">ΔT skacze lub chwilowo przyjmuje wartość ujemną</div>
            <div class="rk-delta-diagnostic-body"><p>Najpierw wyklucz rozruch, wyłączanie sprężarki albo palnika, pracę siłowników, zmianę biegu pompy, bezwładność czujników i ich zamianę miejscami. Odczyt przejściowy nie jest podstawą regulacji.</p></div>
          </article>
        </div>

        <h3 style="margin-top:35px">Co kontrolować przed zmianą nastaw?</h3>
        <ul class="rk-delta-checklist">
          <li>Czy analizowana <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętla grzewcza</a> jest otwarta i nie jest zapowietrzona?</li>
          <li>Czy wskazanie na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrze</a> odpowiada przepływowi projektowemu?</li>
          <li>Czy filtr, zawory i wkładki rozdzielacza nie ograniczają przepływu?</li>
          <li>Czy <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> pracuje w odpowiednim trybie i punkcie?</li>
          <li>Czy czujniki zasilania i powrotu zostały porównane oraz poprawnie zamocowane?</li>
          <li>Czy temperatura zasilania odpowiada projektowi, krzywej grzewczej i aktualnej pogodzie?</li>
        </ul>
      </section>

      <section class="rk-delta-section" id="rk-delta-regulation">
        <span class="rk-delta-kicker">Procedura bez regulowania „na oko”</span>
        <h2>Jak prawidłowo zmierzyć i wyregulować ΔT w ogrzewaniu podłogowym?</h2>
        <p class="rk-delta-lead">Najpierw ustala się warunki pomiaru i przepływy wynikające z bilansu mocy, a dopiero później porównuje temperatury. Poniższa kolejność ogranicza ryzyko błędnej diagnozy.</p>

        <div class="rk-delta-steps">
          <article class="rk-delta-step"><h3>Wybierz odcinek instalacji</h3><p>Zdecyduj, czy analizujesz źródło ciepła, obieg za sprzęgłem, cały rozdzielacz czy pojedynczą pętlę. Nie mieszaj wyników z różnych miejsc.</p></article>
          <article class="rk-delta-step"><h3>Ustal konfigurację pracy</h3><p>Sprawdź, które siłowniki są otwarte, jaki tryb ma pompa i czy układ mieszający pozostaje w stabilnym położeniu.</p></article>
          <article class="rk-delta-step"><h3>Poczekaj na stan ustalony</h3><p>Nie oceniaj delty tuż po starcie zimnej instalacji, zmianie temperatury zadanej lub gwałtownym otwarciu pętli.</p></article>
          <article class="rk-delta-step"><h3>Ustaw przepływy projektowe</h3><p>Wyreguluj obwody zgodnie z obliczoną mocą, długością i oporami. <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">Rozdzielacz podłogówki</a> nie powinien być ustawiany jedną wartością dla wszystkich pomieszczeń.</p></article>
          <article class="rk-delta-step"><h3>Zmierz temperatury równocześnie</h3><p>Użyj porównanych czujników, zamocowanych i odizolowanych w taki sam sposób. Zapisz Tz, Tp, przepływ oraz temperaturę wnętrza.</p></article>
          <article class="rk-delta-step"><h3>Porównaj cały punkt pracy</h3><p>Zestaw ΔT z projektem, komfortem pomieszczenia, temperaturą zasilania, przepływem oraz wymaganiami pompy ciepła albo kotła.</p></article>
        </div>

        <div class="rk-delta-danger">
          <p><strong>Nie reguluj tylko do oczekiwanej delty.</strong> Przymknięcie przepływu może zwiększyć ΔT, ale jednocześnie pogorszyć moc pętli i rozkład temperatury podłogi. Z kolei bezrefleksyjne zwiększanie przepływu może podnieść opory hydrauliczne i zużycie energii pompy.</p>
        </div>

        <h3 style="margin-top:35px">Najczęstsze błędy podczas interpretacji ΔT</h3>
        <ul class="rk-delta-checklist">
          <li>Traktowanie 5 K albo 10 K jako wartości obowiązkowej dla każdej instalacji.</li>
          <li>Porównywanie temperatur zmierzonych w różnych miejscach obiegu.</li>
          <li>Regulowanie rotametrów przed ustaleniem wymaganej mocy i przepływu.</li>
          <li>Wyciąganie wniosków na podstawie odczytu z pierwszych minut rozruchu.</li>
          <li>Pomijanie błędu czujników oraz wpływu sposobu zamocowania na rurze.</li>
          <li>Zakładanie, że identyczne przepływy są właściwe dla pętli o różnej mocy i długości.</li>
          <li>Ocena sprawności źródła tylko przez deltę, bez temperatur bezwzględnych.</li>
          <li>Stosowanie wzoru dla czystej wody do mieszaniny glikolowej bez korekty parametrów.</li>
        </ul>
      </section>

      <section class="rk-delta-section" id="rk-delta-faq">
        <span class="rk-delta-kicker">Pytania czytelników</span>
        <h2>FAQ: spadek temperatury ΔT między zasilaniem a powrotem</h2>
        <div class="rk-delta-faq">
          <details>
            <summary>Co to jest ΔT w ogrzewaniu podłogowym?</summary>
            <div class="rk-delta-faq-answer"><p>ΔT to różnica między temperaturą zasilania a temperaturą powrotu na tym samym analizowanym odcinku instalacji. Pokazuje, o ile czynnik grzewczy ochłodził się podczas przekazywania energii, lecz do pełnej oceny potrzebne są także moc, przepływ i stan pracy.</p></div>
          </details>
          <details>
            <summary>Czy różnicę temperatur podaje się w K czy w °C?</summary>
            <div class="rk-delta-faq-answer"><p>Temperatury zasilania i powrotu podaje się w stopniach Celsjusza, a ich różnicę poprawnie zapisuje się w kelwinach. Zmiana o 1°C ma taką samą wartość liczbową jak różnica 1 K.</p></div>
          </details>
          <details>
            <summary>Jaka jest najlepsza wartość ΔT dla ogrzewania podłogowego?</summary>
            <div class="rk-delta-faq-answer"><p>Nie istnieje jedna najlepsza wartość dla wszystkich instalacji. W praktyce projektowej często spotyka się zakres około 5–10 K, ale właściwe ΔT wynika z mocy, przepływu, konstrukcji podłogi, długości pętli i wymagań źródła ciepła.</p></div>
          </details>
          <details>
            <summary>Co oznacza zbyt duża różnica między zasilaniem a powrotem?</summary>
            <div class="rk-delta-faq-answer"><p>Wysokie ΔT może oznaczać mały przepływ, duży chwilowy odbiór ciepła albo rozruch zimnej posadzki. Gdy pomieszczenie jest niedogrzane, należy sprawdzić zapowietrzenie, filtr, zawory, rotametr, długość pętli i pracę pompy.</p></div>
          </details>
          <details>
            <summary>Co oznacza bardzo małe ΔT w podłogówce?</summary>
            <div class="rk-delta-faq-answer"><p>Małe ΔT może wynikać z dużego przepływu lub małego aktualnego obciążenia. Jeśli pomieszczenie pozostaje zimne, przyczyną może być zbyt niska temperatura zasilania, ograniczona moc podłogi albo błędny punkt pomiaru.</p></div>
          </details>
          <details>
            <summary>Jak obliczyć przepływ z mocy i ΔT?</summary>
            <div class="rk-delta-faq-answer"><p>Dla wody można użyć przybliżenia V̇ [l/h] = Q [W] / (1,163 × ΔT [K]). Przykładowo dla 1000 W i 5 K przepływ wynosi około 172 l/h. Dla glikolu należy zastosować właściwe parametry czynnika.</p></div>
          </details>
          <details>
            <summary>Jakie ΔT ustawić przy pompie ciepła?</summary>
            <div class="rk-delta-faq-answer"><p>Należy przyjąć przepływ i warunki pracy zgodne z projektem oraz dokumentacją konkretnej pompy ciepła. Nie powinno się wymuszać jednej delty dla każdego urządzenia, ponieważ znaczenie mają także minimalny przepływ, moc chwilowa i temperatura zasilania.</p></div>
          </details>
          <details>
            <summary>Kiedy i jak mierzyć temperaturę zasilania oraz powrotu?</summary>
            <div class="rk-delta-faq-answer"><p>Pomiar wykonuje się równocześnie na tej samej części instalacji, po osiągnięciu możliwie stabilnej pracy. Czujniki powinny być porównane, zamocowane w podobny sposób i odizolowane od wpływu temperatury otoczenia.</p></div>
          </details>
        </div>
      </section>

      <section class="rk-delta-section" aria-label="Źródła techniczne">
        <div class="rk-delta-sources">
          <strong>Podstawa techniczna i materiały źródłowe</strong>
          <p>Terminologię dotyczącą wodnych systemów płaszczyznowych oraz różnicy temperatur czynnika zestawiono z normami <a href="https://sklep.pkn.pl/pn-en-1264-2-2021-10e.html" target="_blank" rel="noopener nofollow">PN-EN 1264-2:2021-10 — PKN</a> i <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener nofollow">ISO 11855-2:2021 — ISO</a>. Kontekst temperatury powrotu dla pracy kotłów kondensacyjnych porównano z publiczną strategią techniczną <a href="https://www.gov.uk/government/publications/heat-and-buildings-strategy/heat-and-building-strategy-accessible-webpage" target="_blank" rel="noopener nofollow">Heat and Buildings Strategy — GOV.UK</a>. Dostęp do źródeł: 26 sierpnia 2026 r.</p>
          <p>Wartości z kalkulatora i tabel mają charakter edukacyjny. Projektant powinien zweryfikować właściwości czynnika, opory instalacji, wymagany punkt pracy pompy oraz dane urządzeń zastosowanych w konkretnym budynku.</p>
        </div>
      </section>

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

        <div class="rk-delta-author-head">
          <div><h2>Autor opracowania</h2><p>Praktyka projektowa, wiedza techniczna i język zrozumiały dla inwestora.</p></div>
          <span class="rk-delta-author-mark">E‑E‑A‑T • HVAC</span>
        </div>

        <div class="rk-delta-author-layout">
          <aside class="rk-delta-author-side">
            <div class="rk-delta-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji ogrzewania podłogowego" width="360" height="360" loading="lazy" decoding="async"></div>
            <div class="rk-delta-author-name">Robert Kucharski</div>
            <div class="rk-delta-author-role">CEO portalu<br>Specjalista HVAC i ogrzewania podłogowego</div>
          </aside>

          <div class="rk-delta-author-main">
            <blockquote class="rk-delta-author-quote"><p>„ΔT nie jest nastawą, którą wymusza się na ślepo. Jest wynikiem mocy odebranej przez podłogę i przepływu, dlatego najpierw wyznaczam przepływ z obliczeń, a dopiero później oceniam temperatury.”</p></blockquote>

            <div class="rk-delta-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-delta-author-tab" for="rk-delta-author-about" role="tab">O autorze</label>
              <label class="rk-delta-author-tab" for="rk-delta-author-exp" role="tab">Doświadczenie</label>
              <label class="rk-delta-author-tab" for="rk-delta-author-sites" role="tab">Portale</label>
            </div>

            <div class="rk-delta-author-panel rk-delta-author-panel-about">
              <p>Robert Kucharski projektuje wodne instalacje ogrzewania podłogowego i opracowuje materiały techniczne dotyczące hydrauliki, źródeł ciepła, automatyki oraz świadomego prowadzenia inwestycji. W publikacjach oddziela zasady obliczeniowe od uproszczeń przydatnych wyłącznie do wstępnej oceny.</p>
              <p><a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz profil i pozostałe opracowania autora</a>.</p>
            </div>

            <div class="rk-delta-author-panel rk-delta-author-panel-exp">
              <p>Doświadczenie autora obejmuje analizę obciążenia cieplnego pomieszczeń, dobór rozstawu i długości pętli, obliczenia przepływów oraz oporów hydraulicznych, dobór rozdzielaczy i przygotowanie nastaw startowych. Celem projektu jest dokumentacja, którą wykonawca może odtworzyć i później zweryfikować pomiarami.</p>
            </div>

            <div class="rk-delta-author-panel rk-delta-author-panel-sites">
              <p>Autor jest właścicielem trzech serwisów poświęconych projektowaniu instalacji, budowie i remontom. Powiązanie portali jest podane jawnie, aby czytelnik znał autorstwo oraz kontekst linkowania.</p>
              <div class="rk-delta-site-links">
                <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
                <a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a>
                <a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a>
              </div>
            </div>
          </div>
        </div>
      </section>

      <section class="rk-delta-final-cta" aria-label="Projekt ogrzewania podłogowego">
        <div class="rk-delta-final-cta-content">
          <span class="rk-delta-kicker" style="color:#76f2ff">Od pomiaru do prawidłowych nastaw</span>
          <h2>Nie reguluj instalacji wyłącznie na podstawie różnicy temperatur</h2>
          <p>Projekt ogrzewania podłogowego określa wymaganą moc pomieszczeń, rozstaw i długość pętli, przepływy, opory hydrauliczne oraz nastawy startowe rozdzielacza. Dzięki temu pomiar ΔT staje się narzędziem kontroli, a nie przypadkowym celem regulacji.</p>
          <a class="rk-delta-cta-button rk-delta-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
          <small class="rk-delta-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#article",
      "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/",
      "headline": "Spadek temperatury ΔT – jaka powinna być różnica między zasilaniem a powrotem?",
      "description": "Spadek temperatury ΔT: sprawdź różnicę między zasilaniem a powrotem, oblicz przepływy i zobacz, co oznacza małe lub duże ΔT w ogrzewaniu podłogowym.",
      "dateModified": "2026-08-26",
      "inLanguage": "pl-PL",
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#webpage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "articleSection": [
        "Ogrzewanie podłogowe",
        "Hydraulika instalacji",
        "Regulacja przepływów",
        "Projektowanie HVAC"
      ],
      "keywords": [
        "spadek temperatury ΔT",
        "różnica temperatury zasilania i powrotu",
        "delta T ogrzewania podłogowego",
        "przepływ w ogrzewaniu podłogowym",
        "temperatura zasilania i powrotu podłogówki",
        "jak obliczyć przepływ z ΔT",
        "regulacja rotametrów",
        "ΔT pompy ciepła"
      ],
      "about": [
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Różnica temperatur ΔT"},
        {"@type": "Thing", "name": "Przepływ czynnika grzewczego"},
        {"@type": "Thing", "name": "Równoważenie hydrauliczne"}
      ],
      "citation": [
        "https://sklep.pkn.pl/pn-en-1264-2-2021-10e.html",
        "https://www.iso.org/standard/74683.html",
        "https://www.gov.uk/government/publications/heat-and-buildings-strategy/heat-and-building-strategy-accessible-webpage"
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#webpage",
      "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/",
      "name": "Spadek temperatury ΔT – jaka powinna być różnica między zasilaniem a powrotem?",
      "description": "Techniczne wyjaśnienie ΔT, przepływów, temperatury zasilania i powrotu oraz regulacji wodnego ogrzewania podłogowego.",
      "dateModified": "2026-08-26",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#breadcrumb"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#article"
      },
      "about": {
        "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#delta-calculator"
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#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": "Spadek temperatury ΔT – różnica między zasilaniem a powrotem",
          "item": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#delta-calculator",
      "name": "Laboratorium ΔT — kalkulator przepływu i różnicy temperatur",
      "description": "Edukacyjne narzędzie obliczające spadek temperatury, wymagany przepływ wody, przepływ na pętlę, średnią temperaturę wody i logarytmiczną różnicę temperatur względem pomieszczenia.",
      "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#rk-delta-lab",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "HVAC calculator",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa HTML5, SVG i JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#howto",
      "name": "Jak prawidłowo zmierzyć i wyregulować ΔT w ogrzewaniu podłogowym?",
      "description": "Sześć kroków pozwalających poprawnie zmierzyć różnicę temperatur i zestawić ją z przepływem projektowym.",
      "inLanguage": "pl-PL",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Wybierz odcinek instalacji",
          "text": "Zdecyduj, czy analizujesz źródło ciepła, obieg za sprzęgłem, cały rozdzielacz czy pojedynczą pętlę. Nie mieszaj wyników z różnych miejsc.",
          "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#rk-delta-regulation"
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Ustal konfigurację pracy",
          "text": "Sprawdź, które siłowniki są otwarte, jaki tryb ma pompa i czy układ mieszający pozostaje w stabilnym położeniu.",
          "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#rk-delta-regulation"
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Poczekaj na stan ustalony",
          "text": "Nie oceniaj delty tuż po starcie zimnej instalacji, zmianie temperatury zadanej lub gwałtownym otwarciu pętli.",
          "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#rk-delta-regulation"
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Ustaw przepływy projektowe",
          "text": "Wyreguluj obwody zgodnie z obliczoną mocą, długością i oporami. Nie ustawiaj jednej wartości przepływu dla wszystkich pomieszczeń.",
          "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#rk-delta-regulation"
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Zmierz temperatury równocześnie",
          "text": "Użyj porównanych czujników, zamocowanych i odizolowanych w taki sam sposób. Zapisz temperaturę zasilania, powrotu, przepływ oraz temperaturę wnętrza.",
          "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#rk-delta-regulation"
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Porównaj cały punkt pracy",
          "text": "Zestaw ΔT z projektem, komfortem pomieszczenia, temperaturą zasilania, przepływem oraz wymaganiami pompy ciepła albo kotła.",
          "url": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#rk-delta-regulation"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/spadek-temperatury-%CE%B4t-roznica-miedzy-temperatura-zasilania-a-powrotu/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Co to jest ΔT w ogrzewaniu podłogowym?",
          "acceptedAnswer": {"@type": "Answer", "text": "ΔT to różnica między temperaturą zasilania a temperaturą powrotu na tym samym analizowanym odcinku instalacji. Pokazuje, o ile czynnik grzewczy ochłodził się podczas przekazywania energii, lecz do pełnej oceny potrzebne są także moc, przepływ i stan pracy."}
        },
        {
          "@type": "Question",
          "name": "Czy różnicę temperatur podaje się w K czy w °C?",
          "acceptedAnswer": {"@type": "Answer", "text": "Temperatury zasilania i powrotu podaje się w stopniach Celsjusza, a ich różnicę poprawnie zapisuje się w kelwinach. Zmiana o 1°C ma taką samą wartość liczbową jak różnica 1 K."}
        },
        {
          "@type": "Question",
          "name": "Jaka jest najlepsza wartość ΔT dla ogrzewania podłogowego?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie istnieje jedna najlepsza wartość dla wszystkich instalacji. W praktyce projektowej często spotyka się zakres około 5–10 K, ale właściwe ΔT wynika z mocy, przepływu, konstrukcji podłogi, długości pętli i wymagań źródła ciepła."}
        },
        {
          "@type": "Question",
          "name": "Co oznacza zbyt duża różnica między zasilaniem a powrotem?",
          "acceptedAnswer": {"@type": "Answer", "text": "Wysokie ΔT może oznaczać mały przepływ, duży chwilowy odbiór ciepła albo rozruch zimnej posadzki. Gdy pomieszczenie jest niedogrzane, należy sprawdzić zapowietrzenie, filtr, zawory, rotametr, długość pętli i pracę pompy."}
        },
        {
          "@type": "Question",
          "name": "Co oznacza bardzo małe ΔT w podłogówce?",
          "acceptedAnswer": {"@type": "Answer", "text": "Małe ΔT może wynikać z dużego przepływu lub małego aktualnego obciążenia. Jeśli pomieszczenie pozostaje zimne, przyczyną może być zbyt niska temperatura zasilania, ograniczona moc podłogi albo błędny punkt pomiaru."}
        },
        {
          "@type": "Question",
          "name": "Jak obliczyć przepływ z mocy i ΔT?",
          "acceptedAnswer": {"@type": "Answer", "text": "Dla wody można użyć przybliżenia V̇ [l/h] = Q [W] / (1,163 × ΔT [K]). Przykładowo dla 1000 W i 5 K przepływ wynosi około 172 l/h. Dla glikolu należy zastosować właściwe parametry czynnika."}
        },
        {
          "@type": "Question",
          "name": "Jakie ΔT ustawić przy pompie ciepła?",
          "acceptedAnswer": {"@type": "Answer", "text": "Należy przyjąć przepływ i warunki pracy zgodne z projektem oraz dokumentacją konkretnej pompy ciepła. Nie powinno się wymuszać jednej delty dla każdego urządzenia, ponieważ znaczenie mają także minimalny przepływ, moc chwilowa i temperatura zasilania."}
        },
        {
          "@type": "Question",
          "name": "Kiedy i jak mierzyć temperaturę zasilania oraz powrotu?",
          "acceptedAnswer": {"@type": "Answer", "text": "Pomiar wykonuje się równocześnie na tej samej części instalacji, po osiągnięciu możliwie stabilnej pracy. Czujniki powinny być porównane, zamocowane w podobny sposób i odizolowane od wpływu temperatury otoczenia."}
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "caption": "Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC"
      },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista systemów HVAC oraz ogrzewania podłogowego",
      "description": "Projektant wodnych instalacji ogrzewania podłogowego, autor technicznych opracowań HVAC oraz właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl i Sobir.pl.",
      "knowsAbout": [
        "Wodne ogrzewanie podłogowe",
        "Projektowanie instalacji sanitarnych",
        "Obliczenia obciążenia cieplnego",
        "Hydraulika instalacji grzewczych",
        "Pompy ciepła",
        "Kotły kondensacyjne",
        "Równoważenie hydrauliczne",
        "Automatyka HVAC"
      ],
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "description": "Serwis projektowy i techniczny należący do Roberta Kucharskiego, poświęcony ogrzewaniu podłogowemu i instalacjom HVAC.",
      "logo": {
        "@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",
        "caption": "Projekt Ogrzewania"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "description": "Serwis budowlano-remontowy należący do Roberta Kucharskiego."
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "description": "Serwis branży budowlanej należący do Roberta Kucharskiego."
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "description": "Projektowanie ogrzewania podłogowego oraz techniczne poradniki dla inwestorów i wykonawców.",
      "inLanguage": "pl-PL",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "copyrightHolder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    }
  ]
}
</script>

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

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

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

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

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

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

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

    function setAttribute(id, attribute, value) {
      var element = byId(id);
      if (element) {
        element.setAttribute(attribute, value);
      }
    }

    function calculateLogMean(supply, returnTemperature, room) {
      var result = null;
      if (supply > room) {
        if (returnTemperature > room) {
          if (Math.abs(supply - returnTemperature) < 0.0001) {
            result = supply - room;
          } else {
            var ratio = (supply - room) / (returnTemperature - room);
            if (ratio > 0) {
              var denominator = Math.log(ratio);
              if (Math.abs(denominator) > 0.000001) {
                result = (supply - returnTemperature) / denominator;
              }
            }
          }
        }
      }
      return result;
    }

    function updateChart(power, currentDelta) {
      var minimumDelta = 2;
      var maximumDelta = 15;
      var left = 72;
      var right = 660;
      var top = 35;
      var bottom = 275;
      var maximumFlow = power / (1.163 * minimumDelta) * 1.08;
      var points = [];
      var index;

      function xPosition(delta) {
        return left + (delta - minimumDelta) / (maximumDelta - minimumDelta) * (right - left);
      }

      function yPosition(flow) {
        return bottom - clamp(flow / maximumFlow, 0, 1) * (bottom - top);
      }

      for (index = 0; index <= 52; index += 1) {
        var delta = minimumDelta + (maximumDelta - minimumDelta) * index / 52;
        var flow = power / (1.163 * delta);
        points.push({ x: xPosition(delta), y: yPosition(flow) });
      }

      var linePath = "";
      points.forEach(function (point, pointIndex) {
        linePath += (pointIndex === 0 ? "M " : " L ") + point.x.toFixed(2) + " " + point.y.toFixed(2);
      });
      var areaPath = linePath + " L " + right + " " + bottom + " L " + left + " " + bottom + " Z";
      setAttribute("rk-delta-chart-line", "d", linePath);
      setAttribute("rk-delta-chart-area", "d", areaPath);

      var markerDelta = clamp(currentDelta, minimumDelta, maximumDelta);
      var markerFlow = power / (1.163 * markerDelta);
      setAttribute("rk-delta-chart-marker", "cx", xPosition(markerDelta).toFixed(2));
      setAttribute("rk-delta-chart-marker", "cy", yPosition(markerFlow).toFixed(2));

      setText("rk-delta-y4", formatPolish(maximumFlow, 0, 0));
      setText("rk-delta-y3", formatPolish(maximumFlow * 0.75, 0, 0));
      setText("rk-delta-y2", formatPolish(maximumFlow * 0.5, 0, 0));
      setText("rk-delta-y1", formatPolish(maximumFlow * 0.25, 0, 0));
      setText("rk-delta-chart-copy", "Krzywa dla mocy " + formatPolish(power, 0, 0) + " W. Im mniejsze ΔT, tym większy wymagany przepływ.");
    }

    function setStatus(delta, state, flowPerLoop) {
      var status = byId("rk-delta-status");
      if (!status) {
        return;
      }

      var className = "rk-delta-status";
      var title = "Wynik wymaga porównania z projektem";
      var copy = "Oceń jednocześnie przepływ, moc, temperaturę zasilania i komfort pomieszczenia.";

      if (state === "warmup") {
        className += " is-warning";
        title = "Pomiar wykonano w stanie przejściowym";
        copy = "Podczas nagrzewania zimnego jastrychu delta może być wysoka i zmienna. Zaczekaj na stabilizację przed regulacją.";
      } else if (state === "partial") {
        className += " is-warning";
        title = "Część obwodów jest zamknięta";
        copy = "Zmiana liczby czynnych pętli wpływa na przepływ całkowity, punkt pracy pompy i temperatury. Porównuj wyniki przy tej samej konfiguracji.";
      } else if (delta <= 0) {
        className += " is-danger";
        title = "Temperatura powrotu nie jest niższa od zasilania";
        copy = "Sprawdź kolejność czujników, ich kalibrację, miejsce pomiaru oraz to, czy układ nie znajduje się w fazie przejściowej.";
      } else if (delta < 3) {
        className += " is-warning";
        title = "Bardzo małe ΔT";
        copy = "Może wynikać z dużego przepływu albo małego chwilowego odbioru mocy. Nie zmniejszaj przepływu bez porównania z projektem.";
      } else if (delta <= 8) {
        className += " is-success";
        title = "Wynik w często spotykanym obszarze projektowym";
        copy = "To nie jest automatyczne potwierdzenie poprawności. Porównaj deltę z wymaganym przepływem, mocą i warunkami pracy źródła.";
      } else if (delta <= 10) {
        title = "Umiarkowanie wysokie ΔT";
        copy = "Wynik może być prawidłowy, jeżeli odpowiada projektowi i pomieszczenie osiąga temperaturę. Sprawdź przepływ oraz temperaturę średnią.";
      } else {
        className += " is-danger";
        title = "Wysokie ΔT — sprawdź hydraulikę";
        copy = "Zweryfikuj przepływ, filtr, zapowietrzenie, zawory, rotametry, długość pętli oraz punkt pracy pompy obiegowej.";
      }

      if (flowPerLoop > 200) {
        copy += " Przepływ na pętlę przekracza 200 l/h, dlatego konieczna jest kontrola oporów i zakresu rozdzielacza.";
      }

      status.className = className;
      setText("rk-delta-status-title", title);
      setText("rk-delta-status-copy", copy);
    }

    function updateCalculator() {
      var supply = clamp(numberFrom("rk-delta-supply", 35), 5, 80);
      var returnTemperature = clamp(numberFrom("rk-delta-return", 28), 5, 80);
      var room = clamp(numberFrom("rk-delta-room", 20), 5, 35);
      var power = clamp(numberFrom("rk-delta-power", 1000), 100, 30000);
      var loops = Math.round(clamp(numberFrom("rk-delta-loops", 1), 1, 40));
      var stateElement = byId("rk-delta-state");
      var state = stateElement ? stateElement.value : "steady";
      var delta = supply - returnTemperature;
      var absoluteDelta = Math.abs(delta);
      var flow = absoluteDelta > 0.0001 ? power / (1.163 * absoluteDelta) : null;
      var flowPerLoop = flow === null ? null : flow / loops;
      var mean = (supply + returnTemperature) / 2;
      var logMean = calculateLogMean(supply, returnTemperature, room);

      setText("rk-delta-result-delta", formatPolish(delta, 1, 1) + " K");
      setText("rk-delta-result-flow", flow === null ? "—" : formatPolish(flow, 1, 1) + " l/h");
      setText("rk-delta-result-loop", flowPerLoop === null ? "—" : formatPolish(flowPerLoop, 1, 1) + " l/h");
      setText("rk-delta-result-m3", flow === null ? "—" : formatPolish(flow / 1000, 3, 3) + " m³/h");
      setText("rk-delta-result-mean", formatPolish(mean, 1, 1) + "°C");
      setText("rk-delta-result-lmtd", logMean === null ? "—" : formatPolish(logMean, 1, 1) + " K");

      setStatus(delta, state, flowPerLoop === null ? 0 : flowPerLoop);
      updateChart(power, absoluteDelta > 0.0001 ? absoluteDelta : 2);
    }

    var controls = root.querySelectorAll("#rk-delta-form input, #rk-delta-form select");
    controls.forEach(function (control) {
      control.addEventListener("input", updateCalculator);
      control.addEventListener("change", updateCalculator);
    });

    var calculatorForm = byId("rk-delta-form");
    if (calculatorForm) {
      calculatorForm.addEventListener("submit", function (event) {
        event.preventDefault();
      });
    }

    var navigationLinks = root.querySelectorAll(".rk-delta-nav a[href^='#']");
    navigationLinks.forEach(function (link) {
      link.addEventListener("click", function (event) {
        var selector = link.getAttribute("href");
        var target = selector ? root.querySelector(selector) : null;
        if (!target) {
          return;
        }
        event.preventDefault();
        var reducedMotion = typeof window.matchMedia === "function" ? window.matchMedia("(prefers-reduced-motion: reduce)") : null;
        var behavior = reducedMotion ? (reducedMotion.matches ? "auto" : "smooth") : "smooth";
        target.scrollIntoView({ behavior: behavior, block: "start" });
      });
    });

    function updateProgress() {
      var progress = root.querySelector(".rk-delta-progress");
      if (!progress) {
        return;
      }
      var rectangle = root.getBoundingClientRect();
      var available = root.offsetHeight - window.innerHeight;
      var ratio = available > 0 ? clamp(-rectangle.top / available, 0, 1) : 1;
      progress.style.width = (ratio * 100).toFixed(2) + "%";
    }

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

  function attemptInitialization() {
    return initializeDeltaGuide();
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", attemptInitialization);
  } else {
    attemptInitialization();
  }

  window.addEventListener("load", attemptInitialization);
  window.setTimeout(attemptInitialization, 250);
  window.setTimeout(attemptInitialization, 1200);
  window.setTimeout(attemptInitialization, 3000);

  if (typeof MutationObserver === "function") {
    var observer = new MutationObserver(function () {
      if (attemptInitialization()) {
        observer.disconnect();
      }
    });
    observer.observe(document.documentElement, { childList: true, subtree: true });
    window.setTimeout(function () {
      observer.disconnect();
    }, 6000);
  }
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Spadek temperatury (ΔT): Różnica między temperaturą zasilania a powrotu.</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>
		<item>
		<title>Kocioł gazowy.</title>
		<link>https://projekt-ogrzewania.pl/kociol-gazowy/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 04 Jan 2026 14:02:32 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kocioł gazowy]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie budynków]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[kocioł gazowy]]></category>
		<category><![CDATA[kocioł kondensacyjny]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie domu]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[sterowanie pogodowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3048</guid>

					<description><![CDATA[<p>Wybór źródła ciepła do ogrzewania podłogowego to decyzja, która wpływa na komfort, koszty i niezawodność systemu przez długie lata. Kocioł gazowy w ogrzewaniu podłogowym pozostaje jednym z najczęściej wybieranych rozwiązań, ponieważ idealnie wpisuje się w charakterystykę instalacji niskotemperaturowych. W artykule omawiamy zasadę działania kotła kondensacyjnego, proces kondensacji, kluczowe elementy instalacji, dobór mocy, sterowanie oraz praktyczne aspekty projektowania i eksploatacji. To kompleksowy przewodnik zarówno dla inwestorów, jak i osób technicznych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">Kocioł gazowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-gas-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-graphite: #2c414f;
    --rk-blue: #078fbe;
    --rk-cyan: #28c9da;
    --rk-cyan-soft: #eafcff;
    --rk-orange: #ff7438;
    --rk-red: #e33d35;
    --rk-green: #16856b;
    --rk-green-soft: #eaf8f4;
    --rk-yellow: #f5b942;
    --rk-ink: #1f2937;
    --rk-text: #465866;
    --rk-muted: #687986;
    --rk-line: #dce8ee;
    --rk-soft: #f5f9fb;
    --rk-warm: #fff4ed;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 70px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.76;
  }

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

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

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

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

  #rk-gas-guide a:hover,
  #rk-gas-guide a:focus-visible {
    color: var(--rk-red);
  }

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

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

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

  #rk-gas-guide h4 {
    margin-bottom: 8px;
    font-size: 1.04rem;
    letter-spacing: -0.018em;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-gas-guide .rk-gas-hero h2 em {
    color: #84edf5;
    font-style: normal;
  }

  #rk-gas-guide .rk-gas-hook {
    max-width: 940px;
    margin: 0 0 25px;
    padding: 18px 22px;
    border-left: 5px solid var(--rk-orange);
    border-radius: 0 16px 16px 0;
    background: rgba(255, 255, 255, 0.09);
    backdrop-filter: blur(4px);
  }

  #rk-gas-guide .rk-gas-hook p {
    margin: 0;
    color: #f8fcff;
    font-size: clamp(1.05rem, 2.15vw, 1.35rem);
    font-weight: 720;
  }

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

  #rk-gas-guide .rk-gas-hero-lead {
    max-width: 900px;
    color: #d9e9f1;
    font-size: 1.05rem;
  }

  #rk-gas-guide .rk-gas-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 24px;
    margin-top: 28px;
  }

  #rk-gas-guide .rk-gas-hero-meta b {
    display: inline-flex;
    gap: 9px;
    align-items: center;
    color: #d8e8ef;
    font-size: 0.86rem;
  }

  #rk-gas-guide .rk-gas-hero-meta b::before {
    content: "";
    width: 8px;
    height: 8px;
    flex: 0 0 8px;
    border-radius: 50%;
    background: var(--rk-cyan);
  }

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

  #rk-gas-guide .rk-gas-learn,
  #rk-gas-guide .rk-gas-nav,
  #rk-gas-guide .rk-gas-callout,
  #rk-gas-guide .rk-gas-formula,
  #rk-gas-guide .rk-gas-table-wrap,
  #rk-gas-guide .rk-gas-chart,
  #rk-gas-guide .rk-gas-scheme,
  #rk-gas-guide .rk-gas-sources {
    margin: 28px 0;
  }

  #rk-gas-guide .rk-gas-learn {
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    background: linear-gradient(145deg, #f9fdff, var(--rk-cyan-soft));
  }

  #rk-gas-guide .rk-gas-eyebrow {
    display: block;
    margin-bottom: 14px;
    color: var(--rk-blue);
    font-size: 0.74rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-gas-guide .rk-gas-learn-grid,
  #rk-gas-guide .rk-gas-card-grid,
  #rk-gas-guide .rk-gas-check-grid,
  #rk-gas-guide .rk-gas-kpi-grid {
    display: grid;
    gap: 18px;
  }

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

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

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

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

  #rk-gas-guide .rk-gas-learn-card,
  #rk-gas-guide .rk-gas-card,
  #rk-gas-guide .rk-gas-check,
  #rk-gas-guide .rk-gas-kpi {
    min-width: 0;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-gas-guide .rk-gas-learn-card,
  #rk-gas-guide .rk-gas-card,
  #rk-gas-guide .rk-gas-check {
    padding: 22px;
  }

  #rk-gas-guide .rk-gas-learn-no,
  #rk-gas-guide .rk-gas-card-tag,
  #rk-gas-guide .rk-gas-check-no {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    color: var(--rk-white);
    background: linear-gradient(145deg, var(--rk-blue), var(--rk-cyan));
    font-size: 0.76rem;
    font-weight: 900;
    line-height: 1;
  }

  #rk-gas-guide .rk-gas-learn-no,
  #rk-gas-guide .rk-gas-check-no {
    width: 46px;
    height: 46px;
    border-radius: 15px;
  }

  #rk-gas-guide .rk-gas-card-tag {
    min-height: 32px;
    padding: 7px 11px;
    border-radius: 10px;
    letter-spacing: 0.04em;
    text-transform: uppercase;
  }

  #rk-gas-guide .rk-gas-learn-card p,
  #rk-gas-guide .rk-gas-card p,
  #rk-gas-guide .rk-gas-check p,
  #rk-gas-guide .rk-gas-kpi p {
    margin-bottom: 0;
  }

  #rk-gas-guide .rk-gas-nav {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-soft);
  }

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

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

  #rk-gas-guide .rk-gas-nav-links > a {
    padding: 7px 12px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-white);
    font-size: 0.79rem;
    text-decoration: none;
  }

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

  #rk-gas-guide .rk-gas-section {
    padding: clamp(38px, 6vw, 70px) 0;
    border-top: 1px solid var(--rk-line);
  }

  #rk-gas-guide .rk-gas-section:first-of-type {
    border-top: 0;
  }

  #rk-gas-guide .rk-gas-section-head {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    gap: 20px;
    align-items: start;
    margin-bottom: 28px;
  }

  #rk-gas-guide .rk-gas-section-no {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 64px;
    height: 64px;
    border-radius: 19px;
    color: var(--rk-white);
    background: linear-gradient(145deg, var(--rk-dark), var(--rk-navy));
    font-weight: 900;
  }

  #rk-gas-guide .rk-gas-section-head h2 {
    margin-bottom: 8px;
  }

  #rk-gas-guide .rk-gas-section-head p {
    margin: 0;
    color: var(--rk-muted);
  }

  #rk-gas-guide .rk-gas-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(190px, 0.45fr);
    gap: 24px;
    align-items: center;
    margin: 25px 0;
    padding: clamp(24px, 4vw, 40px);
    border: 1px solid #ffd7c3;
    border-radius: 24px;
    background: linear-gradient(145deg, #fffaf7, var(--rk-warm));
  }

  #rk-gas-guide .rk-gas-answer-label {
    display: block;
    margin-bottom: 10px;
    color: #c94e18;
    font-size: 0.74rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-gas-guide .rk-gas-answer-main {
    color: var(--rk-dark);
    font-size: clamp(1.2rem, 3vw, 1.75rem);
    font-weight: 900;
    line-height: 1.25;
  }

  #rk-gas-guide .rk-gas-answer-main p {
    margin: 0;
    color: inherit;
  }

  #rk-gas-guide .rk-gas-answer-badge {
    padding: 22px;
    border-radius: 20px;
    color: var(--rk-white);
    background: linear-gradient(145deg, var(--rk-orange), var(--rk-red));
    text-align: center;
    box-shadow: 0 16px 35px rgba(227, 61, 53, 0.2);
  }

  #rk-gas-guide .rk-gas-answer-badge b,
  #rk-gas-guide .rk-gas-answer-badge small {
    display: block;
    color: var(--rk-white);
  }

  #rk-gas-guide .rk-gas-answer-badge b {
    font-size: clamp(1.8rem, 5vw, 3rem);
    line-height: 1;
  }

  #rk-gas-guide .rk-gas-answer-badge small {
    margin-top: 7px;
    font-size: 0.72rem;
    font-weight: 800;
    line-height: 1.35;
  }

  #rk-gas-guide .rk-gas-note,
  #rk-gas-guide .rk-gas-warning,
  #rk-gas-guide .rk-gas-truth {
    margin: 25px 0;
    padding: 21px 23px;
    border-radius: 0 18px 18px 0;
  }

  #rk-gas-guide .rk-gas-note {
    border-left: 5px solid var(--rk-blue);
    background: var(--rk-cyan-soft);
  }

  #rk-gas-guide .rk-gas-warning {
    border-left: 5px solid var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-gas-guide .rk-gas-truth {
    border-left: 5px solid var(--rk-cyan);
    background: linear-gradient(135deg, var(--rk-dark), #24485c);
  }

  #rk-gas-guide .rk-gas-truth p,
  #rk-gas-guide .rk-gas-truth strong {
    color: var(--rk-white);
  }

  #rk-gas-guide .rk-gas-note p:last-child,
  #rk-gas-guide .rk-gas-warning p:last-child,
  #rk-gas-guide .rk-gas-truth p:last-child {
    margin-bottom: 0;
  }

  #rk-gas-guide .rk-gas-formula {
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: linear-gradient(145deg, #f8feff, var(--rk-cyan-soft));
  }

  #rk-gas-guide .rk-gas-formula-label {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: 0.75rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-gas-guide .rk-gas-equation {
    overflow-wrap: anywhere;
    color: var(--rk-dark);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: clamp(1.15rem, 3vw, 1.7rem);
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-gas-guide .rk-gas-equation small {
    display: block;
    margin-top: 11px;
    color: var(--rk-muted);
    font-family: Inter, ui-sans-serif, system-ui, sans-serif;
    font-size: 0.78rem;
    font-weight: 570;
    line-height: 1.6;
  }

  #rk-gas-guide .rk-gas-table-wrap {
    width: 100%;
  }

  #rk-gas-guide .rk-gas-table-title {
    display: block;
    margin-bottom: 12px;
    color: var(--rk-dark);
    font-weight: 900;
  }

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

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

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

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

  #rk-gas-guide thead th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: 0.83rem;
    line-height: 1.45;
  }

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

  #rk-gas-guide td {
    color: var(--rk-text);
    font-size: 0.88rem;
  }

  #rk-gas-guide .rk-gas-status {
    display: inline-block;
    padding: 5px 9px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 900;
    line-height: 1.3;
  }

  #rk-gas-guide .rk-gas-status-good {
    color: #0d6b56;
    background: #dff5ed;
  }

  #rk-gas-guide .rk-gas-status-check {
    color: #9a5510;
    background: #fff0d7;
  }

  #rk-gas-guide .rk-gas-status-no {
    color: #ae302b;
    background: #ffe6e4;
  }

  #rk-gas-guide .rk-gas-scheme {
    padding: clamp(22px, 4vw, 34px);
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    background: var(--rk-soft);
  }

  #rk-gas-guide .rk-gas-scheme > input,
  #rk-gas-guide .rk-gas-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
  }

  #rk-gas-guide .rk-gas-scheme-tabs,
  #rk-gas-guide .rk-gas-author-tabs {
    display: grid;
    gap: 0;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    overflow: hidden;
    background: var(--rk-white);
  }

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

  #rk-gas-guide .rk-gas-author-tabs {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-radius: 0;
    border-right: 0;
    border-left: 0;
  }

  #rk-gas-guide .rk-gas-scheme-tab,
  #rk-gas-guide .rk-gas-author-tab {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 58px;
    padding: 11px 14px;
    color: var(--rk-muted);
    background: var(--rk-white);
    font-size: 0.78rem;
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-transform: uppercase;
    cursor: pointer;
  }

  #rk-gas-guide .rk-gas-scheme-tab + .rk-gas-scheme-tab,
  #rk-gas-guide .rk-gas-author-tab + .rk-gas-author-tab {
    border-left: 1px solid var(--rk-line);
  }

  #rk-gas-guide #rk-gas-scheme-direct:checked ~ .rk-gas-scheme-tabs label[for="rk-gas-scheme-direct"],
  #rk-gas-guide #rk-gas-scheme-mixed:checked ~ .rk-gas-scheme-tabs label[for="rk-gas-scheme-mixed"],
  #rk-gas-guide #rk-gas-author-about:checked ~ .rk-gas-author-layout .rk-gas-author-main .rk-gas-author-tabs label[for="rk-gas-author-about"],
  #rk-gas-guide #rk-gas-author-exp:checked ~ .rk-gas-author-layout .rk-gas-author-main .rk-gas-author-tabs label[for="rk-gas-author-exp"],
  #rk-gas-guide #rk-gas-author-sites:checked ~ .rk-gas-author-layout .rk-gas-author-main .rk-gas-author-tabs label[for="rk-gas-author-sites"] {
    color: var(--rk-blue);
    background: var(--rk-cyan-soft);
    box-shadow: inset 0 -5px 0 var(--rk-blue);
  }

  #rk-gas-guide .rk-gas-scheme-panel,
  #rk-gas-guide .rk-gas-author-panel {
    display: none;
  }

  #rk-gas-guide #rk-gas-scheme-direct:checked ~ .rk-gas-scheme-panels .rk-gas-scheme-panel-direct,
  #rk-gas-guide #rk-gas-scheme-mixed:checked ~ .rk-gas-scheme-panels .rk-gas-scheme-panel-mixed,
  #rk-gas-guide #rk-gas-author-about:checked ~ .rk-gas-author-layout .rk-gas-author-main .rk-gas-author-panel-about,
  #rk-gas-guide #rk-gas-author-exp:checked ~ .rk-gas-author-layout .rk-gas-author-main .rk-gas-author-panel-exp,
  #rk-gas-guide #rk-gas-author-sites:checked ~ .rk-gas-author-layout .rk-gas-author-main .rk-gas-author-panel-sites {
    display: block;
  }

  #rk-gas-guide .rk-gas-scheme-panel {
    padding-top: 28px;
  }

  #rk-gas-guide .rk-gas-flow {
    display: flex;
    gap: 10px;
    align-items: stretch;
    margin: 24px 0;
  }

  #rk-gas-guide .rk-gas-flow-box {
    display: flex;
    flex: 1 1 0;
    min-width: 0;
    min-height: 94px;
    align-items: center;
    justify-content: center;
    padding: 15px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.83rem;
    font-weight: 850;
    line-height: 1.4;
    text-align: center;
  }

  #rk-gas-guide .rk-gas-flow-box-hot {
    color: var(--rk-white);
    border-color: transparent;
    background: linear-gradient(145deg, var(--rk-orange), var(--rk-red));
  }

  #rk-gas-guide .rk-gas-flow-box-cold {
    color: var(--rk-white);
    border-color: transparent;
    background: linear-gradient(145deg, var(--rk-blue), var(--rk-cyan));
  }

  #rk-gas-guide .rk-gas-flow-arrow {
    display: flex;
    flex: 0 0 24px;
    align-items: center;
    justify-content: center;
    color: var(--rk-orange);
    font-size: 1.4rem;
    font-weight: 900;
  }

  #rk-gas-guide .rk-gas-lab {
    margin: 30px 0;
    overflow: hidden;
    border: 1px solid #b9dce8;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 20px 50px rgba(16, 37, 54, 0.1);
  }

  #rk-gas-guide .rk-gas-lab-head {
    padding: clamp(26px, 5vw, 44px);
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), #174e68);
  }

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

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

  #rk-gas-guide .rk-gas-lab-body {
    display: grid;
    grid-template-columns: minmax(270px, 0.82fr) minmax(0, 1.18fr);
  }

  #rk-gas-guide .rk-gas-lab-controls {
    padding: clamp(24px, 4vw, 36px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

  #rk-gas-guide .rk-gas-control {
    margin-bottom: 24px;
  }

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

  #rk-gas-guide .rk-gas-control-top {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 9px;
  }

  #rk-gas-guide .rk-gas-control-label {
    color: var(--rk-dark);
    font-size: 0.82rem;
    font-weight: 850;
    line-height: 1.4;
  }

  #rk-gas-guide .rk-gas-control-value {
    flex: 0 0 auto;
    min-width: 68px;
    padding: 5px 9px;
    border-radius: 10px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.78rem;
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
  }

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

  #rk-gas-guide .rk-gas-lab-results {
    min-width: 0;
    padding: clamp(24px, 4vw, 36px);
  }

  #rk-gas-guide .rk-gas-kpi {
    padding: 17px;
    background: var(--rk-soft);
  }

  #rk-gas-guide .rk-gas-kpi-label {
    display: block;
    min-height: 2.8em;
    margin-bottom: 8px;
    color: var(--rk-muted);
    font-size: 0.67rem;
    font-weight: 800;
    line-height: 1.4;
  }

  #rk-gas-guide .rk-gas-kpi-value {
    display: block;
    color: var(--rk-dark);
    font-size: clamp(1.05rem, 2.3vw, 1.42rem);
    font-weight: 950;
    letter-spacing: -0.03em;
    line-height: 1.15;
  }

  #rk-gas-guide .rk-gas-chart {
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-soft);
  }

  #rk-gas-guide .rk-gas-chart h4 {
    margin-bottom: 3px;
  }

  #rk-gas-guide .rk-gas-chart-sub {
    margin-bottom: 13px;
    color: var(--rk-muted);
    font-size: 0.76rem;
  }

  #rk-gas-guide .rk-gas-chart-svg {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 15px;
    background: var(--rk-white);
  }

  #rk-gas-guide .rk-gas-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 18px;
    margin-top: 12px;
    color: var(--rk-muted);
    font-size: 0.72rem;
    font-weight: 700;
  }

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

  #rk-gas-guide .rk-gas-legend-line {
    width: 24px;
    height: 4px;
    border-radius: 99px;
  }

  #rk-gas-guide .rk-gas-lab-verdict {
    margin-top: 22px;
    padding: 17px 19px;
    border-radius: 16px;
    background: var(--rk-cyan-soft);
    color: var(--rk-dark);
    font-size: 0.84rem;
    font-weight: 760;
  }

  #rk-gas-guide .rk-gas-lab-verdict[data-state="warning"] {
    background: var(--rk-warm);
  }

  #rk-gas-guide .rk-gas-lab-verdict[data-state="danger"] {
    background: #ffe7e4;
  }

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

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

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

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

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

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

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

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

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

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

  #rk-gas-guide .rk-gas-cta {
    margin: 48px 0 0;
    overflow: hidden;
    border-radius: 26px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 20%, rgba(255, 116, 56, 0.36), transparent 28%),
      linear-gradient(135deg, var(--rk-dark), #174b63);
  }

  #rk-gas-guide .rk-gas-cta-copy {
    padding: clamp(28px, 5vw, 48px);
  }

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

  #rk-gas-guide .rk-gas-cta p {
    max-width: 810px;
    color: #d6e7ef;
  }

  #rk-gas-guide .rk-gas-cta-bar {
    padding: 18px clamp(24px, 5vw, 48px) 26px;
  }

  #rk-gas-guide .rk-gas-cta-button {
    display: flex;
    width: 100%;
    min-height: 66px;
    align-items: center;
    justify-content: center;
    padding: 16px 24px;
    border-radius: 17px;
    color: var(--rk-white);
    background: linear-gradient(100deg, var(--rk-orange), #f04435);
    box-shadow: 0 16px 35px rgba(227, 61, 53, 0.26);
    font-weight: 950;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
    transition: transform 0.2s ease, box-shadow 0.2s ease;
  }

  #rk-gas-guide .rk-gas-cta-button:hover,
  #rk-gas-guide .rk-gas-cta-button:focus-visible {
    color: var(--rk-white);
    box-shadow: 0 20px 42px rgba(227, 61, 53, 0.34);
    transform: translateY(-2px);
  }

  #rk-gas-guide .rk-gas-cta-note {
    display: block;
    margin-top: 10px;
    color: #bcd2dc;
    font-size: 0.71rem;
    line-height: 1.45;
    text-align: center;
  }

  #rk-gas-guide .rk-gas-author {
    position: relative;
    margin-top: 50px;
    overflow: hidden;
    border: 1px solid #cbdfe8;
    border-radius: 28px;
    background: var(--rk-white);
  }

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

  #rk-gas-guide .rk-gas-author-head h2,
  #rk-gas-guide .rk-gas-author-head p {
    color: var(--rk-white);
  }

  #rk-gas-guide .rk-gas-author-head h2 {
    margin-bottom: 6px;
  }

  #rk-gas-guide .rk-gas-author-head p {
    margin: 0;
    color: #d6e8f0;
  }

  #rk-gas-guide .rk-gas-author-mark {
    flex: 0 0 auto;
    padding: 12px 18px;
    border: 1px solid rgba(40, 201, 218, 0.45);
    border-radius: 15px;
    color: #76ecf5;
    font-size: 0.78rem;
    font-weight: 950;
    letter-spacing: 0.08em;
  }

  #rk-gas-guide .rk-gas-author-layout {
    display: grid;
    grid-template-columns: 31% 69%;
  }

  #rk-gas-guide .rk-gas-author-side {
    padding: clamp(28px, 5vw, 46px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
    text-align: center;
  }

  #rk-gas-guide .rk-gas-author-photo {
    width: min(220px, 82%);
    aspect-ratio: 1;
    margin: 0 auto 24px;
    overflow: hidden;
    border: 10px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 16px 38px rgba(16, 37, 54, 0.14);
  }

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

  #rk-gas-guide .rk-gas-author-name {
    margin-bottom: 8px;
    color: var(--rk-dark);
    font-size: clamp(1.45rem, 3vw, 2rem);
    font-weight: 950;
    letter-spacing: -0.035em;
    line-height: 1.15;
  }

  #rk-gas-guide .rk-gas-author-role {
    color: var(--rk-blue);
    font-size: 0.76rem;
    font-weight: 900;
    letter-spacing: 0.07em;
    line-height: 1.55;
    text-transform: uppercase;
  }

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

  #rk-gas-guide .rk-gas-author-quote {
    position: relative;
    margin: clamp(26px, 5vw, 44px);
    padding: 26px 28px 26px 55px;
    border-radius: 20px;
    background: var(--rk-cyan-soft);
  }

  #rk-gas-guide .rk-gas-author-quote::before {
    content: "“";
    position: absolute;
    top: 10px;
    left: 18px;
    color: var(--rk-cyan);
    font-size: 3.5rem;
    font-weight: 950;
    line-height: 1;
  }

  #rk-gas-guide .rk-gas-author-quote p {
    margin: 0;
    color: var(--rk-dark);
    font-size: clamp(1rem, 2.2vw, 1.23rem);
    font-style: italic;
    font-weight: 760;
  }

  #rk-gas-guide .rk-gas-author-panel {
    padding: clamp(24px, 4vw, 38px);
  }

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

  #rk-gas-guide .rk-gas-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }

  #rk-gas-guide .rk-gas-site-links > a {
    padding: 9px 14px;
    border: 1px solid #c9dde6;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    text-decoration: none;
  }

  #rk-gas-guide .rk-gas-site-links > a:hover,
  #rk-gas-guide .rk-gas-site-links > a:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  @media (max-width: 980px) {
    #rk-gas-guide .rk-gas-learn-grid,
    #rk-gas-guide .rk-gas-kpi-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

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

    #rk-gas-guide .rk-gas-lab-body {
      grid-template-columns: 1fr;
    }

    #rk-gas-guide .rk-gas-lab-controls {
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }

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

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

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

    #rk-gas-guide .rk-gas-shell,
    #rk-gas-guide .rk-gas-author,
    #rk-gas-guide .rk-gas-lab {
      border-radius: 20px;
    }

    #rk-gas-guide .rk-gas-content {
      padding-right: 18px;
      padding-left: 18px;
    }

    #rk-gas-guide .rk-gas-learn-grid,
    #rk-gas-guide .rk-gas-card-grid,
    #rk-gas-guide .rk-gas-check-grid,
    #rk-gas-guide .rk-gas-kpi-grid {
      grid-template-columns: 1fr;
    }

    #rk-gas-guide .rk-gas-section-head {
      grid-template-columns: 48px minmax(0, 1fr);
      gap: 14px;
    }

    #rk-gas-guide .rk-gas-section-no {
      width: 48px;
      height: 48px;
      border-radius: 15px;
    }

    #rk-gas-guide .rk-gas-answer {
      grid-template-columns: 1fr;
    }

    #rk-gas-guide .rk-gas-flow {
      flex-direction: column;
    }

    #rk-gas-guide .rk-gas-flow-arrow {
      flex-basis: 24px;
      transform: rotate(90deg);
    }

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

    #rk-gas-guide .rk-gas-scheme-tab + .rk-gas-scheme-tab,
    #rk-gas-guide .rk-gas-author-tab + .rk-gas-author-tab {
      border-top: 1px solid var(--rk-line);
      border-left: 0;
    }

    /* Tabele zmieniają się w pionowe kafle — bez przewijania poziomego. */
    #rk-gas-guide table,
    #rk-gas-guide thead,
    #rk-gas-guide tbody,
    #rk-gas-guide tr,
    #rk-gas-guide th,
    #rk-gas-guide td {
      display: block;
      width: 100%;
    }

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

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

    #rk-gas-guide tbody {
      display: grid;
      gap: 15px;
    }

    #rk-gas-guide tbody tr {
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 17px;
      background: var(--rk-white);
    }

    #rk-gas-guide td,
    #rk-gas-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(104px, 38%) minmax(0, 62%);
      gap: 12px;
      padding: 13px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
    }

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

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

    #rk-gas-guide .rk-gas-author-head {
      align-items: flex-start;
      flex-direction: column;
    }
  }

  @media (max-width: 430px) {
    #rk-gas-guide .rk-gas-hero {
      padding-right: 22px;
      padding-left: 22px;
    }

    #rk-gas-guide .rk-gas-nav-links {
      display: grid;
      grid-template-columns: 1fr;
    }

    #rk-gas-guide .rk-gas-nav-links > a {
      border-radius: 12px;
      text-align: center;
    }

    #rk-gas-guide td {
      grid-template-columns: 1fr;
      gap: 5px;
    }

    #rk-gas-guide .rk-gas-author-quote {
      margin-right: 18px;
      margin-left: 18px;
      padding-left: 46px;
    }
  }

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

<article id="rk-gas-guide" aria-labelledby="rk-gas-hero-title">
  <div class="rk-gas-shell">
    <div class="rk-gas-progress-track" aria-hidden="true"><div class="rk-gas-progress"></div></div>

    <header class="rk-gas-hero">
      <div class="rk-gas-badge">Analiza techniczna • aktualizacja 2026</div>
      <h2 id="rk-gas-hero-title">Kocioł gazowy do ogrzewania podłogowego – <em>dobór mocy, modulacja, schemat i ustawienia</em></h2>

      <div class="rk-gas-hook">
        <p><strong>Kocioł 24 kW nie oznacza, że dom potrzebuje 24 kW.</strong> W budynku tracącym 5–7 kW wysoka moc maksymalna bywa potrzebna do przygotowania ciepłej wody, ale o jakości ogrzewania podłogowego decydują przede wszystkim moc minimalna, modulacja, przepływ oraz temperatura powrotu.</p>
      </div>

      <p class="rk-gas-hero-lead">Ten poradnik pokazuje, kiedy kondensacyjny kocioł gazowy może zasilać rozdzielacz bezpośrednio, kiedy potrzebne są dodatkowa pompa, zawór mieszający albo sprzęgło oraz jak odróżnić obliczeniowy dobór od zestawu elementów dodanych „na wszelki wypadek”.</p>

      <div class="rk-gas-hero-meta">
        <b>Autor: Robert Kucharski</b>
        <b>Aktualizacja: 25 sierpnia 2026 r.</b>
        <b>Czas czytania: około 22 min</b>
      </div>
    </header>

    <div class="rk-gas-content">
      <aside class="rk-gas-learn" aria-labelledby="rk-gas-learn-title">
        <span class="rk-gas-eyebrow">Po przeczytaniu będziesz wiedzieć</span>
        <h3 id="rk-gas-learn-title">Cztery decyzje, które naprawdę określają pracę kotła z podłogówką</h3>
        <div class="rk-gas-learn-grid">
          <div class="rk-gas-learn-card"><div class="rk-gas-learn-no" aria-hidden="true">01</div><h4>Jaka moc na CO?</h4><p>Oddzielisz projektowe obciążenie cieplne od katalogowej mocy urządzenia.</p></div>
          <div class="rk-gas-learn-card"><div class="rk-gas-learn-no" aria-hidden="true">02</div><h4>Jak nisko moduluje?</h4><p>Ocenisz moc minimalną i ryzyko częstego włączania palnika w cieplejsze dni.</p></div>
          <div class="rk-gas-learn-card"><div class="rk-gas-learn-no" aria-hidden="true">03</div><h4>Czy hydraulika pasuje?</h4><p>Sprawdzisz przepływ, opory oraz możliwości pompy wbudowanej w kocioł.</p></div>
          <div class="rk-gas-learn-card"><div class="rk-gas-learn-no" aria-hidden="true">04</div><h4>Co wymusza CWU?</h4><p>Zobaczysz, dlaczego moc dla prysznica może być wielokrotnie większa niż dla domu.</p></div>
        </div>
      </aside>

      <nav class="rk-gas-nav" aria-label="Nawigacja po poradniku">
        <strong>Przejdź do wybranej części:</strong>
        <div class="rk-gas-nav-links">
          <a href="#rk-gas-werdykt">Werdykt</a>
          <a href="#rk-gas-kondensacja">Kondensacja</a>
          <a href="#rk-gas-dobor">Dobór mocy</a>
          <a href="#rk-gas-laboratorium">Laboratorium</a>
          <a href="#rk-gas-cwu">Ciepła woda</a>
          <a href="#rk-gas-schematy">Schematy</a>
          <a href="#rk-gas-hydraulika">Hydraulika</a>
          <a href="#rk-gas-sterowanie">Sterowanie</a>
          <a href="#rk-gas-armatura">Armatura</a>
          <a href="#rk-gas-uruchomienie">Uruchomienie</a>
          <a href="#rk-gas-2026">Kocioł w 2026</a>
          <a href="#rk-gas-faq">FAQ</a>
        </div>
      </nav>

<section class="rk-gas-section" id="rk-gas-werdykt" aria-labelledby="rk-gas-s1">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">1</div>
          <div>
            <h2 id="rk-gas-s1">Czy kocioł gazowy dobrze współpracuje z ogrzewaniem podłogowym?</h2>
            <p>Tak — pod warunkiem że jest to kocioł kondensacyjny dobrany do niskotemperaturowej instalacji, a nie tylko do chwilowego zapotrzebowania na ciepłą wodę.</p>
          </div>
        </div>

        <div class="rk-gas-answer">
          <div>
            <span class="rk-gas-answer-label">Odpowiedź projektowa</span>
            <div class="rk-gas-answer-main"><p>Najprostszy układ jest często najlepszy: kocioł pracujący pogodowo na temperaturze wymaganej przez podłogę, pompa kotłowa oraz prawidłowo wyregulowany rozdzielacz.</p></div>
          </div>
          <div class="rk-gas-answer-badge"><b>3× nie</b><small>mieszacz, sprzęgło i druga pompa nie są elementami obowiązkowymi z definicji</small></div>
        </div>

        <p><strong>Kocioł gazowy do ogrzewania podłogowego</strong> ma sprzyjające warunki pracy, ponieważ instalacja płaszczyznowa zazwyczaj potrzebuje niższej temperatury wody niż klasyczna instalacja grzejnikowa. Chłodniejszy powrót ułatwia kondensację pary wodnej ze spalin, a duża powierzchnia grzewcza pozwala dostarczyć wymaganą moc bez rozgrzewania wody do 60–70°C.</p>

        <p>Ta zgodność nie oznacza jednak, że każdy kocioł i każdy schemat będą działały poprawnie. W małym lub dobrze ocieplonym domu problemem częściej okazuje się zbyt wysoka <strong>moc minimalna</strong>, zamykanie większości pętli przez automatykę albo brak wymaganego przepływu niż niedostatek mocy maksymalnej.</p>

        <div class="rk-gas-card-grid">
          <div class="rk-gas-card"><div class="rk-gas-card-tag">Źródło</div><h4>Kocioł kondensacyjny</h4><p>Powinien mieć niską moc minimalną, szeroki zakres modulacji, sterowanie pogodowe i pompę zdolną pokonać opory obiegu.</p></div>
          <div class="rk-gas-card"><div class="rk-gas-card-tag">Odbiornik</div><h4>Podłoga z projektu</h4><p>Temperatura zasilania, rozstaw rur, przepływ i temperatura powierzchni muszą wynikać z obciążenia każdego pomieszczenia.</p></div>
          <div class="rk-gas-card"><div class="rk-gas-card-tag">Połączenie</div><h4>Hydraulika bez zgadywania</h4><p>O dodatkowej pompie, mieszaczu lub sprzęgle decydują obiegi, temperatury, opory i wymagania kotła — nie przyzwyczajenie wykonawcy.</p></div>
        </div>

        <div class="rk-gas-truth">
          <p><strong>Najważniejsza zasada:</strong> nie podgrzewaj wody do wysokiej temperatury tylko po to, żeby później schładzać ją zaworem mieszającym, jeżeli cały budynek może pracować na jednym niskotemperaturowym parametrze.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-kondensacja" aria-labelledby="rk-gas-s2">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">2</div>
          <div>
            <h2 id="rk-gas-s2">Kondensacja w kotle gazowym — dlaczego liczy się powrót?</h2>
            <p>Kocioł odzyskuje dodatkową energię ze skraplania pary wodnej zawartej w spalinach, gdy wymiennik jest odpowiednio chłodny.</p>
          </div>
        </div>

        <p>Spalanie gazu wytwarza między innymi parę wodną. Jeżeli spaliny zostaną schłodzone poniżej ich rzeczywistego punktu rosy, para zaczyna się skraplać i oddaje ciepło utajone do wody instalacyjnej. Punkt rosy nie jest jedną stałą wartością dla każdego kotła: zależy między innymi od składu gazu, zawartości dwutlenku węgla w spalinach i nadmiaru powietrza. W praktycznych objaśnieniach często pojawia się okolica 55°C, ale należy traktować ją jako przybliżenie, a nie nastawę regulatora.</p>

        <p>Im niższa temperatura wody wracającej do wymiennika, tym większa część jego powierzchni może pracować w warunkach sprzyjających kondensacji. Dlatego układ 34/28°C będzie z reguły korzystniejszy od 55/45°C. Nie wolno jednak wyciągać z samej temperatury powrotu dokładnej sprawności ani gwarantowanej oszczędności paliwa — wpływ mają także modulacja, regulacja, straty postojowe, komin, jakość spalania i charakterystyka budynku.</p>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Jak interpretować temperaturę powrotu?</span>
          <table>
            <thead><tr><th>Powrót</th><th>Ocena warunków</th><th>Znaczenie praktyczne</th><th>Czego nie wolno obiecywać</th></tr></thead>
            <tbody>
              <tr><td data-label="Powrót"><strong>25–35°C</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-good">bardzo korzystne</span></td><td data-label="Znaczenie">Typowy zakres dobrze zaprojektowanej podłogówki przy niskim parametrze.</td><td data-label="Bez obietnic">Sama temperatura nie podaje sezonowego zużycia gazu.</td></tr>
              <tr><td data-label="Powrót"><strong>35–45°C</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-good">korzystne</span></td><td data-label="Znaczenie">Kondensacja nadal może być intensywna; wynik zależy od warunków spalania.</td><td data-label="Bez obietnic">Nie oznacza automatycznie konkretnej sprawności procentowej.</td></tr>
              <tr><td data-label="Powrót"><strong>45–55°C</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-check">zakres przejściowy</span></td><td data-label="Znaczenie">Odzysk ciepła utajonego może się zmniejszać wraz ze wzrostem temperatury.</td><td data-label="Bez obietnic">Nie istnieje ostra, identyczna granica dla każdego gazu i palnika.</td></tr>
              <tr><td data-label="Powrót"><strong>powyżej 55°C</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-no">ograniczona kondensacja</span></td><td data-label="Znaczenie">Znaczna część wymiennika może pracować poza warunkami kondensacji.</td><td data-label="Bez obietnic">Kocioł nadal grzeje, lecz nie wykorzystuje w pełni swojej konstrukcji.</td></tr>
            </tbody>
          </table>
        </div>

        <h3>Dlaczego katalog pokazuje sprawność powyżej 100%?</h3>
        <p>Wartość około 105–109% może pojawić się wtedy, gdy sprawność odniesiono do <strong>wartości opałowej</strong> paliwa, która nie uwzględnia energii odzyskanej ze skraplania pary wodnej. Po odniesieniu do <strong>ciepła spalania</strong>, obejmującego tę energię, sprawność pozostaje poniżej 100%. To dwa różne punkty odniesienia, a nie tworzenie energii.</p>

        <div class="rk-gas-note">
          <p>Temperatura instalacji nie powinna być ustawiana tylko po to, żeby „wywołać kondensację”. Najpierw podłoga ma dostarczyć obliczeniową moc cieplną bez przekroczenia dopuszczalnej temperatury powierzchni, a dopiero w tym zakresie szukamy najniższej stabilnej krzywej grzewczej.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-dobor" aria-labelledby="rk-gas-s3">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">3</div>
          <div>
            <h2 id="rk-gas-s3">Jak dobrać moc kotła gazowego do podłogówki?</h2>
            <p>Dobór ma trzy osobne osie: moc dla ogrzewania budynku, zdolność modulacji przy małym obciążeniu oraz sposób przygotowania ciepłej wody.</p>
          </div>
        </div>

        <h3>1. Zacznij od projektowego obciążenia cieplnego</h3>
        <p>Moc potrzebna do ogrzewania powinna wynikać z obliczenia strat ciepła w projektowej temperaturze zewnętrznej, a nie z kubatury pomnożonej przez jeden internetowy współczynnik. Wynik całego budynku służy do sprawdzenia źródła, natomiast obciążenia pomieszczeń są potrzebne do zaprojektowania podłogi. Metodę rozwijają poradniki: <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a> oraz <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831 i dobór mocy</a>.</p>

        <h3>2. Sprawdź moc minimalną, nie tylko maksymalną</h3>
        <p>Dom, który przy projektowym mrozie potrzebuje 6 kW, przez dużą część sezonu może odbierać tylko 1–3 kW. Jeżeli minimalna moc kotła wynosi 4 kW, palnik nie będzie mógł pracować stale: podgrzeje wodę, wyłączy się, poczeka na spadek temperatury i uruchomi ponownie. To właśnie taktowanie. Bezwładność podłogi pomaga, ale nie usuwa problemu zbyt wysokiej mocy minimalnej, szczególnie gdy sterowanie strefowe zamyka większość pętli.</p>

        <div class="rk-gas-formula">
          <span class="rk-gas-formula-label">Uproszczona ocena częściowego obciążenia</span>
          <div class="rk-gas-equation">Q<sub>akt</sub> ≈ Q<sub>proj</sub> · (T<sub>gr</sub> − T<sub>e</sub>) / (T<sub>gr</sub> − T<sub>e,proj</sub>)
            <small>Qproj — projektowe obciążenie cieplne, Tgr — umowna temperatura zakończenia ogrzewania uwzględniająca zyski, Te — aktualna temperatura zewnętrzna, Te,proj — projektowa temperatura zewnętrzna. To model poglądowy, a nie OZC ani model dynamiczny budynku.</small>
          </div>
        </div>

        <h3>3. Rozdziel moc CO i moc CWU</h3>
        <p>Kocioł dwufunkcyjny może mieć 20–30 kW głównie dlatego, że ma podgrzać duży strumień wody w kilka sekund. Moc przekazywana na centralne ogrzewanie może i powinna zostać ograniczona w ustawieniach serwisowych do wartości odpowiedniej dla budynku. W kotle jednofunkcyjnym z zasobnikiem większa chwilowa moc skraca ładowanie zbiornika, ale o komforcie decydują również jego pojemność, wymiennik, profil poboru i sterowanie priorytetem.</p>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Parametry ważniejsze od napisu „24 kW” na obudowie</span>
          <table>
            <thead><tr><th>Parametr</th><th>Co sprawdza projektant?</th><th>Dlaczego jest ważny?</th></tr></thead>
            <tbody>
              <tr><td data-label="Parametr"><strong>Q<sub>proj</sub> budynku</strong></td><td data-label="Sprawdzenie">Obciążenie cieplne w warunkach projektowych.</td><td data-label="Znaczenie">Określa wymaganą moc grzewczą, bez automatycznego dodawania mocy przepływowej CWU.</td></tr>
              <tr><td data-label="Parametr"><strong>Moc minimalna</strong></td><td data-label="Sprawdzenie">Najniższą stabilną moc przy parametrach właściwych dla instalacji.</td><td data-label="Znaczenie">Decyduje o pracy w cieplejsze dni i po zamknięciu części stref.</td></tr>
              <tr><td data-label="Parametr"><strong>Zakres modulacji</strong></td><td data-label="Sprawdzenie">Relację mocy maksymalnej do minimalnej oraz zakres dla CO.</td><td data-label="Znaczenie">Sam zapis 1:10 nic nie mówi bez wartości granicznych i warunków pomiaru.</td></tr>
              <tr><td data-label="Parametr"><strong>Maksimum na CO</strong></td><td data-label="Sprawdzenie">Możliwość ograniczenia mocy grzewczej w menu serwisowym.</td><td data-label="Znaczenie">Kocioł dobrany pod CWU nie musi oddawać pełnej mocy do podłogi.</td></tr>
              <tr><td data-label="Parametr"><strong>Pompa kotłowa</strong></td><td data-label="Sprawdzenie">Dostępne ciśnienie przy projektowym przepływie.</td><td data-label="Znaczenie">Weryfikuje, czy pompa obsłuży rozdzielacz, pętle i magistralę.</td></tr>
              <tr><td data-label="Parametr"><strong>Minimum przepływu</strong></td><td data-label="Sprawdzenie">Wymagania wymiennika i zachowanie po zamknięciu stref.</td><td data-label="Znaczenie">Chroni przed niestabilną pracą, przegrzewaniem i błędami przepływu.</td></tr>
              <tr><td data-label="Parametr"><strong>Wymagania CWU</strong></td><td data-label="Sprawdzenie">Liczbę punktów, strumień, temperaturę oraz zasobnik.</td><td data-label="Znaczenie">Pozwala wybrać układ jedno- lub dwufunkcyjny bez zawyżania mocy CO.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-gas-warning">
          <p><strong>Nie dobieraj kotła przez dodanie 25 kW CWU do 6 kW strat budynku.</strong> W typowej instalacji priorytet CWU czasowo wstrzymuje ogrzewanie. Właściwy dobór porównuje osobno warunek grzewczy i warunek przygotowania wody.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-laboratorium" aria-labelledby="rk-gas-s4">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">4</div>
          <div>
            <h2 id="rk-gas-s4">Laboratorium kotła gazowego z ogrzewaniem podłogowym</h2>
            <p>Zmień dane i zobacz zależność między obciążeniem domu, mocą minimalną kotła, przepływem oraz mocą potrzebną do przygotowania CWU.</p>
          </div>
        </div>

        <div class="rk-gas-lab" data-rk-gas-lab>
          <div class="rk-gas-lab-head">
            <span class="rk-gas-eyebrow" style="color:#7cebf4">Interaktywny model edukacyjny</span>
            <h3>Sprawdź, czy wybrany kocioł potrafi zejść z mocą wystarczająco nisko</h3>
            <p>Model nie dobiera konkretnego urządzenia i nie zastępuje OZC, charakterystyki pompy ani danych producenta. Pokazuje relacje, które powinny zostać sprawdzone przed zakupem.</p>
          </div>

          <div class="rk-gas-lab-body">
            <div class="rk-gas-lab-controls">
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-qdesign">Projektowe obciążenie cieplne</label><output class="rk-gas-control-value" id="rk-gas-qdesign-out" for="rk-gas-qdesign">6,3 kW</output></div>
                <input id="rk-gas-qdesign" type="range" min="2" max="20" step="0.1" value="6.3">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-tdesign">Projektowa temperatura zewnętrzna</label><output class="rk-gas-control-value" id="rk-gas-tdesign-out" for="rk-gas-tdesign">−20°C</output></div>
                <input id="rk-gas-tdesign" type="range" min="-24" max="-12" step="1" value="-20">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-tcut">Umowna granica ogrzewania</label><output class="rk-gas-control-value" id="rk-gas-tcut-out" for="rk-gas-tcut">15°C</output></div>
                <input id="rk-gas-tcut" type="range" min="10" max="18" step="1" value="15">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-tout">Aktualna temperatura zewnętrzna</label><output class="rk-gas-control-value" id="rk-gas-tout-out" for="rk-gas-tout">0°C</output></div>
                <input id="rk-gas-tout" type="range" min="-24" max="18" step="1" value="0">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-pmin">Minimalna moc kotła na CO</label><output class="rk-gas-control-value" id="rk-gas-pmin-out" for="rk-gas-pmin">2,0 kW</output></div>
                <input id="rk-gas-pmin" type="range" min="1" max="6" step="0.1" value="2">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-ts">Temperatura zasilania podłogi</label><output class="rk-gas-control-value" id="rk-gas-ts-out" for="rk-gas-ts">34°C</output></div>
                <input id="rk-gas-ts" type="range" min="28" max="50" step="1" value="34">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-tr">Temperatura powrotu</label><output class="rk-gas-control-value" id="rk-gas-tr-out" for="rk-gas-tr">28°C</output></div>
                <input id="rk-gas-tr" type="range" min="22" max="45" step="1" value="28">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-dhw-flow">Strumień ciepłej wody</label><output class="rk-gas-control-value" id="rk-gas-dhw-flow-out" for="rk-gas-dhw-flow">10 l/min</output></div>
                <input id="rk-gas-dhw-flow" type="range" min="5" max="16" step="0.5" value="10">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-dhw-cold">Temperatura wody zimnej</label><output class="rk-gas-control-value" id="rk-gas-dhw-cold-out" for="rk-gas-dhw-cold">10°C</output></div>
                <input id="rk-gas-dhw-cold" type="range" min="5" max="15" step="1" value="10">
              </div>
              <div class="rk-gas-control">
                <div class="rk-gas-control-top"><label class="rk-gas-control-label" for="rk-gas-dhw-hot">Temperatura wody ciepłej</label><output class="rk-gas-control-value" id="rk-gas-dhw-hot-out" for="rk-gas-dhw-hot">45°C</output></div>
                <input id="rk-gas-dhw-hot" type="range" min="38" max="50" step="1" value="45">
              </div>
            </div>

            <div class="rk-gas-lab-results" aria-live="polite">
              <div class="rk-gas-kpi-grid">
                <div class="rk-gas-kpi"><span class="rk-gas-kpi-label">Obciążenie przy bieżącej temperaturze</span><strong class="rk-gas-kpi-value" id="rk-gas-kpi-load">2,70 kW</strong></div>
                <div class="rk-gas-kpi"><span class="rk-gas-kpi-label">Przepływ projektowy podłogówki</span><strong class="rk-gas-kpi-value" id="rk-gas-kpi-flow">0,90 m³/h</strong></div>
                <div class="rk-gas-kpi"><span class="rk-gas-kpi-label">Obciążenie / moc minimalna</span><strong class="rk-gas-kpi-value" id="rk-gas-kpi-ratio">1,35×</strong></div>
                <div class="rk-gas-kpi"><span class="rk-gas-kpi-label">Warunki kondensacji</span><strong class="rk-gas-kpi-value" id="rk-gas-kpi-cond">bardzo dobre</strong></div>
                <div class="rk-gas-kpi"><span class="rk-gas-kpi-label">Moc chwilowa dla CWU</span><strong class="rk-gas-kpi-value" id="rk-gas-kpi-dhw">24,4 kW</strong></div>
              </div>

              <div class="rk-gas-chart">
                <h4>Krzywa obciążenia budynku a moc minimalna kotła</h4>
                <p class="rk-gas-chart-sub">Obszar, w którym zapotrzebowanie spada poniżej mocy minimalnej, wskazuje potencjalną potrzebę pracy cyklicznej.</p>
                <svg class="rk-gas-chart-svg" id="rk-gas-load-chart" viewBox="0 0 660 330" role="img" aria-labelledby="rk-gas-chart-title rk-gas-chart-desc">
                  <title id="rk-gas-chart-title">Obciążenie cieplne budynku i minimalna moc kotła</title>
                  <desc id="rk-gas-chart-desc">Wykres aktualizowany na podstawie parametrów ustawionych w laboratorium.</desc>
                  <rect x="0" y="0" width="660" height="330" rx="15" fill="#ffffff"/>
                  <g stroke="#dce8ee" stroke-width="1">
                    <line x1="62" y1="36" x2="625" y2="36"/><line x1="62" y1="95" x2="625" y2="95"/><line x1="62" y1="154" x2="625" y2="154"/><line x1="62" y1="213" x2="625" y2="213"/><line x1="62" y1="272" x2="625" y2="272"/>
                  </g>
                  <g fill="#687986" font-family="Inter, sans-serif" font-size="12">
                    <text x="22" y="40" id="rk-gas-y4">6,9</text><text x="22" y="99" id="rk-gas-y3">5,2</text><text x="22" y="158" id="rk-gas-y2">3,5</text><text x="22" y="217" id="rk-gas-y1">1,7</text><text x="35" y="276">0</text>
                    <text x="50" y="298" id="rk-gas-x0">−20</text><text x="323" y="298" id="rk-gas-x1">−3</text><text x="611" y="298" id="rk-gas-x2">15</text>
                    <text x="270" y="320">temperatura zewnętrzna [°C]</text><text transform="rotate(-90 13 205)" x="13" y="205">moc [kW]</text>
                  </g>
                  <path id="rk-gas-risk-area" d="M446.3 203.9 L625 272 L625 203.9 Z" fill="rgba(255,116,56,.13)"/>
                  <path id="rk-gas-demand-path" d="M62 57.5 L625 272" fill="none" stroke="#078fbe" stroke-width="6" stroke-linecap="round"/>
                  <line id="rk-gas-min-line" x1="62" y1="203.9" x2="625" y2="203.9" stroke="#e33d35" stroke-width="4" stroke-dasharray="10 8"/>
                  <line id="rk-gas-current-line" x1="384" y1="36" x2="384" y2="272" stroke="#14384d" stroke-width="2" stroke-dasharray="4 6"/>
                  <circle id="rk-gas-current-dot" cx="384" cy="180.1" r="7" fill="#ffffff" stroke="#14384d" stroke-width="4"/>
                </svg>
                <div class="rk-gas-chart-legend" aria-hidden="true">
                  <span class="rk-gas-legend-item"><i class="rk-gas-legend-line" style="background:#078fbe"></i>obciążenie budynku</span>
                  <span class="rk-gas-legend-item"><i class="rk-gas-legend-line" style="background:#e33d35"></i>moc minimalna kotła</span>
                  <span class="rk-gas-legend-item"><i class="rk-gas-legend-line" style="background:#14384d"></i>bieżąca temperatura</span>
                </div>
              </div>

              <div class="rk-gas-lab-verdict" id="rk-gas-lab-verdict" data-state="good">Przy zadanych parametrach aktualne obciążenie jest większe od mocy minimalnej. Kocioł ma warunki do modulacji, o ile zachowany jest wymagany przepływ i odbiór ciepła.</div>
            </div>
          </div>

          <div class="rk-gas-note" style="margin:0;border-radius:0;padding:20px 34px">
            <p><strong>Ważne:</strong> przepływ obliczany jest dla mocy projektowej i różnicy Tz − Tp. Rzeczywisty regulator może zmieniać temperaturę, przepływ lub oba parametry, a możliwości kotła trzeba potwierdzić jego dokumentacją techniczną.</p>
          </div>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-cwu" aria-labelledby="rk-gas-s5">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">5</div>
          <div>
            <h2 id="rk-gas-s5">Kocioł jednofunkcyjny czy dwufunkcyjny do podłogówki?</h2>
            <p>Rodzaj odbiorników ciepła nie rozstrzyga sposobu przygotowania CWU. Decydują komfort, liczba punktów poboru, miejsce i charakter korzystania z wody.</p>
          </div>
        </div>

        <p>Kocioł dwufunkcyjny podgrzewa wodę przepływowo, dlatego jego moc maksymalna może być wysoka nawet w domu o niewielkich stratach ciepła. Kocioł jednofunkcyjny ładuje zasobnik; chwilowy pobór pokrywa wtedy również energia zgromadzona w wodzie. Oba warianty mogą prawidłowo współpracować z podłogówką, jeżeli osobno sprawdzono parametr centralnego ogrzewania i przygotowania wody.</p>

        <div class="rk-gas-formula">
          <span class="rk-gas-formula-label">Moc potrzebna do przepływowego podgrzania wody</span>
          <div class="rk-gas-equation">P<sub>CWU</sub> ≈ 0,0698 · V̇ · (T<sub>ciepła</sub> − T<sub>zimna</sub>)
            <small>P — moc w kW, V̇ — strumień w l/min, temperatury w °C. Wzór pomija straty urządzenia i wahania temperatury wody zimnej, dlatego dobór wymaga rezerwy i danych technicznych kotła.</small>
          </div>
        </div>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Przykład dla podgrzania wody z 10°C do 45°C</span>
          <table>
            <thead><tr><th>Strumień</th><th>Moc teoretyczna</th><th>Praktyczna interpretacja</th></tr></thead>
            <tbody>
              <tr><td data-label="Strumień"><strong>8 l/min</strong></td><td data-label="Moc">19,5 kW</td><td data-label="Interpretacja">Umiarkowany prysznic; komfort zależy od armatury i temperatury zasilania wodą zimną.</td></tr>
              <tr><td data-label="Strumień"><strong>10 l/min</strong></td><td data-label="Moc">24,4 kW</td><td data-label="Interpretacja">Typowy poziom pokazujący, dlaczego mały dom otrzymuje kocioł o dużej mocy maksymalnej.</td></tr>
              <tr><td data-label="Strumień"><strong>12 l/min</strong></td><td data-label="Moc">29,3 kW</td><td data-label="Interpretacja">Większy pobór; przy dwóch jednoczesnych punktach nadal może być niewystarczający.</td></tr>
              <tr><td data-label="Strumień"><strong>14 l/min</strong></td><td data-label="Moc">34,2 kW</td><td data-label="Interpretacja">Wysoki przepływ wymaga odpowiedniej mocy, instalacji gazowej i wydajności przyłącza wody.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-gas-card-grid">
          <div class="rk-gas-card">
            <div class="rk-gas-card-tag">2 funkcje</div>
            <h4>Kocioł przepływowy</h4>
            <p>Mniej miejsca i brak osobnego zasobnika. Najlepiej sprawdza się przy krótkich odległościach do punktów poboru i umiarkowanym zapotrzebowaniu na wodę. Moc maksymalną zwykle determinuje CWU.</p>
          </div>
          <div class="rk-gas-card">
            <div class="rk-gas-card-tag">1 funkcja</div>
            <h4>Kocioł z zasobnikiem</h4>
            <p>Zapewnia zapas wody i może lepiej obsłużyć kilka poborów. Wymaga miejsca, właściwej pojemności, mocy wężownicy, sterowania ładowaniem i oceny strat postojowych.</p>
          </div>
          <div class="rk-gas-card">
            <div class="rk-gas-card-tag">Kompakt</div>
            <h4>Kocioł ze zbiornikiem warstwowym</h4>
            <p>Rozwiązanie pośrednie. Rzeczywisty komfort należy oceniać na podstawie profilu poboru i parametrów producenta, nie samej pojemności zapisanej w litrach.</p>
          </div>
        </div>

        <div class="rk-gas-warning">
          <p><strong>Liczba mieszkańców nie jest samodzielnym doborem mocy.</strong> Cztery osoby korzystające kolejno z jednego prysznica tworzą inny profil niż dwie łazienki, deszczownica i napełnianie wanny w tym samym czasie.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-schematy" aria-labelledby="rk-gas-s6">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">6</div>
          <div>
            <h2 id="rk-gas-s6">Schemat kotła gazowego z ogrzewaniem podłogowym</h2>
            <p>Nie istnieje jeden schemat dla każdego budynku. Najpierw ustala się liczbę temperatur i obiegów, a dopiero później armaturę.</p>
          </div>
        </div>

        <div class="rk-gas-scheme">
          <input type="radio" name="rk-gas-scheme" id="rk-gas-scheme-direct" checked>
          <input type="radio" name="rk-gas-scheme" id="rk-gas-scheme-mixed">

          <div class="rk-gas-scheme-tabs" role="tablist" aria-label="Wybór schematu instalacji">
            <label class="rk-gas-scheme-tab" for="rk-gas-scheme-direct">Cały dom na podłogówce — obieg bezpośredni</label>
            <label class="rk-gas-scheme-tab" for="rk-gas-scheme-mixed">Podłogówka i grzejniki — różne temperatury</label>
          </div>

          <div class="rk-gas-scheme-panels">
            <div class="rk-gas-scheme-panel rk-gas-scheme-panel-direct">
              <h3>Wariant A: jeden niskotemperaturowy obieg</h3>
              <p>Kocioł ustawia temperaturę zasilania według krzywej pogodowej i tłoczy wodę bezpośrednio przez rozdzielacz. Jeżeli jego pompa zapewnia wymagany przepływ przy obliczonych oporach, dodatkowa pompa i zawór mieszający nie są potrzebne.</p>
              <div class="rk-gas-flow" role="img" aria-label="Schemat bezpośredni: kocioł z pompą, zabezpieczenie instalacji, rozdzielacz, pętle i powrót do kotła">
                <div class="rk-gas-flow-box rk-gas-flow-box-hot">Kocioł kondensacyjny<br>+ pompa wbudowana</div><div class="rk-gas-flow-arrow" aria-hidden="true">→</div>
                <div class="rk-gas-flow-box">Filtr / separator<br>zgodnie z projektem</div><div class="rk-gas-flow-arrow" aria-hidden="true">→</div>
                <div class="rk-gas-flow-box rk-gas-flow-box-cold">Rozdzielacz<br>i nastawy przepływów</div><div class="rk-gas-flow-arrow" aria-hidden="true">→</div>
                <div class="rk-gas-flow-box">Pętle podłogowe<br>→ powrót do kotła</div>
              </div>
              <div class="rk-gas-note"><p><strong>Zaleta:</strong> najniższy możliwy parametr dociera z kotła bez strat temperatury na niepotrzebnym mieszaniu. Warunkiem jest zgodność przepływu, oporów, zakresu modulacji i sterowania.</p></div>
            </div>

            <div class="rk-gas-scheme-panel rk-gas-scheme-panel-mixed">
              <h3>Wariant B: dwa obiegi o różnych parametrach</h3>
              <p>Jeżeli grzejniki wymagają wyższej temperatury niż podłoga, źródło pracuje co najmniej dla dwóch warunków. Obieg podłogowy może wtedy wymagać zaworu mieszającego, własnej pompy i odpowiedniego rozdzielenia hydraulicznego. Konkretne rozwiązanie zależy od przepływów oraz automatyki kotła.</p>
              <div class="rk-gas-flow" role="img" aria-label="Schemat mieszany: kocioł, rozdzielenie hydrauliczne, obieg grzejnikowy i obieg podłogowy z regulacją temperatury">
                <div class="rk-gas-flow-box rk-gas-flow-box-hot">Kocioł<br>i obieg źródła</div><div class="rk-gas-flow-arrow" aria-hidden="true">→</div>
                <div class="rk-gas-flow-box">Rozdzielenie obiegów<br>jeśli wymagają tego pompy</div><div class="rk-gas-flow-arrow" aria-hidden="true">→</div>
                <div class="rk-gas-flow-box">Obieg grzejnikowy<br>wyższy parametr</div><div class="rk-gas-flow-arrow" aria-hidden="true">+</div>
                <div class="rk-gas-flow-box rk-gas-flow-box-cold">Obieg podłogowy<br>mieszanie + pompa</div>
              </div>
              <div class="rk-gas-warning"><p><strong>Nie każdy układ mieszany wymaga identycznego sprzęgła lub bufora.</strong> Należy sprawdzić minimalny przepływ kotła, charakterystyki wszystkich pomp, pojemność wodną, sterowanie oraz wpływ jednego obiegu na drugi.</p></div>
            </div>
          </div>
        </div>

        <p>Jeżeli rozważasz wspólną instalację z grzejnikami, osobne omówienie znajdziesz w artykule <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>.</p>
      </section>

<section class="rk-gas-section" id="rk-gas-hydraulika" aria-labelledby="rk-gas-s7">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">7</div>
          <div>
            <h2 id="rk-gas-s7">Przepływ, pompa i opory — czy pompa kotła wystarczy?</h2>
            <p>Odpowiedź daje punkt pracy: wymagany całkowity przepływ oraz strata ciśnienia na najbardziej niekorzystnej drodze hydraulicznej.</p>
          </div>
        </div>

        <div class="rk-gas-formula">
          <span class="rk-gas-formula-label">Przepływ objętościowy dla wody</span>
          <div class="rk-gas-equation">V̇ = Q / (1,163 · ΔT)
            <small>V̇ — przepływ w m³/h, Q — przenoszona moc w kW, ΔT — różnica temperatury zasilania i powrotu w kelwinach. Dla 6,3 kW i ΔT = 6 K otrzymujemy około 0,90 m³/h.</small>
          </div>
        </div>

        <p>Przepływy w pętlach równoległych sumują się na magistrali i w pompie. Wysokości podnoszenia nie sumuje się jednak dla wszystkich pętli. Pompa musi pokonać opór wspólnych przewodów oraz najbardziej niekorzystnego obiegu — zazwyczaj pętli o wymagającym zestawieniu długości i przepływu — wraz z rozdzielaczem i armaturą.</p>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Kiedy pompa zintegrowana może wystarczyć?</span>
          <table>
            <thead><tr><th>Sytuacja</th><th>Ocena wstępna</th><th>Co trzeba sprawdzić?</th></tr></thead>
            <tbody>
              <tr><td data-label="Sytuacja"><strong>Jeden rozdzielacz, tylko podłogówka</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-good">często wystarcza</span></td><td data-label="Sprawdzenie">Krzywą pompy przy przepływie całkowitym, opór magistrali, rozdzielacza i pętli krytycznej.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Dwa rozdzielacze na kondygnacjach</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-check">wymaga obliczeń</span></td><td data-label="Sprawdzenie">Podział przepływu, średnice pionów, równoważenie, dostępne ciśnienie i wpływ zaworów strefowych.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Długie magistrale lub duży przepływ</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-check">możliwa dodatkowa pompa</span></td><td data-label="Sprawdzenie">Pełną charakterystykę instalacji i sposób rozdzielenia pomp, aby nie pracowały przeciwko sobie.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Grzejniki i podłogówka</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-check">zwykle osobne obiegi</span></td><td data-label="Sprawdzenie">Temperatury, przepływy, mieszanie, sterowanie oraz potrzebę sprzęgła lub innej separacji.</td></tr>
              <tr><td data-label="Sytuacja"><strong>Większość pętli okresowo zamykana</strong></td><td data-label="Ocena"><span class="rk-gas-status rk-gas-status-no">ryzyko minimum przepływu</span></td><td data-label="Sprawdzenie">Wymagania wymiennika kotła, bypass, strefę referencyjną, pojemność układu i logikę sterowania.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-gas-card-grid">
          <div class="rk-gas-card"><div class="rk-gas-card-tag">Przepływ</div><h4>Sumuj pętle</h4><p>Projektowe nastawy rotametrów tworzą całkowity przepływ wymagany od pompy i magistrali.</p></div>
          <div class="rk-gas-card"><div class="rk-gas-card-tag">Ciśnienie</div><h4>Znajdź obieg krytyczny</h4><p>Do oporu najbardziej wymagającej pętli dodaj odcinki wspólne, rozdzielacz, zawory i pozostałą armaturę.</p></div>
          <div class="rk-gas-card"><div class="rk-gas-card-tag">Punkt pracy</div><h4>Nałóż krzywe</h4><p>Pompa jest właściwa, jeśli w wymaganym punkcie zapewnia przepływ bez nadmiernego hałasu, zużycia prądu i dławienia.</p></div>
        </div>

        <p>Więcej obliczeń zawiera <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>, a budowę i regulację węzła rozwija poradnik <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a>.</p>

        <div class="rk-gas-warning">
          <p><strong>Druga pompa nie naprawia automatycznie braku przepływu.</strong> Dodana bez rozdzielenia hydraulicznego i wspólnej koncepcji sterowania może zmieniać ciśnienie na kotle, zakłócać regulację i pogorszyć sytuację.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-sterowanie" aria-labelledby="rk-gas-s8">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">8</div>
          <div>
            <h2 id="rk-gas-s8">Jaka temperatura na kotle gazowym przy podłogówce?</h2>
            <p>Nie ma jednej prawidłowej wartości. Temperatura zasilania wynika z obciążenia pomieszczeń, rozstawu rur, oporu podłogi i warunków zewnętrznych.</p>
          </div>
        </div>

        <p>W nowym, dobrze izolowanym domu projektowy parametr może znajdować się w okolicy 30–38°C, ale duże przeszklenia, wysoki opór okładziny albo ograniczona powierzchnia aktywna mogą wymagać więcej. Z kolei w cieplejsze dni regulator pogodowy powinien automatycznie obniżać temperaturę. Stałe ustawienie 40°C przez cały sezon zwykle odbiera instalacji tę możliwość.</p>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Trzy warstwy regulacji</span>
          <table>
            <thead><tr><th>Warstwa</th><th>Zadanie</th><th>Dobra praktyka</th><th>Typowy błąd</th></tr></thead>
            <tbody>
              <tr><td data-label="Warstwa"><strong>Krzywa pogodowa</strong></td><td data-label="Zadanie">Dopasowuje temperaturę zasilania do temperatury zewnętrznej.</td><td data-label="Dobra praktyka">Ustawić możliwie niską krzywą, która utrzymuje komfort bez niedogrzania.</td><td data-label="Błąd">Wysoka stała temperatura i regulowanie wszystkiego termostatami.</td></tr>
              <tr><td data-label="Warstwa"><strong>Regulacja hydrauliczna</strong></td><td data-label="Zadanie">Rozdziela przepływy zgodnie z mocą poszczególnych pętli.</td><td data-label="Dobra praktyka">Wprowadzić nastawy projektowe i potwierdzić temperatury podczas uruchomienia.</td><td data-label="Błąd">Ustawienie wszystkich rotametrów na tę samą wartość.</td></tr>
              <tr><td data-label="Warstwa"><strong>Regulacja pokojowa</strong></td><td data-label="Zadanie">Ogranicza przegrzewanie i obsługuje różne wymagania stref.</td><td data-label="Dobra praktyka">Stosować spokojną logikę uwzględniającą bezwładność podłogi.</td><td data-label="Błąd">Cykliczne zamykanie niemal wszystkich pętli i utrata przepływu przez kocioł.</td></tr>
            </tbody>
          </table>
        </div>

        <h3>Jak stroić krzywą grzewczą?</h3>
        <ol>
          <li>Zacznij od wartości wynikających z projektu ogrzewania podłogowego i ustaw ograniczenie maksymalnej temperatury zasilania.</li>
          <li>Otwórz obiegi, ustaw projektowe przepływy i nie zmieniaj kilku parametrów jednocześnie.</li>
          <li>Jeżeli przy mrozie cały budynek jest niedogrzany, skoryguj nachylenie; jeżeli błąd jest podobny przy każdej pogodzie, zwykle koryguje się przesunięcie.</li>
          <li>Po każdej małej zmianie odczekaj na reakcję bezwładnej podłogi i budynku.</li>
          <li>Dopiero po ustabilizowaniu temperatury oceniaj pracę termostatów i liczbę startów palnika.</li>
        </ol>

        <p>Szczegółowe przykłady znajdziesz w opracowaniach <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza w ogrzewaniu podłogowym</a> oraz <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">sterownik i regulator pogodowy</a>.</p>

        <div class="rk-gas-note">
          <p><strong>Regulator pokojowy nie powinien ratować stale zawyżonej temperatury zasilania.</strong> Najpierw źródło dostarcza właściwy parametr pogodowy, a sterowanie pomieszczeniowe pełni funkcję korekcyjną i ograniczającą.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-armatura" aria-labelledby="rk-gas-s9">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">9</div>
          <div>
            <h2 id="rk-gas-s9">Zawór mieszający, sprzęgło, bufor i druga pompa — kiedy są potrzebne?</h2>
            <p>Każdy z tych elementów rozwiązuje inny problem. Nie należy wpisywać całego zestawu do każdego schematu.</p>
          </div>
        </div>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Macierz decyzji projektowej</span>
          <table>
            <thead><tr><th>Element</th><th>Cały dom na podłogówce</th><th>Układ mieszany</th><th>Rzeczywisty powód zastosowania</th></tr></thead>
            <tbody>
              <tr><td data-label="Element"><strong>Zawór mieszający</strong></td><td data-label="Tylko podłogówka"><span class="rk-gas-status rk-gas-status-good">zwykle zbędny</span></td><td data-label="Układ mieszany"><span class="rk-gas-status rk-gas-status-check">często potrzebny</span></td><td data-label="Powód">Wytworzenie niższego parametru dla podłogi, gdy inne odbiorniki wymagają wyższego.</td></tr>
              <tr><td data-label="Element"><strong>Druga pompa</strong></td><td data-label="Tylko podłogówka"><span class="rk-gas-status rk-gas-status-check">po obliczeniu</span></td><td data-label="Układ mieszany"><span class="rk-gas-status rk-gas-status-check">często osobne obiegi</span></td><td data-label="Powód">Brak dostępnego ciśnienia pompy źródła lub niezależna cyrkulacja w oddzielonym obiegu.</td></tr>
              <tr><td data-label="Element"><strong>Sprzęgło hydrauliczne</strong></td><td data-label="Tylko podłogówka"><span class="rk-gas-status rk-gas-status-good">nie z automatu</span></td><td data-label="Układ mieszany"><span class="rk-gas-status rk-gas-status-check">zależnie od pomp</span></td><td data-label="Powód">Ograniczenie wzajemnego wpływu kilku obiegów pompowych i zapewnienie przepływu źródła.</td></tr>
              <tr><td data-label="Element"><strong>Bufor</strong></td><td data-label="Tylko podłogówka"><span class="rk-gas-status rk-gas-status-good">zwykle zbędny</span></td><td data-label="Układ mieszany"><span class="rk-gas-status rk-gas-status-check">przypadki szczególne</span></td><td data-label="Powód">Zwiększenie pojemności i czasu pracy, integracja źródeł albo obsługa specyficznej automatyki — po bilansie korzyści i strat.</td></tr>
              <tr><td data-label="Element"><strong>Bypass / obieg referencyjny</strong></td><td data-label="Tylko podłogówka"><span class="rk-gas-status rk-gas-status-check">gdy zamykane są strefy</span></td><td data-label="Układ mieszany"><span class="rk-gas-status rk-gas-status-check">według wymagań</span></td><td data-label="Powód">Zapewnienie minimalnego przepływu wymaganego przez kocioł lub pompę.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Osobne rozwinięcia: <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający w podłogówce</a>, <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a> i <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a>.</p>

        <div class="rk-gas-truth">
          <p><strong>Bufor nie naprawi źle dobranej mocy minimalnej.</strong> Może wydłużyć cykl pracy kosztem miejsca, strat postojowych i dodatkowej armatury, ale nie zmienia charakterystyki palnika ani zapotrzebowania budynku.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-elementy" aria-labelledby="rk-gas-s10">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">10</div>
          <div>
            <h2 id="rk-gas-s10">Elementy instalacji, których nie wolno pominąć</h2>
            <p>Efektywność palnika nie zastąpi bezpiecznego przewodu powietrzno-spalinowego, drożnego odpływu kondensatu ani prawidłowej jakości wody instalacyjnej.</p>
          </div>
        </div>

        <div class="rk-gas-check-grid">
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">01</div><div><h4>Instalacja gazowa</h4><p>Rodzaj gazu, wymagane ciśnienie, średnice, próby, wentylacja i uruchomienie muszą być zgodne z projektem, przepisami oraz dokumentacją urządzenia.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">02</div><div><h4>System powietrzno-spalinowy</h4><p>Sprawdza się konfigurację, dopuszczalne długości, spadki, szczelność, odprowadzenie kondensatu oraz wymagania producenta kompletnego systemu.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">03</div><div><h4>Odpływ kondensatu</h4><p>Przewód musi być odporny, drożny, ułożony ze spadkiem i zabezpieczony zgodnie z wymaganiami kotła oraz lokalnymi zasadami odprowadzania ścieków.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">04</div><div><h4>Naczynie wzbiorcze</h4><p>Pojemność i ciśnienie wstępne weryfikuje się dla pojemności instalacji, temperatur oraz dopuszczalnych ciśnień — wyposażenie kotła nie zawsze obsłuży duży zład.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">05</div><div><h4>Zabezpieczenia i armatura</h4><p>Zawór bezpieczeństwa, manometr, odpowietrzenie, zawory odcinające i możliwość obsługi powinny tworzyć spójny, dostępny serwisowo układ.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">06</div><div><h4>Filtracja i separacja</h4><p>Zanieczyszczenia magnetyczne, produkty korozji i powietrze mogą uszkadzać wymiennik oraz pompę. Dobór uwzględnia przepływ i dopuszczalny spadek ciśnienia.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">07</div><div><h4>Jakość wody</h4><p>Napełnienie, płukanie, uzdatnienie i ograniczenie kolejnych dolewek powinny spełniać wymagania zastosowanych materiałów oraz urządzenia.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">08</div><div><h4>Izolacja przewodów</h4><p>Niezaizolowana magistrala oddaje ciepło po drodze, zmienia temperaturę docierającą do rozdzielacza i utrudnia późniejszą ocenę parametrów.</p></div></div>
        </div>

        <p>Dobór elementów odpowiedzialnych za czystość układu rozwija opracowanie <a href="https://projekt-ogrzewania.pl/separator-zanieczyszczen-i-powietrza-w-ogrzewaniu-podlogowym-dobor-schemat-montazu-spadek-cisnienia-i-normy/">separator zanieczyszczeń i powietrza</a>, natomiast obliczenia pojemności opisuje artykuł <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynie wzbiorcze w instalacji grzewczej</a>.</p>

        <div class="rk-gas-warning">
          <p><strong>Spadek ciśnienia nie jest sygnałem do regularnego dolewania wody.</strong> Powtarzający się ubytek wymaga diagnozy szczelności, naczynia wzbiorczego, zaworu bezpieczeństwa i odpowietrzania. Każda dolewka wprowadza tlen oraz składniki mineralne.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-uruchomienie" aria-labelledby="rk-gas-s11">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">11</div>
          <div>
            <h2 id="rk-gas-s11">Pierwsze uruchomienie i nastawy kotła gazowego</h2>
            <p>Uruchomienie powinno zakończyć się zapisaniem parametrów, a nie tylko stwierdzeniem, że palnik się włączył i podłoga jest ciepła.</p>
          </div>
        </div>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Protokół nastaw, które warto zachować</span>
          <table>
            <thead><tr><th>Pozycja</th><th>Co zapisać?</th><th>Po co?</th></tr></thead>
            <tbody>
              <tr><td data-label="Pozycja"><strong>Parametry spalania</strong></td><td data-label="Zapis">Wyniki kontroli wykonanej przez uprawnionego serwisanta.</td><td data-label="Cel">Potwierdzenie prawidłowego spalania, dopływu powietrza i odprowadzania spalin.</td></tr>
              <tr><td data-label="Pozycja"><strong>Moc maksymalna CO</strong></td><td data-label="Zapis">Ustawiony limit mocy grzewczej.</td><td data-label="Cel">Ograniczenie gwałtownego grzania małej instalacji przez kocioł dobrany pod CWU.</td></tr>
              <tr><td data-label="Pozycja"><strong>Moc minimalna</strong></td><td data-label="Zapis">Wartość katalogową i obserwowane zachowanie palnika.</td><td data-label="Cel">Ocena częstotliwości startów przy częściowym obciążeniu.</td></tr>
              <tr><td data-label="Pozycja"><strong>Krzywa grzewcza</strong></td><td data-label="Zapis">Nachylenie, przesunięcie, limit zasilania i granicę ogrzewania.</td><td data-label="Cel">Możliwość świadomej korekty bez powrotu do przypadkowych ustawień.</td></tr>
              <tr><td data-label="Pozycja"><strong>Pompa</strong></td><td data-label="Zapis">Tryb regulacji, ograniczenie wydajności i ewentualne wybiegi.</td><td data-label="Cel">Powiązanie pracy pompy z przepływem i oporami instalacji.</td></tr>
              <tr><td data-label="Pozycja"><strong>Rozdzielacz</strong></td><td data-label="Zapis">Nastawę każdej pętli, temperaturę zasilania i powrotu.</td><td data-label="Cel">Punkt odniesienia do późniejszej diagnostyki i regulacji.</td></tr>
              <tr><td data-label="Pozycja"><strong>Automatyka stref</strong></td><td data-label="Zapis">Logikę żądania ciepła, opóźnienia i stan obiegu referencyjnego.</td><td data-label="Cel">Uniknięcie pracy kotła przy zamkniętej instalacji.</td></tr>
              <tr><td data-label="Pozycja"><strong>Ciśnienie układu</strong></td><td data-label="Zapis">Ciśnienie zimne i po rozgrzaniu oraz nastawę naczynia.</td><td data-label="Cel">Wczesne wykrycie problemu z pojemnością lub przeponą.</td></tr>
            </tbody>
          </table>
        </div>

        <h3>Kolejność uruchomienia podłogówki</h3>
        <ol>
          <li>Potwierdź szczelność, wypłukanie, napełnienie i odpowietrzenie każdego obiegu.</li>
          <li>Otwórz pętle i ustaw przepływy wynikające z projektu.</li>
          <li>Sprawdź całkowity przepływ oraz różnicę temperatury zasilania i powrotu.</li>
          <li>Ustaw limit mocy CO, krzywą pogodową i maksymalną temperaturę zasilania.</li>
          <li>Sprawdź zachowanie przy otwartych obiegach, a następnie przy działaniu automatyki strefowej.</li>
          <li>Po ustabilizowaniu budynku koryguj jedną nastawę naraz i zapisuj wynik.</li>
        </ol>

        <div class="rk-gas-note">
          <p>Przegląd i serwis kotła należy wykonywać z częstotliwością wynikającą z prawa, instrukcji urządzenia i warunków gwarancji. Czynności gazowe, kontrola szczelności oraz analiza spalania należą do odpowiednio wykwalifikowanych osób.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-2026" aria-labelledby="rk-gas-s12">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">12</div>
          <div>
            <h2 id="rk-gas-s12">Czy kocioł gazowy ma sens w 2026 roku?</h2>
            <p>Odpowiedź zależy od konkretnego budynku, kosztu przyłącza, istniejącej infrastruktury, rocznego zużycia i ryzyka regulacyjnego — nie od jednego rankingu źródeł.</p>
          </div>
        </div>

        <p>Kocioł gazowy może być racjonalny w modernizowanym budynku z istniejącym przyłączem, przewodem spalinowym i instalacją niskotemperaturową, szczególnie gdy koszt przebudowy zasilania elektrycznego lub montażu innego źródła jest wysoki. W nowym, bardzo energooszczędnym domu roczne zużycie może być małe, ale wtedy większe znaczenie zyskują opłaty stałe, koszt przyłącza, serwis i wieloletni kierunek polityki energetycznej.</p>

        <div class="rk-gas-formula">
          <span class="rk-gas-formula-label">Uczciwy model rocznego kosztu</span>
          <div class="rk-gas-equation">K<sub>rok</sub> ≈ (E<sub>użytk</sub> / η<sub>sezon</sub>) · c<sub>gazu</sub> + opłaty stałe + serwis
            <small>Do analizy inwestycyjnej należy dodać koszt urządzenia, przyłącza, komina, instalacji, finansowania i przewidywanych wymian. Cena jednej kWh w wybranym miesiącu nie jest pełnym kosztem systemu.</small>
          </div>
        </div>

        <div class="rk-gas-table-wrap">
          <span class="rk-gas-table-title">Kiedy decyzja może być racjonalna, a kiedy wymaga szczególnej ostrożności?</span>
          <table>
            <thead><tr><th>Przesłanka</th><th>Znaczenie dla decyzji</th><th>Co policzyć przed zakupem?</th></tr></thead>
            <tbody>
              <tr><td data-label="Przesłanka"><strong>Istniejące przyłącze i komin</strong></td><td data-label="Znaczenie"><span class="rk-gas-status rk-gas-status-good">niższy koszt wejścia</span></td><td data-label="Policz">Stan instalacji, dostosowanie przewodu, opłaty stałe i koszt urządzenia.</td></tr>
              <tr><td data-label="Przesłanka"><strong>Brak gazu przy działce</strong></td><td data-label="Znaczenie"><span class="rk-gas-status rk-gas-status-check">duży koszt dodatkowy</span></td><td data-label="Policz">Warunki przyłączenia, termin, trasę, instalację wewnętrzną i rozwiązania alternatywne.</td></tr>
              <tr><td data-label="Przesłanka"><strong>Bardzo małe zapotrzebowanie domu</strong></td><td data-label="Znaczenie"><span class="rk-gas-status rk-gas-status-check">ważna moc minimalna</span></td><td data-label="Policz">Taktowanie, opłaty stałe w stosunku do zużycia i przyszły koszt wymiany źródła.</td></tr>
              <tr><td data-label="Przesłanka"><strong>Modernizacja etapowa</strong></td><td data-label="Znaczenie"><span class="rk-gas-status rk-gas-status-check">potrzebna mapa docelowa</span></td><td data-label="Policz">Temperatury po termomodernizacji, możliwość pracy hybrydowej i docelowe obciążenie.</td></tr>
              <tr><td data-label="Przesłanka"><strong>Nowy budynek</strong></td><td data-label="Znaczenie"><span class="rk-gas-status rk-gas-status-no">sprawdź kierunek regulacji</span></td><td data-label="Policz">Charakterystykę energetyczną, wymagania lokalne, dostępność paliwa oraz alternatywy w całym cyklu życia.</td></tr>
            </tbody>
          </table>
        </div>

        <h3>Co faktycznie zmieniła dyrektywa EPBD?</h3>
        <p>Zmieniona dyrektywa w sprawie charakterystyki energetycznej budynków weszła w życie 28 maja 2024 roku. Od 1 stycznia 2025 roku państwa członkowskie nie powinny udzielać zachęt finansowych na instalowanie samodzielnych kotłów zasilanych paliwami kopalnymi, z przewidzianymi wyjątkami dla części wcześniej wybranych inwestycji. Dokument wskazuje również kierunek stopniowego wycofywania paliw kopalnych z ogrzewania, z perspektywą całkowitego wycofania kotłów na paliwa kopalne do 2040 roku w krajowych planach.</p>

        <p><strong>Nie jest to jednak automatyczny, powszechny zakaz używania każdego istniejącego kotła gazowego w Polsce w 2026 roku.</strong> Konkretne obowiązki dla inwestora wynikają z wdrożenia unijnych przepisów do prawa krajowego, rodzaju budynku i aktualnych warunków technicznych. Dlatego artykuł nie powinien ani straszyć natychmiastowym zakazem, ani ignorować kierunku zmian.</p>

        <div class="rk-gas-warning">
          <p>Opłacalność należy liczyć w kilku scenariuszach cen paliwa i na okres odpowiadający żywotności inwestycji. Nie ma technicznej podstawy, aby dziś zagwarantować konkretny koszt gazu, czas zwrotu lub przewagę nad każdym innym źródłem w całym okresie eksploatacji.</p>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-bledy" aria-labelledby="rk-gas-s13">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">13</div>
          <div>
            <h2 id="rk-gas-s13">10 błędów przy łączeniu kotła gazowego z podłogówką</h2>
            <p>Większość problemów nie wynika z samego paliwa, lecz z błędnego doboru, schematu lub uruchomienia.</p>
          </div>
        </div>

        <div class="rk-gas-check-grid">
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">01</div><div><h4>Dobór kotła wyłącznie po metrażu</h4><p>Powierzchnia nie opisuje izolacji, wentylacji, strefy klimatycznej ani zysków. Potrzebne jest obciążenie cieplne.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">02</div><div><h4>Ignorowanie mocy minimalnej</h4><p>Duża modulacja marketingowa nie pomaga, jeśli najniższa realna moc nadal przekracza odbiór budynku.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">03</div><div><h4>Dodawanie mocy CO i CWU</h4><p>Priorytet CWU oznacza zwykle dwa osobne warunki pracy, a nie jednoczesne sumowanie wartości.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">04</div><div><h4>Mieszacz w każdym schemacie</h4><p>W całkowicie niskotemperaturowym układzie może niepotrzebnie komplikować hydraulikę i podnosić parametr źródła.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">05</div><div><h4>Druga pompa bez rozdzielenia</h4><p>Dwie pompy mogą wzajemnie zmieniać swoje punkty pracy i zakłócać przepływ przez wymiennik kotła.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">06</div><div><h4>Stałe 40–45°C przez sezon</h4><p>Brak obniżania pogodowego zwiększa straty, przegrzewa pomieszczenia i wymusza zamykanie stref.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">07</div><div><h4>Jednakowe przepływy wszystkich pętli</h4><p>Każdy obieg przenosi inną moc i ma inny opór, dlatego nastawy powinny wynikać z projektu.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">08</div><div><h4>Zamykanie całego odbioru ciepła</h4><p>Automatyka strefowa bez zapewnienia minimum przepływu może generować błędy i krótkie cykle pracy.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">09</div><div><h4>Regularne dolewanie wody</h4><p>Maskuje usterkę i wprowadza do instalacji tlen oraz minerały, przyspieszając korozję i odkładanie osadów.</p></div></div>
          <div class="rk-gas-check"><div class="rk-gas-check-no" aria-hidden="true">10</div><div><h4>Brak protokołu uruchomienia</h4><p>Bez zapisanych nastaw nie wiadomo, co zmieniono i dlaczego instalacja po sezonie zachowuje się inaczej.</p></div></div>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-faq" aria-labelledby="rk-gas-s14">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">14</div>
          <div>
            <h2 id="rk-gas-s14">FAQ — kocioł gazowy do ogrzewania podłogowego</h2>
            <p>Krótkie odpowiedzi na pytania najczęściej zadawane przed zakupem i uruchomieniem instalacji.</p>
          </div>
        </div>

        <div class="rk-gas-faq">
          <details id="rk-gas-faq-1"><summary>Czy kocioł gazowy kondensacyjny nadaje się do podłogówki?</summary><div class="rk-gas-faq-answer"><p>Tak. Niska temperatura zasilania i powrotu sprzyja kondensacji, a modulowany palnik może dopasować moc do zmiennego zapotrzebowania. Warunkiem jest prawidłowy dobór mocy minimalnej, przepływu, sterowania i hydrauliki.</p></div></details>
          <details id="rk-gas-faq-2"><summary>Jaka moc kotła gazowego do domu 100, 150 albo 200 m²?</summary><div class="rk-gas-faq-answer"><p>Nie można jej poprawnie określić wyłącznie z powierzchni. Dwa domy o tym samym metrażu mogą mieć kilkukrotnie różne obciążenie cieplne. Moc na CO dobiera się z obliczeń strat, a moc dla CWU sprawdza osobno.</p></div></details>
          <details id="rk-gas-faq-3"><summary>Czy kocioł 24 kW jest za duży do domu potrzebującego 6 kW?</summary><div class="rk-gas-faq-answer"><p>Nie musi być, jeśli 24 kW jest potrzebne do CWU, moc CO można ograniczyć, a kocioł ma odpowiednio niską moc minimalną. W ogrzewaniu ważniejsze od samego maksimum są dolna granica modulacji i stabilność przy małym odbiorze.</p></div></details>
          <details id="rk-gas-faq-4"><summary>Jaka moc minimalna kotła gazowego jest dobra do podłogówki?</summary><div class="rk-gas-faq-answer"><p>Im mniejsze obciążenie budynku, tym ważniejsza jest niska moc minimalna. Nie ma jednej granicy dla każdego domu. Należy porównać ją z obciążeniem przejściowym, liczbą otwartych stref, pojemnością wodną i sposobem sterowania.</p></div></details>
          <details id="rk-gas-faq-5"><summary>Czy przy kotle gazowym potrzebny jest zawór mieszający?</summary><div class="rk-gas-faq-answer"><p>Nie zawsze. Jeżeli cały budynek jest ogrzewany podłogowo i kocioł potrafi bezpośrednio podać wymaganą niską temperaturę, mieszacz jest zazwyczaj zbędny. Jest potrzebny głównie wtedy, gdy jednocześnie występują obiegi o różnych temperaturach.</p></div></details>
          <details id="rk-gas-faq-6"><summary>Czy pompa w kotle obsłuży rozdzielacz podłogówki?</summary><div class="rk-gas-faq-answer"><p>Może obsłużyć, jeśli przy projektowym całkowitym przepływie zapewnia ciśnienie potrzebne do pokonania magistrali, rozdzielacza, armatury i obiegu krytycznego. Odpowiedź wymaga porównania charakterystyki pompy z obliczonym punktem pracy.</p></div></details>
          <details id="rk-gas-faq-7"><summary>Czy do kotła gazowego potrzebne jest sprzęgło hydrauliczne?</summary><div class="rk-gas-faq-answer"><p>Nie z definicji. Sprzęgło stosuje się, gdy trzeba rozdzielić obiegi pompowe, zapewnić wymagany przepływ przez źródło lub ograniczyć wzajemny wpływ obiegów. W prostym układzie z jednym rozdzielaczem może być niepotrzebne.</p></div></details>
          <details id="rk-gas-faq-8"><summary>Czy kocioł gazowy potrzebuje bufora do podłogówki?</summary><div class="rk-gas-faq-answer"><p>Zwykle nie. Sama podłoga i woda w instalacji mają znaczną bezwładność. Bufor może być uzasadniony w szczególnych układach, lecz nie powinien zastępować doboru mocy minimalnej, prawidłowej regulacji ani zapewnienia przepływu.</p></div></details>
          <details id="rk-gas-faq-9"><summary>Jaka temperatura zasilania jest właściwa dla podłogówki?</summary><div class="rk-gas-faq-answer"><p>Taka, która przy projektowym przepływie i rozstawie rur pokrywa obciążenie pomieszczeń bez przekroczenia temperatury powierzchni. W nowych domach często jest to około 30–38°C w warunkach projektowych, ale nie jest to uniwersalna norma.</p></div></details>
          <details id="rk-gas-faq-10"><summary>Dlaczego kocioł gazowy często się włącza i wyłącza?</summary><div class="rk-gas-faq-answer"><p>Najczęstsze przyczyny to zbyt wysoka moc minimalna, zawyżona temperatura zasilania, mały odbiór ciepła po zamknięciu stref, niewystarczający przepływ, mała pojemność aktywnego obiegu lub niewłaściwe nastawy regulatora.</p></div></details>
          <details id="rk-gas-faq-11"><summary>Czy niska temperatura powrotu szkodzi kotłowi kondensacyjnemu?</summary><div class="rk-gas-faq-answer"><p>W prawidłowo zaprojektowanym kotle kondensacyjnym niski powrót jest korzystny, ponieważ wspiera odzysk ciepła ze skraplania pary wodnej. Kondensat musi być jednak prawidłowo odprowadzony, a urządzenie eksploatowane zgodnie z dokumentacją.</p></div></details>
          <details id="rk-gas-faq-12"><summary>Czy od 2026 roku nie wolno montować kotłów gazowych?</summary><div class="rk-gas-faq-answer"><p>Nie istnieje jeden powszechny zakaz obejmujący każdą instalację i każdy istniejący budynek w 2026 roku. Unijne przepisy kończą zachęty dla samodzielnych kotłów na paliwa kopalne i wyznaczają kierunek odchodzenia od nich, a szczegóły zależą od wdrożenia krajowego i rodzaju inwestycji.</p></div></details>
        </div>
      </section>

<section class="rk-gas-section" id="rk-gas-podsumowanie" aria-labelledby="rk-gas-s15">
        <div class="rk-gas-section-head">
          <div class="rk-gas-section-no">15</div>
          <div>
            <h2 id="rk-gas-s15">Podsumowanie: dobierz kocioł do najzimniejszego i najcieplejszego dnia sezonu</h2>
            <p>Moc maksymalna ma pokryć warunek projektowy i CWU, ale moc minimalna decyduje o zachowaniu instalacji przez większą część roku.</p>
          </div>
        </div>

        <p><strong>Kocioł gazowy do ogrzewania podłogowego</strong> może stworzyć prosty i efektywny układ, jeśli źródło pracuje bezpośrednio na niskim parametrze, pompa zapewnia obliczony przepływ, a palnik moduluje odpowiednio nisko. Zawór mieszający, dodatkowa pompa, sprzęgło i bufor są narzędziami do rozwiązania konkretnych problemów — nie obowiązkowym kompletem.</p>

        <p>Dobór zaczyna się od obciążenia cieplnego pomieszczeń i budynku. Następnie ustala się temperaturę podłogi, rozstaw rur, przepływy i opory. Dopiero na tej podstawie porównuje się moc minimalną i maksymalną kotła, charakterystykę jego pompy, minimum przepływu, automatykę oraz osobny warunek przygotowania ciepłej wody.</p>

        <div class="rk-gas-truth">
          <p><strong>Jednozdaniowy werdykt:</strong> nie pytaj wyłącznie „ile kilowatów ma kocioł?”, lecz „jak nisko moduluje, jaki przepływ zapewnia i czy potrafi bezpośrednio pracować na parametrze wynikającym z projektu podłogi?”.</p>
        </div>

        <div class="rk-gas-sources" aria-label="Źródła i podstawa opracowania">
          <strong>Źródła i podstawa regulacyjna opracowania</strong>
          Aktualny kierunek polityki budynkowej: <a href="https://energy.ec.europa.eu/topics/energy-efficiency/energy-efficient-buildings/energy-performance-buildings-directive_en" target="_blank" rel="noopener nofollow">Komisja Europejska — Energy Performance of Buildings Directive</a>; tekst prawny: <a href="https://eur-lex.europa.eu/legal-content/PL/TXT/HTML/?uri=OJ:L_202401275" target="_blank" rel="noopener nofollow">Dyrektywa Parlamentu Europejskiego i Rady (UE) 2024/1275</a>; wymagania ekoprojektu dla ogrzewaczy pomieszczeń: <a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32013R0813" target="_blank" rel="noopener nofollow">Rozporządzenie Komisji (UE) nr 813/2013</a>. Obliczenia cieplne i hydrauliczne w artykule mają charakter edukacyjny i wymagają weryfikacji dla konkretnego budynku oraz urządzenia.
        </div>

        <aside class="rk-gas-cta" aria-labelledby="rk-gas-cta-title">
          <div class="rk-gas-cta-copy">
            <span class="rk-gas-eyebrow" style="color:#7cebf4">Jedno źródło danych dla wykonawcy i serwisu</span>
            <h2 id="rk-gas-cta-title">Potrzebujesz temperatur, przepływów i nastaw wynikających z obliczeń?</h2>
            <p>Projekt określa obciążenie pomieszczeń, przebieg i długości pętli, projektową temperaturę zasilania i powrotu, przepływy, opory hydrauliczne, nastawy rozdzielacza oraz wymagania stawiane źródłu ciepła.</p>
          </div>
          <div class="rk-gas-cta-bar">
            <a class="rk-gas-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego →</a>
            <small class="rk-gas-cta-note">Odnośnik prowadzi do usługi Projekt-Ogrzewania.pl należącej do autora opracowania.</small>
          </div>
        </aside>
      </section>

<section class="rk-gas-author" aria-labelledby="rk-gas-author-title">
        <input type="radio" name="rk-gas-author-tabs" id="rk-gas-author-about" checked>
        <input type="radio" name="rk-gas-author-tabs" id="rk-gas-author-exp">
        <input type="radio" name="rk-gas-author-tabs" id="rk-gas-author-sites">

        <div class="rk-gas-author-head">
          <div><h2 id="rk-gas-author-title">Autor opracowania</h2><p>Praktyka projektowa, wiedza techniczna i język zrozumiały dla inwestora.</p></div>
          <div class="rk-gas-author-mark">E-E-A-T • HVAC</div>
        </div>

        <div class="rk-gas-author-layout">
          <div class="rk-gas-author-side">
            <div class="rk-gas-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 systemów HVAC" width="500" height="500" loading="lazy" decoding="async"></div>
            <div class="rk-gas-author-name">Robert Kucharski</div>
            <div class="rk-gas-author-role">CEO portalu<br>Specjalista systemów HVAC i ogrzewania podłogowego</div>
          </div>

          <div class="rk-gas-author-main">
            <blockquote class="rk-gas-author-quote"><p>„Dobry kocioł nie powinien walczyć z instalacją. Jego moc minimalna, pompa i automatyka muszą pasować do przepływów oraz temperatur zapisanych w projekcie — inaczej nawet markowe urządzenie będzie tylko poprawnie zamontowanym źródłem problemów.”</p></blockquote>

            <div class="rk-gas-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-gas-author-tab" for="rk-gas-author-about">O autorze</label>
              <label class="rk-gas-author-tab" for="rk-gas-author-exp">Doświadczenie</label>
              <label class="rk-gas-author-tab" for="rk-gas-author-sites">Portale</label>
            </div>

            <div class="rk-gas-author-panel rk-gas-author-panel-about">
              <p>Specjalizuję się w projektowaniu wodnego ogrzewania podłogowego, obliczeniach obciążenia cieplnego i hydrauliki instalacji. W opracowaniach łączę parametry źródła ciepła, charakterystykę podłogi, przepływy i automatykę w jeden możliwy do wykonania układ.</p>
            </div>
            <div class="rk-gas-author-panel rk-gas-author-panel-exp">
              <p>Przygotowuję dokumentacje techniczne dla nowych i modernizowanych budynków, analizuję współpracę podłogówki z kotłami gazowymi oraz pompami ciepła, dobieram przepływy, opory, rozdzielacze i pompy. Publikuję materiały pomagające inwestorom odróżnić wymóg obliczeniowy od wykonawczego przyzwyczajenia.</p>
            </div>
            <div class="rk-gas-author-panel rk-gas-author-panel-sites">
              <p>Jestem właścicielem trzech serwisów branżowych. Informację podaję transparentnie, aby czytelnik znał autorstwo publikacji i kontekst linkowania.</p>
              <div class="rk-gas-site-links">
                <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
                <a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a>
                <a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a>
              </div>
            </div>
          </div>
        </div>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#article",
      "url": "https://projekt-ogrzewania.pl/kociol-gazowy/",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/"
      },
      "headline": "Kocioł gazowy do ogrzewania podłogowego – dobór mocy, modulacja, schemat i ustawienia",
      "alternativeHeadline": "Jaki kocioł gazowy do podłogówki? Moc minimalna, hydraulika, CWU i sterowanie pogodowe",
      "description": "Kocioł gazowy do ogrzewania podłogowego: dobór mocy, modulacja, przepływ, schemat hydrauliczny, sterowanie pogodowe, CWU i typowe błędy.",
      "datePublished": "2026-01-04T14:02:32+00:00",
      "dateModified": "2026-08-25T19:00:00+02:00",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "image": {
        "@type": "ImageObject",
        "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#primaryimage",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Kociol-gazowy.webp",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Kociol-gazowy.webp",
        "width": 945,
        "height": 945,
        "caption": "Kocioł gazowy do ogrzewania podłogowego"
      },
      "thumbnailUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Kociol-gazowy.webp",
      "articleSection": [
        "Kocioł gazowy",
        "Ogrzewanie podłogowe",
        "Instalacje grzewcze",
        "Projektowanie instalacji",
        "Poradnik inwestora"
      ],
      "keywords": "kocioł gazowy do ogrzewania podłogowego, jaki kocioł gazowy do podłogówki, moc minimalna kotła gazowego, kocioł kondensacyjny a podłogówka, schemat kotła gazowego z podłogówką, temperatura kotła przy ogrzewaniu podłogowym, zawór mieszający, sprzęgło hydrauliczne, sterowanie pogodowe, krzywa grzewcza, CWU",
      "about": [
        {
          "@type": "Thing",
          "name": "Kocioł gazowy kondensacyjny"
        },
        {
          "@type": "Thing",
          "name": "Wodne ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Hydraulika instalacji grzewczej"
        },
        {
          "@type": "Thing",
          "name": "Sterowanie pogodowe"
        }
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#laboratorium"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#faq"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#howto"
        }
      ],
      "citation": [
        "https://energy.ec.europa.eu/topics/energy-efficiency/energy-efficient-buildings/energy-performance-buildings-directive_en",
        "https://eur-lex.europa.eu/legal-content/PL/TXT/HTML/?uri=OJ:L_202401275",
        "https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX:32013R0813"
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#laboratorium",
      "name": "Laboratorium kotła gazowego z ogrzewaniem podłogowym",
      "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-laboratorium",
      "description": "Interaktywny model pokazujący zależność między projektowym obciążeniem cieplnym, mocą minimalną kotła, przepływem instalacji, temperaturą powrotu i mocą chwilową dla CWU.",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#article"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#howto",
      "name": "Jak dobrać kocioł gazowy do ogrzewania podłogowego",
      "description": "Kolejność sprawdzenia obciążenia cieplnego, modulacji, CWU, hydrauliki i sterowania przed wyborem kotła gazowego.",
      "inLanguage": "pl-PL",
      "totalTime": "PT30M",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Oblicz projektowe obciążenie cieplne",
          "text": "Wyznacz straty ciepła budynku i poszczególnych pomieszczeń dla projektowych warunków zewnętrznych.",
          "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-dobor"
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Porównaj moc minimalną kotła z częściowym obciążeniem",
          "text": "Sprawdź, czy kocioł potrafi stabilnie pracować przy zapotrzebowaniu występującym w cieplejszej części sezonu.",
          "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-laboratorium"
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Sprawdź wymagania ciepłej wody użytkowej",
          "text": "Określ strumień, temperaturę i jednoczesność poboru oraz wybierz układ przepływowy albo zasobnikowy.",
          "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-cwu"
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Oblicz przepływ i opory instalacji",
          "text": "Porównaj wymagany całkowity przepływ i opór obiegu krytycznego z charakterystyką pompy kotłowej.",
          "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-hydraulika"
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Wybierz właściwy schemat hydrauliczny",
          "text": "Zastosuj obieg bezpośredni dla jednego parametru lub zaprojektuj mieszanie i rozdzielenie dla obiegów o różnych temperaturach.",
          "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-schematy"
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Ustaw i zaprotokołuj automatykę",
          "text": "Zapisz limit mocy CO, krzywą grzewczą, tryb pompy, nastawy rozdzielacza i zachowanie automatyki strefowej.",
          "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-uruchomienie"
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#kryteria-doboru",
      "name": "Kryteria doboru kotła gazowego do ogrzewania podłogowego",
      "numberOfItems": 7,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projektowe obciążenie cieplne",
          "item": {
            "@type": "Thing",
            "name": "Projektowe obciążenie cieplne",
            "description": "Moc potrzebna do ogrzania budynku w projektowych warunkach zewnętrznych."
          }
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Minimalna moc grzewcza",
          "item": {
            "@type": "Thing",
            "name": "Minimalna moc grzewcza kotła",
            "description": "Najniższa stabilna moc palnika porównywana z częściowym obciążeniem budynku."
          }
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Zakres modulacji",
          "item": {
            "@type": "Thing",
            "name": "Zakres modulacji palnika",
            "description": "Zakres pomiędzy minimalną a maksymalną mocą kotła w trybie centralnego ogrzewania."
          }
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Wymagania CWU",
          "item": {
            "@type": "Thing",
            "name": "Wymagania ciepłej wody użytkowej",
            "description": "Strumień, temperatura, jednoczesność poboru oraz wybór układu przepływowego lub zasobnikowego."
          }
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Charakterystyka pompy kotłowej",
          "item": {
            "@type": "Thing",
            "name": "Charakterystyka pompy kotłowej",
            "description": "Dostępne ciśnienie pompy przy całkowitym projektowym przepływie instalacji."
          }
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Minimalny przepływ kotła",
          "item": {
            "@type": "Thing",
            "name": "Minimalny przepływ przez kocioł",
            "description": "Wymagany przepływ zachowywany również podczas działania automatyki strefowej."
          }
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Sterowanie pogodowe",
          "item": {
            "@type": "Thing",
            "name": "Sterowanie pogodowe i krzywa grzewcza",
            "description": "Regulacja temperatury zasilania zależnie od warunków zewnętrznych i charakterystyki budynku."
          }
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#faq",
      "url": "https://projekt-ogrzewania.pl/kociol-gazowy/#rk-gas-faq",
      "name": "FAQ — kocioł gazowy do ogrzewania podłogowego",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/kociol-gazowy/#article"
      },
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy kocioł gazowy kondensacyjny nadaje się do podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak. Niska temperatura zasilania i powrotu sprzyja kondensacji, a modulowany palnik może dopasować moc do zmiennego zapotrzebowania. Warunkiem jest prawidłowy dobór mocy minimalnej, przepływu, sterowania i hydrauliki."
          }
        },
        {
          "@type": "Question",
          "name": "Jaka moc kotła gazowego do domu 100, 150 albo 200 m²?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie można jej poprawnie określić wyłącznie z powierzchni. Dwa domy o tym samym metrażu mogą mieć kilkukrotnie różne obciążenie cieplne. Moc na CO dobiera się z obliczeń strat, a moc dla CWU sprawdza osobno."
          }
        },
        {
          "@type": "Question",
          "name": "Czy kocioł 24 kW jest za duży do domu potrzebującego 6 kW?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie musi być, jeśli 24 kW jest potrzebne do CWU, moc CO można ograniczyć, a kocioł ma odpowiednio niską moc minimalną. W ogrzewaniu ważniejsze od samego maksimum są dolna granica modulacji i stabilność przy małym odbiorze."
          }
        },
        {
          "@type": "Question",
          "name": "Jaka moc minimalna kotła gazowego jest dobra do podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Im mniejsze obciążenie budynku, tym ważniejsza jest niska moc minimalna. Nie ma jednej granicy dla każdego domu. Należy porównać ją z obciążeniem przejściowym, liczbą otwartych stref, pojemnością wodną i sposobem sterowania."
          }
        },
        {
          "@type": "Question",
          "name": "Czy przy kotle gazowym potrzebny jest zawór mieszający?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie zawsze. Jeżeli cały budynek jest ogrzewany podłogowo i kocioł potrafi bezpośrednio podać wymaganą niską temperaturę, mieszacz jest zazwyczaj zbędny. Jest potrzebny głównie wtedy, gdy jednocześnie występują obiegi o różnych temperaturach."
          }
        },
        {
          "@type": "Question",
          "name": "Czy pompa w kotle obsłuży rozdzielacz podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Może obsłużyć, jeśli przy projektowym całkowitym przepływie zapewnia ciśnienie potrzebne do pokonania magistrali, rozdzielacza, armatury i obiegu krytycznego. Odpowiedź wymaga porównania charakterystyki pompy z obliczonym punktem pracy."
          }
        },
        {
          "@type": "Question",
          "name": "Czy do kotła gazowego potrzebne jest sprzęgło hydrauliczne?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie z definicji. Sprzęgło stosuje się, gdy trzeba rozdzielić obiegi pompowe, zapewnić wymagany przepływ przez źródło lub ograniczyć wzajemny wpływ obiegów. W prostym układzie z jednym rozdzielaczem może być niepotrzebne."
          }
        },
        {
          "@type": "Question",
          "name": "Czy kocioł gazowy potrzebuje bufora do podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Zwykle nie. Sama podłoga i woda w instalacji mają znaczną bezwładność. Bufor może być uzasadniony w szczególnych układach, lecz nie powinien zastępować doboru mocy minimalnej, prawidłowej regulacji ani zapewnienia przepływu."
          }
        },
        {
          "@type": "Question",
          "name": "Jaka temperatura zasilania jest właściwa dla podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Taka, która przy projektowym przepływie i rozstawie rur pokrywa obciążenie pomieszczeń bez przekroczenia temperatury powierzchni. W nowych domach często jest to około 30–38°C w warunkach projektowych, ale nie jest to uniwersalna norma."
          }
        },
        {
          "@type": "Question",
          "name": "Dlaczego kocioł gazowy często się włącza i wyłącza?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Najczęstsze przyczyny to zbyt wysoka moc minimalna, zawyżona temperatura zasilania, mały odbiór ciepła po zamknięciu stref, niewystarczający przepływ, mała pojemność aktywnego obiegu lub niewłaściwe nastawy regulatora."
          }
        },
        {
          "@type": "Question",
          "name": "Czy niska temperatura powrotu szkodzi kotłowi kondensacyjnemu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "W prawidłowo zaprojektowanym kotle kondensacyjnym niski powrót jest korzystny, ponieważ wspiera odzysk ciepła ze skraplania pary wodnej. Kondensat musi być jednak prawidłowo odprowadzony, a urządzenie eksploatowane zgodnie z dokumentacją."
          }
        },
        {
          "@type": "Question",
          "name": "Czy od 2026 roku nie wolno montować kotłów gazowych?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie istnieje jeden powszechny zakaz obejmujący każdą instalację i każdy istniejący budynek w 2026 roku. Unijne przepisy kończą zachęty dla samodzielnych kotłów na paliwa kopalne i wyznaczają kierunek odchodzenia od nich, a szczegóły zależą od wdrożenia krajowego i rodzaju inwestycji."
          }
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "caption": "Robert Kucharski – projektant instalacji sanitarnych i specjalista systemów HVAC"
      },
      "jobTitle": "CEO portalu i specjalista systemów HVAC oraz ogrzewania podłogowego",
      "description": "Projektant instalacji sanitarnych specjalizujący się w wodnym ogrzewaniu podłogowym, obliczeniach obciążenia cieplnego, hydraulice instalacji i współpracy systemów grzewczych ze źródłami ciepła. Właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl i Sobir.pl.",
      "worksFor": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "knowsAbout": [
        "HVAC",
        "wodne ogrzewanie podłogowe",
        "kotły gazowe kondensacyjne",
        "projektowanie instalacji sanitarnych",
        "hydraulika instalacji grzewczych",
        "projektowe obciążenie cieplne",
        "sterowanie pogodowe",
        "efektywność energetyczna budynków"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg"
      },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebSite",
      "@id": "https://remont.biz.pl/#website",
      "url": "https://remont.biz.pl/",
      "name": "Remont.biz.pl",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebSite",
      "@id": "https://sobir.pl/#website",
      "url": "https://sobir.pl/",
      "name": "Sobir.pl",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "inLanguage": "pl-PL"
    }
  ]
}
</script>

<script>
  (function (window, document) {
    "use strict";

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

    function numberValue(id) {
      var element = byId(id);
      return element ? parseFloat(element.value) : 0;
    }

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

    function polishNumber(value, digits, trimZero) {
      if (!isFinite(value)) return "—";
      var text = Number(value).toFixed(digits).replace(".", ",");
      if (trimZero) text = text.replace(/,0+$/, "");
      return text;
    }

    function temperatureText(value) {
      return polishNumber(value, 0, true).replace("-", "−") + "°C";
    }

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

    function setAttribute(id, name, value) {
      var element = byId(id);
      if (element) element.setAttribute(name, value);
    }

    function updateControlLabels() {
      var dhwFlow = numberValue("rk-gas-dhw-flow");
      setText("rk-gas-qdesign-out", polishNumber(numberValue("rk-gas-qdesign"), 1, false) + " kW");
      setText("rk-gas-tdesign-out", temperatureText(numberValue("rk-gas-tdesign")));
      setText("rk-gas-tcut-out", temperatureText(numberValue("rk-gas-tcut")));
      setText("rk-gas-tout-out", temperatureText(numberValue("rk-gas-tout")));
      setText("rk-gas-pmin-out", polishNumber(numberValue("rk-gas-pmin"), 1, false) + " kW");
      setText("rk-gas-ts-out", temperatureText(numberValue("rk-gas-ts")));
      setText("rk-gas-tr-out", temperatureText(numberValue("rk-gas-tr")));
      setText("rk-gas-dhw-flow-out", polishNumber(dhwFlow, 1, true) + " l/min");
      setText("rk-gas-dhw-cold-out", temperatureText(numberValue("rk-gas-dhw-cold")));
      setText("rk-gas-dhw-hot-out", temperatureText(numberValue("rk-gas-dhw-hot")));
    }

    function updateChart(qDesign, pMin, tDesign, tCut, tOutside, qCurrent) {
      var xLeft = 62;
      var xRight = 625;
      var yTop = 36;
      var yBottom = 272;
      var width = xRight - xLeft;
      var height = yBottom - yTop;
      var yMax = Math.max(qDesign * 1.1, pMin * 1.25, 2);
      var safeSpan = Math.max(tCut - tDesign, 1);

      function xForTemperature(value) {
        return xLeft + ((clamp(value, tDesign, tCut) - tDesign) / safeSpan) * width;
      }

      function yForPower(value) {
        return yBottom - (clamp(value, 0, yMax) / yMax) * height;
      }

      var demandStartY = yForPower(qDesign);
      var minimumY = yForPower(pMin);
      var currentX = xForTemperature(tOutside);
      var currentY = yForPower(qCurrent);
      var demandPath = "M" + xLeft.toFixed(1) + " " + demandStartY.toFixed(1) + " L" + xRight.toFixed(1) + " " + yBottom.toFixed(1);
      var riskPath = "";

      if (pMin > 0 ? pMin < qDesign : false) {
        var intersectionX = xLeft + (1 - pMin / qDesign) * width;
        riskPath = "M" + intersectionX.toFixed(1) + " " + minimumY.toFixed(1) + " L" + xRight.toFixed(1) + " " + yBottom.toFixed(1) + " L" + xRight.toFixed(1) + " " + minimumY.toFixed(1) + " Z";
      } else if (pMin >= qDesign) {
        riskPath = "M" + xLeft.toFixed(1) + " " + demandStartY.toFixed(1) + " L" + xRight.toFixed(1) + " " + yBottom.toFixed(1) + " L" + xRight.toFixed(1) + " " + minimumY.toFixed(1) + " L" + xLeft.toFixed(1) + " " + minimumY.toFixed(1) + " Z";
      }

      setAttribute("rk-gas-demand-path", "d", demandPath);
      setAttribute("rk-gas-risk-area", "d", riskPath);
      setAttribute("rk-gas-min-line", "y1", minimumY.toFixed(1));
      setAttribute("rk-gas-min-line", "y2", minimumY.toFixed(1));
      setAttribute("rk-gas-current-line", "x1", currentX.toFixed(1));
      setAttribute("rk-gas-current-line", "x2", currentX.toFixed(1));
      setAttribute("rk-gas-current-dot", "cx", currentX.toFixed(1));
      setAttribute("rk-gas-current-dot", "cy", currentY.toFixed(1));

      setText("rk-gas-y4", polishNumber(yMax, 1, true));
      setText("rk-gas-y3", polishNumber(yMax * 0.75, 1, true));
      setText("rk-gas-y2", polishNumber(yMax * 0.5, 1, true));
      setText("rk-gas-y1", polishNumber(yMax * 0.25, 1, true));
      setText("rk-gas-x0", polishNumber(tDesign, 0, true).replace("-", "−"));
      setText("rk-gas-x1", polishNumber((tDesign + tCut) / 2, 0, true).replace("-", "−"));
      setText("rk-gas-x2", polishNumber(tCut, 0, true).replace("-", "−"));
    }

    function updateLaboratory() {
      var qDesign = numberValue("rk-gas-qdesign");
      var tDesign = numberValue("rk-gas-tdesign");
      var tCut = numberValue("rk-gas-tcut");
      var tOutside = numberValue("rk-gas-tout");
      var pMin = numberValue("rk-gas-pmin");
      var tSupply = numberValue("rk-gas-ts");
      var tReturn = numberValue("rk-gas-tr");
      var dhwFlow = numberValue("rk-gas-dhw-flow");
      var dhwCold = numberValue("rk-gas-dhw-cold");
      var dhwHot = numberValue("rk-gas-dhw-hot");
      var span = Math.max(tCut - tDesign, 1);
      var qCurrent;
      var deltaT = tSupply - tReturn;
      var heatingFlow = deltaT > 0 ? qDesign / (1.163 * deltaT) : NaN;
      var dhwDelta = Math.max(dhwHot - dhwCold, 0);
      var dhwPower = 0.06978 * dhwFlow * dhwDelta;
      var ratio;
      var condensation;
      var verdict = byId("rk-gas-lab-verdict");
      var state = "good";
      var verdictText;

      if (tOutside <= tDesign) {
        qCurrent = qDesign;
      } else if (tOutside >= tCut) {
        qCurrent = 0;
      } else {
        qCurrent = qDesign * (tCut - tOutside) / span;
      }

      ratio = pMin > 0 ? qCurrent / pMin : NaN;

      if (tReturn <= 35) {
        condensation = "bardzo dobre";
      } else if (tReturn <= 45) {
        condensation = "korzystne";
      } else if (tReturn <= 55) {
        condensation = "przejściowe";
      } else {
        condensation = "ograniczone";
      }

      setText("rk-gas-kpi-load", polishNumber(qCurrent, 2, false) + " kW");
      setText("rk-gas-kpi-flow", isFinite(heatingFlow) ? polishNumber(heatingFlow, 2, false) + " m³/h" : "błędne ΔT");
      setText("rk-gas-kpi-ratio", isFinite(ratio) ? polishNumber(ratio, 2, false) + "×" : "—");
      setText("rk-gas-kpi-cond", condensation);
      setText("rk-gas-kpi-dhw", polishNumber(dhwPower, 1, false) + " kW");

      if (deltaT <= 0) {
        state = "danger";
        verdictText = "Temperatura powrotu nie może być równa ani wyższa od temperatury zasilania w tym modelu grzewczym. Popraw Tz/Tp, aby obliczyć przepływ.";
      } else if (pMin >= qDesign) {
        state = "danger";
        verdictText = "Minimalna moc kotła jest równa lub większa od projektowej mocy całego budynku. Ryzyko krótkich cykli wystąpi niemal przez cały sezon i wymaga ponownego doboru urządzenia lub całej koncepcji.";
      } else if (qCurrent === 0) {
        state = "good";
        verdictText = "Aktualna temperatura osiągnęła ustawioną granicę ogrzewania. Model przyjmuje brak zapotrzebowania na CO; kocioł może pracować wyłącznie na potrzeby CWU.";
      } else if (qCurrent < pMin * 0.85) {
        state = "danger";
        verdictText = "Obciążenie budynku spadło wyraźnie poniżej mocy minimalnej kotła. Palnik nie może utrzymać pracy ciągłej; częstotliwość cykli zależy od pojemności wodnej, histerezy, przepływu i liczby otwartych stref.";
      } else if (qCurrent < pMin * 1.2) {
        state = "warning";
        verdictText = "Kocioł pracuje blisko dolnej granicy modulacji. Warto sprawdzić liczbę startów palnika, temperaturę zasilania, odbiór ciepła i zachowanie instalacji po zamknięciu części stref.";
      } else {
        state = "good";
        verdictText = "Przy zadanych parametrach aktualne obciążenie jest większe od mocy minimalnej. Kocioł ma warunki do modulacji, o ile zachowany jest wymagany przepływ i odbiór ciepła.";
      }

      if (verdict) {
        verdict.setAttribute("data-state", state);
        verdict.textContent = verdictText;
      }

      updateChart(qDesign, pMin, tDesign, tCut, tOutside, qCurrent);
      updateControlLabels();
    }

    function initializeGasGuide() {
      var root = byId("rk-gas-guide");
      var laboratory;
      var ranges;
      var navLinks;
      var progress;
      var ticking = false;
      var i;

      if (!root) return false;
      if (root.getAttribute("data-rk-gas-initialized") === "true") return true;
      root.setAttribute("data-rk-gas-initialized", "true");

      laboratory = root.querySelector("[data-rk-gas-lab]");
      ranges = laboratory ? laboratory.querySelectorAll('input[type="range"]') : [];
      for (i = 0; i < ranges.length; i += 1) {
        ranges[i].addEventListener("input", updateLaboratory, false);
        ranges[i].addEventListener("change", updateLaboratory, false);
      }
      updateLaboratory();

      navLinks = root.querySelectorAll('a[href^="#"]');
      for (i = 0; i < navLinks.length; i += 1) {
        navLinks[i].addEventListener("click", function (event) {
          var href = this.getAttribute("href");
          var target = href ? root.querySelector(href) : null;
          if (!target) return;
          event.preventDefault();
          target.scrollIntoView({
            behavior: (typeof window.matchMedia === "function" ? window.matchMedia("(prefers-reduced-motion: reduce)").matches : false) ? "auto" : "smooth",
            block: "start"
          });
        }, false);
      }

      progress = root.querySelector(".rk-gas-progress");
      function updateProgress() {
        var rect = root.getBoundingClientRect();
        var viewport = window.innerHeight || document.documentElement.clientHeight;
        var total = Math.max(root.offsetHeight - viewport, 1);
        var passed = Math.min(Math.max(-rect.top, 0), total);
        var value = Math.min(100, Math.max(0, passed / total * 100));
        if (progress) progress.style.width = value.toFixed(2) + "%";
        ticking = false;
      }

      function requestProgress() {
        if (ticking) return;
        if (window.requestAnimationFrame) {
          window.requestAnimationFrame(updateProgress);
        } else {
          window.setTimeout(updateProgress, 16);
        }
        ticking = true;
      }

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

    window.rkGasGuideInit = initializeGasGuide;

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", initializeGasGuide, false);
    } else {
      initializeGasGuide();
    }

    window.addEventListener("load", initializeGasGuide, false);
    window.setTimeout(initializeGasGuide, 250);
    window.setTimeout(initializeGasGuide, 1200);
    window.setTimeout(initializeGasGuide, 3000);

    if (window.MutationObserver ? !byId("rk-gas-guide") : false) {
      var observer = new MutationObserver(function () {
        if (initializeGasGuide()) observer.disconnect();
      });
      observer.observe(document.documentElement, { childList: true, subtree: true });
      window.setTimeout(function () { observer.disconnect(); }, 10000);
    }
  }(window, document));
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">Kocioł gazowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pompa ciepła do domu – jak działa, ile zużywa prądu i jak dobrać moc?</title>
		<link>https://projekt-ogrzewania.pl/pompa-ciepla/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 03 Jan 2026 16:18:37 +0000</pubDate>
				<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie budynków]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Technologie OZE]]></category>
		<category><![CDATA[bufor ciepła]]></category>
		<category><![CDATA[cop]]></category>
		<category><![CDATA[dolne źródło]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[gruntowa pompa ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[pompy ciepła]]></category>
		<category><![CDATA[powietrzna pompa ciepła]]></category>
		<category><![CDATA[praca biwalentna]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[schemat hydrauliczny]]></category>
		<category><![CDATA[scop]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3039</guid>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    
  </div>
</article>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  selectSource("air");
  analyzeReadiness();
  drawChart();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">Pompa ciepła do domu – jak działa, ile zużywa prądu i jak dobrać moc?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PN-EN 12831 a ogrzewanie podłogowe – od obciążenia cieplnego do projektu.</title>
		<link>https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 31 Dec 2025 08:26:13 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Normy budowlane]]></category>
		<category><![CDATA[Normy grzewcze]]></category>
		<category><![CDATA[Normy techniczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady 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[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[norma pn-en 12831]]></category>
		<category><![CDATA[obciążenie cieplne]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka wodna]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[straty ciepła]]></category>
		<category><![CDATA[temperatura efektywna]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3019</guid>

					<description><![CDATA[<p>Ogrzewanie podłogowe kojarzy się z komfortem, równomiernym ciepłem i niższymi rachunkami, ale tylko wtedy, gdy jest prawidłowo zaprojektowane. Właśnie dlatego tak duże znaczenie ma Norma PN-EN 12831: Klucz do efektywnego i komfortowego ogrzewania podłogowego. To ona określa, jak obliczać rzeczywiste zapotrzebowanie cieplne budynku, uwzględniając nie tylko temperaturę powietrza, ale także temperaturę przegród i odczuwalny komfort użytkownika. W artykule wyjaśniamy, dlaczego temperatura efektywna zmienia podejście do projektowania podłogówki i jak przekłada się to na realne oszczędności oraz wygodę na lata.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831 a ogrzewanie podłogowe – od obciążenia cieplnego do projektu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-12831-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b4b61;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078cae;
    --rk-cyan-soft: #e1f8fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #dc4c30;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #137b62;
    --rk-red: #d7504a;
    --rk-ink: #10283a;
    --rk-copy: #3b5668;
    --rk-muted: #6b8191;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

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

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

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

  #rk-12831-guide button {
    font: inherit;
  }

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

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

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

  #rk-12831-guide .rk-norm-hero {
    background:
      radial-gradient(circle at 90% 112%, rgba(41, 196, 215, 0.24) 0, rgba(41, 196, 215, 0.24) 18%, transparent 18.2%),
      linear-gradient(120deg, #0b2536 0%, #143e52 61%, #0d6576 100%);
    color: #ffffff;
    overflow: hidden;
    padding: 62px 58px 56px;
    position: relative;
  }

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

  #rk-12831-guide .rk-norm-kicker {
    color: #6ce5ef;
    display: block;
    font-size: 0.77rem;
    font-weight: 900;
    letter-spacing: 0.13em;
    margin: 0 0 19px 28px;
    text-transform: uppercase;
  }

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

  #rk-12831-guide .rk-norm-hero-title {
    color: #ffffff;
    font-size: clamp(2.35rem, 5.8vw, 5.15rem);
    margin: 0;
    max-width: 1190px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-12831-guide .rk-norm-section-soft .rk-norm-card {
    background: rgba(255, 255, 255, 0.9);
  }

  #rk-12831-guide .rk-norm-section-dark .rk-norm-card {
    background: #17394b;
    border-color: #315a70;
  }

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

  #rk-12831-guide .rk-norm-section-dark .rk-norm-card-number,
  #rk-12831-guide .rk-norm-section-dark .rk-norm-icon {
    background: #245a70;
    color: #72e7ef;
  }

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

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

  #rk-12831-guide .rk-norm-card ul {
    color: var(--rk-copy);
    margin: 12px 0 0;
    padding-left: 20px;
  }

  #rk-12831-guide .rk-norm-card li + li {
    margin-top: 7px;
  }

  #rk-12831-guide .rk-norm-section-dark .rk-norm-card h3 {
    color: #ffffff;
  }

  #rk-12831-guide .rk-norm-section-dark .rk-norm-card p,
  #rk-12831-guide .rk-norm-section-dark .rk-norm-card ul {
    color: #c8dbe2;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-12831-guide .rk-norm-compare {
    display: grid;
    gap: 0;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    margin-top: 30px;
  }

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

  #rk-12831-guide .rk-norm-compare > div:first-child {
    background: #eafafa;
    border-radius: 17px 0 0 17px;
  }

  #rk-12831-guide .rk-norm-compare > div:last-child {
    background: #fff5ef;
    border-left: 0;
    border-radius: 0 17px 17px 0;
  }

  #rk-12831-guide .rk-norm-compare h3 {
    color: var(--rk-ink);
    margin: 0 0 10px;
  }

  #rk-12831-guide .rk-norm-compare p {
    color: var(--rk-copy);
    margin: 0;
  }

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

  #rk-12831-guide .rk-norm-process-intro {
    color: #c5d9df;
    margin: 0 0 22px;
  }

  #rk-12831-guide .rk-norm-process-tabs {
    display: grid;
    gap: 11px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-12831-guide .rk-norm-process-tab {
    align-items: center;
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 13px;
    color: #ffffff;
    cursor: pointer;
    display: flex;
    gap: 11px;
    min-height: 70px;
    padding: 12px 14px;
    text-align: left;
  }

  #rk-12831-guide .rk-norm-process-tab span {
    align-items: center;
    background: #245a70;
    border-radius: 9px;
    color: #72e7ef;
    display: inline-flex;
    flex: 0 0 34px;
    font-size: 0.78rem;
    font-weight: 900;
    height: 34px;
    justify-content: center;
  }

  #rk-12831-guide .rk-norm-process-tab strong {
    color: inherit;
    font-size: 0.9rem;
    line-height: 1.25;
  }

  #rk-12831-guide .rk-norm-process-tab[aria-selected="true"] {
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
    color: #072838;
  }

  #rk-12831-guide .rk-norm-process-tab[aria-selected="true"] span {
    background: #ffffff;
    color: #08738b;
  }

  #rk-12831-guide .rk-norm-process-panel {
    background: #ffffff;
    border-radius: 18px;
    margin-top: 18px;
    padding: 25px;
  }

  #rk-12831-guide .rk-norm-process-label {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-12831-guide .rk-norm-process-panel h3 {
    color: var(--rk-ink);
    font-size: clamp(1.45rem, 2.5vw, 2rem);
    line-height: 1.25;
    margin: 7px 0 8px;
  }

  #rk-12831-guide .rk-norm-process-panel > p {
    color: var(--rk-copy);
    margin: 0;
  }

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

  #rk-12831-guide .rk-norm-process-fact {
    background: #f2f7f9;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

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

  #rk-12831-guide .rk-norm-process-fact span {
    color: var(--rk-ink);
  }

  #rk-12831-guide .rk-norm-boundary {
    background: #fff2ed;
    border-left: 6px solid var(--rk-orange);
    border-radius: 12px;
    color: #6c3629;
    margin-top: 18px;
    padding: 15px 17px;
  }

  #rk-12831-guide .rk-norm-case {
    background: var(--rk-navy);
    border-radius: 22px;
    color: #ffffff;
    margin-top: 30px;
    padding: 28px;
  }

  #rk-12831-guide .rk-norm-case h3 {
    color: #ffffff;
    font-size: 1.5rem;
    line-height: 1.25;
    margin: 0;
  }

  #rk-12831-guide .rk-norm-case > p {
    color: #c8dbe2;
    margin: 10px 0 0;
  }

  #rk-12831-guide .rk-norm-case-grid {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: 22px;
  }

  #rk-12831-guide .rk-norm-case-value {
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 13px;
    padding: 16px;
  }

  #rk-12831-guide .rk-norm-case-value span {
    color: #8ceaf1;
    display: block;
    font-size: 0.69rem;
    font-weight: 900;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-12831-guide .rk-norm-case-value strong {
    color: #ffffff;
    display: block;
    font-size: 1.35rem;
    margin-top: 5px;
  }

  #rk-12831-guide .rk-norm-case-result {
    background: #ffffff;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 14px;
    color: var(--rk-copy);
    margin-top: 18px;
    padding: 19px 21px;
  }

  #rk-12831-guide .rk-norm-case-result strong {
    color: var(--rk-ink);
  }

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

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

  #rk-12831-guide .rk-norm-cta p {
    color: #cee0e6;
    margin: 14px 0 0;
    max-width: 990px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #rk-12831-guide .rk-norm-process-facts {
      grid-template-columns: minmax(0, 1fr);
    }
  }

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

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

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

    #rk-12831-guide .rk-norm-grid-3,
    #rk-12831-guide .rk-norm-process-tabs {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

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

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

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

    #rk-12831-guide .rk-norm-grid-2,
    #rk-12831-guide .rk-norm-grid-3,
    #rk-12831-guide .rk-norm-grid-4,
    #rk-12831-guide .rk-norm-source-grid,
    #rk-12831-guide .rk-norm-author-facts,
    #rk-12831-guide .rk-norm-case-grid {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-12831-guide .rk-norm-process-tabs {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-12831-guide .rk-norm-process,
    #rk-12831-guide .rk-norm-case,
    #rk-12831-guide .rk-norm-cta {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-12831-guide .rk-norm-process-panel {
      padding: 18px;
    }

    #rk-12831-guide .rk-norm-compare {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-12831-guide .rk-norm-compare > div:first-child {
      border-radius: 17px 17px 0 0;
    }

    #rk-12831-guide .rk-norm-compare > div:last-child {
      border-left: 1px solid var(--rk-line);
      border-radius: 0 0 17px 17px;
      border-top: 0;
    }

    #rk-12831-guide .rk-norm-cta-button {
      text-align: center;
      width: 100%;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #rk-12831-guide .rk-norm-hero-title {
      font-size: 2.18rem;
    }

    #rk-12831-guide .rk-norm-section-title {
      font-size: 1.86rem;
    }
  }

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

<article id="rk-12831-guide" aria-labelledby="rk-12831-visual-title">
  <div class="rk-norm-shell">
    <header class="rk-norm-hero">
      <span class="rk-norm-kicker">Projektowe obciążenie cieplne · aktualizacja techniczna 2026</span>
      <div class="rk-norm-hero-title" id="rk-12831-visual-title">PN-EN 12831 i ogrzewanie podłogowe: <span>najpierw straty, potem podłoga</span></div>
      <p class="rk-norm-hero-lead">PN-EN 12831-1 pomaga określić moc potrzebną pomieszczeniu i budynkowi w warunkach projektowych. Nie dobiera jednak rozstawu rur, temperatury wody ani długości pętli. Ten poradnik pokazuje granicę między obliczeniem obciążenia cieplnego a właściwym projektem podłogówki.</p>
      <div class="rk-norm-hero-tags" aria-label="Zakres poradnika">
        <span>obciążenie w W i kW</span>
        <span>wskaźnik W/m²</span>
        <span>straty przez przenikanie</span>
        <span>wentylacja i infiltracja</span>
        <span>PN-EN 12831 a EN 1264</span>
      </div>
      <div class="rk-norm-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 22 minuty</strong></span>
        <span>Publikacja: <strong>31 grudnia 2025 r.</strong></span>
        <span>Aktualizacja techniczna: <strong>17 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-norm-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-norm-shortcuts-label">Na skróty</span>
      <a href="#rk-norm-answer">Szybka odpowiedź</a>
      <a href="#rk-norm-scope">Czym jest norma</a>
      <a href="#rk-norm-calculates">Co oblicza</a>
      <a href="#rk-norm-limits">Czego nie oblicza</a>
      <a href="#rk-norm-units">W, W/m² i kWh</a>
      <a href="#rk-norm-inputs">Dane wejściowe</a>
      <a href="#rk-norm-climate">Klimat</a>
      <a href="#rk-norm-transmission">Przenikanie</a>
      <a href="#rk-norm-ventilation">Wentylacja</a>
      <a href="#rk-norm-other">Grunt i mostki</a>
      <a href="#rk-norm-room-building">Pomieszczenie i budynek</a>
      <a href="#rk-norm-process">Mapa procesu</a>
      <a href="#rk-norm-active-area">Aktywna podłoga</a>
      <a href="#rk-norm-case">Przykład salonu</a>
      <a href="#rk-norm-en1264">PN-EN 12831 a EN 1264</a>
      <a href="#rk-norm-capacity">Czy podłoga wystarczy</a>
      <a href="#rk-norm-source">Źródło ciepła</a>
      <a href="#rk-norm-errors">Błędy</a>
      <a href="#rk-norm-report">Raport</a>
      <a href="#rk-norm-summary">Podsumowanie</a>
      <a href="#rk-norm-sources">Źródła</a>
      <a href="#rk-norm-faq">FAQ</a>
      <a href="#rk-norm-author">Autor</a>
    </nav>

    <section class="rk-norm-section" id="rk-norm-answer">
      <span class="rk-norm-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-norm-section-title">Co PN-EN 12831 wnosi do projektu ogrzewania podłogowego?</h2>
      <p class="rk-norm-lead"><strong>Norma dostarcza punktu wyjścia: projektowego obciążenia cieplnego każdego pomieszczenia i całego budynku.</strong> Wynik mówi, ile mocy trzeba dostarczyć przy przyjętych temperaturach projektowych. Dopiero następny etap sprawdza, czy dostępna powierzchnia podłogi może oddać tę moc.</p>
      <div class="rk-norm-answer">
        <strong>PN-EN 12831 odpowiada na pytanie „ile ciepła potrzeba?”, ale nie na pytanie „jak ułożyć podłogówkę?”.</strong>
        <p>Rozstaw rur, temperatura zasilania, długości pętli, przepływy i opory hydrauliczne wymagają danych o konstrukcji podłogi, okładzinie, powierzchni aktywnej oraz wybranym systemie. Tych decyzji nie wolno dopisywać do samego wyniku w W.</p>
      </div>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card">
          <span class="rk-norm-icon">1</span>
          <h3>Oblicz straty</h3>
          <p>Zbierz dane przegród, mostków, wentylacji, szczelności, temperatur i lokalizacji. Oblicz obciążenie pomieszczeń.</p>
        </article>
        <article class="rk-norm-card">
          <span class="rk-norm-icon">2</span>
          <h3>Przelicz na podłogę</h3>
          <p>Podziel moc przez rzeczywistą powierzchnię aktywną, a nie przez powierzchnię brutto pokoju.</p>
        </article>
        <article class="rk-norm-card">
          <span class="rk-norm-icon">3</span>
          <h3>Sprawdź emisję i hydraulikę</h3>
          <p>Zweryfikuj temperaturę powierzchni, opór okładziny, rozstaw, parametry wody, pętle i pompę.</p>
        </article>
      </div>
      <p class="rk-norm-copy">Jeżeli chcesz najpierw uporządkować sam wynik obliczeń, przeczytaj poradnik o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a>. Szerszy kontekst strat budynku omawia tekst <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty cieplne w budynkach</a>.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-scope">
      <span class="rk-norm-eyebrow">Zakres dokumentu</span>
      <h2 class="rk-norm-section-title">Czym jest PN-EN 12831-1?</h2>
      <p class="rk-norm-lead">PN-EN 12831-1 jest polskim przyjęciem europejskiej normy dotyczącej metody obliczania projektowego obciążenia cieplnego pomieszczeń i budynku. Obliczenie odnosi się do ustalonych warunków projektowych, a nie do średniej zimy ani do chwilowej pracy instalacji.</p>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">CEL</span>
          <h3>Moc w warunkach projektowych</h3>
          <p>Wynik ma opisać moc potrzebną do utrzymania temperatury wewnętrznej przy przyjętych warunkach zewnętrznych i sposobie użytkowania.</p>
        </article>
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">SKALA</span>
          <h3>Pomieszczenie i budynek</h3>
          <p>Obciążenie pojedynczego pokoju służy do doboru emitera. Wynik budynku pomaga ocenić wymagania źródła ciepła.</p>
        </article>
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">METODA</span>
          <h3>Jawne dane wejściowe</h3>
          <p>Obliczenie wymaga opisanych założeń, dzięki czemu można sprawdzić, skąd pochodzi wynik i co należy poprawić.</p>
        </article>
      </div>
      <div class="rk-norm-note">
        <p><strong>Uwaga terminologiczna:</strong> w praktyce określenie „OZC” bywa używane szeroko. Projektowe obciążenie cieplne jest obliczeniem mocy dla warunków obliczeniowych; roczne zapotrzebowanie na energię to inne zadanie i inna jednostka.</p>
      </div>
    </section>

    <section class="rk-norm-section" id="rk-norm-calculates">
      <span class="rk-norm-eyebrow">Właściwy zakres</span>
      <h2 class="rk-norm-section-title">Co dokładnie oblicza PN-EN 12831?</h2>
      <p class="rk-norm-lead">W uproszczeniu wynik składa się z obciążeń związanych z przenikaniem ciepła oraz wentylacją, z uwzględnieniem przyjętej metody i warunków. Dla projektanta najważniejsza jest możliwość rozdzielenia wyniku na pomieszczenia.</p>
      <div class="rk-norm-grid-4">
        <article class="rk-norm-card"><span class="rk-norm-card-number">Φ<sub>T</sub></span><h3>Przenikanie</h3><p>Straty przez ściany, dach, strop, podłogę, okna, drzwi oraz do sąsiednich przestrzeni o innych warunkach.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">Φ<sub>V</sub></span><h3>Wentylacja</h3><p>Moc potrzebna do ogrzania powietrza wymienianego przez wentylację oraz uwzględnianą infiltrację.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">Φ<sub>HL</sub></span><h3>Obciążenie pokoju</h3><p>Wartość służąca do sprawdzenia, czy konkretny emiter pokryje potrzeby tego pomieszczenia.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">Σ</span><h3>Obciążenie budynku</h3><p>Wynik agregowany z uwzględnieniem zasad metody, wykorzystywany przy analizie źródła i układu.</p></article>
      </div>
      <div class="rk-norm-formula">projektowe obciążenie cieplne ≈ obciążenie przez przenikanie + obciążenie wentylacyjne + składniki przewidziane w przyjętej metodzie</div>
      <p class="rk-norm-copy">To zapis porządkujący, a nie zamiennik pełnej procedury normowej. Szczegółowy model musi rozróżniać rodzaje przegród, warunki po drugiej stronie, temperatury, mostki cieplne, wentylację i założenia dotyczące użytkowania.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-dark" id="rk-norm-limits">
      <span class="rk-norm-eyebrow">Najważniejsza granica</span>
      <h2 class="rk-norm-section-title">Czego PN-EN 12831 nie oblicza?</h2>
      <p class="rk-norm-lead">Norma obciążenia cieplnego nie jest instrukcją układania rur. Nie należy przypisywać jej wyników, które powstają dopiero po uwzględnieniu konstrukcji ogrzewanej podłogi i hydrauliki instalacji.</p>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-card-number">NIE</span><h3>Nie ustala rozstawu rur</h3><p>Rozstaw zależy od wymaganej mocy powierzchniowej, parametrów wody, konstrukcji podłogi i ograniczeń temperatury.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">NIE</span><h3>Nie dzieli instalacji na pętle</h3><p>Długości, pola i dobiegi wynikają z geometrii, średnicy rury oraz obliczeń hydraulicznych.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">NIE</span><h3>Nie wyznacza nastaw rotametrów</h3><p>Przepływ pętli wynika z przypisanej mocy i przyjętej różnicy temperatur zasilania oraz powrotu.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">NIE</span><h3>Nie narzuca temperatury zasilania</h3><p>Temperaturę dobiera się w obliczeniach systemu płaszczyznowego, a nie z samej wartości obciążenia.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">NIE</span><h3>Nie liczy rachunku rocznego</h3><p>Wynik w W lub kW nie jest zużyciem energii w kWh i nie pozwala samodzielnie wyznaczyć kosztów sezonu.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">NIE</span><h3>Nie dobiera automatycznie pompy ciepła</h3><p>Dobór urządzenia wymaga również danych o ciepłej wodzie, zakresie modulacji, punkcie biwalentnym i charakterystyce mocy.</p></article>
      </div>
      <div class="rk-norm-note"><p><strong>Istotne sprostowanie:</strong> ten sam budynek nie traci automatycznie o 10–20% mniej ciepła wyłącznie dlatego, że zastosowano podłogówkę zamiast grzejników. Niskotemperaturowy emiter może poprawić sprawność źródła, ale jest to osobny efekt eksploatacyjny.</p></div>
    </section>

    <section class="rk-norm-section" id="rk-norm-units">
      <span class="rk-norm-eyebrow">Jednostki bez skrótów myślowych</span>
      <h2 class="rk-norm-section-title">W, W/m², kWh i zł — cztery różne informacje</h2>
      <p class="rk-norm-lead">Najczęstszy błąd interpretacyjny polega na zamianie mocy na energię lub na dzieleniu wyniku przez niewłaściwą powierzchnię. Każda jednostka odpowiada na inne pytanie.</p>
      <div class="rk-norm-table-wrap">
        <table>
          <thead>
            <tr><th>Wielkość</th><th>Jednostka</th><th>Odpowiada na pytanie</th><th>Nie oznacza</th></tr>
          </thead>
          <tbody>
            <tr><td data-label="Wielkość"><strong>Obciążenie cieplne pokoju</strong></td><td data-label="Jednostka">W</td><td data-label="Odpowiada na pytanie">Jakiej mocy potrzebuje pomieszczenie w warunkach projektowych?</td><td data-label="Nie oznacza">Rocznego zużycia energii.</td></tr>
            <tr><td data-label="Wielkość"><strong>Obciążenie budynku</strong></td><td data-label="Jednostka">kW</td><td data-label="Odpowiada na pytanie">Jakiej mocy wymaga cały obiekt przy założeniach obliczeniowych?</td><td data-label="Nie oznacza">Automatycznie mocy katalogowej urządzenia.</td></tr>
            <tr><td data-label="Wielkość"><strong>Wymagana moc powierzchniowa</strong></td><td data-label="Jednostka">W/m²</td><td data-label="Odpowiada na pytanie">Ile watów musi średnio oddać metr aktywnej podłogi?</td><td data-label="Nie oznacza">Wskaźnika liczonego z powierzchni brutto bez wyłączeń.</td></tr>
            <tr><td data-label="Wielkość"><strong>Energia w okresie</strong></td><td data-label="Jednostka">kWh</td><td data-label="Odpowiada na pytanie">Ile energii dostarczono albo zużyto w czasie?</td><td data-label="Nie oznacza">Mocy projektowej.</td></tr>
            <tr><td data-label="Wielkość"><strong>Koszt</strong></td><td data-label="Jednostka">zł</td><td data-label="Odpowiada na pytanie">Ile kosztuje energia przy danej taryfie i sprawności?</td><td data-label="Nie wynika">Z samego obciążenia w kW.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-norm-note rk-norm-note-good"><p><strong>Dobra kontrola:</strong> jeżeli w raporcie pojawia się tylko jeden wskaźnik W/m² dla całego domu, bez wyników poszczególnych pomieszczeń, nie wystarcza on do zaprojektowania pętli.</p></div>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-inputs">
      <span class="rk-norm-eyebrow">Wynik jest tak dobry jak dane</span>
      <h2 class="rk-norm-section-title">Jakich danych wejściowych wymaga odpowiedzialne obliczenie?</h2>
      <p class="rk-norm-lead">Nie da się wiarygodnie obliczyć obciążenia z samej powierzchni domu i roku budowy. Potrzebny jest opis geometrii, przegród, stref, wentylacji i temperatur.</p>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-card-number">01</span><h3>Geometria</h3><p>Wymiary pomieszczeń, powierzchnie przegród, kubatury, orientacja oraz granice stref ogrzewanych i nieogrzewanych.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">02</span><h3>Przegrody</h3><p>Budowa ścian, dachu, podłóg, stropów, okien i drzwi wraz z parametrami cieplnymi oraz warunkami po obu stronach.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">03</span><h3>Mostki cieplne</h3><p>Sposób uwzględnienia połączeń ścian, wieńców, nadproży, balkonów, ościeży, cokołu i pozostałych detali.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">04</span><h3>Temperatury</h3><p>Projektowe temperatury wewnętrzne pomieszczeń oraz warunki zewnętrzne właściwe dla lokalizacji i metody.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">05</span><h3>Wentylacja</h3><p>Rodzaj systemu, strumienie powietrza, odzysk ciepła, sposób regulacji, szczelność i przyjęcia dla infiltracji.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">06</span><h3>Założenia projektu</h3><p>Sposób użytkowania, przerwy ogrzewania, ewentualna moc do ponownego nagrzewania i zakres zastosowanej procedury.</p></article>
      </div>
      <p class="rk-norm-copy">Wstępny kalkulator może pomóc wykryć skalę problemu, ale nie zastąpi modelu pomieszczeń. Zobacz <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulator strat ciepła budynku</a> jako narzędzie orientacyjne oraz poradnik o <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansie cieplnym budynku</a>, jeżeli chcesz poznać szerszy kontekst.</p>
    </section>

    <section class="rk-norm-section" id="rk-norm-climate">
      <span class="rk-norm-eyebrow">Warunek zewnętrzny</span>
      <h2 class="rk-norm-section-title">Lokalizacja i projektowa temperatura zewnętrzna</h2>
      <p class="rk-norm-lead">Obciążenie projektowe rośnie, gdy zwiększa się różnica między temperaturą wewnętrzną i zewnętrzną. Dlatego lokalizacja budynku oraz poprawnie przypisane dane klimatyczne są częścią obliczenia, a nie detalem dopisywanym na końcu.</p>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-icon">M</span><h3>Miejscowość</h3><p>Adres pozwala przypisać dane klimatyczne i zweryfikować, czy budynek nie leży przy granicy obszarów przyjmowanych w projekcie.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-icon">ΔT</span><h3>Różnica temperatur</h3><p>Ta sama przegroda traci więcej mocy przy większej różnicy między wnętrzem a otoczeniem.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-icon">!</span><h3>Konsekwencja błędu</h3><p>Zły warunek zewnętrzny wpływa na wynik każdego pomieszczenia, ocenę podłogi i dobór źródła.</p></article>
      </div>
      <p class="rk-norm-copy">Interaktywną wyszukiwarkę miejscowości i wyjaśnienie wpływu lokalizacji znajdziesz w poradniku o <a href="https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/">strefach klimatycznych w Polsce, podłogówce i OZC</a>.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-transmission">
      <span class="rk-norm-eyebrow">Drogi ucieczki ciepła</span>
      <h2 class="rk-norm-section-title">Straty przez przenikanie — nie tylko U razy powierzchnia</h2>
      <p class="rk-norm-lead">Podstawowa zależność jest intuicyjna: większa powierzchnia, słabsza izolacyjność i większa różnica temperatur zwiększają straty. Rzeczywiste obliczenie musi jednak uwzględniać również warunki brzegowe oraz połączenia przegród.</p>
      <div class="rk-norm-formula">uproszczenie edukacyjne: Φ ≈ U × A × ΔT</div>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-card-number">U</span><h3>Przenikanie przegrody</h3><p>Współczynnik opisuje cały układ warstw konkretnej przegrody. Nie należy zastępować go parametrem pojedynczego materiału.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">A</span><h3>Powierzchnia i geometria</h3><p>Wymiary muszą odpowiadać przyjętej konwencji obliczeń i rzeczywistej granicy między strefami.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">ΔT</span><h3>Warunek po drugiej stronie</h3><p>Inaczej traktuje się powietrze zewnętrzne, grunt, garaż, klatkę lub pomieszczenie o innej temperaturze.</p></article>
      </div>
      <div class="rk-norm-note"><p><strong>To tylko zależność poglądowa.</strong> Nie używaj jej jako samodzielnego modelu całego budynku. Prawidłowa metoda rozdziela przypadki i współczynniki zgodnie z zakresem obliczenia.</p></div>
    </section>

    <section class="rk-norm-section" id="rk-norm-ventilation">
      <span class="rk-norm-eyebrow">Powietrze też przenosi energię</span>
      <h2 class="rk-norm-section-title">Wentylacja, infiltracja i rekuperacja</h2>
      <p class="rk-norm-lead">Strumień świeżego powietrza trzeba ogrzać od warunków zewnętrznych do wymaganych warunków w pomieszczeniu. W budynku z wentylacją mechaniczną odzysk ciepła może ograniczać ten składnik, lecz nie wolno wpisywać sprawności katalogowej bez sprawdzenia założeń systemu.</p>
      <div class="rk-norm-grid-2">
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">GRAWITACYJNA</span>
          <h3>Wentylacja zależna od warunków</h3>
          <p>Na strumień wpływają kanały, nawiew, szczelność, wiatr, różnica temperatur i sposób użytkowania. Stała wartość „z internetu” może zniekształcić wynik.</p>
        </article>
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">MECHANICZNA</span>
          <h3>Bilans powietrza i odzysk</h3>
          <p>Należy rozdzielić strumienie nawiewu i wywiewu, sprawdzić zrównoważenie oraz przyjąć odzysk ciepła zgodnie z metodą i projektem instalacji.</p>
        </article>
      </div>
      <ul class="rk-norm-bullets">
        <li>sprawdź strumienie projektowe dla poszczególnych pomieszczeń,</li>
        <li>nie odejmuj odzysku ciepła drugi raz w różnych miejscach modelu,</li>
        <li>oddziel wentylację kontrolowaną od niekontrolowanej infiltracji,</li>
        <li>udokumentuj założenia dla szczelności i pracy instalacji.</li>
      </ul>
      <p class="rk-norm-copy">Połączenie systemów omawia osobny poradnik <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja i ogrzewanie podłogowe</a>.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-other">
      <span class="rk-norm-eyebrow">Elementy łatwe do pominięcia</span>
      <h2 class="rk-norm-section-title">Grunt, mostki cieplne i sąsiednie strefy</h2>
      <p class="rk-norm-lead">Uproszczenie każdej przegrody do kontaktu z powietrzem zewnętrznym daje błędny model. Podłoga na gruncie, piwnica, garaż, strych i ogrzewane sąsiednie pomieszczenia wymagają właściwych warunków brzegowych.</p>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-card-number">GRUNT</span><h3>Inna droga wymiany ciepła</h3><p>Znaczenie mają geometria, izolacja, obwód i sposób ujęcia kontaktu z gruntem w przyjętej procedurze.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">Ψ</span><h3>Mostki liniowe</h3><p>Połączenia przegród mogą podnosić straty ponad wynik z samych pól U × A. Ich udział powinien być jawny.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">STREFA</span><h3>Temperatura sąsiednia</h3><p>Ściana do garażu albo strop pod strychem nie pracują w tych samych warunkach co przegroda do powietrza zewnętrznego.</p></article>
      </div>
      <div class="rk-norm-note rk-norm-note-bad"><p><strong>Sygnał ostrzegawczy:</strong> raport bez zestawienia przegród i warunków po ich drugiej stronie utrudnia sprawdzenie, czy wynik opisuje rzeczywisty budynek.</p></div>
    </section>

    <section class="rk-norm-section" id="rk-norm-room-building">
      <span class="rk-norm-eyebrow">Dwa poziomy wyniku</span>
      <h2 class="rk-norm-section-title">Obciążenie pomieszczenia a obciążenie całego budynku</h2>
      <p class="rk-norm-lead">Projektant podłogówki potrzebuje wyniku dla każdego pokoju. Jedna suma dla domu nie pokazuje, gdzie występują duże przeszklenia, mała powierzchnia aktywna albo łazienka wymagająca wyższej temperatury wewnętrznej.</p>
      <div class="rk-norm-compare">
        <div>
          <h3>Wynik pomieszczenia</h3>
          <p>Służy do oceny mocy emitera w danym pokoju, obliczenia wymaganej wartości W/m² aktywnej podłogi oraz przypisania mocy pętlom.</p>
        </div>
        <div>
          <h3>Wynik budynku</h3>
          <p>Opisuje zapotrzebowanie mocy całego obiektu zgodnie z metodą. Jest ważny dla źródła, lecz nie zastępuje rozkładu obciążeń.</p>
        </div>
      </div>
      <p class="rk-norm-copy">Dwa domy o tym samym wyniku w kW mogą wymagać innego projektu podłogówki. W jednym obciążenia będą równomierne, a w drugim skoncentrowane przy przeszkleniach i w małych pomieszczeniach.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-dark" id="rk-norm-process">
      <span class="rk-norm-eyebrow">Interaktywna grafika edukacyjna</span>
      <h2 class="rk-norm-section-title">Od danych budynku do rozstawu rur — gdzie kończy się PN-EN 12831?</h2>
      <p class="rk-norm-lead">Wybierz etap. Moduł pokazuje, jaki wynik powstaje, jaki błąd pojawia się najczęściej i czy dany krok należy jeszcze do obliczenia obciążenia, czy już do projektu ogrzewania podłogowego.</p>
      <div class="rk-norm-process" id="rk-norm-process-tool">
        <p class="rk-norm-process-intro"><strong>Sześć etapów jednego procesu:</strong> kliknij dowolny kafel. Układ jest tekstowy i modułowy, dlatego pozostaje czytelny także na telefonie.</p>
        <div class="rk-norm-process-tabs" role="tablist" aria-label="Etapy od danych budynku do projektu podłogówki">
          <button class="rk-norm-process-tab" type="button" role="tab" aria-selected="true" data-rk-stage="inputs"><span>01</span><strong>Dane wejściowe</strong></button>
          <button class="rk-norm-process-tab" type="button" role="tab" aria-selected="false" data-rk-stage="transmission"><span>02</span><strong>Przenikanie</strong></button>
          <button class="rk-norm-process-tab" type="button" role="tab" aria-selected="false" data-rk-stage="ventilation"><span>03</span><strong>Wentylacja</strong></button>
          <button class="rk-norm-process-tab" type="button" role="tab" aria-selected="false" data-rk-stage="watts"><span>04</span><strong>Wynik w W</strong></button>
          <button class="rk-norm-process-tab" type="button" role="tab" aria-selected="false" data-rk-stage="surface"><span>05</span><strong>Aktywne W/m²</strong></button>
          <button class="rk-norm-process-tab" type="button" role="tab" aria-selected="false" data-rk-stage="floor"><span>06</span><strong>Podłoga i hydraulika</strong></button>
        </div>
        <div class="rk-norm-process-panel" role="tabpanel" aria-live="polite">
          <span class="rk-norm-process-label" id="rk-norm-stage-label">Etap 1 · PN-EN 12831</span>
          <h3 id="rk-norm-stage-title">Dane budynku i warunki projektowe</h3>
          <p id="rk-norm-stage-summary">Geometria, przegrody, temperatury, lokalizacja i wentylacja budują model. Na tym etapie nie wybiera się jeszcze rozstawu rur.</p>
          <div class="rk-norm-process-facts">
            <div class="rk-norm-process-fact"><strong>Wejście</strong><span id="rk-norm-stage-input">Rzuty, przekroje, warstwy przegród, stolarka, strefy, wentylacja i lokalizacja.</span></div>
            <div class="rk-norm-process-fact"><strong>Wynik etapu</strong><span id="rk-norm-stage-output">Spójny model pomieszczeń i warunków brzegowych.</span></div>
            <div class="rk-norm-process-fact"><strong>Najczęstszy błąd</strong><span id="rk-norm-stage-error">Wartości typowe zamiast danych konkretnego budynku.</span></div>
          </div>
          <div class="rk-norm-boundary" id="rk-norm-stage-boundary"><strong>Granica odpowiedzialności:</strong> ten etap należy do przygotowania obliczenia PN-EN 12831.</div>
        </div>
      </div>
      <noscript><div class="rk-norm-note"><p><strong>JavaScript jest wyłączony.</strong> Kolejność procesu pozostaje następująca: dane wejściowe → przenikanie → wentylacja → wynik w W → przeliczenie na aktywne W/m² → dobór emisji i hydrauliki podłogówki.</p></div></noscript>
    </section>

    <section class="rk-norm-section" id="rk-norm-active-area">
      <span class="rk-norm-eyebrow">Most między dwiema metodami</span>
      <h2 class="rk-norm-section-title">Jak przejść z wyniku w W do wymaganej mocy aktywnej podłogi?</h2>
      <p class="rk-norm-lead">Najpierw trzeba wyznaczyć powierzchnię, na której rury rzeczywiście mogą oddawać ciepło. Stała zabudowa, elementy bez możliwości ułożenia rur i świadomie wyłączone pola zmniejszają powierzchnię aktywną.</p>
      <div class="rk-norm-formula">wymagana moc powierzchniowa [W/m²] = obciążenie pomieszczenia [W] ÷ powierzchnia aktywna [m²]</div>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-card-number">1</span><h3>Zacznij od mocy pokoju</h3><p>Użyj zweryfikowanego obciążenia dla konkretnego pomieszczenia, nie średniego wskaźnika całego domu.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">2</span><h3>Odejmij pola wyłączone</h3><p>Rysunek wyposażenia i instalacji pokazuje, ile podłogi może być rzeczywistą powierzchnią grzejną.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">3</span><h3>Sprawdź wykonalność</h3><p>Wymagane W/m² porównaj z emisją możliwą przy dopuszczalnej temperaturze powierzchni i danej okładzinie.</p></article>
      </div>
      <p class="rk-norm-copy">Sposób wyznaczania pól wyłączonych omawia poradnik <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie układać ogrzewania podłogowego</a>. Wpływ warstw nad rurą wyjaśnia artykuł o <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporze cieplnym wykończenia podłogi</a>.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-case">
      <span class="rk-norm-eyebrow">Przykład edukacyjny</span>
      <h2 class="rk-norm-section-title">Studium przypadku: ten sam salon, dwie powierzchnie aktywne</h2>
      <p class="rk-norm-lead">Załóżmy, że obliczone obciążenie salonu wynosi 1600 W, a jego powierzchnia brutto to 32 m². Sam wynik PN-EN 12831 pozostaje taki sam, lecz zadanie podłogi zmienia się wraz z powierzchnią dostępną pod rury.</p>
      <div class="rk-norm-case">
        <h3>Wariant A — 28 m² aktywne</h3>
        <p>Większość podłogi może pracować jako emiter.</p>
        <div class="rk-norm-case-grid">
          <div class="rk-norm-case-value"><span>Obciążenie pokoju</span><strong>1600 W</strong></div>
          <div class="rk-norm-case-value"><span>Powierzchnia brutto</span><strong>32 m²</strong></div>
          <div class="rk-norm-case-value"><span>Powierzchnia aktywna</span><strong>28 m²</strong></div>
          <div class="rk-norm-case-value"><span>Wymagana emisja</span><strong>57,1 W/m²</strong></div>
        </div>
        <div class="rk-norm-case-result"><strong>Obliczenie:</strong> 1600 W ÷ 28 m² = 57,1 W/m² aktywnej podłogi.</div>
      </div>
      <div class="rk-norm-case">
        <h3>Wariant B — tylko 20 m² aktywne</h3>
        <p>Zabudowa i strefy wyłączone ograniczają powierzchnię grzejną.</p>
        <div class="rk-norm-case-grid">
          <div class="rk-norm-case-value"><span>Obciążenie pokoju</span><strong>1600 W</strong></div>
          <div class="rk-norm-case-value"><span>Powierzchnia brutto</span><strong>32 m²</strong></div>
          <div class="rk-norm-case-value"><span>Powierzchnia aktywna</span><strong>20 m²</strong></div>
          <div class="rk-norm-case-value"><span>Wymagana emisja</span><strong>80,0 W/m²</strong></div>
        </div>
        <div class="rk-norm-case-result"><strong>Obliczenie:</strong> 1600 W ÷ 20 m² = 80,0 W/m². Budynek nie zaczął tracić więcej ciepła — trudniejsze stało się zadanie emitera.</div>
      </div>
      <div class="rk-norm-note"><p><strong>Założenia przykładu są jawne i poglądowe.</strong> Emisję trzeba jeszcze sprawdzić dla konkretnej konstrukcji podłogi, okładziny, parametrów wody i ograniczeń temperatury powierzchni.</p></div>
      <aside class="rk-norm-cta" aria-label="Projekt ogrzewania podłogowego po obliczeniu obciążenia">
        <div class="rk-norm-cta-title">Masz już obciążenie cieplne pomieszczeń? To dopiero połowa projektu</div>
        <p>Wynik w W trzeba przełożyć na powierzchnię aktywną, opór okładziny, rozstaw rur, temperaturę wody, długości pętli, przepływy i spadki ciśnienia. Projekt łączy te decyzje w jeden wykonalny układ.</p>
        <a class="rk-norm-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-norm-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-norm-section" id="rk-norm-en1264">
      <span class="rk-norm-eyebrow">Dwa zadania, dwa etapy</span>
      <h2 class="rk-norm-section-title">PN-EN 12831 a PN-EN 1264 i ISO 11855</h2>
      <p class="rk-norm-lead">Obliczenie obciążenia cieplnego i wymiarowanie systemu powierzchniowego są połączone, ale nie są tym samym. Pierwszy etap definiuje potrzebę, drugi sprawdza sposób jej pokrycia.</p>
      <div class="rk-norm-table-wrap">
        <table>
          <thead><tr><th>Etap</th><th>Główne pytanie</th><th>Typowy wynik</th><th>Decyzja projektowa</th></tr></thead>
          <tbody>
            <tr><td data-label="Etap"><strong>PN-EN 12831-1</strong></td><td data-label="Główne pytanie">Ile mocy potrzebuje pomieszczenie i budynek?</td><td data-label="Typowy wynik">W dla pomieszczeń, kW dla budynku.</td><td data-label="Decyzja projektowa">Wymagana moc do pokrycia w warunkach projektowych.</td></tr>
            <tr><td data-label="Etap"><strong>PN-EN 1264 / ISO 11855</strong></td><td data-label="Główne pytanie">Jak system powierzchniowy ma tę moc oddać?</td><td data-label="Typowy wynik">Moc powierzchniowa, temperatury, warunki emisji.</td><td data-label="Decyzja projektowa">Rozstaw, parametry wody, ograniczenia powierzchni i konstrukcji.</td></tr>
            <tr><td data-label="Etap"><strong>Hydraulika instalacji</strong></td><td data-label="Główne pytanie">Jak dostarczyć wymagany strumień ciepła do pętli?</td><td data-label="Typowy wynik">Przepływy, długości, opory, nastawy i punkt pracy pompy.</td><td data-label="Decyzja projektowa">Podział pętli, rozdzielacz, równoważenie i pompa.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-norm-copy">Zakres systemu powierzchniowego porządkują poradniki o <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">obliczeniach ogrzewania podłogowego według EN 1264</a> oraz o tym, jak <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264 definiuje ogrzewanie podłogowe</a>.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-capacity">
      <span class="rk-norm-eyebrow">Ocena wykonalności</span>
      <h2 class="rk-norm-section-title">Czy podłogówka pokryje całe obciążenie cieplne?</h2>
      <p class="rk-norm-lead">Odpowiedź wymaga porównania mocy potrzebnej z mocą możliwą do oddania przez dostępną powierzchnię. Sam niski wskaźnik dla całego domu nie gwarantuje, że każde pomieszczenie przejdzie tę próbę.</p>
      <div class="rk-norm-grid-4">
        <article class="rk-norm-card"><span class="rk-norm-card-number">1</span><h3>Obciążenie pokoju</h3><p>Zweryfikowany wynik w W dla przyjętej temperatury i warunków zewnętrznych.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">2</span><h3>Powierzchnia czynna</h3><p>Faktyczne pole grzejne po odjęciu wyłączeń, a nie powierzchnia z opisu nieruchomości.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">3</span><h3>Opór podłogi</h3><p>Okładzina, podkład i pozostałe warstwy nad rurą ograniczają strumień ciepła.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">4</span><h3>Granice komfortu</h3><p>Temperatura powierzchni i warunki użytkowania ograniczają moc możliwą do uzyskania.</p></article>
      </div>
      <p class="rk-norm-copy">Pełną ocenę opisuje poradnik <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">czy ogrzewanie podłogowe może być jedynym systemem grzewczym w domu</a>. Jeżeli problem dotyczy dużych okien, zobacz również zasady projektowania <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>
      <div class="rk-norm-note rk-norm-note-good"><p><strong>Poprawna kolejność:</strong> nie zwiększaj temperatury zasilania, zanim nie sprawdzisz danych budynku, aktywnego pola, okładziny, rozstawu i ograniczeń powierzchni.</p></div>
    </section>

    <section class="rk-norm-section" id="rk-norm-source">
      <span class="rk-norm-eyebrow">Wynik budynku nie jest końcem doboru</span>
      <h2 class="rk-norm-section-title">Jak obciążenie cieplne wpływa na źródło ciepła?</h2>
      <p class="rk-norm-lead">Projektowe obciążenie budynku jest ważnym punktem doboru, ale urządzenie musi pracować w całym zakresie sezonu. Trzeba uwzględnić jego charakterystykę mocy, temperaturę zasilania, modulację, ciepłą wodę i przyjętą strategię szczytową.</p>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-icon">P</span><h3>Moc przy warunkach projektowych</h3><p>Porównuje się ją z mocą urządzenia dostępną przy rzeczywistej temperaturze zewnętrznej i wymaganej temperaturze wody.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-icon">MIN</span><h3>Minimalna modulacja</h3><p>Zbyt wysoka moc minimalna może zwiększać taktowanie w cieplejszych okresach, nawet gdy moc szczytowa jest poprawna.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-icon">CWU</span><h3>Oddzielne zadanie</h3><p>Przygotowanie ciepłej wody i strategia priorytetu nie powinny być bezrefleksyjnie dodawane do obciążenia ogrzewania pomieszczeń.</p></article>
      </div>
      <p class="rk-norm-copy">Zależność źródła i systemu niskotemperaturowego omawia <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>. Samą rolę urządzenia wyjaśnia poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a>.</p>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-errors">
      <span class="rk-norm-eyebrow">Kontrola jakości</span>
      <h2 class="rk-norm-section-title">Najczęstsze błędy w interpretacji PN-EN 12831</h2>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 1</span><h3>Wskaźnik W/m² zamiast modelu</h3><p>Jedna wartość dla całego domu nie rozdziela obciążeń między pomieszczenia i nie wystarcza do projektu pętli.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 2</span><h3>W zamienione na kWh</h3><p>Moc projektowa nie opisuje czasu pracy ani rocznej energii. Nie można z niej bezpośrednio obliczyć rachunku.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 3</span><h3>Podłogówka „zmniejsza straty”</h3><p>Rodzaj emitera nie poprawia automatycznie izolacyjności przegród ani szczelności budynku.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 4</span><h3>Powierzchnia brutto jako grzejna</h3><p>Meble stałe, zabudowa i pola wyłączone mogą mocno podnieść wymagane W/m² aktywnej części podłogi.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 5</span><h3>Brak jawnych założeń</h3><p>Bez temperatur, lokalizacji, wentylacji i parametrów przegród wynik jest trudny do zweryfikowania.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 6</span><h3>Dobór źródła jeden do jednego</h3><p>Moc urządzenia wymaga porównania charakterystyk, modulacji, temperatur systemu i strategii pracy.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 7</span><h3>EN 1264 pominięta</h3><p>Wynik strat nie potwierdza jeszcze, że podłoga odda wymaganą moc przy dopuszczalnych warunkach.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 8</span><h3>Rozstaw z tabeli uniwersalnej</h3><p>Rozstaw zależy od obciążenia, warstw podłogi, temperatur wody i wybranego systemu.</p></article>
        <article class="rk-norm-card"><span class="rk-norm-card-number">BŁĄD 9</span><h3>Strefa brzegowa przypisana normie strat</h3><p>Strefa brzegowa jest decyzją projektu emitera wynikającą z lokalnego obciążenia i geometrii, nie gotowym nakazem PN-EN 12831.</p></article>
      </div>
      <p class="rk-norm-copy">Zasady doboru rozstawu znajdziesz w poradnikach <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w wodnym ogrzewaniu podłogowym</a> oraz <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw 10 czy 15 cm</a>. Rolę obszaru przy przegrodzie zewnętrznej wyjaśnia artykuł o <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefie brzegowej w podłogówce</a>.</p>
    </section>

    <section class="rk-norm-section" id="rk-norm-report">
      <span class="rk-norm-eyebrow">Dokument możliwy do sprawdzenia</span>
      <h2 class="rk-norm-section-title">Co powinien zawierać raport obciążenia cieplnego?</h2>
      <p class="rk-norm-lead">Dobry raport nie kończy się jedną liczbą w kW. Powinien umożliwiać prześledzenie danych, wyników pomieszczeń i wpływu najważniejszych składników.</p>
      <div class="rk-norm-grid-3">
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">DANE</span>
          <h3>Założenia wejściowe</h3>
          <ul>
            <li>lokalizacja i warunki zewnętrzne,</li>
            <li>temperatury pomieszczeń,</li>
            <li>parametry przegród i stolarki,</li>
            <li>wentylacja, odzysk i infiltracja.</li>
          </ul>
        </article>
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">WYNIKI</span>
          <h3>Rozbicie pomieszczeń</h3>
          <ul>
            <li>obciążenie każdego pokoju,</li>
            <li>straty przez przenikanie,</li>
            <li>składnik wentylacyjny,</li>
            <li>zestawienie całego budynku.</li>
          </ul>
        </article>
        <article class="rk-norm-card">
          <span class="rk-norm-card-number">ŚLAD</span>
          <h3>Możliwość weryfikacji</h3>
          <ul>
            <li>wersja dokumentacji budynku,</li>
            <li>data i autor obliczeń,</li>
            <li>opis uproszczeń,</li>
            <li>zakres zastosowanej metody.</li>
          </ul>
        </article>
      </div>
      <p class="rk-norm-copy">Kolejny dokument powinien pokazywać przełożenie wyników na instalację. Zobacz, <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt ogrzewania podłogowego</a>, oraz szerszy przewodnik po <a href="https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/">projekcie instalacji grzewczej domu jednorodzinnego</a>.</p>
    </section>

    <section class="rk-norm-section rk-norm-final" id="rk-norm-summary">
      <span class="rk-norm-eyebrow">Jedna spójna ścieżka projektowa</span>
      <h2 class="rk-norm-section-title">Najpierw potrzeba mocy, potem emiter i hydraulika</h2>
      <p class="rk-norm-lead">PN-EN 12831 porządkuje projektowe obciążenie cieplne. Następnie obciążenie pomieszczeń trzeba odnieść do aktywnej powierzchni, konstrukcji podłogi i dopuszczalnej emisji, a dopiero potem zaprojektować pętle, przepływy i źródło.</p>
      <div class="rk-norm-cta">
        <div class="rk-norm-cta-title">Od strat budynku do nastaw rozdzielacza — wszystko w jednym projekcie</div>
        <p>Projekt obejmuje rozmieszczenie i rozstaw rur, podział na pętle, długości, przepływy, opory oraz dane potrzebne do uruchomienia instalacji. Dzięki temu wynik obciążenia cieplnego staje się wykonalnym układem, a nie tylko liczbą w raporcie.</p>
        <a class="rk-norm-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt podłogówki</a>
        <small class="rk-norm-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-norm-section" id="rk-norm-sources">
      <span class="rk-norm-eyebrow">Dokumenty i zakres odpowiedzialności</span>
      <h2 class="rk-norm-section-title">Źródła oficjalne</h2>
      <p class="rk-norm-lead">Linki prowadzą wyłącznie do oficjalnych kart norm, aktu prawnego i instytucjonalnego repozytorium naukowego. Pełna treść norm może wymagać zakupu lub dostępu licencyjnego.</p>
      <div class="rk-norm-source-grid">
        <article class="rk-norm-source-card">
          <a href="https://knowledge.bsigroup.com/products/energy-performance-of-buildings-method-for-calculation-of-the-design-heat-load-space-heating-load-module-m3-3" target="_blank" rel="nofollow noopener noreferrer">BS EN 12831-1:2017 — oficjalna karta BSI</a>
          <p>Oficjalny opis zakresu metody obliczania projektowego obciążenia cieplnego pomieszczeń i budynków.</p>
        </article>
        <article class="rk-norm-source-card">
          <a href="https://shop.standards.ie/en-ie/standards/pn-en-12831-1-2017-952807_saig_pkn_pkn_2238611/" target="_blank" rel="nofollow noopener noreferrer">PN-EN 12831-1:2017 — oficjalna karta NSAI</a>
          <p>Karta polskiego wydania normy w katalogu krajowej jednostki normalizacyjnej Irlandii.</p>
        </article>
        <article class="rk-norm-source-card">
          <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — określanie projektowej mocy</a>
          <p>Oficjalna karta części normy dotyczącej wyznaczania projektowej mocy wbudowanych wodnych systemów ogrzewania i chłodzenia powierzchniowego.</p>
        </article>
        <article class="rk-norm-source-card">
          <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — wymiarowanie i projektowanie</a>
          <p>Oficjalna karta części normy poświęconej wymiarowaniu i projektowaniu systemów powierzchniowych.</p>
        </article>
        <article class="rk-norm-source-card">
          <a href="https://eli.gov.pl/eli/DU/2002/1386/ogl" target="_blank" rel="nofollow noopener noreferrer">Ustawa o normalizacji — ELI</a>
          <p>Oficjalny tekst aktu prawnego, w tym zasada dobrowolności stosowania Polskich Norm oraz możliwość ich przywołania w przepisach.</p>
        </article>
        <article class="rk-norm-source-card">
          <a href="https://repo.pw.edu.pl/info/article/WUT7c194b7443134803a9d035c593eba8a2/Norma%2BPN-EN%2B12831-1:2017-08.%2BKluczowe%2Bzmiany%2Bw%2Bmetodyce%2Bobliczania%2Bobci%C4%85%C5%BCenia%2Bbudynk%C3%B3w%2B" target="_blank" rel="nofollow noopener noreferrer">Politechnika Warszawska — zmiany w PN-EN 12831-1</a>
          <p>Instytucjonalny rekord publikacji naukowej omawiającej kluczowe zmiany metody obliczania obciążenia budynków.</p>
        </article>
      </div>
      <div class="rk-norm-responsibility"><p><strong>Zakres poradnika:</strong> materiał wyjaśnia rolę projektowego obciążenia cieplnego i kolejność dalszych decyzji. Nie zastępuje pełnej treści norm, krajowych załączników, obliczeń dla konkretnego obiektu, projektu instalacji ani weryfikacji warunków rzeczywistych. W razie przywołania normy przez umowę, projekt lub przepis obowiązuje zakres właściwy dla danego przypadku.</p></div>
    </section>

    <section class="rk-norm-section rk-norm-section-soft" id="rk-norm-faq">
      <span class="rk-norm-eyebrow">Pytania inwestorów i wykonawców</span>
      <h2 class="rk-norm-section-title">FAQ — PN-EN 12831 i ogrzewanie podłogowe</h2>
      <div class="rk-norm-faq">
        <details><summary>Co oblicza PN-EN 12831-1?</summary><div class="rk-norm-faq-answer"><p>Norma opisuje metodę wyznaczania projektowego obciążenia cieplnego pomieszczeń i budynku, czyli mocy potrzebnej do utrzymania przyjętych warunków wewnętrznych w określonych warunkach projektowych.</p></div></details>
        <details><summary>Czy PN-EN 12831 i OZC oznaczają dokładnie to samo?</summary><div class="rk-norm-faq-answer"><p>Nie zawsze. Skrótu OZC używa się potocznie zarówno dla obliczeń mocy, jak i szerszych analiz energetycznych. W raporcie trzeba sprawdzić, czy chodzi o projektowe obciążenie w W lub kW, czy o energię w kWh.</p></div></details>
        <details><summary>Czy PN-EN 12831 oblicza roczne zużycie energii?</summary><div class="rk-norm-faq-answer"><p>Nie. Projektowe obciążenie cieplne jest mocą dla warunków obliczeniowych. Roczna energia zależy między innymi od pogody, czasu pracy, zysków, regulacji, sprawności źródła i zachowania użytkowników.</p></div></details>
        <details><summary>Czy ogrzewanie podłogowe zmniejsza straty ciepła budynku?</summary><div class="rk-norm-faq-answer"><p>Nie automatycznie. Straty zależą przede wszystkim od przegród, mostków, wentylacji, szczelności i różnicy temperatur. Podłogówka może umożliwić niższą temperaturę wody i poprawić warunki pracy źródła, ale to inny efekt.</p></div></details>
        <details><summary>Czy ten sam budynek ma inne obciążenie dla grzejników i podłogówki?</summary><div class="rk-norm-faq-answer"><p>Przy tych samych temperaturach, wentylacji i danych przegród projektowe straty budynku nie zmieniają się tylko z powodu rodzaju emitera. Różnić się mogą przyjęte warunki, sposób regulacji i sprawność całego systemu.</p></div></details>
        <details><summary>Czy PN-EN 12831 dobiera rozstaw rur?</summary><div class="rk-norm-faq-answer"><p>Nie. Norma dostarcza obciążenie pomieszczenia. Rozstaw dobiera się w następnym etapie z uwzględnieniem aktywnej powierzchni, konstrukcji podłogi, okładziny, parametrów wody i ograniczeń temperatury powierzchni.</p></div></details>
        <details><summary>Czy norma ustala temperaturę zasilania podłogówki?</summary><div class="rk-norm-faq-answer"><p>Nie. Temperatura zasilania wynika z wymaganego strumienia ciepła, rozstawu rur, temperatury powrotu, oporu warstw podłogi i parametrów całego systemu powierzchniowego.</p></div></details>
        <details><summary>Czy wynik PN-EN 12831 wystarcza do doboru pompy ciepła?</summary><div class="rk-norm-faq-answer"><p>Jest ważnym wejściem, ale nie kończy doboru. Trzeba porównać charakterystykę mocy urządzenia, punkt pracy, minimalną modulację, wymagane temperatury wody, strategię biwalentną oraz przygotowanie ciepłej wody.</p></div></details>
        <details><summary>Czym różni się obciążenie pomieszczenia od obciążenia budynku?</summary><div class="rk-norm-faq-answer"><p>Wynik pomieszczenia służy do oceny emitera w konkretnym pokoju. Wynik całego budynku wspiera dobór źródła i układu, ale nie zastępuje rozdziału mocy między pomieszczenia.</p></div></details>
        <details><summary>Jak przeliczyć obciążenie w W na W/m²?</summary><div class="rk-norm-faq-answer"><p>Obciążenie pomieszczenia należy podzielić przez rzeczywistą aktywną powierzchnię grzejną. Dzielenie przez powierzchnię brutto z polami wyłączonymi zaniża zadanie stawiane podłodze.</p></div></details>
        <details><summary>Dlaczego liczy się powierzchnia aktywna, a nie całe pomieszczenie?</summary><div class="rk-norm-faq-answer"><p>Moc oddają tylko pola pracujące jako emiter. Stała zabudowa, wyłączenia i brak możliwości ułożenia rur zmniejszają powierzchnię, przez co każdy aktywny metr kwadratowy musi oddać więcej ciepła.</p></div></details>
        <details><summary>Jak rekuperacja wpływa na obciążenie cieplne?</summary><div class="rk-norm-faq-answer"><p>Odzysk ciepła może ograniczyć moc potrzebną do ogrzania powietrza wentylacyjnego. Wymaga jednak prawidłowych strumieni, bilansu instalacji i założeń zgodnych z metodą, a nie wyłącznie sprawności z materiału handlowego.</p></div></details>
        <details><summary>Czy w obliczeniu trzeba uwzględniać mostki cieplne?</summary><div class="rk-norm-faq-answer"><p>Tak, zgodnie z zakresem przyjętej metody. Pominięcie mostków może zaniżyć straty, zwłaszcza przy licznych połączeniach przegród, ościeżach, wieńcach, balkonach i cokołach.</p></div></details>
        <details><summary>Jaką temperaturę zewnętrzną przyjąć?</summary><div class="rk-norm-faq-answer"><p>Należy użyć danych projektowych właściwych dla lokalizacji i obowiązującej metody. Nie powinno się wybierać wartości na podstawie pojedynczego rekordu pogodowego ani średniej temperatury sezonu.</p></div></details>
        <details><summary>Czy stosowanie Polskich Norm jest obowiązkowe?</summary><div class="rk-norm-faq-answer"><p>Ustawa o normalizacji wskazuje dobrowolność stosowania Polskich Norm, ale norma może stać się wiążąca przez przepis, umowę, wymagania projektu lub zakres zlecenia. Każdy przypadek trzeba ocenić w jego kontekście.</p></div></details>
        <details><summary>Co inwestor powinien otrzymać po obliczeniach?</summary><div class="rk-norm-faq-answer"><p>Co najmniej jawne dane wejściowe, temperatury, parametry przegród i wentylacji, wyniki dla pomieszczeń, zestawienie budynku oraz opis uproszczeń. Projekt podłogówki powinien dodatkowo zawierać rozstawy, pętle, przepływy i nastawy.</p></div></details>
      </div>
    </section>

    <section class="rk-norm-author" id="rk-norm-author">
      <span class="rk-norm-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-norm-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-norm-author-layout">
        <aside class="rk-norm-author-side">
          <div class="rk-norm-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-norm-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-norm-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-norm-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-norm-author-main">
          <div class="rk-norm-author-quote">„Moim zdaniem największym błędem jest traktowanie PN-EN 12831 jak kalkulatora podłogówki. Norma mówi, ile mocy potrzebuje pomieszczenie w warunkach projektowych; dopiero kolejny etap sprawdza, czy podłoga może tę moc bezpiecznie dostarczyć.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W pracy projektowej łączy model strat budynku z aktywną powierzchnią podłogi, parametrami systemu i rzeczywistą hydrauliką pętli.</p>
          <p>Przy weryfikacji obliczeń sprawdza nie tylko końcowy wynik w kW, lecz także rozkład mocy między pomieszczenia, dane przegród, wentylację, temperatury, pola wyłączone, opór okładzin i warunki pracy źródła ciepła.</p>
          <p>Publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-norm-author-facts">
            <div class="rk-norm-author-fact"><strong>Zakres</strong>obciążenia cieplne, podłogówka i hydraulika instalacji</div>
            <div class="rk-norm-author-fact"><strong>Metoda pracy</strong>jawne założenia, wyniki pomieszczeń i weryfikacja wykonalności</div>
            <div class="rk-norm-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 17 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "PN-EN 12831",
        "projektowe obciążenie cieplne",
        "ogrzewanie podłogowe",
        "hydraulika instalacji grzewczych",
        "projektowanie HVAC"
      ],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-b8b906199/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Projekt-ogrzewania-podlogowego-a-norma-PN-EN-12831-–-nierozerwalny-zwiazek.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Projekt-ogrzewania-podlogowego-a-norma-PN-EN-12831-–-nierozerwalny-zwiazek.webp",
      "width": 945,
      "height": 945,
      "caption": "PN-EN 12831 a projekt ogrzewania podłogowego"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#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": "PN-EN 12831 a ogrzewanie podłogowe", "item": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/",
      "name": "PN-EN 12831 a ogrzewanie podłogowe – od obciążenia cieplnego do projektu",
      "description": "Sprawdź, co oblicza PN-EN 12831, czym różnią się W, W/m² i kWh oraz jak wynik dla pomieszczenia przełożyć na projekt ogrzewania podłogowego.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#primaryimage" },
      "datePublished": "2025-12-31T08:26:13+00:00",
      "dateModified": "2026-09-17T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#webpage" },
      "headline": "PN-EN 12831 a ogrzewanie podłogowe – od obciążenia cieplnego do projektu",
      "description": "Przewodnik po projektowym obciążeniu cieplnym: zakres PN-EN 12831, jednostki, dane wejściowe i przełożenie wyników na projekt ogrzewania podłogowego.",
      "image": { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2025-12-31T08:26:13+00:00",
      "dateModified": "2026-09-17T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": [
        "PN-EN 12831",
        "projektowe obciążenie cieplne",
        "ogrzewanie podłogowe",
        "straty ciepła",
        "moc powierzchniowa"
      ],
      "keywords": "PN-EN 12831 ogrzewanie podłogowe, obciążenie cieplne, OZC, W/m², straty ciepła, projekt podłogówki",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#learning-resource" },
        { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#item-list" },
        { "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#faq-schema" }
      ]
    },
    {
      "@type": "LearningResource",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#learning-resource",
      "name": "Od danych budynku do projektu ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#rk-norm-process",
      "learningResourceType": "interaktywna mapa edukacyjna",
      "educationalLevel": "inwestor i wykonawca",
      "teaches": "Rozróżnienie zakresu PN-EN 12831, wymiarowania systemu powierzchniowego i hydrauliki pętli.",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL"
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#howto",
      "name": "Jak przejść od obciążenia cieplnego do projektu podłogówki",
      "description": "Sześć etapów od danych budynku do sprawdzenia emisji i hydrauliki ogrzewania podłogowego.",
      "totalTime": "PT20M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Zbierz dane wejściowe", "text": "Zbierz geometrię, parametry przegród, temperatury, lokalizację i dane wentylacji." },
        { "@type": "HowToStep", "position": 2, "name": "Oblicz przenikanie", "text": "Określ obciążenie związane z przegrodami, mostkami i warunkami po ich drugiej stronie." },
        { "@type": "HowToStep", "position": 3, "name": "Oblicz wentylację", "text": "Ustal strumienie powietrza, odzysk ciepła i sposób uwzględnienia infiltracji." },
        { "@type": "HowToStep", "position": 4, "name": "Wyznacz wynik w W", "text": "Otrzymaj projektowe obciążenie dla każdego pomieszczenia i zestawienie budynku." },
        { "@type": "HowToStep", "position": 5, "name": "Oblicz aktywne W/m²", "text": "Podziel moc pomieszczenia przez rzeczywistą powierzchnię aktywną podłogi." },
        { "@type": "HowToStep", "position": 6, "name": "Zaprojektuj emisję i hydraulikę", "text": "Dobierz rozstaw, parametry wody, pętle, przepływy i opory z uwzględnieniem konstrukcji podłogi." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#item-list",
      "name": "Najczęstsze błędy w interpretacji PN-EN 12831",
      "numberOfItems": 9,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Wskaźnik W/m² zamiast modelu pomieszczeń" },
        { "@type": "ListItem", "position": 2, "name": "Zamiana mocy w W na energię w kWh" },
        { "@type": "ListItem", "position": 3, "name": "Przypisywanie podłogówce redukcji strat budynku" },
        { "@type": "ListItem", "position": 4, "name": "Użycie powierzchni brutto zamiast aktywnej" },
        { "@type": "ListItem", "position": 5, "name": "Brak jawnych danych wejściowych" },
        { "@type": "ListItem", "position": 6, "name": "Dobór źródła tylko z jednej wartości kW" },
        { "@type": "ListItem", "position": 7, "name": "Pominięcie wymiarowania systemu powierzchniowego" },
        { "@type": "ListItem", "position": 8, "name": "Dobór rozstawu z uniwersalnej tabeli" },
        { "@type": "ListItem", "position": 9, "name": "Przypisanie decyzji o strefie brzegowej normie strat" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Co oblicza PN-EN 12831-1?", "acceptedAnswer": { "@type": "Answer", "text": "Norma opisuje metodę wyznaczania projektowego obciążenia cieplnego pomieszczeń i budynku, czyli mocy potrzebnej do utrzymania przyjętych warunków wewnętrznych w określonych warunkach projektowych." } },
        { "@type": "Question", "name": "Czy PN-EN 12831 i OZC oznaczają dokładnie to samo?", "acceptedAnswer": { "@type": "Answer", "text": "Nie zawsze. Skrótu OZC używa się potocznie zarówno dla obliczeń mocy, jak i szerszych analiz energetycznych. W raporcie trzeba sprawdzić, czy chodzi o projektowe obciążenie w W lub kW, czy o energię w kWh." } },
        { "@type": "Question", "name": "Czy PN-EN 12831 oblicza roczne zużycie energii?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Projektowe obciążenie cieplne jest mocą dla warunków obliczeniowych. Roczna energia zależy między innymi od pogody, czasu pracy, zysków, regulacji, sprawności źródła i zachowania użytkowników." } },
        { "@type": "Question", "name": "Czy ogrzewanie podłogowe zmniejsza straty ciepła budynku?", "acceptedAnswer": { "@type": "Answer", "text": "Nie automatycznie. Straty zależą przede wszystkim od przegród, mostków, wentylacji, szczelności i różnicy temperatur. Podłogówka może umożliwić niższą temperaturę wody i poprawić warunki pracy źródła, ale to inny efekt." } },
        { "@type": "Question", "name": "Czy ten sam budynek ma inne obciążenie dla grzejników i podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Przy tych samych temperaturach, wentylacji i danych przegród projektowe straty budynku nie zmieniają się tylko z powodu rodzaju emitera. Różnić się mogą przyjęte warunki, sposób regulacji i sprawność całego systemu." } },
        { "@type": "Question", "name": "Czy PN-EN 12831 dobiera rozstaw rur?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Norma dostarcza obciążenie pomieszczenia. Rozstaw dobiera się w następnym etapie z uwzględnieniem aktywnej powierzchni, konstrukcji podłogi, okładziny, parametrów wody i ograniczeń temperatury powierzchni." } },
        { "@type": "Question", "name": "Czy norma ustala temperaturę zasilania podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Temperatura zasilania wynika z wymaganego strumienia ciepła, rozstawu rur, temperatury powrotu, oporu warstw podłogi i parametrów całego systemu powierzchniowego." } },
        { "@type": "Question", "name": "Czy wynik PN-EN 12831 wystarcza do doboru pompy ciepła?", "acceptedAnswer": { "@type": "Answer", "text": "Jest ważnym wejściem, ale nie kończy doboru. Trzeba porównać charakterystykę mocy urządzenia, punkt pracy, minimalną modulację, wymagane temperatury wody, strategię biwalentną oraz przygotowanie ciepłej wody." } },
        { "@type": "Question", "name": "Czym różni się obciążenie pomieszczenia od obciążenia budynku?", "acceptedAnswer": { "@type": "Answer", "text": "Wynik pomieszczenia służy do oceny emitera w konkretnym pokoju. Wynik całego budynku wspiera dobór źródła i układu, ale nie zastępuje rozdziału mocy między pomieszczenia." } },
        { "@type": "Question", "name": "Jak przeliczyć obciążenie w W na W/m²?", "acceptedAnswer": { "@type": "Answer", "text": "Obciążenie pomieszczenia należy podzielić przez rzeczywistą aktywną powierzchnię grzejną. Dzielenie przez powierzchnię brutto z polami wyłączonymi zaniża zadanie stawiane podłodze." } },
        { "@type": "Question", "name": "Dlaczego liczy się powierzchnia aktywna, a nie całe pomieszczenie?", "acceptedAnswer": { "@type": "Answer", "text": "Moc oddają tylko pola pracujące jako emiter. Stała zabudowa, wyłączenia i brak możliwości ułożenia rur zmniejszają powierzchnię, przez co każdy aktywny metr kwadratowy musi oddać więcej ciepła." } },
        { "@type": "Question", "name": "Jak rekuperacja wpływa na obciążenie cieplne?", "acceptedAnswer": { "@type": "Answer", "text": "Odzysk ciepła może ograniczyć moc potrzebną do ogrzania powietrza wentylacyjnego. Wymaga jednak prawidłowych strumieni, bilansu instalacji i założeń zgodnych z metodą, a nie wyłącznie sprawności z materiału handlowego." } },
        { "@type": "Question", "name": "Czy w obliczeniu trzeba uwzględniać mostki cieplne?", "acceptedAnswer": { "@type": "Answer", "text": "Tak, zgodnie z zakresem przyjętej metody. Pominięcie mostków może zaniżyć straty, zwłaszcza przy licznych połączeniach przegród, ościeżach, wieńcach, balkonach i cokołach." } },
        { "@type": "Question", "name": "Jaką temperaturę zewnętrzną przyjąć?", "acceptedAnswer": { "@type": "Answer", "text": "Należy użyć danych projektowych właściwych dla lokalizacji i obowiązującej metody. Nie powinno się wybierać wartości na podstawie pojedynczego rekordu pogodowego ani średniej temperatury sezonu." } },
        { "@type": "Question", "name": "Czy stosowanie Polskich Norm jest obowiązkowe?", "acceptedAnswer": { "@type": "Answer", "text": "Ustawa o normalizacji wskazuje dobrowolność stosowania Polskich Norm, ale norma może stać się wiążąca przez przepis, umowę, wymagania projektu lub zakres zlecenia. Każdy przypadek trzeba ocenić w jego kontekście." } },
        { "@type": "Question", "name": "Co inwestor powinien otrzymać po obliczeniach?", "acceptedAnswer": { "@type": "Answer", "text": "Co najmniej jawne dane wejściowe, temperatury, parametry przegród i wentylacji, wyniki dla pomieszczeń, zestawienie budynku oraz opis uproszczeń. Projekt podłogówki powinien dodatkowo zawierać rozstawy, pętle, przepływy i nastawy." } }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projekt ogrzewania podłogowego",
      "description": "Projekt rozmieszczenia rur, pętli, przepływów i hydrauliki ogrzewania podłogowego na podstawie danych budynku i obciążenia cieplnego."
    }
  ]
}
</script>

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

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

  var stages = {
    inputs: {
      label: "Etap 1 · PN-EN 12831",
      title: "Dane budynku i warunki projektowe",
      summary: "Geometria, przegrody, temperatury, lokalizacja i wentylacja budują model. Na tym etapie nie wybiera się jeszcze rozstawu rur.",
      input: "Rzuty, przekroje, warstwy przegród, stolarka, strefy, wentylacja i lokalizacja.",
      output: "Spójny model pomieszczeń i warunków brzegowych.",
      error: "Wartości typowe zamiast danych konkretnego budynku.",
      boundary: "Ten etap należy do przygotowania obliczenia PN-EN 12831."
    },
    transmission: {
      label: "Etap 2 · PN-EN 12831",
      title: "Obciążenie przez przenikanie",
      summary: "Model opisuje przepływ ciepła przez przegrody, do gruntu i sąsiednich stref oraz udział mostków cieplnych.",
      input: "Współczynniki przegród, powierzchnie, różnice temperatur, geometria i mostki.",
      output: "Składnik obciążenia przez przenikanie dla pomieszczeń.",
      error: "Pominięcie mostków albo potraktowanie każdej przegrody jak ściany zewnętrznej.",
      boundary: "Ten etap należy do obliczenia projektowego obciążenia cieplnego."
    },
    ventilation: {
      label: "Etap 3 · PN-EN 12831",
      title: "Obciążenie wentylacyjne",
      summary: "Ustalane są strumienie powietrza, sposób wentylacji, odzysk ciepła i przyjęcia dotyczące infiltracji.",
      input: "Strumienie nawiewu i wywiewu, odzysk, szczelność oraz warunki pracy systemu.",
      output: "Składnik mocy potrzebnej do ogrzania wymienianego powietrza.",
      error: "Użycie sprawności katalogowej rekuperatora bez bilansu strumieni.",
      boundary: "Ten etap należy do obliczenia projektowego obciążenia cieplnego."
    },
    watts: {
      label: "Etap 4 · wynik PN-EN 12831",
      title: "Moc dla pomieszczeń i budynku",
      summary: "Powstają wyniki w W dla każdego pokoju oraz zestawienie całego budynku. To odpowiedź na pytanie, ile mocy trzeba dostarczyć.",
      input: "Składniki przenikania, wentylacji i pozostałe elementy przewidziane w metodzie.",
      output: "Projektowe obciążenie pomieszczeń w W i budynku w kW.",
      error: "Traktowanie wyniku mocy jak rocznego zużycia energii.",
      boundary: "Tutaj kończy się zasadniczy wynik obciążenia. Nadal nie znamy rozstawu ani przepływu pętli."
    },
    surface: {
      label: "Etap 5 · łącznik projektowy",
      title: "Wymagana moc aktywnej podłogi",
      summary: "Obciążenie pokoju jest dzielone przez faktyczną powierzchnię grzejną po odjęciu pól wyłączonych.",
      input: "Wynik pokoju w W oraz rysunek powierzchni aktywnej w m².",
      output: "Wymagana średnia moc powierzchniowa w W/m².",
      error: "Dzielenie przez powierzchnię brutto zamiast aktywnej.",
      boundary: "To most między obliczeniem strat a wymiarowaniem emitera powierzchniowego."
    },
    floor: {
      label: "Etap 6 · PN-EN 1264 / ISO 11855 i hydraulika",
      title: "Emisja podłogi, pętle i przepływy",
      summary: "Sprawdzana jest możliwa moc podłogi, a następnie dobierane są rozstawy, parametry wody, pętle, przepływy i opory.",
      input: "Wymagane W/m², opór okładziny, konstrukcja, ograniczenia temperatury i dane systemu.",
      output: "Wykonalny układ rur z parametrami hydraulicznymi i nastawami.",
      error: "Dobór rozstawu z uniwersalnej tabeli bez sprawdzenia aktywnej powierzchni i hydrauliki.",
      boundary: "Ten etap nie jest wynikiem PN-EN 12831; należy do projektu systemu powierzchniowego."
    }
  };

  var buttons = guide.querySelectorAll("[data-rk-stage]");
  var label = document.getElementById("rk-norm-stage-label");
  var title = document.getElementById("rk-norm-stage-title");
  var summary = document.getElementById("rk-norm-stage-summary");
  var input = document.getElementById("rk-norm-stage-input");
  var output = document.getElementById("rk-norm-stage-output");
  var error = document.getElementById("rk-norm-stage-error");
  var boundary = document.getElementById("rk-norm-stage-boundary");

  function showStage(key) {
    var stage = stages[key];
    if (!stage) {
      return;
    }
    label.textContent = stage.label;
    title.textContent = stage.title;
    summary.textContent = stage.summary;
    input.textContent = stage.input;
    output.textContent = stage.output;
    error.textContent = stage.error;
    boundary.textContent = "";
    var boundaryStrong = document.createElement("strong");
    boundaryStrong.textContent = "Granica odpowiedzialności: ";
    boundary.appendChild(boundaryStrong);
    boundary.appendChild(document.createTextNode(stage.boundary));

    buttons.forEach(function (button) {
      var selected = button.getAttribute("data-rk-stage") === key;
      button.setAttribute("aria-selected", selected ? "true" : "false");
    });
  }

  buttons.forEach(function (button) {
    button.addEventListener("click", function () {
      showStage(button.getAttribute("data-rk-stage"));
    });
  });

  showStage("inputs");
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831 a ogrzewanie podłogowe – od obciążenia cieplnego do projektu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
