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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa rekuperacja - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/rekuperacja/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Punkt rosy przy chłodzeniu podłogowym – kalkulator i zabezpieczenia.</title>
		<link>https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 28 Feb 2026 09:58:03 +0000</pubDate>
				<category><![CDATA[Chłodzenie płaszczyznowe]]></category>
		<category><![CDATA[Fizyka budowli]]></category>
		<category><![CDATA[Instalacje domowe]]></category>
		<category><![CDATA[Instalacje wodne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[analiza techniczna]]></category>
		<category><![CDATA[automatyka instalacji]]></category>
		<category><![CDATA[chłodzenie domu]]></category>
		<category><![CDATA[chłodzenie podłogowe]]></category>
		<category><![CDATA[dew point control]]></category>
		<category><![CDATA[fizyka budowli]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[kondensacja]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[punkt rosy]]></category>
		<category><![CDATA[rekuperacja]]></category>
		<category><![CDATA[temperatura podłogi]]></category>
		<category><![CDATA[wilgotność powietrza]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3528</guid>

					<description><![CDATA[<p>Chłodzenie podłogówką brzmi jak idealne rozwiązanie na upalne lato – cicho, bez przeciągów i bez widocznych urządzeń. Jednak kluczowym parametrem, który decyduje o bezpieczeństwie całego systemu, jest punkt rosy w ogrzewaniu podłogowym. To on wyznacza granicę między komfortowym chłodem a ryzykiem kondensacji, mokrej posadzki i rozwoju pleśni. W artykule wyjaśniam, jak kontrolować wilgotność, jaką temperaturę podłogi uznać za bezpieczną oraz dlaczego automatyka antykondensacyjna to nie dodatek, lecz konieczność.</p>
<p>Artykuł <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 – kalkulator i zabezpieczenia.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-dew-guide {
    --rk-dp-dark: #0d2738;
    --rk-dp-navy: #143c50;
    --rk-dp-navy-2: #1b5262;
    --rk-dp-blue: #078fbe;
    --rk-dp-cyan: #2bc8d9;
    --rk-dp-cyan-soft: #e7fafd;
    --rk-dp-orange: #ff6946;
    --rk-dp-orange-soft: #fff0ea;
    --rk-dp-green: #16836b;
    --rk-dp-green-soft: #eaf8f3;
    --rk-dp-yellow: #b97908;
    --rk-dp-yellow-soft: #fff7dc;
    --rk-dp-red: #ca463d;
    --rk-dp-red-soft: #fff0ee;
    --rk-dp-purple: #6657c8;
    --rk-dp-purple-soft: #f1efff;
    --rk-dp-ink: #132a3b;
    --rk-dp-text: #455d6d;
    --rk-dp-muted: #6b7f8d;
    --rk-dp-line: #d2e2e9;
    --rk-dp-soft: #f3f8fa;
    --rk-dp-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-dp-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.72;
  }
  #rk-dew-guide,
  #rk-dew-guide * { box-sizing: border-box; }
  #rk-dew-guide img,
  #rk-dew-guide svg,
  #rk-dew-guide canvas { max-width: 100%; }
  #rk-dew-guide button,
  #rk-dew-guide input,
  #rk-dew-guide select,
  #rk-dew-guide label,
  #rk-dew-guide summary,
  #rk-dew-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-dew-guide a {
    color: var(--rk-dp-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-dew-guide a:hover,
  #rk-dew-guide a:focus-visible { color: var(--rk-dp-red); }
  #rk-dew-guide p,
  #rk-dew-guide ul,
  #rk-dew-guide ol { margin-top: 0; margin-bottom: 1.05em; }
  #rk-dew-guide h2,
  #rk-dew-guide h3,
  #rk-dew-guide h4 {
    margin-top: 0;
    color: var(--rk-dp-dark);
    font-weight: 930;
    letter-spacing: -.035em;
    line-height: 1.14;
    overflow-wrap: anywhere;
  }
  #rk-dew-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.72rem); }
  #rk-dew-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.3vw, 1.46rem); }
  #rk-dew-guide h4 { margin-bottom: 8px; font-size: 1rem; }
  #rk-dew-guide strong { font-weight: 860; }
  #rk-dew-guide [hidden] { display: none !important; }
  #rk-dew-guide .rk-dp-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-dew-guide .rk-dp-shell {
    overflow: hidden;
    border: 1px solid var(--rk-dp-line);
    border-radius: 27px;
    background: var(--rk-dp-white);
    box-shadow: 0 24px 72px rgba(13, 39, 56, .11);
  }
  #rk-dew-guide .rk-dp-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-dp-white);
    background:
      radial-gradient(circle at 92% 8%, rgba(43, 200, 217, .29), transparent 29%),
      radial-gradient(circle at 8% 105%, rgba(255, 105, 70, .23), transparent 32%),
      linear-gradient(135deg, #0c2434 0%, #123d51 55%, #145f66 100%);
  }
  #rk-dew-guide .rk-dp-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-dew-guide .rk-dp-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 16px;
    color: #75effd;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .095em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-dew-guide .rk-dp-kicker::before {
    width: 9px;
    height: 9px;
    flex: 0 0 9px;
    border-radius: 50%;
    background: var(--rk-dp-orange);
    box-shadow: 0 0 0 6px rgba(255, 105, 70, .14);
    content: "";
  }
  #rk-dew-guide .rk-dp-hero-title {
    position: relative;
    z-index: 1;
    max-width: 1020px;
    margin: 0 0 21px;
    color: var(--rk-dp-white);
    font-size: clamp(2.2rem, 7.2vw, 5.05rem);
    font-weight: 950;
    letter-spacing: -.065em;
    line-height: .99;
  }
  #rk-dew-guide .rk-dp-hero-title span { color: #64e7f4; }
  #rk-dew-guide .rk-dp-lead {
    position: relative;
    z-index: 1;
    max-width: 965px;
    margin-bottom: 24px;
    color: #e1f1f5;
    font-size: clamp(1rem, 2.2vw, 1.3rem);
    line-height: 1.56;
  }
  #rk-dew-guide .rk-dp-tags,
  #rk-dew-guide .rk-dp-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px 12px;
  }
  #rk-dew-guide .rk-dp-tag {
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 999px;
    color: var(--rk-dp-white);
    background: rgba(255, 255, 255, .075);
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.2;
  }
  #rk-dew-guide .rk-dp-byline {
    margin-top: 27px;
    color: #c9e0e6;
    font-size: .68rem;
    font-weight: 720;
  }
  #rk-dew-guide .rk-dp-byline strong { color: var(--rk-dp-white); }
  #rk-dew-guide .rk-dp-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 29px;
  }
  #rk-dew-guide .rk-dp-hero-metric {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 15px;
    background: rgba(255, 255, 255, .07);
  }
  #rk-dew-guide .rk-dp-hero-metric b {
    display: block;
    margin-bottom: 5px;
    color: var(--rk-dp-white);
    font-size: .74rem;
  }
  #rk-dew-guide .rk-dp-hero-metric span {
    display: block;
    color: #c9e1e7;
    font-size: .64rem;
    line-height: 1.48;
  }

  #rk-dew-guide .rk-dp-nav {
    padding: 18px clamp(20px, 4vw, 46px);
    border-bottom: 1px solid var(--rk-dp-line);
    background: var(--rk-dp-white);
  }
  #rk-dew-guide .rk-dp-nav-label {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-dp-dark);
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-dew-guide .rk-dp-nav-track {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    width: 100%;
    min-width: 0;
    white-space: normal;
  }
  #rk-dew-guide .rk-dp-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    max-width: 100%;
    padding: 8px 12px;
    border-radius: 999px;
    color: var(--rk-dp-dark);
    background: #eef5f7;
    font-size: .63rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
    white-space: normal;
  }
  #rk-dew-guide .rk-dp-nav a:hover,
  #rk-dew-guide .rk-dp-nav a:focus-visible { color: var(--rk-dp-white); background: var(--rk-dp-blue); }

  #rk-dew-guide .rk-dp-content { padding: 0 clamp(20px, 5.4vw, 64px) 64px; }
  #rk-dew-guide .rk-dp-section {
    scroll-margin-top: 28px;
    padding: clamp(46px, 7vw, 74px) 0;
    border-bottom: 1px solid var(--rk-dp-line);
  }
  #rk-dew-guide .rk-dp-section:last-child { border-bottom: 0; }
  #rk-dew-guide .rk-dp-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-dp-orange);
    font-size: .67rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-dew-guide .rk-dp-intro { max-width: 930px; color: var(--rk-dp-text); font-size: 1.02rem; }
  #rk-dew-guide .rk-dp-intro-lg { max-width: 980px; color: var(--rk-dp-text); font-size: 1.13rem; }
  #rk-dew-guide .rk-dp-grid-2,
  #rk-dew-guide .rk-dp-grid-3,
  #rk-dew-guide .rk-dp-grid-4 {
    display: grid;
    gap: 16px;
    margin-top: 24px;
  }
  #rk-dew-guide .rk-dp-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-dew-guide .rk-dp-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-dew-guide .rk-dp-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-dew-guide .rk-dp-card {
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-dp-line);
    border-radius: 17px;
    background: var(--rk-dp-white);
  }
  #rk-dew-guide .rk-dp-card--soft { background: var(--rk-dp-soft); }
  #rk-dew-guide .rk-dp-card--cyan { border-color: #bee6ed; background: var(--rk-dp-cyan-soft); }
  #rk-dew-guide .rk-dp-card--orange { border-color: #f5cabc; background: var(--rk-dp-orange-soft); }
  #rk-dew-guide .rk-dp-card--green { border-color: #bfe4d8; background: var(--rk-dp-green-soft); }
  #rk-dew-guide .rk-dp-card--yellow { border-color: #eddca1; background: var(--rk-dp-yellow-soft); }
  #rk-dew-guide .rk-dp-card h3,
  #rk-dew-guide .rk-dp-card h4 { margin-bottom: 10px; }
  #rk-dew-guide .rk-dp-card p:last-child,
  #rk-dew-guide .rk-dp-card ul:last-child { margin-bottom: 0; }
  #rk-dew-guide .rk-dp-card p,
  #rk-dew-guide .rk-dp-card li { color: var(--rk-dp-text); }
  #rk-dew-guide .rk-dp-number-row { display: flex; align-items: flex-start; gap: 16px; }
  #rk-dew-guide .rk-dp-number {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    min-width: 48px;
    flex: 0 0 48px;
    padding: 0;
    margin: 0;
    border-radius: 50%;
    color: var(--rk-dp-dark);
    background: #d5f2f6;
    font-size: .82rem;
    font-weight: 950;
    line-height: 1;
    text-align: center;
  }
  #rk-dew-guide .rk-dp-number--orange { background: #ffe0d5; }
  #rk-dew-guide .rk-dp-number--green { background: #d9f1e8; }
  #rk-dew-guide .rk-dp-number--purple { background: #e6e1ff; }
  #rk-dew-guide .rk-dp-number--yellow { background: #ffedb8; }
  #rk-dew-guide .rk-dp-number-copy { min-width: 0; }
  #rk-dew-guide .rk-dp-number-copy h3 { margin: 2px 0 8px; font-size: 1.08rem; }
  #rk-dew-guide .rk-dp-number-copy p { margin: 0; color: var(--rk-dp-text); }

  #rk-dew-guide .rk-dp-answer {
    display: grid;
    grid-template-columns: 1.2fr .8fr;
    gap: 18px;
    margin-top: 25px;
    padding: clamp(24px, 4vw, 37px);
    border-radius: 20px;
    color: var(--rk-dp-white);
    background: linear-gradient(135deg, var(--rk-dp-dark), #155a64);
  }
  #rk-dew-guide .rk-dp-answer h3 { color: var(--rk-dp-white); font-size: clamp(1.3rem, 2.8vw, 2rem); }
  #rk-dew-guide .rk-dp-answer p { margin-bottom: 0; color: #d6e9ee; }
  #rk-dew-guide .rk-dp-answer-rule {
    align-self: stretch;
    display: grid;
    place-items: center;
    padding: 20px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 16px;
    background: rgba(255, 255, 255, .08);
    color: var(--rk-dp-white);
    text-align: center;
  }
  #rk-dew-guide .rk-dp-answer-rule b { display: block; color: #79edfa; font-size: 1.42rem; line-height: 1.25; }
  #rk-dew-guide .rk-dp-answer-rule span { display: block; margin-top: 7px; color: #cfe4ea; font-size: .68rem; }

  #rk-dew-guide .rk-dp-note,
  #rk-dew-guide .rk-dp-warning,
  #rk-dew-guide .rk-dp-important {
    margin-top: 22px;
    padding: 19px 21px;
    border-radius: 15px;
    color: var(--rk-dp-text);
  }
  #rk-dew-guide .rk-dp-note { border: 1px solid #c9e5eb; border-left: 6px solid var(--rk-dp-cyan); background: #f0fbfd; }
  #rk-dew-guide .rk-dp-warning { border: 1px solid #ecd99a; border-left: 6px solid #e1a01b; background: var(--rk-dp-yellow-soft); }
  #rk-dew-guide .rk-dp-important { border: 1px solid #f1c2b7; border-left: 6px solid var(--rk-dp-orange); background: var(--rk-dp-orange-soft); }
  #rk-dew-guide .rk-dp-note p:last-child,
  #rk-dew-guide .rk-dp-warning p:last-child,
  #rk-dew-guide .rk-dp-important p:last-child { margin-bottom: 0; }
  #rk-dew-guide .rk-dp-formula {
    margin: 25px 0;
    padding: 24px;
    border: 1px solid #badfe7;
    border-radius: 17px;
    background: linear-gradient(135deg, #edfafd, #f8fcfd);
    text-align: center;
  }
  #rk-dew-guide .rk-dp-formula-main {
    color: var(--rk-dp-dark);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(.9rem, 2.4vw, 1.18rem);
    font-weight: 900;
    overflow-wrap: anywhere;
  }
  #rk-dew-guide .rk-dp-formula small { display: block; margin-top: 9px; color: var(--rk-dp-muted); font-size: .67rem; }

  #rk-dew-guide .rk-dp-table-wrap {
    width: 100%;
    margin-top: 24px;
    overflow: hidden;
    border: 1px solid var(--rk-dp-line);
    border-radius: 18px;
  }
  #rk-dew-guide table { width: 100%; border-collapse: collapse; table-layout: fixed; }
  #rk-dew-guide th,
  #rk-dew-guide td { padding: 16px 17px; border-right: 1px solid var(--rk-dp-line); border-bottom: 1px solid var(--rk-dp-line); vertical-align: top; overflow-wrap: anywhere; }
  #rk-dew-guide th:last-child,
  #rk-dew-guide td:last-child { border-right: 0; }
  #rk-dew-guide tbody tr:last-child td { border-bottom: 0; }
  #rk-dew-guide th { color: var(--rk-dp-white); background: var(--rk-dp-navy); font-size: .72rem; font-weight: 900; text-align: left; }
  #rk-dew-guide td { color: var(--rk-dp-text); background: var(--rk-dp-white); font-size: .83rem; }
  #rk-dew-guide tbody tr:nth-child(even) td { background: #f7fafb; }

  #rk-dew-guide .rk-dp-tool {
    margin-top: 28px;
    overflow: hidden;
    border: 1px solid #bcdce5;
    border-radius: 23px;
    background: var(--rk-dp-white);
    box-shadow: 0 18px 45px rgba(13, 39, 56, .09);
  }
  #rk-dew-guide .rk-dp-tool-head {
    padding: clamp(24px, 4vw, 38px);
    color: var(--rk-dp-white);
    background: linear-gradient(135deg, var(--rk-dp-dark), #155e68);
  }
  #rk-dew-guide .rk-dp-tool-head .rk-dp-eyebrow { color: #76eafa; }
  #rk-dew-guide .rk-dp-tool-head h3 { margin-bottom: 10px; color: var(--rk-dp-white); font-size: clamp(1.45rem, 3.7vw, 2.45rem); }
  #rk-dew-guide .rk-dp-tool-head p { max-width: 940px; margin: 0; color: #d3e8ed; }
  #rk-dew-guide .rk-dp-tool-body { padding: clamp(20px, 4vw, 38px); }
  #rk-dew-guide .rk-dp-presets { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 23px; }
  #rk-dew-guide .rk-dp-preset,
  #rk-dew-guide .rk-dp-action,
  #rk-dew-guide .rk-dp-chart-temp,
  #rk-dew-guide .rk-dp-auto-card {
    appearance: none;
    border: 0;
    cursor: pointer;
  }
  #rk-dew-guide .rk-dp-preset {
    min-height: 42px;
    padding: 9px 14px;
    border: 1px solid #bfd9e3;
    border-radius: 999px;
    color: var(--rk-dp-dark);
    background: var(--rk-dp-white);
    font-size: .67rem;
    font-weight: 900;
  }
  #rk-dew-guide .rk-dp-preset:hover,
  #rk-dew-guide .rk-dp-preset:focus-visible,
  #rk-dew-guide .rk-dp-preset.is-active { color: var(--rk-dp-white); border-color: var(--rk-dp-blue); background: var(--rk-dp-blue); }
  #rk-dew-guide .rk-dp-input-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
  #rk-dew-guide .rk-dp-field { min-width: 0; }
  #rk-dew-guide .rk-dp-field label { display: block; margin-bottom: 7px; color: var(--rk-dp-dark); font-size: .7rem; font-weight: 880; line-height: 1.35; }
  #rk-dew-guide .rk-dp-field small { display: block; margin-top: 6px; color: var(--rk-dp-muted); font-size: .61rem; line-height: 1.45; }
  #rk-dew-guide .rk-dp-input-shell { display: flex; align-items: center; overflow: hidden; border: 1px solid #bcd4de; border-radius: 12px; background: var(--rk-dp-white); }
  #rk-dew-guide .rk-dp-input-shell:focus-within { border-color: var(--rk-dp-blue); box-shadow: 0 0 0 3px rgba(7, 143, 190, .12); }
  #rk-dew-guide .rk-dp-input-shell input {
    width: 100%;
    min-width: 0;
    padding: 12px 12px;
    border: 0;
    outline: 0;
    color: var(--rk-dp-dark);
    background: transparent;
    font-size: .88rem;
    font-weight: 800;
  }
  #rk-dew-guide .rk-dp-unit { flex: 0 0 auto; padding: 0 12px; color: var(--rk-dp-muted); font-size: .66rem; font-weight: 850; }
  #rk-dew-guide .rk-dp-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    margin-top: 22px;
    padding: 13px 21px;
    border-radius: 12px;
    color: var(--rk-dp-white);
    background: var(--rk-dp-blue);
    font-size: .74rem;
    font-weight: 930;
  }
  #rk-dew-guide .rk-dp-action:hover,
  #rk-dew-guide .rk-dp-action:focus-visible { background: #067ba4; }
  #rk-dew-guide .rk-dp-results { margin-top: 27px; }
  #rk-dew-guide .rk-dp-result-status {
    display: grid;
    grid-template-columns: 68px minmax(0, 1fr);
    gap: 17px;
    align-items: center;
    padding: 21px;
    border: 1px solid #bfe3d7;
    border-radius: 17px;
    background: var(--rk-dp-green-soft);
  }
  #rk-dew-guide .rk-dp-result-status.is-warning { border-color: #ead58b; background: var(--rk-dp-yellow-soft); }
  #rk-dew-guide .rk-dp-result-status.is-danger { border-color: #efbcb7; background: var(--rk-dp-red-soft); }
  #rk-dew-guide .rk-dp-status-icon {
    display: grid;
    place-items: center;
    width: 58px;
    height: 58px;
    border-radius: 50%;
    color: var(--rk-dp-white);
    background: var(--rk-dp-green);
    font-size: 1.25rem;
    font-weight: 950;
    line-height: 1;
  }
  #rk-dew-guide .is-warning .rk-dp-status-icon { background: #d99a14; }
  #rk-dew-guide .is-danger .rk-dp-status-icon { background: var(--rk-dp-red); }
  #rk-dew-guide .rk-dp-status-copy strong { display: block; margin-bottom: 4px; color: var(--rk-dp-dark); font-size: 1.05rem; }
  #rk-dew-guide .rk-dp-status-copy span { display: block; color: var(--rk-dp-text); font-size: .75rem; line-height: 1.55; }
  #rk-dew-guide .rk-dp-result-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 13px; }
  #rk-dew-guide .rk-dp-result-card { min-width: 0; padding: 17px; border: 1px solid var(--rk-dp-line); border-radius: 14px; background: #f8fbfc; }
  #rk-dew-guide .rk-dp-result-card span { display: block; min-height: 2.6em; color: var(--rk-dp-muted); font-size: .58rem; font-weight: 850; letter-spacing: .04em; line-height: 1.3; text-transform: uppercase; }
  #rk-dew-guide .rk-dp-result-card b { display: block; margin-top: 6px; color: var(--rk-dp-dark); font-size: clamp(1.05rem, 2.8vw, 1.5rem); line-height: 1.15; }
  #rk-dew-guide .rk-dp-result-card small { display: block; margin-top: 5px; color: var(--rk-dp-muted); font-size: .58rem; line-height: 1.4; }
  #rk-dew-guide .rk-dp-water-note { margin-top: 13px; padding: 15px 17px; border: 1px solid #d5e4e9; border-radius: 13px; color: var(--rk-dp-text); background: #f6fafb; font-size: .69rem; }
  #rk-dew-guide .rk-dp-tool-limit { margin-top: 18px; color: var(--rk-dp-muted); font-size: .65rem; line-height: 1.55; }

  #rk-dew-guide .rk-dp-chart-controls {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 18px;
    margin-bottom: 22px;
  }
  #rk-dew-guide .rk-dp-range-card { padding: 17px; border: 1px solid var(--rk-dp-line); border-radius: 14px; background: #f7fafb; }
  #rk-dew-guide .rk-dp-range-head { display: flex; justify-content: space-between; gap: 15px; margin-bottom: 10px; color: var(--rk-dp-dark); font-size: .68rem; font-weight: 900; }
  #rk-dew-guide .rk-dp-range-head output { color: var(--rk-dp-blue); white-space: nowrap; }
  #rk-dew-guide input[type="range"] { width: 100%; accent-color: var(--rk-dp-blue); }
  #rk-dew-guide .rk-dp-chart-legend { display: flex; flex-wrap: wrap; gap: 9px 16px; margin-bottom: 15px; }
  #rk-dew-guide .rk-dp-legend-item { display: inline-flex; align-items: center; gap: 7px; color: var(--rk-dp-text); font-size: .63rem; font-weight: 800; }
  #rk-dew-guide .rk-dp-legend-line { width: 27px; height: 4px; border-radius: 999px; background: var(--rk-dp-dark); }
  #rk-dew-guide .rk-dp-legend-line--target { background: var(--rk-dp-orange); }
  #rk-dew-guide .rk-dp-legend-line--surface { background: var(--rk-dp-cyan); }
  #rk-dew-guide .rk-dp-canvas-shell { width: 100%; padding: 12px; border: 1px solid var(--rk-dp-line); border-radius: 17px; background: var(--rk-dp-white); }
  #rk-dew-guide #rk-dp-chart { display: block; width: 100%; height: 430px; }
  #rk-dew-guide .rk-dp-chart-summary { margin-top: 14px; padding: 17px; border-radius: 13px; color: var(--rk-dp-text); background: var(--rk-dp-soft); font-size: .72rem; }

  #rk-dew-guide .rk-dp-auto-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 13px; margin-top: 24px; }
  #rk-dew-guide .rk-dp-auto-card {
    min-width: 0;
    min-height: 155px;
    padding: 19px;
    border: 1px solid var(--rk-dp-line);
    border-radius: 16px;
    color: var(--rk-dp-dark);
    background: var(--rk-dp-white);
    text-align: left;
  }
  #rk-dew-guide .rk-dp-auto-card:hover,
  #rk-dew-guide .rk-dp-auto-card:focus-visible,
  #rk-dew-guide .rk-dp-auto-card.is-active { border-color: var(--rk-dp-blue); background: var(--rk-dp-cyan-soft); box-shadow: inset 0 0 0 1px var(--rk-dp-blue); }
  #rk-dew-guide .rk-dp-auto-card .rk-dp-number { width: 42px; height: 42px; min-width: 42px; margin-bottom: 13px; }
  #rk-dew-guide .rk-dp-auto-card b { display: block; margin-bottom: 5px; font-size: .78rem; }
  #rk-dew-guide .rk-dp-auto-card span { display: block; color: var(--rk-dp-text); font-size: .64rem; line-height: 1.45; }
  #rk-dew-guide .rk-dp-auto-detail {
    margin-top: 14px;
    padding: clamp(22px, 4vw, 32px);
    border-radius: 18px;
    color: var(--rk-dp-white);
    background: linear-gradient(135deg, var(--rk-dp-dark), #155462);
  }
  #rk-dew-guide .rk-dp-auto-detail-label { display: block; margin-bottom: 8px; color: #72e9f7; font-size: .61rem; font-weight: 950; letter-spacing: .08em; text-transform: uppercase; }
  #rk-dew-guide .rk-dp-auto-detail h3 { margin-bottom: 10px; color: var(--rk-dp-white); }
  #rk-dew-guide .rk-dp-auto-detail p { margin-bottom: 0; color: #d5e8ed; }
  #rk-dew-guide .rk-dp-auto-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 11px; margin-top: 18px; }
  #rk-dew-guide .rk-dp-auto-fact { min-width: 0; padding: 14px; border: 1px solid rgba(255, 255, 255, .15); border-radius: 12px; background: rgba(255, 255, 255, .07); }
  #rk-dew-guide .rk-dp-auto-fact b { display: block; margin-bottom: 4px; color: #79edf9; font-size: .62rem; }
  #rk-dew-guide .rk-dp-auto-fact span { display: block; color: #d3e7ec; font-size: .62rem; line-height: 1.45; }

  #rk-dew-guide .rk-dp-cta {
    margin: 35px 0 0;
    padding: clamp(28px, 5vw, 48px);
    border-radius: 21px;
    color: var(--rk-dp-white);
    background:
      radial-gradient(circle at 90% 10%, rgba(43, 200, 217, .24), transparent 30%),
      linear-gradient(135deg, #102b3c, #174f5d);
  }
  #rk-dew-guide .rk-dp-cta .rk-dp-eyebrow { color: #72eafb; }
  #rk-dew-guide .rk-dp-cta h3 { max-width: 900px; margin-bottom: 12px; color: var(--rk-dp-white); font-size: clamp(1.4rem, 3.3vw, 2.25rem); }
  #rk-dew-guide .rk-dp-cta p { max-width: 920px; color: #d4e8ed; }
  #rk-dew-guide .rk-dp-cta-limit { margin: 18px 0; padding: 16px 18px; border: 1px solid rgba(255, 255, 255, .17); border-radius: 13px; color: #edf8fa; background: rgba(255, 255, 255, .07); font-size: .72rem; }
  #rk-dew-guide .rk-dp-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 51px;
    padding: 13px 21px;
    border-radius: 12px;
    color: var(--rk-dp-white);
    background: var(--rk-dp-orange);
    font-size: .73rem;
    font-weight: 930;
    line-height: 1.3;
    text-decoration: none;
  }
  #rk-dew-guide .rk-dp-cta-button:hover,
  #rk-dew-guide .rk-dp-cta-button:focus-visible { color: var(--rk-dp-white); background: #e95734; }

  #rk-dew-guide .rk-dp-checklist { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin-top: 23px; }
  #rk-dew-guide .rk-dp-check {
    display: grid;
    grid-template-columns: 32px minmax(0, 1fr);
    gap: 12px;
    align-items: start;
    padding: 17px;
    border: 1px solid var(--rk-dp-line);
    border-radius: 14px;
    background: var(--rk-dp-white);
  }
  #rk-dew-guide .rk-dp-check-icon { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; color: var(--rk-dp-white); background: var(--rk-dp-green); font-size: .7rem; font-weight: 950; line-height: 1; }
  #rk-dew-guide .rk-dp-check b { display: block; margin-bottom: 4px; color: var(--rk-dp-dark); font-size: .72rem; }
  #rk-dew-guide .rk-dp-check span { display: block; color: var(--rk-dp-text); font-size: .66rem; line-height: 1.48; }

  #rk-dew-guide .rk-dp-faq { display: grid; gap: 11px; margin-top: 23px; }
  #rk-dew-guide .rk-dp-faq details { overflow: hidden; border: 1px solid var(--rk-dp-line); border-radius: 14px; background: var(--rk-dp-white); }
  #rk-dew-guide .rk-dp-faq summary { position: relative; padding: 16px 54px 16px 18px; color: var(--rk-dp-dark); cursor: pointer; font-size: .76rem; font-weight: 880; line-height: 1.45; list-style: none; }
  #rk-dew-guide .rk-dp-faq summary::-webkit-details-marker { display: none; }
  #rk-dew-guide .rk-dp-faq summary::after { position: absolute; top: 10px; right: 18px; color: var(--rk-dp-blue); content: "+"; font-size: 1.5rem; font-weight: 700; }
  #rk-dew-guide .rk-dp-faq details[open] summary::after { content: "−"; }
  #rk-dew-guide .rk-dp-faq-answer { padding: 17px 18px; border-top: 1px solid var(--rk-dp-line); color: var(--rk-dp-text); font-size: .8rem; }
  #rk-dew-guide .rk-dp-faq-answer p:last-child { margin-bottom: 0; }

  #rk-dew-guide .rk-dp-source-list { display: grid; gap: 12px; margin-top: 22px; }
  #rk-dew-guide .rk-dp-source { padding: 18px; border: 1px solid var(--rk-dp-line); border-radius: 14px; background: #f8fbfc; }
  #rk-dew-guide .rk-dp-source b { display: block; margin-bottom: 5px; color: var(--rk-dp-dark); font-size: .74rem; }
  #rk-dew-guide .rk-dp-source p { margin: 0; color: var(--rk-dp-text); font-size: .7rem; }

  #rk-dew-guide .rk-dp-author {
    scroll-margin-top: 28px;
    overflow: hidden;
    color: var(--rk-dp-white);
    background: linear-gradient(135deg, #0d293a, #164e5c);
  }
  #rk-dew-guide .rk-dp-author-head { padding: clamp(30px, 5vw, 51px) clamp(24px, 5vw, 54px); border-bottom: 1px solid rgba(255, 255, 255, .13); }
  #rk-dew-guide .rk-dp-author-head .rk-dp-eyebrow { color: #6fe9f8; }
  #rk-dew-guide .rk-dp-author-head h2 { margin-bottom: 9px; color: var(--rk-dp-white); }
  #rk-dew-guide .rk-dp-author-head p { max-width: 900px; margin: 0; color: #d3e8ed; }
  #rk-dew-guide .rk-dp-author-update { display: inline-flex; margin-top: 15px; padding: 7px 12px; border: 1px solid rgba(255, 255, 255, .18); border-radius: 999px; color: var(--rk-dp-white); font-size: .61rem; font-weight: 850; }
  #rk-dew-guide .rk-dp-author-layout { display: grid; grid-template-columns: 310px minmax(0, 1fr); }
  #rk-dew-guide .rk-dp-author-side { padding: 38px 27px; border-right: 1px solid rgba(255, 255, 255, .13); text-align: center; }
  #rk-dew-guide .rk-dp-author-photo { width: 168px; height: 168px; margin: 0 auto 19px; overflow: hidden; border: 7px solid rgba(255, 255, 255, .18); border-radius: 50%; background: var(--rk-dp-white); }
  #rk-dew-guide .rk-dp-author-photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
  #rk-dew-guide .rk-dp-author-name { color: var(--rk-dp-white); font-size: 1.12rem; font-weight: 930; }
  #rk-dew-guide .rk-dp-author-name a { color: var(--rk-dp-white); text-decoration: none; }
  #rk-dew-guide .rk-dp-author-role { margin: 6px 0 0; color: #c1d9e0; font-size: .68rem; line-height: 1.55; }
  #rk-dew-guide .rk-dp-author-social-label { margin-top: 23px; color: #73e7f5; font-size: .56rem; font-weight: 950; letter-spacing: .08em; text-transform: uppercase; }
  #rk-dew-guide .rk-dp-author-social { display: flex; justify-content: center; gap: 10px; margin-top: 11px; }
  #rk-dew-guide .rk-dp-author-social a { display: grid; place-items: center; width: 44px; height: 44px; border: 1px solid #426c7c; border-radius: 50%; color: #e2f1f4; text-decoration: none; }
  #rk-dew-guide .rk-dp-author-social a:hover,
  #rk-dew-guide .rk-dp-author-social a:focus-visible { color: var(--rk-dp-dark); border-color: var(--rk-dp-cyan); background: var(--rk-dp-cyan); }
  #rk-dew-guide .rk-dp-author-main { min-width: 0; padding: 38px clamp(24px, 4vw, 46px); }
  #rk-dew-guide .rk-dp-author-quote { position: relative; margin: 0 0 24px; padding: 18px 20px 18px 62px; border-radius: 15px; background: rgba(255, 255, 255, .075); }
  #rk-dew-guide .rk-dp-author-quote::before { position: absolute; top: 4px; left: 18px; color: #65e8f7; content: "“"; font-size: 3.3rem; font-weight: 950; line-height: 1; }
  #rk-dew-guide .rk-dp-author-quote p { margin: 0; color: var(--rk-dp-white); font-size: 1.01rem; font-style: italic; font-weight: 760; }
  #rk-dew-guide .rk-dp-author-main > p { color: #d0e4e9; }
  #rk-dew-guide .rk-dp-author-facts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-top: 23px; }
  #rk-dew-guide .rk-dp-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-dew-guide .rk-dp-author-fact strong { display: block; margin-bottom: 6px; color: #73eaf8; font-size: .66rem; }
  #rk-dew-guide .rk-dp-author-fact span { display: block; color: #d5e7eb; font-size: .64rem; line-height: 1.5; }
  #rk-dew-guide .rk-dp-author-portals { margin-top: 21px; color: #cfe3e8; font-size: .7rem; }
  #rk-dew-guide .rk-dp-author-portals a { display: inline-flex; margin: 7px 7px 0 0; padding: 7px 11px; border: 1px solid #487281; border-radius: 999px; color: var(--rk-dp-white); text-decoration: none; }

  @media (max-width: 940px) {
    #rk-dew-guide .rk-dp-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-dew-guide .rk-dp-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-dew-guide .rk-dp-input-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-dew-guide .rk-dp-author-layout { grid-template-columns: 250px minmax(0, 1fr); }
    #rk-dew-guide .rk-dp-author-facts { grid-template-columns: 1fr; }
  }
  @media (max-width: 760px) {
    #rk-dew-guide { margin-top: 22px; font-size: 16px; }
    #rk-dew-guide .rk-dp-shell { border-radius: 20px; }
    #rk-dew-guide .rk-dp-hero-metrics,
    #rk-dew-guide .rk-dp-grid-2,
    #rk-dew-guide .rk-dp-grid-3,
    #rk-dew-guide .rk-dp-answer,
    #rk-dew-guide .rk-dp-input-grid,
    #rk-dew-guide .rk-dp-chart-controls,
    #rk-dew-guide .rk-dp-auto-grid,
    #rk-dew-guide .rk-dp-checklist,
    #rk-dew-guide .rk-dp-author-layout { grid-template-columns: 1fr; }
    #rk-dew-guide .rk-dp-author-side { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, .13); }
    #rk-dew-guide #rk-dp-chart { height: 350px; }
    #rk-dew-guide .rk-dp-auto-facts { grid-template-columns: 1fr; }
    #rk-dew-guide .rk-dp-table-wrap { overflow: visible; border: 0; border-radius: 0; }
    #rk-dew-guide table,
    #rk-dew-guide thead,
    #rk-dew-guide tbody,
    #rk-dew-guide tr,
    #rk-dew-guide th,
    #rk-dew-guide td { display: block; width: 100%; }
    #rk-dew-guide thead { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); }
    #rk-dew-guide tbody { display: grid; gap: 12px; }
    #rk-dew-guide tbody tr { overflow: hidden; border: 1px solid var(--rk-dp-line); border-radius: 14px; background: var(--rk-dp-white); }
    #rk-dew-guide td,
    #rk-dew-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(112px, 42%) minmax(0, 1fr);
      gap: 12px;
      padding: 13px 15px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-dp-line);
      background: var(--rk-dp-white);
    }
    #rk-dew-guide td::before { color: var(--rk-dp-dark); content: attr(data-label); font-size: .63rem; font-weight: 900; line-height: 1.4; }
    #rk-dew-guide tbody tr td:last-child { border-bottom: 0; }
  }
  @media (max-width: 520px) {
    #rk-dew-guide .rk-dp-content { padding-right: 16px; padding-left: 16px; }
    #rk-dew-guide .rk-dp-hero { padding-right: 21px; padding-left: 21px; }
    #rk-dew-guide .rk-dp-grid-4,
    #rk-dew-guide .rk-dp-result-grid { grid-template-columns: 1fr; }
    #rk-dew-guide .rk-dp-result-status { grid-template-columns: 50px minmax(0, 1fr); }
    #rk-dew-guide .rk-dp-status-icon { width: 46px; height: 46px; }
    #rk-dew-guide .rk-dp-result-card span { min-height: 0; }
    #rk-dew-guide #rk-dp-chart { height: 315px; }
    #rk-dew-guide .rk-dp-cta-button,
    #rk-dew-guide .rk-dp-action { width: 100%; text-align: center; }
    #rk-dew-guide .rk-dp-author-main { padding-right: 18px; padding-left: 18px; }
    #rk-dew-guide .rk-dp-author-quote { padding-left: 55px; }
    #rk-dew-guide td,
    #rk-dew-guide tbody tr:nth-child(even) td { grid-template-columns: 1fr; gap: 4px; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-dew-guide * { scroll-behavior: auto !important; transition: none !important; }
  }
</style>

<article id="rk-dew-guide" aria-labelledby="rk-dp-visual-title">
  <div class="rk-dp-shell">
    <header class="rk-dp-hero">
      <span class="rk-dp-kicker">Chłodzenie zaczyna się od wilgotności</span>
      <div class="rk-dp-hero-title" id="rk-dp-visual-title">Punkt rosy wyznacza granicę <span>chłodzenia podłogowego</span></div>
      <p class="rk-dp-lead">Nie istnieje jedna bezpieczna temperatura wody na całe lato. Trzeba znać temperaturę i wilgotność powietrza, obliczyć punkt rosy, przyjąć margines sterowania oraz sprawdzić, czy najzimniejsza powierzchnia instalacji pozostaje powyżej tej granicy.</p>
      <div class="rk-dp-tags" aria-label="Zakres artykułu">
        <span class="rk-dp-tag">kalkulator punktu rosy</span>
        <span class="rk-dp-tag">temperatura powierzchni</span>
        <span class="rk-dp-tag">wilgotność względna</span>
        <span class="rk-dp-tag">automatyka antykondensacyjna</span>
        <span class="rk-dp-tag">pompa ciepła</span>
      </div>
      <div class="rk-dp-byline">
        <span><strong>Autor:</strong> Robert Kucharski</span>
        <span><strong>Czas czytania:</strong> około 31 minut</span>
        <span><strong>Aktualizacja techniczna:</strong> 14 września 2026 r.</span>
      </div>
      <div class="rk-dp-hero-metrics">
        <div class="rk-dp-hero-metric"><b>1. Zmierz warunki powietrza</b><span>Temperatura i RH muszą pochodzić ze strefy, którą chcesz chłodzić.</span></div>
        <div class="rk-dp-hero-metric"><b>2. Oblicz granicę powierzchni</b><span>Punkt rosy powiększ o margines wynikający z projektu i sterowania.</span></div>
        <div class="rk-dp-hero-metric"><b>3. Domknij automatykę</b><span>Układ ma zareagować przed osiągnięciem granicy, także w najbardziej wilgotnej strefie.</span></div>
      </div>
    </header>

    <nav class="rk-dp-nav" aria-label="Na skróty">
      <span class="rk-dp-nav-label">Na skróty — wszystkie główne części poradnika</span>
      <div class="rk-dp-nav-track">
        <a href="#rk-dp-szybka">Szybka odpowiedź</a>
        <a href="#rk-dp-trzy-temperatury">Trzy temperatury</a>
        <a href="#rk-dp-kalkulator">Kalkulator</a>
        <a href="#rk-dp-wykres">Wykres</a>
        <a href="#rk-dp-interpretacja">Interpretacja</a>
        <a href="#rk-dp-automatyka">Automatyka</a>
        <a href="#rk-dp-strefy">Strefy i czujniki</a>
        <a href="#rk-dp-wilgoc">Wilgoć i wentylacja</a>
        <a href="#rk-dp-aktywne-pasywne">Aktywne i pasywne</a>
        <a href="#rk-dp-moc">Moc chłodnicza</a>
        <a href="#rk-dp-hydraulika">Hydraulika</a>
        <a href="#rk-dp-okladzina">Okładzina</a>
        <a href="#rk-dp-uruchomienie">Uruchomienie</a>
        <a href="#rk-dp-bledy">Błędy</a>
        <a href="#rk-dp-podsumowanie">Podsumowanie</a>
        <a href="#rk-dp-zrodla">Źródła</a>
        <a href="#rk-dp-faq">FAQ</a>
        <a href="#rk-dp-author">Autor</a>
      </div>
    </nav>

    <main class="rk-dp-content">
      <section class="rk-dp-section" id="rk-dp-szybka">
        <span class="rk-dp-eyebrow">Odpowiedź w 60 sekund</span>
        <h2>Jak bezpiecznie chłodzić dom podłogówką?</h2>
        <p class="rk-dp-intro-lg">Kondensacja zaczyna się wtedy, gdy temperatura powierzchni osiągnie punkt rosy otaczającego ją powietrza. Dlatego bezpieczeństwa nie określa sama wilgotność, jedna nastawa pompy ciepła ani temperatura wody odczytana na rozdzielaczu. Liczy się ich aktualna zależność.</p>

        <div class="rk-dp-answer">
          <div>
            <h3>Najpierw punkt rosy, później temperatura instalacji</h3>
            <p>Automatyka powinna na bieżąco wyznaczać temperaturę punktu rosy z pomiaru temperatury i wilgotności względnej. Następnie dodaje się zaprojektowany margines i porównuje wynik z temperaturą chronionej powierzchni. Jeżeli zapas maleje, układ podnosi temperaturę wody, ogranicza chłodzenie strefy albo je zatrzymuje.</p>
          </div>
          <div class="rk-dp-answer-rule">
            <div><b>T powierzchni &gt; T rosy + margines</b><span>Podstawowa relacja ochrony przed kondensacją</span></div>
          </div>
        </div>

        <div class="rk-dp-grid-3">
          <div class="rk-dp-card rk-dp-card--cyan">
            <h3>Punkt rosy nie jest stały</h3>
            <p>Zmienia się wraz z temperaturą i zawartością wilgoci. Otwarcie okien w parny dzień, kąpiel albo gotowanie może szybko zmienić warunki w jednej części domu.</p>
          </div>
          <div class="rk-dp-card rk-dp-card--green">
            <h3>Podłoga nie usuwa wilgoci</h3>
            <p>Ma odbierać ciepło jawne bez wykraplania wody. Wilgoć utajoną musi obsłużyć wentylacja z odpowiednią obróbką powietrza, klimatyzacja lub osuszacz.</p>
          </div>
          <div class="rk-dp-card rk-dp-card--orange">
            <h3>Kalkulator nie projektuje układu</h3>
            <p>Wyznacza granicę termodynamiczną, ale nie oblicza zysków chłodniczych, temperatury powierzchni z temperatury wody ani wymaganych przepływów.</p>
          </div>
        </div>

        <p class="rk-dp-note">Jeżeli chłodzenie zapewnia <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">rewersyjna pompa ciepła</a>, funkcja chłodzenia urządzenia jest tylko jednym elementem. Równie ważne są odbiorniki, hydraulika, czujniki i scenariusz awaryjny.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-trzy-temperatury">
        <span class="rk-dp-eyebrow">Najważniejsze rozróżnienie</span>
        <h2>Temperatura powietrza, podłogi i wody to trzy różne wartości</h2>
        <p class="rk-dp-intro">Najczęstszy błąd polega na porównaniu punktu rosy wyłącznie z temperaturą zasilania. Woda przepływa wewnątrz rury, rura przekazuje chłód warstwom podłogi, a dopiero powierzchnia wymienia energię z pomieszczeniem. Różnice zależą od konstrukcji, przepływu, rozstawu, okładziny i chwilowego obciążenia.</p>

        <div class="rk-dp-grid-3">
          <div class="rk-dp-card">
            <div class="rk-dp-number-row">
              <span class="rk-dp-number">1</span>
              <div class="rk-dp-number-copy"><h3>Powietrze w strefie</h3><p>Temperatura i RH służą do obliczenia punktu rosy. Pomiar powinien reprezentować warunki pomieszczenia, a nie wnętrze rozdzielacza.</p></div>
            </div>
          </div>
          <div class="rk-dp-card">
            <div class="rk-dp-number-row">
              <span class="rk-dp-number rk-dp-number--orange">2</span>
              <div class="rk-dp-number-copy"><h3>Powierzchnia podłogi</h3><p>To jej kontakt z powietrzem decyduje o kondensacji powierzchniowej. Najzimniejszy fragment może być ważniejszy niż średnia z całego pokoju.</p></div>
            </div>
          </div>
          <div class="rk-dp-card">
            <div class="rk-dp-number-row">
              <span class="rk-dp-number rk-dp-number--green">3</span>
              <div class="rk-dp-number-copy"><h3>Woda i elementy hydrauliczne</h3><p>Zasilanie może być chłodniejsze od powierzchni. Rury doprowadzające, armatura i rozdzielacz także wymagają ochrony oraz właściwej izolacji.</p></div>
            </div>
          </div>
        </div>

        <div class="rk-dp-formula" aria-label="Reguła wyznaczania najniższej dopuszczalnej temperatury powierzchni">
          <div class="rk-dp-formula-main">T<sub>pow,min</sub> = max(T<sub>rosy</sub> + ΔT<sub>bezp.</sub>, limit komfortu i materiału, ograniczenie systemu)</div>
          <small>Najbardziej restrykcyjny warunek wyznacza rzeczywistą dolną granicę temperatury powierzchni.</small>
        </div>

        <p>Wymagania komfortu i sposoby obliczania emisji powierzchniowej szerzej omawia poradnik o <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">obliczeniach według EN 1264</a>. Ochrona przed punktem rosy jest osobnym sprawdzeniem i nie powinna być zastępowana jedną tabelą temperatur.</p>

        <div class="rk-dp-table-wrap">
          <table>
            <thead><tr><th>Wielkość</th><th>Co opisuje</th><th>Jak ją uzyskać</th><th>Czego nie wolno zakładać</th></tr></thead>
            <tbody>
              <tr><td data-label="Wielkość"><strong>Temperatura powietrza</strong></td><td data-label="Co opisuje">Warunki cieplne w strefie na poziomie reprezentatywnym dla użytkownika.</td><td data-label="Jak ją uzyskać">Czujnik pokojowy umieszczony poza słońcem, nawiewem i zimną ścianą.</td><td data-label="Czego nie zakładać">Że jeden czujnik zawsze opisuje cały dom.</td></tr>
              <tr><td data-label="Wielkość"><strong>Wilgotność względna</strong></td><td data-label="Co opisuje">Stopień nasycenia powietrza parą wodną przy aktualnej temperaturze.</td><td data-label="Jak ją uzyskać">Skalibrowany czujnik RH lub termohigrometr.</td><td data-label="Czego nie zakładać">Że sama wartość 60% albo 70% przesądza o kondensacji.</td></tr>
              <tr><td data-label="Wielkość"><strong>Punkt rosy</strong></td><td data-label="Co opisuje">Temperaturę, przy której dane powietrze osiąga nasycenie.</td><td data-label="Jak ją uzyskać">Obliczenie z temperatury oraz RH.</td><td data-label="Czego nie zakładać">Że pozostanie stały po zmianie pogody lub użytkowania.</td></tr>
              <tr><td data-label="Wielkość"><strong>Temperatura powierzchni</strong></td><td data-label="Co opisuje">Warunek kondensacji i komfortu na wykończonej podłodze.</td><td data-label="Jak ją uzyskać">Pomiar, obliczenia konstrukcji albo oba źródła danych.</td><td data-label="Czego nie zakładać">Że jest równa temperaturze wody.</td></tr>
              <tr><td data-label="Wielkość"><strong>Temperatura zasilania</strong></td><td data-label="Co opisuje">Parametr wody dopływającej do pętli.</td><td data-label="Jak ją uzyskać">Pomiar na instalacji oraz nastawa regulatora.</td><td data-label="Czego nie zakładać">Że jedna wartość 16–18°C jest bezpieczna w każdych warunkach.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-dp-section" id="rk-dp-kalkulator">
        <span class="rk-dp-eyebrow">Narzędzie główne</span>
        <h2>Kalkulator punktu rosy i bezpiecznej temperatury podłogi</h2>
        <p class="rk-dp-intro">Wprowadź warunki z konkretnej strefy oraz zmierzoną lub planowaną temperaturę powierzchni. Kalkulator wyznaczy punkt rosy, temperaturę powierzchni z przyjętym marginesem, rzeczywisty zapas oraz maksymalną wilgotność dla podanych warunków.</p>

        <div class="rk-dp-tool" aria-labelledby="rk-dp-calc-heading">
          <div class="rk-dp-tool-head">
            <span class="rk-dp-eyebrow">Kalkulator techniczny</span>
            <h3 id="rk-dp-calc-heading">Sprawdź granicę kondensacji</h3>
            <p>Wzór Magnus-Tetensa jest tu używany jako praktyczne przybliżenie dla typowych warunków wewnętrznych. Wynik nie zastępuje projektu, pomiarów powierzchni ani logiki bezpieczeństwa sterownika.</p>
          </div>
          <div class="rk-dp-tool-body">
            <div class="rk-dp-presets" aria-label="Przykładowe scenariusze">
              <button class="rk-dp-preset" type="button" data-preset="humid">Parny dzień</button>
              <button class="rk-dp-preset is-active" type="button" data-preset="typical">Warunki umiarkowane</button>
              <button class="rk-dp-preset" type="button" data-preset="dry">Powietrze suche</button>
            </div>

            <div class="rk-dp-input-grid">
              <div class="rk-dp-field">
                <label for="rk-dp-air-temp">Temperatura powietrza w strefie</label>
                <div class="rk-dp-input-shell"><input id="rk-dp-air-temp" type="number" min="10" max="40" step="0.1" value="26" inputmode="decimal"><span class="rk-dp-unit">°C</span></div>
                <small>Pomiar reprezentatywny dla pomieszczenia.</small>
              </div>
              <div class="rk-dp-field">
                <label for="rk-dp-rh">Wilgotność względna</label>
                <div class="rk-dp-input-shell"><input id="rk-dp-rh" type="number" min="20" max="95" step="1" value="50" inputmode="decimal"><span class="rk-dp-unit">% RH</span></div>
                <small>Nie oceniaj ryzyka na podstawie samego RH.</small>
              </div>
              <div class="rk-dp-field">
                <label for="rk-dp-surface-temp">Najzimniejsza temperatura powierzchni</label>
                <div class="rk-dp-input-shell"><input id="rk-dp-surface-temp" type="number" min="5" max="35" step="0.1" value="20" inputmode="decimal"><span class="rk-dp-unit">°C</span></div>
                <small>Nie musi odpowiadać średniej temperaturze podłogi.</small>
              </div>
              <div class="rk-dp-field">
                <label for="rk-dp-margin">Przyjęty margines bezpieczeństwa</label>
                <div class="rk-dp-input-shell"><input id="rk-dp-margin" type="number" min="0.5" max="4" step="0.1" value="2" inputmode="decimal"><span class="rk-dp-unit">K</span></div>
                <small>Parametr projektowy, nie uniwersalna stała.</small>
              </div>
              <div class="rk-dp-field">
                <label for="rk-dp-supply">Temperatura wody na zasilaniu</label>
                <div class="rk-dp-input-shell"><input id="rk-dp-supply" type="number" min="5" max="35" step="0.1" value="18" inputmode="decimal"><span class="rk-dp-unit">°C</span></div>
                <small>Służy do kontroli najzimniejszych elementów hydraulicznych.</small>
              </div>
              <div class="rk-dp-field">
                <label for="rk-dp-return">Temperatura wody na powrocie</label>
                <div class="rk-dp-input-shell"><input id="rk-dp-return" type="number" min="5" max="35" step="0.1" value="21" inputmode="decimal"><span class="rk-dp-unit">°C</span></div>
                <small>Kalkulator nie przelicza z niej temperatury powierzchni.</small>
              </div>
            </div>

            <button class="rk-dp-action" id="rk-dp-calc-button" type="button">Oblicz i oceń warunki</button>

            <div class="rk-dp-results" aria-live="polite">
              <div class="rk-dp-result-status" id="rk-dp-result-status">
                <div class="rk-dp-status-icon" id="rk-dp-status-icon" aria-hidden="true">✓</div>
                <div class="rk-dp-status-copy"><strong id="rk-dp-status-title">Bezpieczny zapas powierzchni</strong><span id="rk-dp-status-text">Temperatura podłogi pozostaje powyżej punktu rosy wraz z przyjętym marginesem.</span></div>
              </div>
              <div class="rk-dp-result-grid">
                <div class="rk-dp-result-card"><span>Obliczony punkt rosy</span><b id="rk-dp-dew-result">14,8°C</b><small>Granica nasycenia dla podanych warunków.</small></div>
                <div class="rk-dp-result-card"><span>Powierzchnia z marginesem</span><b id="rk-dp-target-result">16,8°C</b><small>Punkt rosy powiększony o wybrany zapas.</small></div>
                <div class="rk-dp-result-card"><span>Rzeczywisty zapas do rosy</span><b id="rk-dp-gap-result">5,2 K</b><small>Różnica między powierzchnią i punktem rosy.</small></div>
                <div class="rk-dp-result-card"><span>Maksymalne RH dla powierzchni</span><b id="rk-dp-max-rh-result">61%</b><small>Dla tej temperatury powietrza i marginesu.</small></div>
              </div>
              <div class="rk-dp-water-note" id="rk-dp-water-note">Najchłodniejsza wpisana temperatura wody wynosi 18,0°C. To nie jest obliczona temperatura posadzki; rury, rozdzielacz i armatura wymagają osobnego sprawdzenia oraz izolacji.</div>
            </div>

            <p class="rk-dp-tool-limit"><strong>Zakres odpowiedzialności narzędzia:</strong> wynik dotyczy wpisanych danych i wskazanej powierzchni. Kalkulator nie zna dokładności czujników, gradientu temperatury podłogi, mostków cieplnych, temperatury rur w szachcie ani rozkładu wilgotności w innych pomieszczeniach. Wartości skrajne i wyniki graniczne powinny zostać potwierdzone pomiarem oraz dokumentacją automatyki.</p>
          </div>
        </div>
      </section>

      <section class="rk-dp-section" id="rk-dp-wykres">
        <span class="rk-dp-eyebrow">Zobacz moment przecięcia granicy</span>
        <h2>Interaktywny wykres punktu rosy, wilgotności i temperatury podłogi</h2>
        <p class="rk-dp-intro">Wykres pokazuje, jak przy stałej temperaturze powietrza wzrost wilgotności podnosi punkt rosy. Niebieska linia powierzchni pozostaje pozioma, natomiast granice kondensacji przesuwają się w górę. Miejsce przecięcia odpowiada maksymalnej wilgotności dla wybranego marginesu.</p>

        <div class="rk-dp-tool" aria-labelledby="rk-dp-chart-heading">
          <div class="rk-dp-tool-head">
            <span class="rk-dp-eyebrow">Wykres edukacyjny</span>
            <h3 id="rk-dp-chart-heading">Co zmieni się po wzroście wilgotności?</h3>
            <p>Przesuń suwaki. Zielone pole oznacza zachowany margines, żółte — pracę bliżej granicy, a czerwone — warunki, w których wpisana temperatura powierzchni osiąga punkt rosy.</p>
          </div>
          <div class="rk-dp-tool-body">
            <div class="rk-dp-chart-controls">
              <div class="rk-dp-range-card">
                <div class="rk-dp-range-head"><label for="rk-dp-chart-air">Temperatura powietrza</label><output id="rk-dp-chart-air-output">26,0°C</output></div>
                <input id="rk-dp-chart-air" type="range" min="20" max="32" step="0.5" value="26">
              </div>
              <div class="rk-dp-range-card">
                <div class="rk-dp-range-head"><label for="rk-dp-chart-surface">Temperatura powierzchni</label><output id="rk-dp-chart-surface-output">20,0°C</output></div>
                <input id="rk-dp-chart-surface" type="range" min="14" max="25" step="0.5" value="20">
              </div>
            </div>
            <div class="rk-dp-chart-legend" aria-label="Legenda wykresu">
              <span class="rk-dp-legend-item"><span class="rk-dp-legend-line"></span>Punkt rosy</span>
              <span class="rk-dp-legend-item"><span class="rk-dp-legend-line rk-dp-legend-line--target"></span>Punkt rosy + margines</span>
              <span class="rk-dp-legend-item"><span class="rk-dp-legend-line rk-dp-legend-line--surface"></span>Temperatura podłogi</span>
            </div>
            <div class="rk-dp-canvas-shell">
              <canvas id="rk-dp-chart" width="1050" height="430" role="img" aria-label="Wykres punktu rosy w funkcji wilgotności względnej"></canvas>
            </div>
            <div class="rk-dp-chart-summary" id="rk-dp-chart-summary" aria-live="polite">Dla temperatury powietrza 26,0°C, powierzchni 20,0°C i marginesu 2,0 K zapas projektowy zostaje wykorzystany przy wilgotności około 61% RH. Sama kondensacja zaczyna się przy wyższej wilgotności.</div>
          </div>
        </div>

        <div class="rk-dp-warning"><p><strong>Wykres nie jest tabelą mocy chłodniczej.</strong> Pokazuje granicę wilgotnościową dla wybranej powierzchni. Moc trzeba policzyć z różnicy temperatur, powierzchni czynnej, konstrukcji, okładziny i zysków chłodniczych pomieszczenia.</p></div>
      </section>

      <section class="rk-dp-section" id="rk-dp-interpretacja">
        <span class="rk-dp-eyebrow">Od liczby do decyzji</span>
        <h2>Jak interpretować wynik kalkulatora punktu rosy?</h2>
        <p class="rk-dp-intro">Wynik nie powinien odpowiadać jedynie „bezpiecznie” albo „niebezpiecznie”. Dla automatyki ważne jest, ile zapasu pozostało, jak szybko zmieniają się warunki i czy pomiar opisuje rzeczywiście najchłodniejsze miejsce.</p>

        <div class="rk-dp-grid-3">
          <div class="rk-dp-card rk-dp-card--green"><h3>Bezpieczny zapas</h3><p>Powierzchnia jest cieplejsza od punktu rosy o wartość równą lub większą od przyjętego marginesu. Nie oznacza to jeszcze, że instalacja ma wystarczającą moc chłodniczą.</p></div>
          <div class="rk-dp-card rk-dp-card--yellow"><h3>Zmniejszony margines</h3><p>Kondensacja jeszcze nie zachodzi, ale część zapasu została wykorzystana. Regulator powinien ograniczać chłodzenie odpowiednio wcześnie, zamiast czekać na pierwszą kroplę.</p></div>
          <div class="rk-dp-card rk-dp-card--orange"><h3>Ryzyko kondensacji</h3><p>Temperatura powierzchni osiąga punkt rosy albo spada niżej. Trzeba podnieść temperaturę chronionego elementu, odciąć strefę i ustalić przyczynę.</p></div>
        </div>

        <div class="rk-dp-important"><p><strong>Ważne:</strong> podłoga o temperaturze 20°C może mieć duży zapas przy suchym powietrzu i znaleźć się blisko granicy po wzroście RH. Z kolei 70% RH nie tworzy automatycznie kondensacji na każdej powierzchni — decyduje porównanie z aktualnym punktem rosy.</p></div>

        <h3>Dlaczego margines nie jest jedną normową liczbą dla każdego domu?</h3>
        <p>Margines ma uwzględnić niepewność pomiaru, dokładność czujników, ich położenie, histerezę sterownika, bezwładność zaworu i podłogi oraz różnice temperatur w obrębie powierzchni. Innej oceny może wymagać układ z jednym czujnikiem centralnym, a innej instalacja z pomiarem RH w wielu strefach i kontrolą najzimniejszych elementów.</p>
        <p>Bezwładność ma znaczenie także latem. Po zmianie sygnału sterującego temperatura masywnej podłogi nie zmienia się natychmiast; więcej o tej zależności wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej ogrzewania podłogowego</a>.</p>

        <aside class="rk-dp-cta" aria-label="Projekt instalacji podłogowej">
          <span class="rk-dp-eyebrow">Granica jest policzona — teraz trzeba sprawdzić wydajność</span>
          <h3>Punkt rosy mówi, jak nisko wolno zejść. Projekt odpowiada, czy przy tej temperaturze podłoga odbierze zyski ciepła.</h3>
          <p>Kalkulator nie zna powierzchni czynnej, nasłonecznienia, okładziny, długości pętli, przepływów ani sposobu sterowania każdą strefą. Te elementy trzeba połączyć z bilansem pomieszczeń i hydrauliką całej instalacji.</p>
          <div class="rk-dp-cta-limit"><strong>Przed zamówieniem sprawdź zakres:</strong> projekt ogrzewania podłogowego powinien określić geometrię pętli, przepływy i parametry grzewcze. Jeżeli instalacja ma również chłodzić, ten tryb, jego obciążenia oraz zabezpieczenia trzeba potwierdzić oddzielnie w założeniach projektu.</div>
          <a class="rk-dp-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-dp-section" id="rk-dp-automatyka">
        <span class="rk-dp-eyebrow">Interaktywna grafika edukacyjna</span>
        <h2>Jak automatyka zabezpiecza chłodzenie podłogowe przed kondensacją?</h2>
        <p class="rk-dp-intro">Kliknij kolejny moduł. Poprawna ochrona nie polega na zapisaniu jednej minimalnej temperatury wody. To łańcuch pomiaru, obliczenia, porównania i reakcji, który musi pozostawać spójny również po awarii czujnika lub utracie komunikacji.</p>

        <div class="rk-dp-auto-grid" role="group" aria-label="Sześć modułów ochrony przed kondensacją">
          <button class="rk-dp-auto-card is-active" type="button" data-auto-step="1" aria-pressed="true">
            <span class="rk-dp-number">1</span><b>Pomiar temperatury i RH</b><span>Warunki powietrza w odpowiedniej strefie.</span>
          </button>
          <button class="rk-dp-auto-card" type="button" data-auto-step="2" aria-pressed="false">
            <span class="rk-dp-number rk-dp-number--orange">2</span><b>Obliczenie punktu rosy</b><span>Aktualna granica zamiast stałej wartości sezonowej.</span>
          </button>
          <button class="rk-dp-auto-card" type="button" data-auto-step="3" aria-pressed="false">
            <span class="rk-dp-number rk-dp-number--green">3</span><b>Dodanie marginesu</b><span>Zapas na błędy pomiaru i dynamikę układu.</span>
          </button>
          <button class="rk-dp-auto-card" type="button" data-auto-step="4" aria-pressed="false">
            <span class="rk-dp-number rk-dp-number--purple">4</span><b>Porównanie powierzchni</b><span>Kontrola najzimniejszego chronionego miejsca.</span>
          </button>
          <button class="rk-dp-auto-card" type="button" data-auto-step="5" aria-pressed="false">
            <span class="rk-dp-number rk-dp-number--yellow">5</span><b>Ograniczenie chłodzenia</b><span>Zmiana temperatury, przepływu lub stanu strefy.</span>
          </button>
          <button class="rk-dp-auto-card" type="button" data-auto-step="6" aria-pressed="false">
            <span class="rk-dp-number">6</span><b>Obsługa wilgoci i awarii</b><span>Osuszanie, alarm i bezpieczny stan instalacji.</span>
          </button>
        </div>

        <div class="rk-dp-auto-detail" id="rk-dp-auto-detail" aria-live="polite">
          <span class="rk-dp-auto-detail-label" id="rk-dp-auto-label">Moduł 1 · dane wejściowe</span>
          <h3 id="rk-dp-auto-title">Pomiar musi opisywać warunki w chłodzonej strefie</h3>
          <p id="rk-dp-auto-text">Czujnik temperatury i wilgotności względnej nie powinien znajdować się w słońcu, przy nawiewie, nad źródłem pary ani wewnątrz szafy. Jeden pomiar centralny może nie wychwycić lokalnego wzrostu wilgotności w łazience, kuchni lub pokoju po otwarciu okna.</p>
          <div class="rk-dp-auto-facts">
            <div class="rk-dp-auto-fact"><b id="rk-dp-auto-fact1-title">Co sprawdzić</b><span id="rk-dp-auto-fact1">Miejsce czujnika, częstotliwość odczytu i dokładność RH.</span></div>
            <div class="rk-dp-auto-fact"><b id="rk-dp-auto-fact2-title">Typowy błąd</b><span id="rk-dp-auto-fact2">Sterowanie całym domem według jednego, przypadkowo umieszczonego sensora.</span></div>
            <div class="rk-dp-auto-fact"><b id="rk-dp-auto-fact3-title">Bezpieczna reakcja</b><span id="rk-dp-auto-fact3">Brak wiarygodnego odczytu powinien ograniczyć chłodzenie, a nie zezwalać na pełną moc.</span></div>
          </div>
        </div>

        <p class="rk-dp-note">Regulator pogodowy może zarządzać temperaturą źródła, ale sama <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">regulacja pogodowa</a> nie zna lokalnej wilgotności w pokojach. Z kolei <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> jest elementem wykonawczym — nie zastępuje algorytmu ani czujników.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-strefy">
        <span class="rk-dp-eyebrow">Najgorszy przypadek, nie średnia domu</span>
        <h2>Strefy, czujniki i najzimniejsze miejsca instalacji</h2>
        <p class="rk-dp-intro">Wspólna temperatura zasilania obsługuje zwykle kilka pomieszczeń. Jeżeli jedna strefa ma wyższy punkt rosy, to ona może wyznaczyć ograniczenie dla całej grupy. Oddzielne odcięcie pętli pomaga tylko wtedy, gdy logika źródła i pompy przewiduje pracę przy zmniejszonym przepływie.</p>

        <div class="rk-dp-grid-2">
          <div class="rk-dp-card rk-dp-card--soft">
            <h3>Pomieszczenia szczególnego ryzyka</h3>
            <ul>
              <li>łazienka po kąpieli i kuchnia podczas gotowania,</li>
              <li>strefa przy otwartych drzwiach tarasowych w parny dzień,</li>
              <li>pomieszczenie z inną wentylacją lub bez przepływu powietrza,</li>
              <li>fragment podłogi o lokalnie niższej temperaturze,</li>
              <li>rozdzielacz, armatura i przewody prowadzone poza strefą kontrolowaną.</li>
            </ul>
          </div>
          <div class="rk-dp-card rk-dp-card--cyan">
            <h3>Co powinno być przypisane do strefy?</h3>
            <ul>
              <li>pomiar temperatury i RH,</li>
              <li>pętle obsługujące dane pomieszczenie,</li>
              <li>warunek odcięcia albo ograniczenia,</li>
              <li>priorytet wobec wspólnego zasilania,</li>
              <li>stan awaryjny po utracie pomiaru.</li>
            </ul>
          </div>
        </div>

        <h3>Jeden czujnik centralny czy pomiar w każdym pokoju?</h3>
        <p>Nie ma jednej odpowiedzi dla wszystkich instalacji. Otwarta część dzienna może być reprezentowana przez poprawnie umieszczony czujnik, ale niezależna łazienka, sypialnia z otwieranym oknem albo kondygnacja o innym profilu wilgotności może wymagać osobnego pomiaru. Trzeba ustalić, czy system ogranicza wspólne zasilanie, czy potrafi zamknąć tylko zagrożoną strefę.</p>
        <p>Mechanikę zamykania pętli opisuje poradnik o <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownikach termoelektrycznych</a>. Wpływ zamykania obwodów na cały układ wyjaśnia natomiast analiza <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowania strefowego ogrzewaniem</a>. W trybie chłodzenia dochodzi do tego nadrzędny warunek wilgotnościowy.</p>

        <div class="rk-dp-warning"><p><strong>Czujnik podłogowy i czujnik RH pełnią inne funkcje.</strong> Pierwszy może kontrolować temperaturę w wybranym miejscu, drugi dostarcza danych o wilgotności powietrza. Do obliczenia punktu rosy potrzebne są temperatura powietrza oraz RH; sam <a href="https://projekt-ogrzewania.pl/czujnik-podlogowy/">czujnik podłogowy</a> nie wystarczy.</p></div>
      </section>

      <section class="rk-dp-section" id="rk-dp-wilgoc">
        <span class="rk-dp-eyebrow">Ciepło jawne i wilgoć utajona</span>
        <h2>Chłodzenie podłogowe a rekuperacja, klimatyzacja i osuszanie</h2>
        <p class="rk-dp-intro">Podłoga odbiera energię bez celowego wykraplania wody. Oznacza to, że nie zapewnia kontrolowanego usuwania wilgoci utajonej. Jeżeli zawartość wilgoci w powietrzu rośnie, punkt rosy przesuwa się w górę i ogranicza dostępną różnicę temperatur dla chłodzenia powierzchniowego.</p>

        <div class="rk-dp-table-wrap">
          <table>
            <thead><tr><th>Element</th><th>Co może zrobić</th><th>Czego nie należy mu przypisywać</th><th>Co sprawdzić</th></tr></thead>
            <tbody>
              <tr><td data-label="Element"><strong>Podłoga chłodząca</strong></td><td data-label="Co może zrobić">Odbierać ciepło jawne przy zachowaniu temperatury powierzchni ponad punktem rosy.</td><td data-label="Czego nie przypisywać">Kontrolowanego osuszania powietrza.</td><td data-label="Co sprawdzić">Moc, powierzchnię czynną, komfort i granicę kondensacji.</td></tr>
              <tr><td data-label="Element"><strong>Wentylacja mechaniczna</strong></td><td data-label="Co może zrobić">Wymieniać powietrze i wpływać na bilans wilgoci zależnie od warunków zewnętrznych oraz wymiennika.</td><td data-label="Czego nie przypisywać">Gwarantowanego osuszania w każdy parny dzień.</td><td data-label="Co sprawdzić">Strumienie, rodzaj odzysku, powietrze zewnętrzne i sposób obróbki.</td></tr>
              <tr><td data-label="Element"><strong>Chłodnica powietrza</strong></td><td data-label="Co może zrobić">Obniżać temperaturę powietrza, a poniżej punktu rosy również usuwać wilgoć i odprowadzać skropliny.</td><td data-label="Czego nie przypisywać">Wydajności niezależnej od temperatury czynnika i przepływu powietrza.</td><td data-label="Co sprawdzić">Moc jawną i utajoną, odpływ kondensatu oraz automatykę.</td></tr>
              <tr><td data-label="Element"><strong>Klimatyzator lub osuszacz</strong></td><td data-label="Co może zrobić">Aktywnie obniżać zawartość wilgoci w określonych warunkach pracy.</td><td data-label="Czego nie przypisywać">Automatycznej współpracy z podłogą bez wspólnej logiki.</td><td data-label="Co sprawdzić">Wydajność osuszania, sterowanie, hałas, energię i odpływ skroplin.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Rekuperator z wymiennikiem entalpicznym może ograniczać przenoszenie wilgoci między strumieniami w pewnych warunkach, ale nie jest tym samym co aktywny osuszacz. Gdy powietrze zewnętrzne ma wysoką zawartość wilgoci, zwiększenie wentylacji bez analizy bilansu może podnieść obciążenie wilgocią zamiast je zmniejszyć. Więcej o roli centrali wyjaśnia poradnik <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja i ogrzewanie podłogowe</a>.</p>
        <p>Warto również odróżnić wilgotność względną od ilości pary wodnej. Sam spadek temperatury powietrza podnosi RH nawet bez dopływu dodatkowej wilgoci. Zależność tę rozwija artykuł o tym, <a href="https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/">jak ogrzewanie podłogowe wpływa na wilgotność powietrza</a>.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-aktywne-pasywne">
        <span class="rk-dp-eyebrow">Inne źródło chłodu, ta sama granica powierzchni</span>
        <h2>Chłodzenie aktywne i pasywne pompą ciepła</h2>
        <p class="rk-dp-intro">Sposób wytwarzania chłodu zmienia pracę źródła, ale nie usuwa ograniczenia wynikającego z punktu rosy. Zarówno przy pracy rewersyjnej sprężarki, jak i przy chłodzeniu pasywnym, instalacja po stronie budynku musi dostarczyć wodę o temperaturze wynikającej z aktualnych warunków oraz konstrukcji podłogi.</p>

        <div class="rk-dp-grid-2">
          <div class="rk-dp-card rk-dp-card--cyan">
            <h3>Chłodzenie aktywne</h3>
            <p>Pompa ciepła pracuje w odwróconym obiegu chłodniczym. Temperatura wody i dostępna moc zależą od możliwości urządzenia, warunków pracy, przepływu i sterowania. Nie należy zakładać, że najniższa możliwa nastawa urządzenia jest właściwa dla podłogi.</p>
          </div>
          <div class="rk-dp-card rk-dp-card--green">
            <h3>Chłodzenie pasywne</h3>
            <p>Energia może być przekazywana do gruntu przez wymiennik z ograniczoną pracą sprężarki. Niska temperatura po stronie dolnego źródła nadal wymaga kontrolowanego przekazania do obiegu budynku i ochrony wszystkich zimnych elementów.</p>
          </div>
        </div>

        <p>Jeżeli obiegi są rozdzielone, trzeba policzyć warunki po obu stronach <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">wymiennika płytowego</a>. Sam wymiennik nie ustala bezpiecznej temperatury i wprowadza własny spadek temperatury oraz opór hydrauliczny. Dla instalacji projektowanej od początku warto połączyć tę analizę z zasadami opisanymi w poradniku <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>.</p>

        <div class="rk-dp-note"><p><strong>Najważniejsze:</strong> automatyka źródła może znać temperaturę zasilania i warunki zewnętrzne, ale punkt rosy powinien być wyznaczany z warunków powietrza wewnątrz odpowiedniej strefy. Pogoda zewnętrzna nie zastępuje pomiaru wewnętrznego.</p></div>
      </section>

      <section class="rk-dp-section" id="rk-dp-moc">
        <span class="rk-dp-eyebrow">Granica kondensacji nie jest bilansem pomieszczenia</span>
        <h2>Jak sprawdzić możliwą moc chłodniczą podłogi?</h2>
        <p class="rk-dp-intro">Nie można przypisać gotowej mocy 20, 35 albo 45 W/m² wyłącznie do temperatury powietrza i RH. Punkt rosy określa dolną granicę powierzchni, natomiast strumień chłodu zależy od różnicy temperatur między pomieszczeniem i podłogą, wymiany konwekcyjnej oraz radiacyjnej, powierzchni czynnej i całej konstrukcji.</p>

        <div class="rk-dp-grid-4">
          <div class="rk-dp-card"><div class="rk-dp-number-row"><span class="rk-dp-number">1</span><div class="rk-dp-number-copy"><h3>Policz zyski</h3><p>Uwzględnij słońce, przeszklenia, ludzi, urządzenia, przegrody i wentylację.</p></div></div></div>
          <div class="rk-dp-card"><div class="rk-dp-number-row"><span class="rk-dp-number rk-dp-number--orange">2</span><div class="rk-dp-number-copy"><h3>Ustal powierzchnię</h3><p>Liczy się fragment podłogi rzeczywiście uczestniczący w wymianie ciepła.</p></div></div></div>
          <div class="rk-dp-card"><div class="rk-dp-number-row"><span class="rk-dp-number rk-dp-number--green">3</span><div class="rk-dp-number-copy"><h3>Wyznacz limit</h3><p>Punkt rosy, margines, komfort i okładzina ograniczają temperaturę powierzchni.</p></div></div></div>
          <div class="rk-dp-card"><div class="rk-dp-number-row"><span class="rk-dp-number rk-dp-number--purple">4</span><div class="rk-dp-number-copy"><h3>Porównaj moce</h3><p>Dostępna moc podłogi musi zostać zestawiona z obciążeniem każdej strefy.</p></div></div></div>
        </div>

        <div class="rk-dp-formula">
          <div class="rk-dp-formula-main">Q<sub>dostępne</sub> = A<sub>czynna</sub> × q<sub>powierzchni</sub> &nbsp;&nbsp; oraz &nbsp;&nbsp; Q<sub>dostępne</sub> ≥ Q<sub>chłodnicze strefy</sub></div>
          <small>Wartość q powierzchni trzeba wyznaczyć dla konkretnego układu, temperatur i sposobu obliczeń — nie odczytywać z tabeli samej wilgotności.</small>
        </div>

        <p>Podstawą jest obliczenie letnich zysków ciepła, a nie wykorzystanie zimowego wyniku <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego OZC</a> jako gotowej mocy chłodniczej. Szczególnej uwagi wymagają pokoje z dużą ekspozycją słoneczną; zależności po stronie przegrzewania rozwija poradnik o <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/">pasywnych zyskach ciepła</a>.</p>
        <p>Jeżeli podłoga nie pokrywa obciążenia przy bezpiecznej temperaturze powierzchni, rozwiązaniem nie jest automatyczne obniżenie temperatury wody. Najpierw rozważa się ograniczenie zysków słonecznych, pracę wyprzedzającą, dodatkowy emiter chłodniczy lub urządzenie zdolne także do osuszania. Dobrym punktem odniesienia jest analiza <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">podłogówki w domu z dużymi przeszkleniami</a>, przy czym warunki zimowe i letnie należy liczyć oddzielnie.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-hydraulika">
        <span class="rk-dp-eyebrow">Przepływ wynika z mocy i różnicy temperatur</span>
        <h2>Temperatura wody, przepływy, pętle i pompa obiegowa</h2>
        <p class="rk-dp-intro">Nie ma zasady, że chłodzenie zawsze wymaga dwukrotnie większego przepływu. Dla określonej mocy zmniejszenie różnicy temperatur między zasilaniem i powrotem zwiększa wymagany przepływ, ale rzeczywisty wynik zależy od przyjętej mocy, temperatur, liczby czynnych pętli oraz oporów instalacji.</p>

        <div class="rk-dp-formula">
          <div class="rk-dp-formula-main">Q = ρ × c<sub>p</sub> × V̇ × ΔT</div>
          <small>Ta sama zależność obowiązuje w ogrzewaniu i chłodzeniu. Najpierw ustala się moc oraz ΔT, następnie przepływ, a dopiero później opory i punkt pracy pompy.</small>
        </div>

        <div class="rk-dp-grid-3">
          <div class="rk-dp-card"><h3>Obieg i zasilanie</h3><p>Trzeba ustalić, kto reguluje temperaturę, gdzie jest pompa, czy występuje mieszanie lub wymiennik i jak wygląda droga krytyczna. Pomaga w tym opis <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">obiegu grzewczego podłogówki</a>.</p></div>
          <div class="rk-dp-card"><h3>Pompa i stany częściowe</h3><p>Pompa ma zapewnić wymagany przepływ przy oporze najbardziej wymagającej czynnej drogi. Trzeba sprawdzić także sytuację po zamknięciu części stref. Zobacz zasady <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">doboru pompy obiegowej</a>.</p></div>
          <div class="rk-dp-card"><h3>ΔT nie jest stałe</h3><p>Różnica zasilanie–powrót jest wynikiem przepływu i odbieranej mocy. Nie należy jej przepisywać bez sprawdzenia; szerzej wyjaśnia to artykuł o <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatur ΔT</a>.</p></div>
        </div>

        <h3>Czy pętla chłodząca musi mieć maksymalnie 80 metrów?</h3>
        <p>Nie jest to uniwersalna granica. Długość ograniczają średnica wewnętrzna, wymagany przepływ, opory miejscowe, charakterystyka pompy, liczba równoległych pętli i dopuszczalny spadek ciśnienia. Każda <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętla ogrzewania podłogowego</a> powinna mieć policzoną moc, przepływ i opór także dla rozważanego trybu chłodzenia. Znaczenie geometrii i wymiaru przewodów rozwija poradnik o <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicach rur w ogrzewaniu podłogowym</a>.</p>

        <h3>Czy chłodzenie wymaga zawsze rozstawu 10 cm i ślimaka?</h3>
        <p>Gęstszy rozstaw oraz układ ślimakowy mogą poprawiać równomierność temperatury, lecz nie są samodzielnym zabezpieczeniem przed kondensacją. O wyniku decydują obciążenie, konstrukcja i przepływ. Porównanie geometrii znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/">ślimak, meander czy podwójny meander</a>, a wpływ odległości między przewodami w analizie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu rur 10 lub 15 cm</a>.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-okladzina">
        <span class="rk-dp-eyebrow">Opór cieplny i ograniczenia materiału</span>
        <h2>Chłodzenie podłogowe pod płytkami, panelami i drewnem</h2>
        <p class="rk-dp-intro">Rodzaj okładziny wpływa na przepływ ciepła między wodą a pomieszczeniem oraz może mieć własne ograniczenia temperatury i wilgotności. Nie oznacza to jednak, że płytki są „w 100% bezpieczne”, a drewno automatycznie tworzy kondensację. Dla każdej powierzchni nadal obowiązuje porównanie z punktem rosy.</p>

        <div class="rk-dp-table-wrap">
          <table>
            <thead><tr><th>Okładzina</th><th>Wpływ na chłodzenie</th><th>Co trzeba zweryfikować</th><th>Błędny skrót</th></tr></thead>
            <tbody>
              <tr><td data-label="Okładzina"><strong>Płytki i kamień</strong></td><td data-label="Wpływ">Zwykle niski opór warstwy sprzyja przekazywaniu energii.</td><td data-label="Weryfikacja">Temperaturę powierzchni, klej, dylatacje i warunki użytkowania.</td><td data-label="Błędny skrót">„Płytka nie może się wykraplać”.</td></tr>
              <tr><td data-label="Okładzina"><strong>Panele i winyl</strong></td><td data-label="Wpływ">Opór zależy od produktu, podkładu i sposobu montażu.</td><td data-label="Weryfikacja">Dopuszczenie producenta do chłodzenia, limity temperatury i wilgotności.</td><td data-label="Błędny skrót">„Każdy panel działa tak samo”.</td></tr>
              <tr><td data-label="Okładzina"><strong>Drewno warstwowe</strong></td><td data-label="Wpływ">Wyższy opór może ograniczać dostępną moc powierzchniową.</td><td data-label="Weryfikacja">Gatunek, konstrukcję deski, grubość, klejenie i zakres RH.</td><td data-label="Błędny skrót">„Drewno wymaga zawsze wody minimum 19°C”.</td></tr>
              <tr><td data-label="Okładzina"><strong>Dywan lub gruby podkład</strong></td><td data-label="Wpływ">Może istotnie ograniczyć wymianę ciepła i zmienić lokalny rozkład temperatur.</td><td data-label="Weryfikacja">Łączny opór wszystkich warstw i rzeczywistą powierzchnię czynną.</td><td data-label="Błędny skrót">„Liczy się tylko jastrych”.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Przed wyborem parkietu warto sprawdzić <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">gatunki drewna do ogrzewania podłogowego</a> oraz wymagania producenta dotyczące trybu chłodzenia. Sam parametr R opisuje opór termiczny, ale nie zastępuje danych o stabilności materiału; jego znaczenie wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporze cieplnym okładziny</a>. Oddzielne porównanie wykończeń znajdziesz również w materiale <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele czy płytki na podłogówkę</a>.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-uruchomienie">
        <span class="rk-dp-eyebrow">Zanim zacznie się pierwszy parny dzień</span>
        <h2>Jak uruchomić i przetestować zabezpieczenie punktu rosy?</h2>
        <p class="rk-dp-intro">Ochronę należy sprawdzić w kontrolowanych warunkach, zanim instalacja będzie potrzebna przy wysokiej temperaturze i wilgotności. Test powinien obejmować pomiar, reakcję regulatora, elementy wykonawcze, źródło, pompę oraz alarm.</p>

        <div class="rk-dp-checklist">
          <div class="rk-dp-check"><span class="rk-dp-check-icon">1</span><div><b>Porównaj czujniki</b><span>Zestaw temperaturę i RH z miernikiem odniesienia; zapisz odchyłkę oraz czas stabilizacji.</span></div></div>
          <div class="rk-dp-check"><span class="rk-dp-check-icon">2</span><div><b>Sprawdź lokalizację</b><span>Wyklucz bezpośrednie słońce, nawiew, źródła pary i miejsca niereprezentatywne.</span></div></div>
          <div class="rk-dp-check"><span class="rk-dp-check-icon">3</span><div><b>Zasymuluj wzrost punktu rosy</b><span>Zmień wartość testową zgodnie z instrukcją regulatora i obserwuj reakcję bez zawilgacania podłogi.</span></div></div>
          <div class="rk-dp-check"><span class="rk-dp-check-icon">4</span><div><b>Potwierdź działanie zaworu</b><span>Sprawdź kierunek ruchu, czas przejścia, pozycję po zaniku sygnału i temperaturę za mieszaniem.</span></div></div>
          <div class="rk-dp-check"><span class="rk-dp-check-icon">5</span><div><b>Sprawdź każdą strefę</b><span>Potwierdź przypisanie czujnika do właściwych siłowników oraz zachowanie pozostałych obiegów.</span></div></div>
          <div class="rk-dp-check"><span class="rk-dp-check-icon">6</span><div><b>Przetestuj utratę komunikacji</b><span>Awaria czujnika lub magistrali powinna prowadzić do wcześniej zdefiniowanego stanu bezpiecznego.</span></div></div>
          <div class="rk-dp-check"><span class="rk-dp-check-icon">7</span><div><b>Obserwuj przepływy częściowe</b><span>Po zamknięciu stref sprawdź pompę, minimalny przepływ źródła i pracę obiegu wspólnego.</span></div></div>
          <div class="rk-dp-check"><span class="rk-dp-check-icon">8</span><div><b>Zapisz nastawy</b><span>Udokumentuj margines, histerezę, alarmy, limity temperatur i odpowiedzialność serwisową.</span></div></div>
        </div>

        <p>Próba ochrony przed kondensacją nie zastępuje hydraulicznej <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próby szczelności ogrzewania podłogowego</a>. Są to dwa różne etapy odbioru: pierwszy dotyczy sterowania i wilgotności, drugi integralności przewodów.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-bledy">
        <span class="rk-dp-eyebrow">Błędy, które da się wykryć przed sezonem</span>
        <h2>Najczęstsze błędy przy chłodzeniu podłogowym</h2>
        <div class="rk-dp-grid-2">
          <div class="rk-dp-card"><h3>Porównanie punktu rosy tylko z wodą</h3><p>Temperatura zasilania nie opisuje automatycznie powierzchni podłogi, ale zimna armatura może kondensować wcześniej niż posadzka.</p></div>
          <div class="rk-dp-card"><h3>Jedna nastawa na całe lato</h3><p>Warunki powietrza zmieniają się. Stały limit nie śledzi punktu rosy i może jednocześnie niepotrzebnie ograniczać moc w suche dni.</p></div>
          <div class="rk-dp-card"><h3>Blokada według samego RH</h3><p>Wilgotność względna bez temperatury nie wyznacza punktu rosy. Próg RH może być sygnałem pomocniczym, nie pełnym obliczeniem.</p></div>
          <div class="rk-dp-card"><h3>Wiara, że rekuperacja zawsze osusza</h3><p>Bilans wilgoci zależy od warunków zewnętrznych, wymiennika, strumieni i ewentualnej aktywnej obróbki powietrza.</p></div>
          <div class="rk-dp-card"><h3>Brak reakcji na awarię sensora</h3><p>Utrata pomiaru nie może pozostawić chłodzenia na pełnej mocy bez kontroli granicy kondensacji.</p></div>
          <div class="rk-dp-card"><h3>Gotowa moc przypisana do wilgotności</h3><p>Punkt rosy ogranicza temperaturę, ale moc wymaga obliczenia powierzchni, różnicy temperatur i konstrukcji.</p></div>
          <div class="rk-dp-card"><h3>Obowiązkowe 10 cm i 80 m</h3><p>Rozstaw i długość pętli wynikają z wymaganej mocy, równomierności, średnicy, przepływu i oporów.</p></div>
          <div class="rk-dp-card"><h3>Brak wspólnej logiki urządzeń</h3><p>Źródło, mieszanie, pompa, siłowniki i osuszanie mogą działać poprawnie osobno, a mimo to tworzyć błędną całość.</p></div>
        </div>
        <p class="rk-dp-note">Błędy chłodzenia nakładają się na typowe problemy wykonawcze. Przed zalaniem rur warto przejrzeć również <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy montażu ogrzewania podłogowego</a>, ale nie należy przedstawiać dylatacji, izolacji podłogi czy geometrii pętli jako bezpośrednich zamienników kontroli punktu rosy.</p>
      </section>

      <section class="rk-dp-section" id="rk-dp-podsumowanie">
        <span class="rk-dp-eyebrow">Wnioski dla inwestora i projektanta</span>
        <h2>Punkt rosy ogranicza temperaturę, a projekt domyka moc i hydraulikę</h2>
        <p class="rk-dp-intro-lg">Bezpieczne chłodzenie podłogowe wymaga równoczesnego sprawdzenia warunków wilgotnościowych, najzimniejszych powierzchni, mocy dostępnej przy dopuszczalnej temperaturze, przepływów oraz reakcji automatyki. Żaden z tych elementów nie powinien być zastępowany jedną „typową” temperaturą wody.</p>

        <div class="rk-dp-grid-3">
          <div class="rk-dp-card rk-dp-card--cyan"><h3>1. Obliczaj dynamicznie</h3><p>Punkt rosy zmienia się wraz z temperaturą i RH, dlatego granica pracy musi reagować na warunki w strefie.</p></div>
          <div class="rk-dp-card rk-dp-card--green"><h3>2. Rozdziel funkcje</h3><p>Podłoga odbiera ciepło jawne, a kontrolowane usuwanie wilgoci wymaga odpowiedniego urządzenia powietrznego.</p></div>
          <div class="rk-dp-card rk-dp-card--orange"><h3>3. Sprawdź cały układ</h3><p>Temperatura, przepływ, pompa, strefy, materiał posadzki i stan awaryjny muszą być opisane wspólnie.</p></div>
        </div>

        <aside class="rk-dp-cta" aria-label="Końcowe zamówienie projektu ogrzewania podłogowego">
          <span class="rk-dp-eyebrow">Od założeń do dokumentacji wykonawczej</span>
          <h3>Zaprojektuj podłogówkę z policzonymi pętlami, przepływami i temperaturą pracy</h3>
          <p>Jeżeli wodna instalacja podłogowa ma współpracować z pompą ciepła, już na etapie projektu trzeba połączyć obciążenia pomieszczeń, powierzchnię czynną, okładziny, geometrię pętli, rozdzielacze oraz hydraulikę źródła.</p>
          <div class="rk-dp-cta-limit"><strong>Tryb chłodzenia wymaga osobnego potwierdzenia:</strong> kalkulator z tego artykułu pomaga ocenić punkt rosy, lecz nie stanowi projektu chłodniczego ani dokumentacji automatyki antykondensacyjnej.</div>
          <a class="rk-dp-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-dp-section" id="rk-dp-zrodla">
        <span class="rk-dp-eyebrow">Materiały techniczne i zakres odpowiedzialności</span>
        <h2>Źródła dotyczące punktu rosy i chłodzenia powierzchniowego</h2>
        <p class="rk-dp-intro">Poniższe materiały służą do weryfikacji sposobu obliczania punktu rosy oraz zależności właściwych dla układów promieniujących. Źródło nie zastępuje instrukcji urządzeń, projektu budynku ani wymagań konkretnego systemu sterowania.</p>
        <div class="rk-dp-source-list">
          <div class="rk-dp-source"><b>National Weather Service / NOAA — obliczanie punktu rosy</b><p>Oficjalny opis wyznaczania temperatury punktu rosy z temperatury powietrza i wilgotności względnej: <a href="https://www.weather.gov/media/epz/wxcalc/wetBulbTdFromRh.pdf" target="_blank" rel="nofollow noopener noreferrer">Wet-bulb Temperature and Dewpoint Temperature from Air Temperature and Relative Humidity</a>.</p></div>
          <div class="rk-dp-source"><b>Center for the Built Environment, University of California Berkeley</b><p>Program badań dotyczących projektowania, sterowania, obciążeń i komfortu instalacji promieniujących: <a href="https://cbe.berkeley.edu/research/radiant-systems-research/" target="_blank" rel="nofollow noopener noreferrer">Radiant Systems Research</a>.</p></div>
          <div class="rk-dp-source"><b>UC Berkeley — przegląd badań chłodzenia promieniującego</b><p>Materiał pokazujący między innymi różnice między obciążeniami systemów promieniujących i powietrznych oraz wpływ temperatur powierzchni: <a href="https://cbe.berkeley.edu/wp-content/uploads/2019/03/CBE-radiant-systems-research-march2014.pdf" target="_blank" rel="nofollow noopener noreferrer">Overview of Radiant Systems Research</a>.</p></div>
          <div class="rk-dp-source"><b>California Energy Commission — systemy z masą termiczną</b><p>Raport techniczny dotyczący zintegrowanych systemów i sterowania płytami promieniującymi: <a href="https://ww2.energy.ca.gov/2014publications/CEC-500-2014-074/CEC-500-2014-074.pdf" target="_blank" rel="nofollow noopener noreferrer">Advanced Integrated Systems Technology Development</a>.</p></div>
        </div>
        <div class="rk-dp-important"><p><strong>Zakres poradnika:</strong> wzór i narzędzia mają charakter edukacyjny. Ostateczne temperatury, marginesy, rozmieszczenie czujników i sekwencje awaryjne należy ustalić na podstawie obliczeń, dokumentacji producentów, dokładności aparatury oraz warunków konkretnego budynku.</p></div>
      </section>

      <section class="rk-dp-section" id="rk-dp-faq">
        <span class="rk-dp-eyebrow">Najczęstsze pytania</span>
        <h2>FAQ — punkt rosy przy chłodzeniu podłogowym</h2>
        <div class="rk-dp-faq">
          <details><summary>Co to jest punkt rosy przy chłodzeniu podłogowym?</summary><div class="rk-dp-faq-answer"><p>To temperatura, przy której powietrze o aktualnej temperaturze i wilgotności osiąga nasycenie. Jeżeli powierzchnia podłogi lub inny element instalacji osiągnie tę temperaturę albo będzie chłodniejszy, może rozpocząć się kondensacja pary wodnej.</p></div></details>
          <details><summary>Jaka jest bezpieczna temperatura podłogi podczas chłodzenia?</summary><div class="rk-dp-faq-answer"><p>Nie ma jednej wartości dla całego sezonu. Dolną granicę wyznacza aktualny punkt rosy powiększony o przyjęty margines, a także ograniczenia komfortu, okładziny i systemu. Obowiązuje najbardziej restrykcyjny z tych warunków.</p></div></details>
          <details><summary>Jaka temperatura wody jest bezpieczna dla chłodzenia podłogowego?</summary><div class="rk-dp-faq-answer"><p>Nie można jej poprawnie wyznaczyć wyłącznie z punktu rosy. Temperatura powierzchni różni się od temperatury wody i zależy od konstrukcji, przepływu, obciążenia oraz okładziny. Zasilanie trzeba tak regulować, aby wszystkie chronione powierzchnie zachowały wymagany zapas.</p></div></details>
          <details><summary>Czy przy wilgotności 70% podłogówka musi się wyłączyć?</summary><div class="rk-dp-faq-answer"><p>Nie na podstawie samego RH. Trzeba znać również temperaturę powietrza i powierzchni. Wysoka wilgotność zwykle podnosi punkt rosy i może bardzo ograniczyć chłodzenie, ale decyzja powinna wynikać z obliczonej granicy i logiki systemu.</p></div></details>
          <details><summary>Czy rekuperacja zabezpiecza przed kondensacją?</summary><div class="rk-dp-faq-answer"><p>Nie automatycznie. Wentylacja wpływa na bilans wilgoci, ale wynik zależy od powietrza zewnętrznego, strumieni, rodzaju wymiennika i ewentualnej aktywnej obróbki. Ochronę powierzchni musi zapewnić niezależna kontrola punktu rosy.</p></div></details>
          <details><summary>Czy chłodzenie podłogowe osusza powietrze?</summary><div class="rk-dp-faq-answer"><p>Nie powinno. System ma pracować powyżej punktu rosy, a więc bez celowego wykraplania wody. Kontrolowane osuszanie zapewnia urządzenie z odpowiednio zimną powierzchnią wymiany i odpływem kondensatu, takie jak klimatyzator, chłodnica lub osuszacz.</p></div></details>
          <details><summary>Czy czujnik temperatury podłogi wystarczy?</summary><div class="rk-dp-faq-answer"><p>Nie. Do obliczenia punktu rosy potrzebne są temperatura powietrza i wilgotność względna. Czujnik podłogowy może dostarczyć temperaturę konkretnego miejsca, lecz nie opisuje samodzielnie zawartości wilgoci w powietrzu.</p></div></details>
          <details><summary>Czy chłodzenie podłogowe można stosować pod drewnem?</summary><div class="rk-dp-faq-answer"><p>Może być możliwe, jeżeli producent okładziny dopuszcza taki tryb, a projekt uwzględnia opór cieplny, stabilność materiału, zakres wilgotności oraz ograniczenia temperatury. Drewno może ograniczyć moc, ale nie jest automatyczną przyczyną kondensacji.</p></div></details>
          <details><summary>Czy do chłodzenia zawsze trzeba układać rury co 10 cm?</summary><div class="rk-dp-faq-answer"><p>Nie. Gęstszy rozstaw może poprawić wydajność i równomierność, lecz powinien wynikać z obliczeń konkretnej strefy. Nie zastępuje kontroli wilgotności ani sprawdzenia temperatury powierzchni.</p></div></details>
          <details><summary>Czy kalkulator punktu rosy zastępuje projekt chłodzenia?</summary><div class="rk-dp-faq-answer"><p>Nie. Kalkulator wyznacza granicę dla wpisanych danych. Projekt musi dodatkowo policzyć zyski chłodnicze, powierzchnie czynne, temperatury powierzchni i wody, przepływy, opory, automatykę, osuszanie oraz zachowanie instalacji w stanach częściowych i awaryjnych.</p></div></details>
        </div>
      </section>
    </main>

    <section class="rk-dp-author" id="rk-dp-author" aria-labelledby="rk-dp-author-heading">
      <div class="rk-dp-author-head">
        <span class="rk-dp-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
        <h2 id="rk-dp-author-heading">Autor i weryfikacja merytoryczna</h2>
        <p>Treść przygotowana z perspektywy projektowania instalacji podłogowych, hydrauliki, obliczeń cieplnych oraz rzeczywistego sterowania źródłem, pompą i strefami.</p>
        <span class="rk-dp-author-update">Aktualizacja: 14.09.2026</span>
      </div>
      <div class="rk-dp-author-layout">
        <aside class="rk-dp-author-side">
          <div class="rk-dp-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-dp-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-dp-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-dp-author-social-label">Profile branżowe</div>
          <div class="rk-dp-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-dp-author-main">
          <blockquote class="rk-dp-author-quote"><p>Moim zdaniem w chłodzeniu podłogowym nie ustawia się jednej „bezpiecznej” temperatury na całe lato. Granicę wyznacza aktualny punkt rosy w najbardziej wymagającej strefie, a automatyka musi zareagować, zanim najzimniejsza powierzchnia osiągnie tę temperaturę.</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 instalacji łączy obciążenia pomieszczeń, powierzchnię czynną, konstrukcję podłogi, temperatury wody, przepływy, opory rozdzielaczy i wymagania źródła.</p>
          <p>W tym poradniku oddzielono obliczenie punktu rosy od wyznaczania temperatury powierzchni oraz mocy chłodniczej. Usunięto uniwersalne reguły dotyczące stałej temperatury zasilania, obowiązkowego rozstawu, długości pętli i przepływu pompy. Kalkulator pokazuje granicę dla wpisanych warunków, a nie gotowy projekt chłodzenia.</p>
          <div class="rk-dp-author-facts">
            <div class="rk-dp-author-fact"><strong>Praktyka projektowa</strong><span>Analiza obciążeń, powierzchni czynnej, pętli, przepływów, rozdzielaczy i automatyki.</span></div>
            <div class="rk-dp-author-fact"><strong>Metoda</strong><span>Oddzielenie obliczeń technicznych od profili edukacyjnych i jawne opisanie ograniczeń narzędzi.</span></div>
            <div class="rk-dp-author-fact"><strong>Zakres aktualizacji</strong><span>Punkt rosy, temperatura powierzchni i wody, wilgoć utajona, hydraulika oraz logika awaryjna.</span></div>
          </div>
          <p class="rk-dp-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": [
        "ogrzewanie podłogowe",
        "chłodzenie płaszczyznowe",
        "punkt rosy",
        "hydraulika instalacji",
        "pompy ciepła",
        "automatyka HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Punkt-rosy-w-ogrzewaniu-podlogowym.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Punkt-rosy-w-ogrzewaniu-podlogowym.webp",
      "width": 945,
      "height": 945,
      "caption": "Punkt rosy przy chłodzeniu podłogowym — kalkulator i zabezpieczenia",
      "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/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webpage",
      "url": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/",
      "name": "Punkt rosy przy chłodzeniu podłogowym – kalkulator i zabezpieczenia",
      "description": "Oblicz punkt rosy, bezpieczną temperaturę podłogi i margines kondensacji. Sprawdź wilgotność, automatykę oraz ograniczenia chłodzenia podłogowego.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#primaryimage" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#breadcrumb" },
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article" },
      "datePublished": "2026-02-28T09:58:03+00:00",
      "dateModified": "2026-09-14",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Ogrzewanie podłogowe", "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/" },
        { "@type": "ListItem", "position": 3, "name": "Punkt rosy przy chłodzeniu podłogowym", "item": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/" }
      ]
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article",
      "headline": "Punkt rosy przy chłodzeniu podłogowym – kalkulator i zabezpieczenia",
      "description": "Praktyczny poradnik o obliczaniu punktu rosy, bezpiecznej temperaturze powierzchni, wilgotności, automatyce antykondensacyjnej i ograniczeniach chłodzenia podłogowego.",
      "url": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webpage" },
      "image": { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#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-02-28T09:58:03+00:00",
      "dateModified": "2026-09-14",
      "timeRequired": "PT31M",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "proficiencyLevel": "Beginner to Intermediate",
      "about": [
        { "@type": "Thing", "name": "Punkt rosy" },
        { "@type": "Thing", "name": "Chłodzenie podłogowe" },
        { "@type": "Thing", "name": "Kondensacja powierzchniowa" },
        { "@type": "Thing", "name": "Automatyka antykondensacyjna" },
        { "@type": "Thing", "name": "Pompa ciepła" }
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#calculator" },
        { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#chart" },
        { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#faq" }
      ],
      "keywords": "punkt rosy przy chłodzeniu podłogowym, kalkulator punktu rosy, bezpieczna temperatura podłogi, temperatura wody do chłodzenia podłogowego, wilgotność względna, automatyka antykondensacyjna, chłodzenie pompą ciepła"
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#calculator",
      "name": "Kalkulator punktu rosy i bezpiecznej temperatury podłogi",
      "url": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#rk-dp-kalkulator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "offers": { "@type": "Offer", "price": "0", "priceCurrency": "PLN" },
      "creator": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "description": "Narzędzie oblicza punkt rosy, temperaturę powierzchni z marginesem, rzeczywisty zapas oraz maksymalną wilgotność dla wpisanej temperatury podłogi.",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#chart",
      "name": "Interaktywny wykres punktu rosy i wilgotności",
      "url": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#rk-dp-wykres",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript i Canvas",
      "isAccessibleForFree": true,
      "offers": { "@type": "Offer", "price": "0", "priceCurrency": "PLN" },
      "creator": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "description": "Wykres pokazuje zmianę punktu rosy i granicy z marginesem w funkcji wilgotności względnej dla wybranej temperatury powietrza i powierzchni.",
      "inLanguage": "pl-PL"
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#howto",
      "name": "Jak sprawdzić bezpieczne warunki chłodzenia podłogowego",
      "description": "Sześć kroków od pomiaru warunków powietrza do reakcji automatyki antykondensacyjnej.",
      "totalTime": "PT10M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Zmierz temperaturę i wilgotność", "text": "Wykonaj reprezentatywny pomiar temperatury powietrza oraz wilgotności względnej w chłodzonej strefie." },
        { "@type": "HowToStep", "position": 2, "name": "Oblicz punkt rosy", "text": "Wyznacz temperaturę punktu rosy z aktualnej temperatury i wilgotności względnej." },
        { "@type": "HowToStep", "position": 3, "name": "Dodaj margines", "text": "Dodaj margines wynikający z dokładności czujników, dynamiki instalacji i logiki regulatora." },
        { "@type": "HowToStep", "position": 4, "name": "Porównaj temperaturę powierzchni", "text": "Sprawdź najzimniejszą chronioną powierzchnię, a nie wyłącznie średnią temperaturę podłogi." },
        { "@type": "HowToStep", "position": 5, "name": "Ogranicz chłodzenie", "text": "Przed osiągnięciem granicy podnieś temperaturę zasilania, ogranicz lub zamknij właściwą strefę." },
        { "@type": "HowToStep", "position": 6, "name": "Sprawdź wilgoć i stan awaryjny", "text": "Zweryfikuj sposób osuszania oraz bezpieczną reakcję po utracie pomiaru lub komunikacji." }
      ],
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#faq",
      "mainEntity": [
        { "@type": "Question", "name": "Co to jest punkt rosy przy chłodzeniu podłogowym?", "acceptedAnswer": { "@type": "Answer", "text": "To temperatura, przy której powietrze o aktualnej temperaturze i wilgotności osiąga nasycenie. Gdy powierzchnia osiągnie tę temperaturę albo będzie chłodniejsza, może rozpocząć się kondensacja." } },
        { "@type": "Question", "name": "Jaka jest bezpieczna temperatura podłogi podczas chłodzenia?", "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednej wartości dla całego sezonu. Dolną granicę wyznacza aktualny punkt rosy powiększony o przyjęty margines, a także ograniczenia komfortu, okładziny i systemu." } },
        { "@type": "Question", "name": "Jaka temperatura wody jest bezpieczna dla chłodzenia podłogowego?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można jej poprawnie wyznaczyć wyłącznie z punktu rosy. Temperatura powierzchni różni się od temperatury wody i zależy od konstrukcji, przepływu, obciążenia oraz okładziny." } },
        { "@type": "Question", "name": "Czy przy wilgotności 70% podłogówka musi się wyłączyć?", "acceptedAnswer": { "@type": "Answer", "text": "Nie na podstawie samej wilgotności względnej. Potrzebne są również temperatura powietrza i temperatura powierzchni, a decyzja powinna wynikać z obliczonego punktu rosy oraz marginesu." } },
        { "@type": "Question", "name": "Czy rekuperacja zabezpiecza przed kondensacją?", "acceptedAnswer": { "@type": "Answer", "text": "Nie automatycznie. Wentylacja wpływa na bilans wilgoci, ale wynik zależy od powietrza zewnętrznego, strumieni, rodzaju wymiennika i ewentualnej aktywnej obróbki." } },
        { "@type": "Question", "name": "Czy chłodzenie podłogowe osusza powietrze?", "acceptedAnswer": { "@type": "Answer", "text": "Nie powinno, ponieważ system ma pracować powyżej punktu rosy. Kontrolowane osuszanie zapewnia urządzenie z odpływem kondensatu, na przykład klimatyzator, chłodnica lub osuszacz." } },
        { "@type": "Question", "name": "Czy czujnik temperatury podłogi wystarczy?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Do obliczenia punktu rosy potrzebne są temperatura powietrza i wilgotność względna. Czujnik podłogowy może dostarczyć temperaturę konkretnego miejsca." } },
        { "@type": "Question", "name": "Czy chłodzenie podłogowe można stosować pod drewnem?", "acceptedAnswer": { "@type": "Answer", "text": "Może być możliwe, jeżeli producent okładziny dopuszcza taki tryb, a projekt uwzględnia opór cieplny, stabilność materiału, zakres wilgotności oraz ograniczenia temperatury." } },
        { "@type": "Question", "name": "Czy do chłodzenia zawsze trzeba układać rury co 10 cm?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Rozstaw powinien wynikać z obliczeń konkretnej strefy. Gęstsze ułożenie może poprawiać wydajność i równomierność, ale nie zastępuje kontroli punktu rosy." } },
        { "@type": "Question", "name": "Czy kalkulator punktu rosy zastępuje projekt chłodzenia?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Kalkulator wyznacza granicę dla wpisanych danych. Projekt musi dodatkowo policzyć zyski chłodnicze, powierzchnie, temperatury, przepływy, opory, automatykę i osuszanie." } }
      ],
      "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 root = document.getElementById("rk-dew-guide");
  if (!root) { return; }

  var factorA = 17.62;
  var factorB = 243.12;

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

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

  function readNumber(id, minimum, maximum) {
    var field = byId(id);
    if (!field) { return null; }
    var raw = String(field.value).replace(",", ".");
    var value = parseFloat(raw);
    field.removeAttribute("aria-invalid");
    if (!isFinite(value)) {
      field.setAttribute("aria-invalid", "true");
      return null;
    }
    if (value < minimum) {
      field.setAttribute("aria-invalid", "true");
      return null;
    }
    if (value > maximum) {
      field.setAttribute("aria-invalid", "true");
      return null;
    }
    return value;
  }

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

  function dewPoint(airTemperature, relativeHumidity) {
    var gamma = Math.log(relativeHumidity / 100) + factorA * airTemperature / (factorB + airTemperature);
    return factorB * gamma / (factorA - gamma);
  }

  function maximumRelativeHumidity(airTemperature, permittedDewPoint) {
    var exponent = factorA * permittedDewPoint / (factorB + permittedDewPoint) - factorA * airTemperature / (factorB + airTemperature);
    return clamp(100 * Math.exp(exponent), 0, 100);
  }

  function showInputError() {
    var status = byId("rk-dp-result-status");
    status.className = "rk-dp-result-status is-danger";
    byId("rk-dp-status-icon").textContent = "!";
    byId("rk-dp-status-title").textContent = "Sprawdź zakres wpisanych danych";
    byId("rk-dp-status-text").textContent = "Uzupełnij wszystkie pola liczbami mieszczącymi się w zakresach podanych przy formularzu.";
  }

  function setPreset(name) {
    var presets = {
      humid: { air: 28, rh: 70, surface: 24, margin: 2, supply: 20, back: 23 },
      typical: { air: 26, rh: 50, surface: 20, margin: 2, supply: 18, back: 21 },
      dry: { air: 24, rh: 40, surface: 19, margin: 2, supply: 17, back: 20 }
    };
    var data = presets[name];
    if (!data) { return; }
    byId("rk-dp-air-temp").value = data.air;
    byId("rk-dp-rh").value = data.rh;
    byId("rk-dp-surface-temp").value = data.surface;
    byId("rk-dp-margin").value = data.margin;
    byId("rk-dp-supply").value = data.supply;
    byId("rk-dp-return").value = data.back;

    var buttons = root.querySelectorAll(".rk-dp-preset");
    var index;
    for (index = 0; index < buttons.length; index += 1) {
      buttons[index].classList.remove("is-active");
      if (buttons[index].getAttribute("data-preset") === name) {
        buttons[index].classList.add("is-active");
      }
    }
    updateCalculator(true);
  }

  function updateCalculator(syncChart) {
    var air = readNumber("rk-dp-air-temp", 10, 40);
    var rh = readNumber("rk-dp-rh", 20, 95);
    var surface = readNumber("rk-dp-surface-temp", 5, 35);
    var margin = readNumber("rk-dp-margin", 0.5, 4);
    var supply = readNumber("rk-dp-supply", 5, 35);
    var back = readNumber("rk-dp-return", 5, 35);

    if (air === null) { showInputError(); return; }
    if (rh === null) { showInputError(); return; }
    if (surface === null) { showInputError(); return; }
    if (margin === null) { showInputError(); return; }
    if (supply === null) { showInputError(); return; }
    if (back === null) { showInputError(); return; }

    var dew = dewPoint(air, rh);
    var target = dew + margin;
    var gap = surface - dew;
    var maxRh = maximumRelativeHumidity(air, surface - margin);
    var status = byId("rk-dp-result-status");
    var icon = byId("rk-dp-status-icon");
    var title = byId("rk-dp-status-title");
    var copy = byId("rk-dp-status-text");

    status.className = "rk-dp-result-status";
    if (surface <= dew) {
      status.className += " is-danger";
      icon.textContent = "!";
      title.textContent = "Ryzyko kondensacji na wpisanej powierzchni";
      copy.textContent = "Temperatura powierzchni osiąga punkt rosy lub jest niższa. Ogranicz chłodzenie i sprawdź warunki w strefie oraz najzimniejsze elementy instalacji.";
    } else if (surface < target) {
      status.className += " is-warning";
      icon.textContent = "≈";
      title.textContent = "Powierzchnia jest powyżej rosy, ale bez pełnego marginesu";
      copy.textContent = "Kondensacja nie wynika jeszcze z wpisanych wartości, jednak część przyjętego zapasu została wykorzystana. Automatyka powinna reagować przed osiągnięciem punktu rosy.";
    } else {
      icon.textContent = "✓";
      title.textContent = "Bezpieczny zapas powierzchni dla wpisanych danych";
      copy.textContent = "Temperatura powierzchni pozostaje powyżej punktu rosy wraz z przyjętym marginesem. Wynik nie potwierdza jeszcze mocy chłodniczej ani warunków innych stref.";
    }

    byId("rk-dp-dew-result").textContent = formatNumber(dew, 1) + "°C";
    byId("rk-dp-target-result").textContent = formatNumber(target, 1) + "°C";
    byId("rk-dp-gap-result").textContent = formatNumber(gap, 1) + " K";
    byId("rk-dp-max-rh-result").textContent = formatNumber(maxRh, 0) + "%";

    var coldestWater = Math.min(supply, back);
    var waterText = "Najchłodniejsza wpisana temperatura wody wynosi " + formatNumber(coldestWater, 1) + "°C. ";
    if (coldestWater <= dew) {
      waterText += "Jest równa punktowi rosy lub niższa. Nie przesądza to o temperaturze wierzchu podłogi, ale niezaizolowane przewody, rozdzielacz lub armatura mogą znaleźć się w warunkach kondensacji.";
    } else if (coldestWater < target) {
      waterText += "Pozostaje powyżej punktu rosy, lecz poniżej granicy uwzględniającej wybrany margines. Elementy hydrauliczne wymagają osobnego sprawdzenia i izolacji.";
    } else {
      waterText += "Pozostaje powyżej punktu rosy z wybranym marginesem, ale nadal nie jest obliczoną temperaturą powierzchni podłogi.";
    }
    byId("rk-dp-water-note").textContent = waterText;

    if (syncChart) {
      byId("rk-dp-chart-air").value = clamp(air, 20, 32);
      byId("rk-dp-chart-surface").value = clamp(surface, 14, 25);
    }
    drawChart();
  }

  var canvas = byId("rk-dp-chart");

  function drawChart() {
    if (!canvas) { return; }
    var context = canvas.getContext("2d");
    if (!context) { return; }

    var air = parseFloat(byId("rk-dp-chart-air").value);
    var surface = parseFloat(byId("rk-dp-chart-surface").value);
    var margin = readNumber("rk-dp-margin", 0.5, 4);
    if (margin === null) { margin = 2; }

    byId("rk-dp-chart-air-output").textContent = formatNumber(air, 1) + "°C";
    byId("rk-dp-chart-surface-output").textContent = formatNumber(surface, 1) + "°C";

    var cssWidth = canvas.clientWidth;
    if (cssWidth < 280) { cssWidth = 280; }
    var cssHeight = canvas.clientHeight;
    if (cssHeight < 280) { cssHeight = 315; }
    var ratio = window.devicePixelRatio;
    if (!ratio) { ratio = 1; }
    ratio = Math.min(ratio, 2);
    canvas.width = Math.round(cssWidth * ratio);
    canvas.height = Math.round(cssHeight * ratio);
    context.setTransform(ratio, 0, 0, ratio, 0, 0);
    context.clearRect(0, 0, cssWidth, cssHeight);

    var compact = cssWidth < 560;
    var left = compact ? 47 : 66;
    var right = compact ? 14 : 28;
    var top = 26;
    var bottom = compact ? 56 : 62;
    var plotWidth = cssWidth - left - right;
    var plotHeight = cssHeight - top - bottom;
    var minRh = 20;
    var maxRhValue = 95;
    var minTemp = 4;
    var maxTemp = 34;

    function xPosition(rhValue) {
      return left + (rhValue - minRh) / (maxRhValue - minRh) * plotWidth;
    }
    function yPosition(tempValue) {
      return top + (maxTemp - tempValue) / (maxTemp - minTemp) * plotHeight;
    }

    var safeRh = maximumRelativeHumidity(air, surface - margin);
    var condensationRh = maximumRelativeHumidity(air, surface);
    var safeEdge = xPosition(clamp(safeRh, minRh, maxRhValue));
    var condensationEdge = xPosition(clamp(condensationRh, minRh, maxRhValue));

    context.fillStyle = "rgba(22, 131, 107, 0.10)";
    context.fillRect(left, top, Math.max(0, safeEdge - left), plotHeight);
    context.fillStyle = "rgba(214, 154, 22, 0.12)";
    context.fillRect(safeEdge, top, Math.max(0, condensationEdge - safeEdge), plotHeight);
    context.fillStyle = "rgba(202, 70, 61, 0.10)";
    context.fillRect(condensationEdge, top, Math.max(0, left + plotWidth - condensationEdge), plotHeight);

    context.lineWidth = 1;
    context.strokeStyle = "#d7e4e9";
    context.fillStyle = "#617786";
    context.font = compact ? "11px system-ui" : "12px system-ui";
    context.textAlign = "right";
    context.textBaseline = "middle";
    var temperatureTick;
    for (temperatureTick = 5; temperatureTick <= 30; temperatureTick += 5) {
      var y = yPosition(temperatureTick);
      context.beginPath();
      context.moveTo(left, y);
      context.lineTo(left + plotWidth, y);
      context.stroke();
      context.fillText(String(temperatureTick), left - 8, y);
    }

    var rhTicks = [20, 35, 50, 65, 80, 95];
    context.textAlign = "center";
    context.textBaseline = "top";
    var tickIndex;
    for (tickIndex = 0; tickIndex < rhTicks.length; tickIndex += 1) {
      var x = xPosition(rhTicks[tickIndex]);
      context.beginPath();
      context.moveTo(x, top);
      context.lineTo(x, top + plotHeight);
      context.stroke();
      context.fillText(String(rhTicks[tickIndex]), x, top + plotHeight + 9);
    }

    context.strokeStyle = "#8195a1";
    context.lineWidth = 1.2;
    context.beginPath();
    context.moveTo(left, top);
    context.lineTo(left, top + plotHeight);
    context.lineTo(left + plotWidth, top + plotHeight);
    context.stroke();

    function drawCurve(color, extraTemperature, width) {
      context.strokeStyle = color;
      context.lineWidth = width;
      context.beginPath();
      var rhValue;
      for (rhValue = minRh; rhValue <= maxRhValue; rhValue += 1) {
        var pointTemperature = dewPoint(air, rhValue) + extraTemperature;
        var px = xPosition(rhValue);
        var py = yPosition(pointTemperature);
        if (rhValue === minRh) { context.moveTo(px, py); }
        else { context.lineTo(px, py); }
      }
      context.stroke();
    }

    drawCurve("#183b50", 0, 3);
    drawCurve("#ff6946", margin, 3);

    context.strokeStyle = "#20b7cb";
    context.lineWidth = 4;
    context.beginPath();
    context.moveTo(left, yPosition(surface));
    context.lineTo(left + plotWidth, yPosition(surface));
    context.stroke();

    if (safeRh >= minRh) {
      if (safeRh <= maxRhValue) {
        context.save();
        context.setLineDash([6, 5]);
        context.strokeStyle = "#078fbe";
        context.lineWidth = 1.5;
        context.beginPath();
        context.moveTo(xPosition(safeRh), top);
        context.lineTo(xPosition(safeRh), top + plotHeight);
        context.stroke();
        context.restore();
      }
    }

    context.fillStyle = "#243d4c";
    context.font = compact ? "600 11px system-ui" : "700 12px system-ui";
    context.textAlign = "center";
    context.fillText("Wilgotność względna RH [%]", left + plotWidth / 2, cssHeight - 23);
    context.save();
    context.translate(compact ? 13 : 18, top + plotHeight / 2);
    context.rotate(-Math.PI / 2);
    context.fillText("Temperatura [°C]", 0, 0);
    context.restore();

    var summary = "Dla temperatury powietrza " + formatNumber(air, 1) + "°C, powierzchni " + formatNumber(surface, 1) + "°C i marginesu " + formatNumber(margin, 1) + " K ";
    if (safeRh < minRh) {
      summary += "pełny margines nie jest zachowany nawet przy 20% RH w zakresie wykresu. ";
    } else if (safeRh > maxRhValue) {
      summary += "pełny margines pozostaje zachowany do 95% RH w zakresie wykresu. ";
    } else {
      summary += "pełny margines zostaje wykorzystany przy około " + formatNumber(safeRh, 0) + "% RH. ";
    }
    if (condensationRh < 100) {
      summary += "Sama granica kondensacji dla wpisanej powierzchni wypada przy około " + formatNumber(condensationRh, 0) + "% RH.";
    } else {
      summary += "W zakresie do 100% RH wpisana powierzchnia pozostaje powyżej punktu rosy.";
    }
    byId("rk-dp-chart-summary").textContent = summary;
  }

  var autoData = {
    "1": {
      label: "Moduł 1 · dane wejściowe",
      title: "Pomiar musi opisywać warunki w chłodzonej strefie",
      text: "Czujnik temperatury i wilgotności względnej nie powinien znajdować się w słońcu, przy nawiewie, nad źródłem pary ani wewnątrz szafy. Jeden pomiar centralny może nie wychwycić lokalnego wzrostu wilgotności w łazience, kuchni lub pokoju po otwarciu okna.",
      fact1Title: "Co sprawdzić", fact1: "Miejsce czujnika, częstotliwość odczytu i dokładność RH.",
      fact2Title: "Typowy błąd", fact2: "Sterowanie całym domem według jednego, przypadkowo umieszczonego sensora.",
      fact3Title: "Bezpieczna reakcja", fact3: "Brak wiarygodnego odczytu powinien ograniczyć chłodzenie, a nie zezwalać na pełną moc."
    },
    "2": {
      label: "Moduł 2 · obliczenie",
      title: "Punkt rosy trzeba przeliczać po każdej istotnej zmianie warunków",
      text: "Algorytm łączy temperaturę powietrza i wilgotność względną. Stała granica zapisana na początku sezonu nie reaguje na napływ wilgotnego powietrza, kąpiel, gotowanie ani zmianę temperatury w pomieszczeniu.",
      fact1Title: "Dane", fact1: "Temperatura powietrza i RH z tej samej, aktualnej chwili.",
      fact2Title: "Typowy błąd", fact2: "Przyjęcie, że 16°C na zasilaniu jest bezpieczne przez całe lato.",
      fact3Title: "Bezpieczna reakcja", fact3: "Regularne przeliczenie i odrzucenie nielogicznych lub brakujących odczytów."
    },
    "3": {
      label: "Moduł 3 · zapas regulacyjny",
      title: "Margines ma uwzględniać niepewność oraz czas reakcji",
      text: "Regulator nie powinien czekać, aż powierzchnia dokładnie zrówna się z punktem rosy. Zapas dobiera się do dokładności czujników, ich rozmieszczenia, nierównomierności temperatur, histerezy, bezwładności podłogi i czasu przejścia elementów wykonawczych.",
      fact1Title: "Co sprawdzić", fact1: "Dokładność, histerezę, opóźnienie pomiaru i dynamikę zaworu.",
      fact2Title: "Typowy błąd", fact2: "Traktowanie 2 K jako uniwersalnego wymagania niezależnego od systemu.",
      fact3Title: "Bezpieczna reakcja", fact3: "Udokumentowany margines i wcześniejsze ograniczanie mocy."
    },
    "4": {
      label: "Moduł 4 · porównanie",
      title: "Liczy się najzimniejsza chroniona powierzchnia, nie tylko średnia podłogi",
      text: "Temperatura wierzchu posadzki może różnić się w pobliżu rur, przy krawędziach i pod różnymi okładzinami. Jeszcze chłodniejsze mogą być niezaizolowane przewody doprowadzające, armatura i rozdzielacz.",
      fact1Title: "Co sprawdzić", fact1: "Powierzchnię podłogi, przewody, rozdzielacz, armaturę i lokalne mostki.",
      fact2Title: "Typowy błąd", fact2: "Uznanie temperatury powrotu albo średniej pokojowej za temperaturę każdego elementu.",
      fact3Title: "Bezpieczna reakcja", fact3: "Kontrola krytycznych miejsc i poprawna izolacja elementów hydraulicznych."
    },
    "5": {
      label: "Moduł 5 · elementy wykonawcze",
      title: "Ograniczenie musi dotrzeć do właściwego elementu instalacji",
      text: "System może podnieść temperaturę zasilania, zmienić pozycję zaworu, ograniczyć przepływ lub zamknąć konkretną strefę. Sposób reakcji zależy od architektury, lecz nie może powodować utraty minimalnego przepływu źródła albo niekontrolowanej pracy pompy.",
      fact1Title: "Co sprawdzić", fact1: "Kierunek zaworu, przypisanie siłowników, pompę i sygnał do źródła.",
      fact2Title: "Typowy błąd", fact2: "Zamknięcie pętli bez sprawdzenia zachowania całego obiegu.",
      fact3Title: "Bezpieczna reakcja", fact3: "Sekwencja stopniowa oraz potwierdzenie osiągnięcia oczekiwanego stanu."
    },
    "6": {
      label: "Moduł 6 · wilgoć i awaria",
      title: "Gdy podłoga jest ograniczona, wilgoć i brakującą moc obsługuje inny element",
      text: "Podłoga ma nie kondensować. Jeżeli wysokie zyski i wilgotność ograniczają jej pracę, potrzebny może być system powietrzny zdolny do odbioru dodatkowej mocy oraz kontrolowanego odprowadzania skroplin. Awaria pomiaru powinna wywołać alarm i bezpieczny stan.",
      fact1Title: "Co sprawdzić", fact1: "Wydajność jawną i utajoną, odpływ skroplin oraz priorytety sterowania.",
      fact2Title: "Typowy błąd", fact2: "Założenie, że zwykła wentylacja zawsze obniży RH w parny dzień.",
      fact3Title: "Bezpieczna reakcja", fact3: "Ograniczenie podłogi, uruchomienie właściwego wsparcia i sygnalizacja usterki."
    }
  };

  function showAutoStep(step) {
    var data = autoData[step];
    if (!data) { return; }
    byId("rk-dp-auto-label").textContent = data.label;
    byId("rk-dp-auto-title").textContent = data.title;
    byId("rk-dp-auto-text").textContent = data.text;
    byId("rk-dp-auto-fact1-title").textContent = data.fact1Title;
    byId("rk-dp-auto-fact1").textContent = data.fact1;
    byId("rk-dp-auto-fact2-title").textContent = data.fact2Title;
    byId("rk-dp-auto-fact2").textContent = data.fact2;
    byId("rk-dp-auto-fact3-title").textContent = data.fact3Title;
    byId("rk-dp-auto-fact3").textContent = data.fact3;

    var cards = root.querySelectorAll(".rk-dp-auto-card");
    var index;
    for (index = 0; index < cards.length; index += 1) {
      cards[index].classList.remove("is-active");
      cards[index].setAttribute("aria-pressed", "false");
      if (cards[index].getAttribute("data-auto-step") === step) {
        cards[index].classList.add("is-active");
        cards[index].setAttribute("aria-pressed", "true");
      }
    }
  }

  var presetButtons = root.querySelectorAll(".rk-dp-preset");
  var presetIndex;
  for (presetIndex = 0; presetIndex < presetButtons.length; presetIndex += 1) {
    presetButtons[presetIndex].addEventListener("click", function () {
      setPreset(this.getAttribute("data-preset"));
    });
  }

  var calculatorInputs = ["rk-dp-air-temp", "rk-dp-rh", "rk-dp-surface-temp", "rk-dp-margin", "rk-dp-supply", "rk-dp-return"];
  var inputIndex;
  for (inputIndex = 0; inputIndex < calculatorInputs.length; inputIndex += 1) {
    byId(calculatorInputs[inputIndex]).addEventListener("input", function () {
      updateCalculator(false);
    });
  }
  byId("rk-dp-calc-button").addEventListener("click", function () {
    updateCalculator(true);
  });

  byId("rk-dp-chart-air").addEventListener("input", drawChart);
  byId("rk-dp-chart-surface").addEventListener("input", drawChart);

  var autoCards = root.querySelectorAll(".rk-dp-auto-card");
  var autoIndex;
  for (autoIndex = 0; autoIndex < autoCards.length; autoIndex += 1) {
    autoCards[autoIndex].addEventListener("click", function () {
      showAutoStep(this.getAttribute("data-auto-step"));
    });
  }

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

  updateCalculator(true);
  showAutoStep("1");
}());
</script>
<p>Artykuł <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 – kalkulator i zabezpieczenia.</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>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>Jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu?</title>
		<link>https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 20 Jan 2025 09:56:50 +0000</pubDate>
				<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Mikroklimat w domu]]></category>
		<category><![CDATA[Nawilżanie powietrza]]></category>
		<category><![CDATA[Nowoczesne systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Wilgotność powietrza]]></category>
		<category><![CDATA[Zdrowe warunki mieszkaniowe]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[mikroklimat w domu]]></category>
		<category><![CDATA[nawilżacze powietrza]]></category>
		<category><![CDATA[nowoczesne ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[rekuperacja]]></category>
		<category><![CDATA[systemy ogrzewania]]></category>
		<category><![CDATA[wilgotność powietrza]]></category>
		<category><![CDATA[zdrowy mikroklimat]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1989</guid>

					<description><![CDATA[<p>Jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu? Odkryj, jak nowoczesne systemy ogrzewania podłogowego mogą wpływać na mikroklimat w Twoim domu. Dowiedz się, jak zadbać o odpowiedni poziom wilgotności powietrza i jakie praktyczne rozwiązania zastosować, aby zapewnić zdrowe i komfortowe warunki mieszkalne. Poznaj sposoby na minimalizowanie negatywnych skutków oraz korzyści, jakie niesie ze sobą efektywna instalacja podłogówki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/">Jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-how-guide {
    --rk-navy: #102a3a;
    --rk-navy-2: #173f55;
    --rk-cyan: #22c7df;
    --rk-cyan-dark: #078caf;
    --rk-cyan-pale: #e9fbfe;
    --rk-orange: #ff5a36;
    --rk-orange-dark: #d83c1d;
    --rk-orange-pale: #fff3ee;
    --rk-green: #16825d;
    --rk-green-pale: #ecfdf5;
    --rk-red: #b42318;
    --rk-red-pale: #fff1f0;
    --rk-text: #385064;
    --rk-muted: #64788a;
    --rk-line: #d8e5ec;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    --rk-shadow: 0 24px 60px rgba(16, 42, 58, 0.12);
    color: var(--rk-text);
    font-family: inherit;
    font-size: 18px;
    line-height: 1.82;
    margin: 0 auto;
    max-width: 1480px;
    overflow: hidden;
    position: relative;
  }

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

  #rk-how-guide img {
    height: auto;
    max-width: 100%;
  }

  #rk-how-guide a {
    color: var(--rk-cyan-dark);
    font-weight: 750;
    text-decoration-thickness: 2px;
    text-underline-offset: 3px;
  }

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

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

  #rk-how-guide button:focus-visible,
  #rk-how-guide a:focus-visible,
  #rk-how-guide input:focus-visible {
    outline: 3px solid rgba(34, 199, 223, 0.42);
    outline-offset: 3px;
  }

  #rk-how-guide h2,
  #rk-how-guide h3,
  #rk-how-guide h4 {
    color: var(--rk-navy);
    font-family: inherit;
    font-weight: 900;
    letter-spacing: -0.025em;
    line-height: 1.18;
    margin: 0;
  }

  #rk-how-guide p {
    margin: 0 0 1.25em;
  }

  #rk-how-guide strong {
    color: var(--rk-navy);
  }

  #rk-how-guide .rk-how-shell {
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 34px;
    box-shadow: var(--rk-shadow);
    overflow: hidden;
    position: relative;
  }

  #rk-how-guide .rk-how-progress-track {
    background: rgba(255, 255, 255, 0.12);
    height: 5px;
    left: 0;
    position: absolute;
    right: 0;
    top: 0;
    z-index: 9;
  }

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

  #rk-how-guide .rk-how-hero {
    background:
      radial-gradient(circle at 88% 18%, rgba(255, 90, 54, 0.22), transparent 29%),
      radial-gradient(circle at 74% 88%, rgba(34, 199, 223, 0.18), transparent 34%),
      linear-gradient(135deg, #0b2232 0%, #12354a 60%, #1d3f50 100%);
    color: var(--rk-white);
    isolation: isolate;
    overflow: hidden;
    padding: clamp(42px, 6vw, 92px);
    position: relative;
  }

  #rk-how-guide .rk-how-hero::before,
  #rk-how-guide .rk-how-hero::after {
    border: 1px solid rgba(255, 255, 255, 0.09);
    border-radius: 50%;
    content: "";
    pointer-events: none;
    position: absolute;
    z-index: -1;
  }

  #rk-how-guide .rk-how-hero::before {
    height: 420px;
    right: -150px;
    top: -210px;
    width: 420px;
  }

  #rk-how-guide .rk-how-hero::after {
    bottom: -280px;
    height: 560px;
    right: 9%;
    width: 560px;
  }

  #rk-how-guide .rk-how-badge {
    align-items: center;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 999px;
    color: #d8f9ff;
    display: inline-flex;
    font-size: 0.78em;
    font-weight: 900;
    gap: 10px;
    letter-spacing: 0.1em;
    margin-bottom: 28px;
    padding: 10px 15px;
    text-transform: uppercase;
  }

  #rk-how-guide .rk-how-badge::before {
    background: var(--rk-orange);
    border-radius: 50%;
    box-shadow: 0 0 0 7px rgba(255, 90, 54, 0.16);
    content: "";
    height: 9px;
    width: 9px;
  }

  #rk-how-guide .rk-how-hero h2 {
    color: var(--rk-white);
    font-size: clamp(2.2rem, 5.3vw, 5rem);
    max-width: 1120px;
  }

  #rk-how-guide .rk-how-hero h2 span {
    color: #71ebf7;
  }

  #rk-how-guide .rk-how-hook {
    background: rgba(255, 255, 255, 0.08);
    border-left: 5px solid var(--rk-orange);
    border-radius: 0 22px 22px 0;
    margin: 34px 0 24px;
    max-width: 1120px;
    padding: 23px 28px;
  }

  #rk-how-guide .rk-how-hook p,
  #rk-how-guide .rk-how-hook strong {
    color: var(--rk-white);
    margin: 0;
  }

  #rk-how-guide .rk-how-hero-lead {
    color: #d5e4ed;
    font-size: clamp(1rem, 1.8vw, 1.25rem);
    max-width: 1090px;
  }

  #rk-how-guide .rk-how-hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 22px;
    margin-top: 28px;
  }

  #rk-how-guide .rk-how-hero-meta span {
    align-items: center;
    color: #c4d7e2;
    display: inline-flex;
    font-size: 0.78em;
    font-weight: 800;
    gap: 9px;
  }

  #rk-how-guide .rk-how-hero-meta span::before {
    background: var(--rk-cyan);
    border-radius: 50%;
    content: "";
    height: 7px;
    width: 7px;
  }

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

  #rk-how-guide .rk-how-author-strip img {
    border: 3px solid rgba(255, 255, 255, 0.8);
    border-radius: 50%;
    height: 58px;
    object-fit: cover;
    width: 58px;
  }

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

  #rk-how-guide .rk-how-author-strip b {
    color: var(--rk-white);
    font-size: 1.03em;
  }

  #rk-how-guide .rk-how-author-strip small {
    color: #bcd1dd;
    line-height: 1.45;
  }

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

  #rk-how-guide .rk-how-learn {
    background: linear-gradient(135deg, var(--rk-soft), #eefcff);
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    margin-bottom: 32px;
    padding: clamp(24px, 4vw, 42px);
  }

  #rk-how-guide .rk-how-learn-title {
    font-size: clamp(1.35rem, 2.6vw, 2rem);
    margin-bottom: 24px;
  }

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

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

  #rk-how-guide .rk-how-learn-card {
    align-items: flex-start;
    display: flex;
    gap: 16px;
  }

  #rk-how-guide .rk-how-learn-no,
  #rk-how-guide .rk-how-check-no {
    align-items: center;
    background: var(--rk-orange-pale);
    border-radius: 13px;
    color: var(--rk-orange-dark);
    display: inline-flex;
    flex: 0 0 46px;
    font-size: 0.8em;
    font-weight: 950;
    height: 46px;
    justify-content: center;
  }

  #rk-how-guide .rk-how-learn-card h4,
  #rk-how-guide .rk-how-card h4,
  #rk-how-guide .rk-how-check h4 {
    font-size: 1.03em;
    margin-bottom: 7px;
  }

  #rk-how-guide .rk-how-learn-card p,
  #rk-how-guide .rk-how-card p,
  #rk-how-guide .rk-how-check p {
    font-size: 0.89em;
    line-height: 1.65;
    margin: 0;
  }

  #rk-how-guide .rk-how-nav {
    background: var(--rk-navy);
    border-radius: 24px;
    color: var(--rk-white);
    margin: 0 0 48px;
    padding: 24px;
  }

  #rk-how-guide .rk-how-nav strong {
    color: var(--rk-white);
    display: block;
    font-size: 0.85em;
    letter-spacing: 0.1em;
    margin-bottom: 15px;
    text-transform: uppercase;
  }

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

  #rk-how-guide .rk-how-nav a {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 999px;
    color: #eaf7fb;
    font-size: 0.78em;
    padding: 8px 13px;
    text-decoration: none;
  }

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

  #rk-how-guide .rk-how-section {
    scroll-margin-top: 30px;
  }

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

  #rk-how-guide .rk-how-section-head {
    align-items: flex-start;
    display: flex;
    gap: 18px;
    margin-bottom: 28px;
  }

  #rk-how-guide .rk-how-section-no {
    align-items: center;
    background: var(--rk-navy);
    border-radius: 16px;
    color: var(--rk-white);
    display: inline-flex;
    flex: 0 0 58px;
    font-size: 1.05em;
    font-weight: 950;
    height: 58px;
    justify-content: center;
  }

  #rk-how-guide .rk-how-section-head h2 {
    font-size: clamp(1.65rem, 3.5vw, 2.75rem);
    margin-bottom: 8px;
  }

  #rk-how-guide .rk-how-section-head p {
    color: var(--rk-muted);
    font-size: 0.92em;
    margin: 0;
  }

  #rk-how-guide .rk-how-answer {
    align-items: center;
    background: linear-gradient(135deg, var(--rk-orange-pale), #fffaf7);
    border: 1px solid #ffc7b8;
    border-radius: 26px;
    display: grid;
    gap: 28px;
    grid-template-columns: minmax(0, 1.55fr) minmax(230px, 0.45fr);
    margin: 28px 0;
    padding: clamp(25px, 4vw, 44px);
  }

  #rk-how-guide .rk-how-answer-label,
  #rk-how-guide .rk-how-card-tag,
  #rk-how-guide .rk-how-formula-label {
    color: var(--rk-orange-dark);
    display: block;
    font-size: 0.72em;
    font-weight: 950;
    letter-spacing: 0.1em;
    margin-bottom: 9px;
    text-transform: uppercase;
  }

  #rk-how-guide .rk-how-answer-main {
    display: block;
    font-size: clamp(1.25rem, 2.8vw, 2rem);
    line-height: 1.28;
    margin-bottom: 14px;
  }

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

  #rk-how-guide .rk-how-answer-badge {
    background: var(--rk-orange);
    border-radius: 22px;
    color: var(--rk-white);
    padding: 25px;
    text-align: center;
  }

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

  #rk-how-guide .rk-how-answer-badge b {
    font-size: 2.5em;
    line-height: 1;
    margin-bottom: 9px;
  }

  #rk-how-guide .rk-how-answer-badge span {
    font-size: 0.78em;
    font-weight: 800;
    line-height: 1.45;
  }

  #rk-how-guide .rk-how-truth,
  #rk-how-guide .rk-how-note,
  #rk-how-guide .rk-how-warning {
    border-radius: 18px;
    margin: 27px 0;
    padding: 22px 24px;
  }

  #rk-how-guide .rk-how-truth {
    background: var(--rk-cyan-pale);
    border-left: 5px solid var(--rk-cyan-dark);
  }

  #rk-how-guide .rk-how-note {
    background: var(--rk-green-pale);
    border-left: 5px solid var(--rk-green);
  }

  #rk-how-guide .rk-how-warning {
    background: var(--rk-red-pale);
    border-left: 5px solid var(--rk-red);
  }

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

  #rk-how-guide .rk-how-flow {
    background: var(--rk-soft);
    border: 1px solid var(--rk-line);
    border-radius: 27px;
    margin: 30px 0;
    padding: clamp(22px, 4vw, 40px);
  }

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

  #rk-how-guide .rk-how-flow-step {
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    color: var(--rk-navy);
    cursor: pointer;
    min-height: 126px;
    padding: 17px 12px;
    position: relative;
    text-align: left;
    transition: transform 0.2s ease, border-color 0.2s ease, background 0.2s ease;
  }

  #rk-how-guide .rk-how-flow-step::after {
    color: var(--rk-cyan-dark);
    content: "→";
    font-size: 1.25em;
    font-weight: 900;
    position: absolute;
    right: -12px;
    top: 46px;
    z-index: 2;
  }

  #rk-how-guide .rk-how-flow-step:last-child::after {
    content: "";
  }

  #rk-how-guide .rk-how-flow-step:hover {
    transform: translateY(-3px);
  }

  #rk-how-guide .rk-how-flow-step.is-active {
    background: var(--rk-navy);
    border-color: var(--rk-navy);
    color: var(--rk-white);
  }

  #rk-how-guide .rk-how-flow-step b,
  #rk-how-guide .rk-how-flow-step small {
    color: inherit;
    display: block;
  }

  #rk-how-guide .rk-how-flow-step b {
    font-size: 0.92em;
    line-height: 1.3;
    margin-top: 13px;
  }

  #rk-how-guide .rk-how-flow-step small {
    font-size: 0.7em;
    line-height: 1.35;
    margin-top: 5px;
  }

  #rk-how-guide .rk-how-flow-no {
    align-items: center;
    background: var(--rk-cyan-pale);
    border-radius: 10px;
    color: var(--rk-cyan-dark);
    display: inline-flex;
    font-size: 0.72em;
    font-weight: 950;
    height: 31px;
    justify-content: center;
    width: 31px;
  }

  #rk-how-guide .rk-how-flow-step.is-active .rk-how-flow-no {
    background: var(--rk-orange);
    color: var(--rk-white);
  }

  #rk-how-guide .rk-how-flow-detail {
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    margin-top: 18px;
    min-height: 142px;
    padding: 24px;
  }

  #rk-how-guide .rk-how-flow-detail strong {
    display: block;
    font-size: 1.18em;
    margin-bottom: 8px;
  }

  #rk-how-guide .rk-how-flow-detail p {
    margin: 0;
  }

  #rk-how-guide .rk-how-formula {
    background: var(--rk-navy);
    border-radius: 23px;
    color: var(--rk-white);
    margin: 28px 0;
    padding: clamp(23px, 4vw, 38px);
  }

  #rk-how-guide .rk-how-formula-label {
    color: #7ceaf5;
  }

  #rk-how-guide .rk-how-equation {
    color: var(--rk-white);
    font-size: clamp(1.25rem, 3.3vw, 2.25rem);
    font-weight: 900;
    letter-spacing: 0.01em;
    line-height: 1.35;
  }

  #rk-how-guide .rk-how-equation small {
    color: #c9dce6;
    display: block;
    font-size: 0.44em;
    font-weight: 500;
    line-height: 1.6;
    margin-top: 13px;
  }

  #rk-how-guide .rk-how-calculator {
    background: linear-gradient(145deg, #0c293a, #16465d);
    border-radius: 28px;
    color: var(--rk-white);
    margin: 30px 0;
    overflow: hidden;
  }

  #rk-how-guide .rk-how-calc-head {
    border-bottom: 1px solid rgba(255, 255, 255, 0.14);
    padding: clamp(25px, 4vw, 40px);
  }

  #rk-how-guide .rk-how-calc-head h3,
  #rk-how-guide .rk-how-calc-head p {
    color: var(--rk-white);
  }

  #rk-how-guide .rk-how-calc-head h3 {
    font-size: clamp(1.45rem, 3vw, 2.15rem);
    margin-bottom: 10px;
  }

  #rk-how-guide .rk-how-calc-head p {
    color: #cfe2ea;
    margin: 0;
  }

  #rk-how-guide .rk-how-calc-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(300px, 0.78fr);
  }

  #rk-how-guide .rk-how-controls {
    border-right: 1px solid rgba(255, 255, 255, 0.14);
    padding: clamp(25px, 4vw, 40px);
  }

  #rk-how-guide .rk-how-control + .rk-how-control {
    margin-top: 25px;
  }

  #rk-how-guide .rk-how-control label {
    align-items: baseline;
    color: var(--rk-white);
    display: flex;
    font-size: 0.88em;
    font-weight: 800;
    justify-content: space-between;
    margin-bottom: 9px;
  }

  #rk-how-guide .rk-how-control output {
    color: #79edf7;
    font-size: 1.06em;
    font-weight: 950;
  }

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

  #rk-how-guide .rk-how-control-scale {
    color: #a9c0cc;
    display: flex;
    font-size: 0.68em;
    justify-content: space-between;
    margin-top: 4px;
  }

  #rk-how-guide .rk-how-results {
    display: grid;
    gap: 12px;
    padding: clamp(25px, 4vw, 40px);
  }

  #rk-how-guide .rk-how-result {
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 17px;
    padding: 17px;
  }

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

  #rk-how-guide .rk-how-result span {
    color: #bfd3dd;
    font-size: 0.72em;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }

  #rk-how-guide .rk-how-result b {
    color: var(--rk-white);
    font-size: 1.55em;
    margin-top: 3px;
  }

  #rk-how-guide .rk-how-calc-foot {
    background: rgba(0, 0, 0, 0.13);
    color: #bfd3dd;
    font-size: 0.76em;
    line-height: 1.6;
    margin: 0;
    padding: 18px clamp(25px, 4vw, 40px);
  }

  #rk-how-guide .rk-how-layers {
    background: var(--rk-soft);
    border: 1px solid var(--rk-line);
    border-radius: 25px;
    display: grid;
    gap: 22px;
    grid-template-columns: minmax(250px, 0.65fr) minmax(0, 1.35fr);
    margin: 28px 0;
    padding: clamp(24px, 4vw, 38px);
  }

  #rk-how-guide .rk-how-layer-stack {
    align-self: center;
    display: flex;
    flex-direction: column;
    gap: 6px;
  }

  #rk-how-guide .rk-how-layer {
    align-items: center;
    border-radius: 10px;
    color: var(--rk-navy);
    display: flex;
    font-size: 0.78em;
    font-weight: 900;
    justify-content: space-between;
    min-height: 45px;
    padding: 9px 13px;
  }

  #rk-how-guide .rk-how-layer:nth-child(1) { background: #e0f7fa; }
  #rk-how-guide .rk-how-layer:nth-child(2) { background: #d4dde3; }
  #rk-how-guide .rk-how-layer:nth-child(3) { background: #ffd1c6; }
  #rk-how-guide .rk-how-layer:nth-child(4) { background: #dce6eb; }
  #rk-how-guide .rk-how-layer:nth-child(5) { background: #d7f4ea; }

  #rk-how-guide .rk-how-layer small {
    color: inherit;
    font-size: 0.8em;
    font-weight: 700;
  }

  #rk-how-guide .rk-how-layers h3 {
    font-size: clamp(1.35rem, 2.8vw, 2rem);
    margin-bottom: 14px;
  }

  #rk-how-guide .rk-how-table-wrap {
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    margin: 29px 0;
    overflow: hidden;
  }

  #rk-how-guide .rk-how-table-title {
    background: var(--rk-navy);
    color: var(--rk-white);
    display: block;
    font-size: 0.78em;
    font-weight: 900;
    letter-spacing: 0.08em;
    padding: 14px 18px;
    text-transform: uppercase;
  }

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

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

  #rk-how-guide th {
    background: #eaf4f7;
    color: var(--rk-navy);
    font-size: 0.78em;
    font-weight: 900;
    letter-spacing: 0.04em;
    text-transform: uppercase;
  }

  #rk-how-guide td {
    font-size: 0.88em;
    line-height: 1.62;
  }

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

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

  #rk-how-guide .rk-how-card {
    border-top: 4px solid var(--rk-cyan);
  }

  #rk-how-guide .rk-how-card-tag {
    color: var(--rk-cyan-dark);
  }

  #rk-how-guide .rk-how-check-grid {
    margin: 26px 0;
  }

  #rk-how-guide .rk-how-check {
    align-items: flex-start;
    display: flex;
    gap: 15px;
  }

  #rk-how-guide .rk-how-faq-list {
    display: grid;
    gap: 13px;
    margin-top: 26px;
  }

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

  #rk-how-guide details.rk-how-faq[open] {
    border-color: #87dae7;
    box-shadow: 0 12px 28px rgba(16, 42, 58, 0.07);
  }

  #rk-how-guide details.rk-how-faq summary {
    color: var(--rk-navy);
    cursor: pointer;
    font-weight: 900;
    line-height: 1.45;
    list-style: none;
    padding: 19px 55px 19px 21px;
    position: relative;
  }

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

  #rk-how-guide details.rk-how-faq summary::after {
    align-items: center;
    background: var(--rk-cyan-pale);
    border-radius: 10px;
    color: var(--rk-cyan-dark);
    content: "+";
    display: flex;
    font-size: 1.25em;
    font-weight: 900;
    height: 31px;
    justify-content: center;
    position: absolute;
    right: 16px;
    top: 16px;
    width: 31px;
  }

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

  #rk-how-guide .rk-how-faq-answer {
    border-top: 1px solid var(--rk-line);
    padding: 18px 21px 21px;
  }

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

  #rk-how-guide .rk-how-sources {
    background: var(--rk-soft);
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    font-size: 0.78em;
    line-height: 1.72;
    margin-top: 34px;
    padding: 23px;
  }

  #rk-how-guide .rk-how-sources strong {
    display: block;
    font-size: 1.08em;
    margin-bottom: 8px;
  }

  #rk-how-guide .rk-how-cta {
    background: linear-gradient(135deg, var(--rk-navy), #1e4659 72%, #514044);
    border-radius: 28px;
    color: var(--rk-white);
    margin-top: 58px;
    padding: clamp(30px, 5vw, 54px);
    text-align: center;
  }

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

  #rk-how-guide .rk-how-cta h3 {
    font-size: clamp(1.55rem, 3.5vw, 2.7rem);
    margin-bottom: 13px;
  }

  #rk-how-guide .rk-how-cta p {
    color: #cfe0e8;
    margin: 0 auto 24px;
    max-width: 900px;
  }

  #rk-how-guide .rk-how-cta-link {
    background: var(--rk-orange);
    border-radius: 16px;
    box-shadow: 0 14px 30px rgba(255, 90, 54, 0.28);
    color: var(--rk-white) !important;
    display: block;
    font-size: clamp(0.92rem, 2vw, 1.16rem);
    font-weight: 950;
    margin: 0 auto;
    max-width: 980px;
    padding: 19px 24px;
    text-decoration: none;
    transition: transform 0.2s ease, background 0.2s ease;
  }

  #rk-how-guide .rk-how-cta-link:hover,
  #rk-how-guide .rk-how-cta-link:focus-visible {
    background: var(--rk-orange-dark);
    color: var(--rk-white);
    transform: translateY(-2px);
  }

  #rk-how-guide .rk-how-cta small {
    color: #aec5d0;
    display: block;
    line-height: 1.5;
    margin-top: 15px;
  }

  #rk-how-guide .rk-how-author-box {
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    margin-top: 42px;
    overflow: hidden;
  }

  #rk-how-guide .rk-how-author-head {
    align-items: center;
    background: var(--rk-navy);
    border-bottom: 5px solid var(--rk-cyan);
    display: flex;
    justify-content: space-between;
    padding: clamp(25px, 4vw, 38px);
  }

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

  #rk-how-guide .rk-how-author-head h3 {
    font-size: clamp(1.65rem, 3.2vw, 2.7rem);
    margin-bottom: 5px;
  }

  #rk-how-guide .rk-how-author-head p {
    color: #c9dce6;
    margin: 0;
  }

  #rk-how-guide .rk-how-author-mark {
    border: 1px solid rgba(34, 199, 223, 0.38);
    border-radius: 14px;
    color: #7ceaf5;
    flex: 0 0 auto;
    font-size: 0.78em;
    font-weight: 950;
    letter-spacing: 0.08em;
    margin-left: 20px;
    padding: 13px 17px;
  }

  #rk-how-guide .rk-how-author-main {
    display: grid;
    grid-template-columns: minmax(255px, 0.6fr) minmax(0, 1.4fr);
  }

  #rk-how-guide .rk-how-author-profile {
    align-items: center;
    background: var(--rk-soft);
    border-right: 1px solid var(--rk-line);
    display: flex;
    flex-direction: column;
    padding: clamp(28px, 4vw, 44px);
    text-align: center;
  }

  #rk-how-guide .rk-how-author-profile img {
    border: 5px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 15px 34px rgba(16, 42, 58, 0.16);
    height: 190px;
    object-fit: cover;
    width: 190px;
  }

  #rk-how-guide .rk-how-author-profile h4 {
    font-size: 1.55em;
    margin: 23px 0 7px;
  }

  #rk-how-guide .rk-how-author-role {
    color: var(--rk-cyan-dark);
    font-size: 0.78em;
    font-weight: 950;
    letter-spacing: 0.06em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-how-guide .rk-how-author-content {
    min-width: 0;
  }

  #rk-how-guide .rk-how-quote {
    padding: clamp(28px, 4vw, 45px);
  }

  #rk-how-guide .rk-how-quote::before {
    color: var(--rk-cyan);
    content: "“";
    display: block;
    font-family: Georgia, serif;
    font-size: 4em;
    font-weight: 900;
    height: 45px;
    line-height: 1;
  }

  #rk-how-guide .rk-how-quote blockquote {
    color: var(--rk-navy);
    font-size: clamp(1.05rem, 2vw, 1.38rem);
    font-style: italic;
    font-weight: 800;
    line-height: 1.65;
    margin: 0;
  }

  #rk-how-guide .rk-how-tabs {
    border-top: 1px solid var(--rk-line);
  }

  #rk-how-guide .rk-how-tab-buttons {
    background: var(--rk-soft);
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-how-guide .rk-how-tab-button {
    background: transparent;
    border: 0;
    border-bottom: 3px solid transparent;
    color: var(--rk-muted);
    cursor: pointer;
    font-size: 0.78em;
    font-weight: 950;
    letter-spacing: 0.06em;
    padding: 18px 12px;
    text-transform: uppercase;
  }

  #rk-how-guide .rk-how-tab-button.is-active {
    background: var(--rk-white);
    border-bottom-color: var(--rk-cyan-dark);
    color: var(--rk-cyan-dark);
  }

  #rk-how-guide .rk-how-tab-panel {
    display: none;
    padding: clamp(25px, 4vw, 40px);
  }

  #rk-how-guide .rk-how-tab-panel.is-active {
    display: block;
  }

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

  #rk-how-guide .rk-how-portals {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }

  #rk-how-guide .rk-how-portals a {
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-navy);
    padding: 9px 15px;
    text-decoration: none;
  }

  #rk-how-guide .rk-how-portals a:hover,
  #rk-how-guide .rk-how-portals a:focus-visible {
    background: var(--rk-cyan-pale);
    border-color: var(--rk-cyan);
  }

  #rk-how-guide .rk-how-chart {
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    margin: 28px 0;
    overflow: hidden;
  }

  #rk-how-guide .rk-how-chart-head {
    align-items: flex-start;
    background: var(--rk-soft);
    border-bottom: 1px solid var(--rk-line);
    display: flex;
    gap: 22px;
    justify-content: space-between;
    padding: 22px 25px;
  }

  #rk-how-guide .rk-how-chart-head h3 {
    font-size: clamp(1.2rem, 2.4vw, 1.75rem);
    margin-bottom: 6px;
  }

  #rk-how-guide .rk-how-chart-head p {
    color: var(--rk-muted);
    font-size: 0.82em;
    margin: 0;
  }

  #rk-how-guide .rk-how-chart-legend {
    align-items: center;
    color: var(--rk-navy);
    display: inline-flex;
    flex: 0 0 auto;
    font-size: 0.74em;
    font-weight: 900;
    gap: 8px;
    margin-top: 5px;
  }

  #rk-how-guide .rk-how-chart-legend::before {
    background: var(--rk-cyan-dark);
    border-radius: 999px;
    content: "";
    height: 5px;
    width: 32px;
  }

  #rk-how-guide .rk-how-chart-stage {
    padding: 16px 18px 8px;
  }

  #rk-how-guide .rk-how-chart-stage svg {
    display: block;
    height: auto;
    max-height: 430px;
    width: 100%;
  }

  #rk-how-guide .rk-how-chart-grid {
    stroke: #dce8ee;
    stroke-width: 1;
  }

  #rk-how-guide .rk-how-chart-axis {
    stroke: #718796;
    stroke-width: 1.5;
  }

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

  #rk-how-guide .rk-how-chart-area {
    fill: url(#rk-how-area-gradient);
    opacity: 0.34;
  }

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

  #rk-how-guide .rk-how-chart-label {
    fill: #60788a;
    font-family: inherit;
    font-size: 14px;
    font-weight: 750;
  }

  #rk-how-guide .rk-how-chart-value {
    fill: var(--rk-orange-dark);
    font-family: inherit;
    font-size: 16px;
    font-weight: 950;
  }

  #rk-how-guide .rk-how-meter {
    background: rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    height: 12px;
    margin-top: 11px;
    overflow: hidden;
  }

  #rk-how-guide .rk-how-meter-fill {
    background: linear-gradient(90deg, #ff6748 0%, #ffb24c 22%, #31d6bd 42%, #22c7df 66%, #8d79e6 100%);
    border-radius: inherit;
    height: 100%;
    transition: width 0.25s ease;
    width: 50%;
  }

  #rk-how-guide .rk-how-status {
    border-radius: 12px;
    color: var(--rk-white);
    display: inline-block;
    font-size: 0.72em;
    font-weight: 950;
    letter-spacing: 0.04em;
    margin-top: 9px;
    padding: 7px 10px;
    text-transform: uppercase;
  }

  #rk-how-guide .rk-how-status.is-low { background: #c23d27; }
  #rk-how-guide .rk-how-status.is-watch { background: #c88612; }
  #rk-how-guide .rk-how-status.is-good { background: #16825d; }
  #rk-how-guide .rk-how-status.is-high { background: #6750a4; }

  #rk-how-guide .rk-how-diagnostic {
    display: grid;
    gap: 14px;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin: 28px 0;
  }

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

  #rk-how-guide .rk-how-diagnostic-card b {
    display: block;
    font-size: 1.45em;
    margin-bottom: 8px;
  }

  #rk-how-guide .rk-how-diagnostic-card p {
    font-size: 0.82em;
    line-height: 1.62;
    margin: 0;
  }

  #rk-how-guide .rk-how-diagnostic-card:nth-child(1) { border-top: 5px solid #c23d27; }
  #rk-how-guide .rk-how-diagnostic-card:nth-child(2) { border-top: 5px solid #d89b2b; }
  #rk-how-guide .rk-how-diagnostic-card:nth-child(3) { border-top: 5px solid #16825d; }
  #rk-how-guide .rk-how-diagnostic-card:nth-child(4) { border-top: 5px solid #6750a4; }

  @media (max-width: 1060px) {
    #rk-how-guide .rk-how-flow-grid {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    #rk-how-guide .rk-how-flow-step:nth-child(3)::after,
    #rk-how-guide .rk-how-flow-step:last-child::after {
      content: "";
    }

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

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

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

    #rk-how-guide .rk-how-shell {
      border-radius: 24px;
    }

    #rk-how-guide .rk-how-answer,
    #rk-how-guide .rk-how-calc-body,
    #rk-how-guide .rk-how-layers,
    #rk-how-guide .rk-how-author-main {
      grid-template-columns: 1fr;
    }

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

    #rk-how-guide .rk-how-controls {
      border-bottom-color: rgba(255, 255, 255, 0.14);
    }

    #rk-how-guide .rk-how-answer-badge {
      text-align: left;
    }
  }

  @media (max-width: 700px) {
    #rk-how-guide .rk-how-hero,
    #rk-how-guide .rk-how-content {
      padding-left: 20px;
      padding-right: 20px;
    }

    #rk-how-guide .rk-how-learn-grid,
    #rk-how-guide .rk-how-card-grid,
    #rk-how-guide .rk-how-check-grid,
    #rk-how-guide .rk-how-flow-grid,
    #rk-how-guide .rk-how-diagnostic {
      grid-template-columns: 1fr;
    }

    #rk-how-guide .rk-how-chart-head {
      display: block;
    }

    #rk-how-guide .rk-how-chart-legend {
      margin-top: 12px;
    }

    #rk-how-guide .rk-how-flow-step {
      min-height: 0;
    }

    #rk-how-guide .rk-how-flow-step::after,
    #rk-how-guide .rk-how-flow-step:nth-child(3)::after {
      bottom: -15px;
      content: "↓";
      left: 50%;
      right: auto;
      top: auto;
      transform: translateX(-50%);
    }

    #rk-how-guide .rk-how-flow-step:last-child::after {
      content: "";
    }

    #rk-how-guide .rk-how-section-head {
      display: block;
    }

    #rk-how-guide .rk-how-section-no {
      height: 48px;
      margin-bottom: 14px;
      width: 48px;
    }

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

    #rk-how-guide .rk-how-table-title {
      border-radius: 16px;
      margin-bottom: 13px;
    }

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

    #rk-how-guide thead {
      display: none;
    }

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

    #rk-how-guide td,
    #rk-how-guide tr:last-child td {
      border-bottom: 1px solid var(--rk-line);
      display: grid;
      gap: 10px;
      grid-template-columns: minmax(105px, 0.45fr) minmax(0, 1fr);
      padding: 14px 15px;
    }

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

    #rk-how-guide td::before {
      color: var(--rk-cyan-dark);
      content: attr(data-label);
      font-size: 0.72em;
      font-weight: 950;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    #rk-how-guide .rk-how-author-head {
      align-items: flex-start;
      display: block;
    }

    #rk-how-guide .rk-how-author-mark {
      display: inline-block;
      margin: 17px 0 0;
    }

    #rk-how-guide .rk-how-tab-button {
      font-size: 0.68em;
      letter-spacing: 0.02em;
      padding: 15px 6px;
    }
  }

  @media (max-width: 460px) {
    #rk-how-guide {
      font-size: 16px;
    }

    #rk-how-guide .rk-how-hero h2 {
      font-size: 2.05rem;
    }

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

    #rk-how-guide .rk-how-author-strip img {
      height: 50px;
      width: 50px;
    }

    #rk-how-guide td {
      display: block;
    }

    #rk-how-guide td::before {
      display: block;
      margin-bottom: 5px;
    }

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

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

<article id="rk-how-guide">
  <div class="rk-how-shell">
    <div class="rk-how-progress-track" aria-hidden="true"><div class="rk-how-progress"></div></div>

    <header class="rk-how-hero">
      <div class="rk-how-badge">Wilgotność • fizyka budowli • komfort</div>
      <h2>Ogrzewanie podłogowe a wilgotność powietrza: <span>co naprawdę dzieje się zimą?</span></h2>

      <div class="rk-how-hook">
        <p><strong>Podłogówka nie usuwa pary wodnej z powietrza. Gdy ogrzewa pomieszczenie bez doprowadzenia dodatkowej wilgoci, spada przede wszystkim wilgotność względna – nie ilość wody, która nagle „znika” z domu.</strong></p>
      </div>

      <p class="rk-how-hero-lead">Wyjaśniam różnicę między wilgotnością względną, zawartością wilgoci i punktem rosy. Pokazuję również, dlaczego zimą większe znaczenie od rodzaju odbiornika ciepła mają wentylacja, infiltracja, temperatura wewnętrzna, odzysk wilgoci oraz codzienne źródła pary wodnej.</p>

      <div class="rk-how-hero-meta">
        <span>Aktualizacja: 24 sierpnia 2026 r.</span>
        <span>Obliczenia: równanie Magnusa • bilans wilgoci</span>
        <span>Poziom: inwestor, instalator i projektant</span>
      </div>

      <div class="rk-how-author-strip" itemscope itemtype="https://schema.org/Person">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych i specjalista ogrzewania podłogowego" width="58" height="58" loading="eager" itemprop="image">
        <div>
          <b itemprop="name">Robert Kucharski</b>
          <small itemprop="jobTitle">Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego • autor Projekt-Ogrzewania.pl</small>
        </div>
      </div>
    </header>

    <div class="rk-how-content">
      <section class="rk-how-learn" aria-labelledby="rk-how-learn-title">
        <h3 class="rk-how-learn-title" id="rk-how-learn-title">Po przeczytaniu będziesz wiedzieć:</h3>
        <div class="rk-how-learn-grid">
          <div class="rk-how-learn-card">
            <div class="rk-how-learn-no" aria-hidden="true">01</div>
            <div><h4>Czy podłogówka wysusza powietrze?</h4><p>Oddzielimy rzeczywiste usuwanie wilgoci od spadku procentowego wskazania higrometru po wzroście temperatury.</p></div>
          </div>
          <div class="rk-how-learn-card">
            <div class="rk-how-learn-no" aria-hidden="true">02</div>
            <div><h4>Jak policzyć zmianę wilgotności?</h4><p>Interaktywny model pokaże wilgotność względną, punkt rosy i zawartość wilgoci po zmianie temperatury.</p></div>
          </div>
          <div class="rk-how-learn-card">
            <div class="rk-how-learn-no" aria-hidden="true">03</div>
            <div><h4>Co robi wentylacja i rekuperacja?</h4><p>Wyjaśnimy różnicę między odzyskiem samego ciepła a częściowym odzyskiem wilgoci w wymienniku entalpicznym.</p></div>
          </div>
          <div class="rk-how-learn-card">
            <div class="rk-how-learn-no" aria-hidden="true">04</div>
            <div><h4>Kiedy reagować?</h4><p>Otrzymasz procedurę pomiaru oraz diagnostykę dla zbyt niskiej wilgotności, kondensacji i trwałego zawilgocenia.</p></div>
          </div>
        </div>
      </section>

      <nav class="rk-how-nav" aria-label="Spis treści artykułu">
        <strong>Na skróty</strong>
        <div class="rk-how-nav-links">
          <a href="#rk-how-zasada">Krótka odpowiedź</a>
          <a href="#rk-how-pojecia">Wilgotność i punkt rosy</a>
          <a href="#rk-how-model">Kalkulator</a>
          <a href="#rk-how-porownanie">Podłogówka a grzejniki</a>
          <a href="#rk-how-czynniki">Co steruje wilgotnością</a>
          <a href="#rk-how-wentylacja">Wentylacja i rekuperacja</a>
          <a href="#rk-how-zakres">Prawidłowy zakres</a>
          <a href="#rk-how-budynek">Podłogi i budynek</a>
          <a href="#rk-how-zdrowie">Zdrowie i alergie</a>
          <a href="#rk-how-pomiar">Pomiar i diagnostyka</a>
          <a href="#rk-how-faq">FAQ</a>
          <a href="#rk-how-podsumowanie">Wniosek</a>
        </div>
      </nav>

      <section class="rk-how-section" id="rk-how-zasada" aria-labelledby="rk-how-s1">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">1</div>
          <div>
            <h2 id="rk-how-s1">Jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu?</h2>
            <p>Najpierw odpowiedź bez marketingowych skrótów i bez mitu o „spalaniu” wilgoci.</p>
          </div>
        </div>

        <div class="rk-how-answer">
          <div>
            <span class="rk-how-answer-label">Najkrótsza poprawna odpowiedź</span>
            <strong class="rk-how-answer-main">Ogrzewanie podłogowe może obniżyć wilgotność względną, ponieważ podnosi temperaturę powietrza. Samo w sobie nie jest jednak osuszaczem i nie usuwa pary wodnej z pomieszczenia.</strong>
            <p>O rzeczywistej ilości wilgoci decyduje bilans: para wytwarzana przez mieszkańców i prace domowe, wymiana powietrza, infiltracja, warunki zewnętrzne, pochłanianie przez materiały oraz ewentualne nawilżanie lub osuszanie.</p>
          </div>
          <div class="rk-how-answer-badge">
            <b>RH ↓</b>
            <span>procent może spaść mimo niezmienionej zawartości pary wodnej</span>
          </div>
        </div>

        <p>Jeżeli w uproszczonym modelu ogrzejemy powietrze z 20°C do 22°C i nie dodamy ani nie usuniemy wilgoci, higrometr pokaże niższą wartość. Cieplejsze powietrze ma wyższe ciśnienie pary nasyconej, dlatego ta sama ilość pary stanowi mniejszy procent stanu nasycenia.</p>

        <div class="rk-how-truth">
          <p><strong>Kluczowe rozróżnienie:</strong> ogrzewanie podłogowe nie działa tak jak klimatyzator pracujący w trybie chłodzenia ani osuszacz kondensacyjny. Może przyspieszyć wysychanie mokrych powierzchni lub materiałów, lecz wtedy woda najpierw przechodzi do powietrza i musi zostać usunięta przez wentylację albo osuszanie.</p>
        </div>

        <p>Sposób przekazywania energii przez podłogę opisuję dokładniej w poradniku <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa ogrzewanie podłogowe – obieg, powierzchnia grzewcza i sterowanie</a>.</p>
      </section>

      <section class="rk-how-section" id="rk-how-pojecia" aria-labelledby="rk-how-s2">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">2</div>
          <div>
            <h2 id="rk-how-s2">Wilgotność względna, zawartość wilgoci i punkt rosy</h2>
            <p>Jedno wskazanie procentowe nie opisuje całego stanu powietrza.</p>
          </div>
        </div>

        <div class="rk-how-formula">
          <span class="rk-how-formula-label">Definicja wilgotności względnej</span>
          <div class="rk-how-equation">φ = p<sub>v</sub> / p<sub>sat</sub>(T) × 100%
            <small>φ – wilgotność względna, p<sub>v</sub> – rzeczywiste ciśnienie cząstkowe pary wodnej, p<sub>sat</sub>(T) – ciśnienie pary nasyconej zależne od temperatury. Wraz ze wzrostem temperatury mianownik rośnie, więc przy tej samej zawartości wilgoci wartość φ maleje.</small>
          </div>
        </div>

        <div class="rk-how-table-wrap">
          <span class="rk-how-table-title">Trzy wielkości, trzy różne informacje</span>
          <table>
            <thead><tr><th>Wielkość</th><th>Co opisuje?</th><th>Do czego jest potrzebna?</th></tr></thead>
            <tbody>
              <tr>
                <td data-label="Wielkość"><strong>Wilgotność względna RH</strong></td>
                <td data-label="Znaczenie">Procent aktualnego nasycenia powietrza parą wodną przy danej temperaturze.</td>
                <td data-label="Zastosowanie">Ocena komfortu, warunków dla materiałów i ryzyka długotrwałej wilgoci – zawsze razem z temperaturą.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Zawartość wilgoci</strong></td>
                <td data-label="Znaczenie">Masa pary wodnej przypadająca na masę suchego powietrza, najczęściej podawana w g/kg.</td>
                <td data-label="Zastosowanie">Bilans wentylacji, nawilżania i osuszania; przy samym ogrzewaniu pozostaje w przybliżeniu stała.</td>
              </tr>
              <tr>
                <td data-label="Wielkość"><strong>Punkt rosy</strong></td>
                <td data-label="Znaczenie">Temperatura, przy której powietrze osiągnie 100% RH i może rozpocząć się kondensacja.</td>
                <td data-label="Zastosowanie">Ocena okien, narożników, mostków cieplnych, przewodów oraz innych zimnych powierzchni.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <p>Przykład: dla 20°C i 50% RH punkt rosy wynosi około 9,3°C. Jeżeli wewnętrzna powierzchnia szyby lub narożnika spadnie do tej temperatury, lokalnie może pojawić się kondensacja, chociaż na środku pomieszczenia higrometr nadal pokazuje tylko 50%.</p>

        <div class="rk-how-warning">
          <p><strong>Nie oceniaj przegród wyłącznie na podstawie RH w pokoju:</strong> temperatura powierzchni może być znacznie niższa niż temperatura powietrza. Ryzyko pleśni i kondensacji pojawia się miejscowo, dlatego liczą się również mostki cieplne, izolacja, szczelność oraz przepływ powietrza przy przegrodzie.</p>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-model" aria-labelledby="rk-how-s3">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">3</div>
          <div>
            <h2 id="rk-how-s3">Kalkulator: jak zmieni się wilgotność po ogrzaniu powietrza?</h2>
            <p>Ustaw warunki początkowe i temperaturę końcową. Model zakłada brak dopływu oraz odpływu wilgoci.</p>
          </div>
        </div>

        <div class="rk-how-calculator" id="rk-how-humidity-model" aria-label="Kalkulator wpływu temperatury na wilgotność względną powietrza">
          <div class="rk-how-calc-head">
            <h3>Interaktywny model psychrometryczny</h3>
            <p>Obliczenia wykorzystują równanie Magnusa dla ciśnienia pary nasyconej. Zobaczysz, że zmiana RH może wynikać wyłącznie ze zmiany temperatury.</p>
          </div>
          <div class="rk-how-calc-body">
            <div class="rk-how-controls">
              <div class="rk-how-control">
                <label for="rk-how-temp-start">Temperatura początkowa <output id="rk-how-temp-start-out">20°C</output></label>
                <input id="rk-how-temp-start" type="range" min="15" max="26" step="0.5" value="20">
                <div class="rk-how-control-scale"><span>15°C</span><span>26°C</span></div>
              </div>
              <div class="rk-how-control">
                <label for="rk-how-rh-start">Wilgotność początkowa <output id="rk-how-rh-start-out">50%</output></label>
                <input id="rk-how-rh-start" type="range" min="20" max="80" step="1" value="50">
                <div class="rk-how-control-scale"><span>20%</span><span>80%</span></div>
              </div>
              <div class="rk-how-control">
                <label for="rk-how-temp-end">Temperatura po zmianie <output id="rk-how-temp-end-out">22°C</output></label>
                <input id="rk-how-temp-end" type="range" min="15" max="28" step="0.5" value="22">
                <div class="rk-how-control-scale"><span>15°C</span><span>28°C</span></div>
              </div>
            </div>
            <div class="rk-how-results" aria-live="polite">
              <div class="rk-how-result">
                <span>Wilgotność po zmianie temperatury</span>
                <b id="rk-how-rh-result">44,2%</b>
                <div class="rk-how-meter" aria-hidden="true"><div class="rk-how-meter-fill" id="rk-how-meter-fill"></div></div>
              </div>
              <div class="rk-how-result"><span>Zmiana wskazania RH</span><b id="rk-how-change-result">−5,8 p.p.</b></div>
              <div class="rk-how-result"><span>Punkt rosy</span><b id="rk-how-dew-result">9,3°C</b></div>
              <div class="rk-how-result"><span>Zawartość wilgoci</span><b id="rk-how-ratio-result">7,2 g/kg</b></div>
              <div class="rk-how-result"><span>Interpretacja</span><b id="rk-how-status-text">Zakres umiarkowany</b><span class="rk-how-status is-good" id="rk-how-status">bez alarmu</span></div>
            </div>
          </div>
          <p class="rk-how-calc-foot">Model edukacyjny zakłada stałe ciśnienie i brak wymiany wilgoci z wentylacją, ludźmi, materiałami oraz powierzchniami. Jeśli temperatura spadnie poniżej punktu rosy, model ogranicza wynik do 100% RH i sygnalizuje możliwość kondensacji. Nie zastępuje pomiarów ani analizy fizyki budynku.</p>
        </div>

        <div class="rk-how-chart" aria-labelledby="rk-how-chart-title">
          <div class="rk-how-chart-head">
            <div>
              <h3 id="rk-how-chart-title">Ta sama zawartość wilgoci – inne wskazanie RH</h3>
              <p>Wykres aktualizuje się razem z kalkulatorem. Pomarańczowy punkt pokazuje wybraną temperaturę końcową.</p>
            </div>
            <div class="rk-how-chart-legend">wilgotność względna</div>
          </div>
          <div class="rk-how-chart-stage">
            <svg id="rk-how-chart-svg" viewBox="0 0 900 420" role="img" aria-labelledby="rk-how-chart-title rk-how-chart-desc">
              <desc id="rk-how-chart-desc">Wykres zależności wilgotności względnej od temperatury przy niezmienionej zawartości wilgoci.</desc>
              <defs>
                <linearGradient id="rk-how-area-gradient" x1="0" y1="0" x2="0" y2="1">
                  <stop offset="0%" stop-color="#22c7df"></stop>
                  <stop offset="100%" stop-color="#22c7df" stop-opacity="0"></stop>
                </linearGradient>
              </defs>
              <g aria-hidden="true">
                <line class="rk-how-chart-grid" x1="70" y1="40" x2="865" y2="40"></line>
                <line class="rk-how-chart-grid" x1="70" y1="104" x2="865" y2="104"></line>
                <line class="rk-how-chart-grid" x1="70" y1="168" x2="865" y2="168"></line>
                <line class="rk-how-chart-grid" x1="70" y1="232" x2="865" y2="232"></line>
                <line class="rk-how-chart-grid" x1="70" y1="296" x2="865" y2="296"></line>
                <line class="rk-how-chart-grid" x1="70" y1="360" x2="865" y2="360"></line>
                <line class="rk-how-chart-axis" x1="70" y1="40" x2="70" y2="360"></line>
                <line class="rk-how-chart-axis" x1="70" y1="360" x2="865" y2="360"></line>
                <text class="rk-how-chart-label" x="28" y="45">100%</text>
                <text class="rk-how-chart-label" x="36" y="109">80%</text>
                <text class="rk-how-chart-label" x="36" y="173">60%</text>
                <text class="rk-how-chart-label" x="36" y="237">40%</text>
                <text class="rk-how-chart-label" x="36" y="301">20%</text>
                <text class="rk-how-chart-label" x="52" y="365">0</text>
                <text class="rk-how-chart-label" x="64" y="392">15°C</text>
                <text class="rk-how-chart-label" x="247" y="392">18°C</text>
                <text class="rk-how-chart-label" x="430" y="392">21°C</text>
                <text class="rk-how-chart-label" x="614" y="392">24°C</text>
                <text class="rk-how-chart-label" x="797" y="392">27°C</text>
              </g>
              <path class="rk-how-chart-area" id="rk-how-chart-area" d=""></path>
              <path class="rk-how-chart-line" id="rk-how-chart-line" d=""></path>
              <circle class="rk-how-chart-dot" id="rk-how-chart-dot" cx="0" cy="0" r="9"></circle>
              <text class="rk-how-chart-value" id="rk-how-chart-value" x="0" y="0">44,2%</text>
            </svg>
          </div>
        </div>

        <div class="rk-how-table-wrap">
          <span class="rk-how-table-title">Przykład: start 20°C i 50% RH, bez dodawania ani usuwania wilgoci</span>
          <table>
            <thead><tr><th>Temperatura</th><th>Przybliżona RH</th><th>Co się zmieniło?</th></tr></thead>
            <tbody>
              <tr><td data-label="Temperatura"><strong>18°C</strong></td><td data-label="Wilgotność">około 57%</td><td data-label="Wyjaśnienie">Powietrze ochłodzono, więc ta sama zawartość pary stanowi większą część stanu nasycenia.</td></tr>
              <tr><td data-label="Temperatura"><strong>20°C</strong></td><td data-label="Wilgotność">50%</td><td data-label="Wyjaśnienie">Punkt odniesienia.</td></tr>
              <tr><td data-label="Temperatura"><strong>22°C</strong></td><td data-label="Wilgotność">około 44%</td><td data-label="Wyjaśnienie">Spadło wskazanie procentowe, lecz wilgoć nie została usunięta.</td></tr>
              <tr><td data-label="Temperatura"><strong>24°C</strong></td><td data-label="Wilgotność">około 39%</td><td data-label="Wyjaśnienie">Wyższa temperatura jeszcze bardziej obniżyła RH przy tej samej zawartości pary.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-porownanie" aria-labelledby="rk-how-s4">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">4</div>
          <div>
            <h2 id="rk-how-s4">Czy podłogówka wysusza powietrze bardziej niż grzejniki?</h2>
            <p>Nie da się tego uczciwie rozstrzygnąć wyłącznie na podstawie temperatury wody w instalacji.</p>
          </div>
        </div>

        <p>Każdy system ogrzewania może obniżyć wilgotność względną, gdy podnosi temperaturę pomieszczenia. Gorący grzejnik nie „spala” wilgoci, a niskotemperaturowa podłoga nie gwarantuje automatycznie prawidłowego mikroklimatu. O wyniku decyduje temperatura powietrza oraz cały bilans pary wodnej.</p>

        <div class="rk-how-table-wrap">
          <span class="rk-how-table-title">Ogrzewanie podłogowe i grzejniki – wpływ na wilgotność bez mitów</span>
          <table>
            <thead><tr><th>Kryterium</th><th>Ogrzewanie podłogowe</th><th>Grzejniki</th></tr></thead>
            <tbody>
              <tr>
                <td data-label="Kryterium"><strong>Usuwanie pary wodnej</strong></td>
                <td data-label="Podłogówka">Nie usuwa jej bez procesu wymiany powietrza lub osuszania.</td>
                <td data-label="Grzejniki">Również nie usuwają jej samym ogrzewaniem.</td>
              </tr>
              <tr>
                <td data-label="Kryterium"><strong>Temperatura powierzchni</strong></td>
                <td data-label="Podłogówka">Duża powierzchnia i niewielka różnica temperatur.</td>
                <td data-label="Grzejniki">Mniejsza powierzchnia i zwykle wyższa temperatura emitera.</td>
              </tr>
              <tr>
                <td data-label="Kryterium"><strong>Temperatura powietrza</strong></td>
                <td data-label="Podłogówka">Wyższa temperatura promieniowania może pozwolić na komfort przy nieco niższej temperaturze powietrza.</td>
                <td data-label="Grzejniki">Komfort może wymagać nieco innego rozkładu temperatur i ruchu powietrza.</td>
              </tr>
              <tr>
                <td data-label="Kryterium"><strong>Ruch powietrza</strong></td>
                <td data-label="Podłogówka">Zwykle łagodniejsza konwekcja rozłożona na dużej powierzchni.</td>
                <td data-label="Grzejniki">Silniejszy lokalny strumień konwekcyjny przy odbiorniku.</td>
              </tr>
              <tr>
                <td data-label="Kryterium"><strong>Najważniejszy warunek RH</strong></td>
                <td data-label="Podłogówka">Nastawa temperatury, wentylacja, szczelność i źródła wilgoci.</td>
                <td data-label="Grzejniki">Dokładnie te same czynniki dominujące.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div class="rk-how-note">
          <p><strong>Praktyczny wniosek:</strong> jeżeli podłogówka zapewnia ten sam komfort przy temperaturze powietrza niższej o 1–2 K, wilgotność względna może być nieco wyższa niż w pomieszczeniu ogrzewanym do wyższej temperatury. Nie jest to jednak cecha gwarantowana – wynik zależy od nastaw i eksploatacji budynku.</p>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-czynniki" aria-labelledby="rk-how-s5">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">5</div>
          <div>
            <h2 id="rk-how-s5">Co naprawdę steruje wilgotnością w ogrzewanym domu?</h2>
            <p>Kliknij czynnik, aby zobaczyć jego wpływ na zimowy mikroklimat.</p>
          </div>
        </div>

        <div class="rk-how-flow" data-rk-flow>
          <div class="rk-how-flow-grid" role="list" aria-label="Czynniki wpływające na wilgotność powietrza w ogrzewanym domu">
            <button class="rk-how-flow-step is-active" id="rk-how-flow-1" type="button" data-flow-step="0" aria-pressed="true"><span class="rk-how-flow-no">01</span><b>Powietrze zewnętrzne</b><small>niesie wodę do budynku</small></button>
            <button class="rk-how-flow-step" id="rk-how-flow-2" type="button" data-flow-step="1" aria-pressed="false"><span class="rk-how-flow-no">02</span><b>Wentylacja</b><small>wymienia wilgoć</small></button>
            <button class="rk-how-flow-step" id="rk-how-flow-3" type="button" data-flow-step="2" aria-pressed="false"><span class="rk-how-flow-no">03</span><b>Nieszczelności</b><small>zwiększają infiltrację</small></button>
            <button class="rk-how-flow-step" id="rk-how-flow-4" type="button" data-flow-step="3" aria-pressed="false"><span class="rk-how-flow-no">04</span><b>Domownicy</b><small>wytwarzają parę</small></button>
            <button class="rk-how-flow-step" id="rk-how-flow-5" type="button" data-flow-step="4" aria-pressed="false"><span class="rk-how-flow-no">05</span><b>Temperatura</b><small>zmienia wartość RH</small></button>
            <button class="rk-how-flow-step" id="rk-how-flow-6" type="button" data-flow-step="5" aria-pressed="false"><span class="rk-how-flow-no">06</span><b>Materiały</b><small>buforują wilgoć</small></button>
          </div>
          <div class="rk-how-flow-detail" aria-live="polite">
            <strong data-flow-title>1. Zimne powietrze może mieć wysoką RH, lecz mało wody</strong>
            <p data-flow-text>Powietrze zewnętrzne o temperaturze −5°C i wilgotności 80% po ogrzaniu do 21°C, bez dodawania wilgoci, miałoby jedynie około 14% RH. Dlatego zimą nawet „wilgotne” powietrze na zewnątrz może intensywnie osuszać wnętrze po podgrzaniu.</p>
          </div>
        </div>

        <p>Bilans wilgoci można sprowadzić do prostej zasady: do domu para wodna trafia wraz z powietrzem zewnętrznym oraz jest wytwarzana wewnątrz; opuszcza go przez wentylację, infiltrację i dyfuzję, a chwilowo może być magazynowana w materiałach higroskopijnych. Ogrzewanie zmienia temperaturę i tempo niektórych procesów, lecz nie zastępuje tego bilansu.</p>

        <div class="rk-how-card-grid">
          <div class="rk-how-card"><span class="rk-how-card-tag">Źródła pary</span><h4>Gotowanie, kąpiel, pranie i mieszkańcy</h4><p>Codzienne czynności mogą szybko podnieść RH. Wyciąg miejscowy powinien usuwać wilgoć u źródła, zanim rozprzestrzeni się po budynku.</p></div>
          <div class="rk-how-card"><span class="rk-how-card-tag">Straty wilgoci</span><h4>Wentylacja i infiltracja</h4><p>Im większy zimowy strumień suchego po ogrzaniu powietrza zewnętrznego, tym więcej wilgoci trzeba dostarczyć, aby utrzymać tę samą RH.</p></div>
          <div class="rk-how-card"><span class="rk-how-card-tag">Bufor</span><h4>Tynki, drewno i wyposażenie</h4><p>Materiały mogą chwilowo przyjmować oraz oddawać parę. Łagodzą krótkie skoki, ale nie rozwiązują trwałego niedoboru albo nadmiaru wilgoci.</p></div>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-wentylacja" aria-labelledby="rk-how-s6">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">6</div>
          <div>
            <h2 id="rk-how-s6">Ogrzewanie podłogowe, rekuperacja i wilgotność zimą</h2>
            <p>Odzysk ciepła nie zawsze oznacza odzysk wilgoci.</p>
          </div>
        </div>

        <p>Zimą powietrze zewnętrzne może mieć wysoką wilgotność względną, a jednocześnie zawierać niewiele pary wodnej. Po dostarczeniu do domu i ogrzaniu jego RH gwałtownie spada. Im większa wymiana powietrza, tym większa potencjalna utrata wilgoci – o ile wymiennik nie odzyskuje części pary, a źródła wewnętrzne jej nie uzupełniają.</p>

        <div class="rk-how-table-wrap">
          <span class="rk-how-table-title">Rodzaj wymiany powietrza a zimowy bilans wilgoci</span>
          <table>
            <thead><tr><th>Rozwiązanie</th><th>Co dzieje się z wilgocią?</th><th>Na co zwrócić uwagę?</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozwiązanie"><strong>Wentylacja grawitacyjna</strong></td><td data-label="Wpływ">Strumień jest zmienny i zależny od pogody, ciągu oraz nawiewu. Zimą może silnie obniżać RH.</td><td data-label="Kontrola">Drożność kanałów, nawiewniki, szczelność stolarki i rzeczywisty przepływ.</td></tr>
              <tr><td data-label="Rozwiązanie"><strong>Rekuperacja z odzyskiem ciepła</strong></td><td data-label="Wpływ">Ogranicza straty energii, lecz standardowy wymiennik nie musi przenosić wilgoci z wywiewu do nawiewu.</td><td data-label="Kontrola">Prawidłowy bilans nawiewu i wywiewu, tryb pracy oraz brak nadmiernych przepływów.</td></tr>
              <tr><td data-label="Rozwiązanie"><strong>Wymiennik entalpiczny</strong></td><td data-label="Wpływ">Może odzyskiwać część wilgoci, zmniejszając zimowy spadek RH. Nie jest jednak aktywnym nawilżaczem.</td><td data-label="Kontrola">Rzeczywista skuteczność zależna od urządzenia, warunków i eksploatacji.</td></tr>
              <tr><td data-label="Rozwiązanie"><strong>Wyciąg kuchenny i łazienkowy</strong></td><td data-label="Wpływ">Usuwa duży ładunek pary w krótkim czasie i chroni przegrody przed kondensacją.</td><td data-label="Kontrola">Uruchamianie podczas powstawania wilgoci oraz zapewnienie dopływu powietrza.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-how-warning">
          <p><strong>Wietrzenie nie jest uniwersalnym sposobem podnoszenia wilgotności zimą:</strong> gdy na zewnątrz jest zimno, po ogrzaniu świeżego powietrza jego RH najczęściej będzie bardzo niska. Krótkie wietrzenie jest potrzebne dla jakości powietrza, ale przy problemie z suchością należy najpierw sprawdzić temperaturę i całkowity strumień wymiany.</p>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-zakres" aria-labelledby="rk-how-s7">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">7</div>
          <div>
            <h2 id="rk-how-s7">Jaka wilgotność przy ogrzewaniu podłogowym jest prawidłowa?</h2>
            <p>Nie istnieje jedna magiczna wartość właściwa dla każdego domu i każdej temperatury zewnętrznej.</p>
          </div>
        </div>

        <p>Jako praktyczny zakres odniesienia dla mieszkań często przyjmuje się około 30–50% RH, przy czym długotrwałe przekraczanie 60% zwiększa potrzebę sprawdzenia źródeł wilgoci oraz temperatur zimnych powierzchni. W mroźne dni bezpieczna wartość może być niższa, jeżeli okna, narożniki lub mostki cieplne są chłodne i pojawia się na nich kondensacja.</p>

        <div class="rk-how-diagnostic" aria-label="Interpretacja wilgotności względnej w domu">
          <div class="rk-how-diagnostic-card"><b>&lt; 30%</b><p><strong>Bardzo sucho.</strong> Zweryfikuj higrometr, temperaturę, infiltrację i przepływy wentylacji. Nawilżanie rozważaj dopiero po diagnozie.</p></div>
          <div class="rk-how-diagnostic-card"><b>30–40%</b><p><strong>Zakres niski.</strong> Zimą może być spotykany w wielu domach. Oceniaj komfort, pogodę i kondensację na przegrodach.</p></div>
          <div class="rk-how-diagnostic-card"><b>40–50%</b><p><strong>Zakres umiarkowany.</strong> Zwykle dobry punkt odniesienia, jeśli nie ma zawilgocenia, kondensacji ani problemów materiałowych.</p></div>
          <div class="rk-how-diagnostic-card"><b>&gt; 60%</b><p><strong>Zbyt wilgotno przy długim utrzymywaniu.</strong> Sprawdź wentylację, źródła pary, przecieki i zimne powierzchnie.</p></div>
        </div>

        <div class="rk-how-note">
          <p><strong>Najważniejsze są czas i miejsce:</strong> chwilowe 65% po kąpieli nie oznacza tego samego co 65% utrzymujące się przez wiele dni w sypialni. Podobnie 45% na środku pokoju nie wyklucza bardzo wysokiej wilgotności przy niedocieplonym narożniku.</p>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-budynek" aria-labelledby="rk-how-s8">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">8</div>
          <div>
            <h2 id="rk-how-s8">Wilgotność, podłoga drewniana, jastrych i nowy budynek</h2>
            <p>Powietrze, materiały i konstrukcja podłogi wymieniają wilgoć – szczególnie po zakończeniu prac mokrych.</p>
          </div>
        </div>

        <div class="rk-how-card-grid">
          <div class="rk-how-card"><span class="rk-how-card-tag">Drewno</span><h4>Reaguje na długotrwałe warunki</h4><p>Zbyt niska wilgotność może sprzyjać kurczeniu, a zbyt wysoka pęcznieniu. Liczą się dopuszczenia okładziny, wilgotność materiału, opór cieplny oraz limit temperatury producenta podłogi.</p></div>
          <div class="rk-how-card"><span class="rk-how-card-tag">Jastrych</span><h4>Wygrzewanie nie zastępuje pomiaru</h4><p>Podgrzanie przyspiesza transport wilgoci z warstw podłogi, lecz gotowość do ułożenia okładziny należy potwierdzić właściwym pomiarem, a nie samym upływem czasu.</p></div>
          <div class="rk-how-card"><span class="rk-how-card-tag">Nowy dom</span><h4>Tynki i wylewki oddają dużo wody</h4><p>W pierwszym sezonie wilgotność może wynikać głównie z wysychania budynku. Potrzebne są kontrolowane ogrzewanie i wentylacja, nie samo podnoszenie temperatury.</p></div>
        </div>

        <p>Temperatura powierzchni podłogi powinna wynikać z obliczonej mocy, przeznaczenia pomieszczenia i rodzaju okładziny. Przegrzewanie podłogi nie jest metodą regulacji wilgotności. Może zwiększyć tempo wysychania materiałów i pogorszyć komfort, ale bez skutecznej wymiany powietrza wilgoć pozostanie w budynku.</p>

        <div class="rk-how-truth">
          <p><strong>Ciepła podłoga nie naprawi mostka cieplnego ani przecieku.</strong> Jeżeli pojawia się pleśń w narożnikach, najpierw trzeba ustalić temperaturę powierzchni, ciągłość izolacji, szczelność, dopływ wilgoci i działanie wentylacji. Zwiększenie temperatury zasilania może jedynie zamaskować objaw i podnieść zużycie energii.</p>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-zdrowie" aria-labelledby="rk-how-s9">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">9</div>
          <div>
            <h2 id="rk-how-s9">Podłogówka, suche powietrze, alergicy i pleśń</h2>
            <p>Nie przypisujmy systemowi grzewczemu skutków, które wynikają z całego mikroklimatu.</p>
          </div>
        </div>

        <p>Zbyt suche powietrze może nasilać odczuwanie suchości oczu, skóry i błon śluzowych. Z kolei trwałe zawilgocenie przegród sprzyja rozwojowi mikroorganizmów i wiąże się ze zwiększonym ryzykiem problemów oddechowych. Dlatego celem nie jest osiągnięcie jak najwyższej RH, lecz stabilnego zakresu bez kondensacji oraz bez nadmiernej suchości.</p>

        <p>Ogrzewanie podłogowe zwykle powoduje łagodniejszy, rozłożony na dużej powierzchni ruch konwekcyjny niż gorący grzejnik, ale nie tworzy domu wolnego od kurzu i alergenów. Znaczenie mają sprzątanie, filtracja, wentylacja, wilgotność, materiały oraz rzeczywista temperatura podłogi. Szerszą analizę znajdziesz w artykule <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/">czy ogrzewanie podłogowe jest zdrowe</a>.</p>

        <div class="rk-how-warning">
          <p><strong>Nawilżacz nie powinien pracować „na ślepo”:</strong> najpierw zweryfikuj wskazania higrometru i kondensację na zimnych powierzchniach. Urządzenie musi być czyszczone zgodnie z instrukcją, ponieważ zaniedbany zbiornik i nadmierne nawilżanie mogą pogorszyć jakość powietrza.</p>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-pomiar" aria-labelledby="rk-how-s10">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">10</div>
          <div>
            <h2 id="rk-how-s10">Jak prawidłowo zmierzyć wilgotność i znaleźć przyczynę problemu?</h2>
            <p>Jednorazowy odczyt przy oknie albo na ciepłej podłodze może prowadzić do błędnych wniosków.</p>
          </div>
        </div>

        <div class="rk-how-check-grid">
          <div class="rk-how-check"><div class="rk-how-check-no">01</div><div><h4>Porównaj dwa higrometry</h4><p>Tanie czujniki mogą różnić się o kilka punktów procentowych. Ustaw je obok siebie na dobę i sprawdź rozbieżność.</p></div></div>
          <div class="rk-how-check"><div class="rk-how-check-no">02</div><div><h4>Wybierz właściwe miejsce</h4><p>Mierz w strefie użytkowej, z dala od okna, nasłonecznienia, nawiewnika, łazienki i bezpośredniego źródła ciepła.</p></div></div>
          <div class="rk-how-check"><div class="rk-how-check-no">03</div><div><h4>Zapisuj temperaturę razem z RH</h4><p>Sam procent nie wystarcza. Notuj jednocześnie temperaturę, porę dnia, pogodę i tryb wentylacji.</p></div></div>
          <div class="rk-how-check"><div class="rk-how-check-no">04</div><div><h4>Obserwuj co najmniej kilka dni</h4><p>Szukaj trendu, a nie pojedynczego skoku po kąpieli, gotowaniu, wietrzeniu albo zmianie nastawy ogrzewania.</p></div></div>
        </div>

        <div class="rk-how-table-wrap">
          <span class="rk-how-table-title">Objaw – możliwa przyczyna – pierwsze sprawdzenie</span>
          <table>
            <thead><tr><th>Objaw</th><th>Możliwa przyczyna</th><th>Co sprawdzić najpierw?</th></tr></thead>
            <tbody>
              <tr><td data-label="Objaw"><strong>Poniżej 30% w całym domu</strong></td><td data-label="Przyczyna">Wysoka temperatura, duży przepływ wentylacji, infiltracja lub bardzo suche powietrze zewnętrzne.</td><td data-label="Sprawdzenie">Drugi higrometr, temperaturę pokojową, bilans nawiewu i wywiewu, szczelność oraz aktualną pogodę.</td></tr>
              <tr><td data-label="Objaw"><strong>Wilgoć tylko w łazience</strong></td><td data-label="Przyczyna">Niewystarczający wyciąg podczas kąpieli albo zbyt krótki czas jego pracy.</td><td data-label="Sprawdzenie">Przepływ wywiewu, dopływ powietrza pod drzwiami i czas powrotu RH do wartości bazowej.</td></tr>
              <tr><td data-label="Objaw"><strong>Woda na oknach</strong></td><td data-label="Przyczyna">Wysoki punkt rosy, chłodna szyba, zasłonięty przepływ powietrza lub mostek cieplny.</td><td data-label="Sprawdzenie">Temperaturę szyby i punkt rosy, źródła pary oraz skuteczność wentylacji.</td></tr>
              <tr><td data-label="Objaw"><strong>Pleśń w jednym narożniku</strong></td><td data-label="Przyczyna">Niska temperatura powierzchni, przerwa w izolacji, słaby ruch powietrza lub lokalne zawilgocenie.</td><td data-label="Sprawdzenie">Temperaturę powierzchni, termowizję, wilgotność materiału i ewentualny przeciek.</td></tr>
              <tr><td data-label="Objaw"><strong>Wysoka RH w nowym domu</strong></td><td data-label="Przyczyna">Woda technologiczna z tynków, wylewek i innych prac mokrych.</td><td data-label="Sprawdzenie">Harmonogram suszenia, temperaturę, rzeczywistą wymianę powietrza i wilgotność materiałów.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-how-note">
          <p><strong>Kolejność działań:</strong> potwierdź pomiar → oceń temperaturę → sprawdź wentylację i infiltrację → zidentyfikuj źródła wilgoci → oceń zimne powierzchnie → dopiero potem zmieniaj nastawy lub dobieraj urządzenie do nawilżania bądź osuszania.</p>
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-faq" aria-labelledby="rk-how-s11">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">11</div>
          <div>
            <h2 id="rk-how-s11">FAQ – ogrzewanie podłogowe a wilgotność powietrza</h2>
            <p>Odpowiedzi na najczęściej wyszukiwane pytania i frazy z długiego ogona.</p>
          </div>
        </div>

        <div class="rk-how-faq-list">
          <details class="rk-how-faq"><summary>Czy ogrzewanie podłogowe wysusza powietrze?</summary><div class="rk-how-faq-answer"><p>Nie usuwa pary wodnej samym ogrzewaniem. Podniesienie temperatury obniża jednak wilgotność względną, jeśli do pomieszczenia nie zostanie dostarczona dodatkowa wilgoć. Rzeczywiste osuszanie zachodzi przez wentylację, infiltrację, kondensację lub pracę urządzenia osuszającego.</p></div></details>
          <details class="rk-how-faq"><summary>Dlaczego wilgotność spada po włączeniu podłogówki?</summary><div class="rk-how-faq-answer"><p>Ponieważ wraz ze wzrostem temperatury rośnie ciśnienie pary nasyconej. Ta sama zawartość pary wodnej stanowi wtedy mniejszy procent możliwego nasycenia, więc higrometr pokazuje niższą RH.</p></div></details>
          <details class="rk-how-faq"><summary>Czy podłogówka obniża wilgotność bardziej niż grzejniki?</summary><div class="rk-how-faq-answer"><p>Nie można tego stwierdzić bez porównania temperatury powietrza, wymiany wentylacyjnej i źródeł wilgoci. Oba systemy obniżają RH, gdy ogrzewają powietrze. Podłogówka może zapewniać komfort przy nieco niższej temperaturze powietrza, ale nie jest to gwarancją wyższej wilgotności w każdym budynku.</p></div></details>
          <details class="rk-how-faq"><summary>Jaka wilgotność jest najlepsza przy ogrzewaniu podłogowym?</summary><div class="rk-how-faq-answer"><p>Nie ma osobnego zakresu wyłącznie dla podłogówki. W mieszkaniach praktycznym punktem odniesienia jest zwykle około 30–50% RH, z uwzględnieniem temperatury zewnętrznej, stanu przegród, kondensacji oraz potrzeb materiałów. Długotrwałe wartości powyżej 60% wymagają diagnostyki.</p></div></details>
          <details class="rk-how-faq"><summary>Czy 30% wilgotności zimą to za mało?</summary><div class="rk-how-faq-answer"><p>To niski poziom, który może powodować dyskomfort, ale przed nawilżaniem warto potwierdzić pomiar, sprawdzić temperaturę, wentylację i nieszczelności. W czasie silnego mrozu dopuszczalny poziom bywa ograniczony ryzykiem kondensacji na chłodnych powierzchniach.</p></div></details>
          <details class="rk-how-faq"><summary>Czy rekuperacja wysusza powietrze przy podłogówce?</summary><div class="rk-how-faq-answer"><p>Wentylacja mechaniczna usuwa wilgoć wraz z powietrzem wywiewanym. Zimą nawiewane powietrze po ogrzaniu ma często niską RH. Stopień osuszania zależy od przepływów, szczelności, źródeł wilgoci oraz rodzaju wymiennika.</p></div></details>
          <details class="rk-how-faq"><summary>Czym różni się wymiennik entalpiczny od zwykłego?</summary><div class="rk-how-faq-answer"><p>Zwykły wymiennik odzyskuje przede wszystkim ciepło. Wymiennik entalpiczny może dodatkowo przenosić część wilgoci z powietrza wywiewanego do nawiewanego. Zmniejsza to zimowy spadek RH, ale nie zastępuje aktywnego nawilżacza.</p></div></details>
          <details class="rk-how-faq"><summary>Czy przy ogrzewaniu podłogowym potrzebny jest nawilżacz?</summary><div class="rk-how-faq-answer"><p>Tylko wtedy, gdy wiarygodne pomiary potwierdzają trwałą, zbyt niską wilgotność, a wcześniej sprawdzono temperaturę, przepływy wentylacji i infiltrację. Nawilżacz trzeba kontrolować higrometrem i regularnie czyścić.</p></div></details>
          <details class="rk-how-faq"><summary>Czy rośliny wystarczą do podniesienia wilgotności?</summary><div class="rk-how-faq-answer"><p>Rośliny oddają część wody przez transpirację, ale efekt jest zmienny i trudny do kontrolowania. Nie zastąpią diagnozy wentylacji ani urządzenia dobranego do rzeczywistego deficytu wilgoci.</p></div></details>
          <details class="rk-how-faq"><summary>Czy podłogówka może uszkodzić drewnianą podłogę przez suche powietrze?</summary><div class="rk-how-faq-answer"><p>Ryzyko wynika z połączenia długotrwałej wilgotności, temperatury powierzchni, wilgotności drewna, konstrukcji i sposobu montażu. Należy przestrzegać dopuszczeń okładziny oraz parametrów przyjętych w projekcie, a warunki oceniać w dłuższym okresie.</p></div></details>
          <details class="rk-how-faq"><summary>Czy ogrzewanie podłogowe zapobiega pleśni?</summary><div class="rk-how-faq-answer"><p>Może podnosić temperaturę części powierzchni i sprzyjać wysychaniu, ale nie usuwa przyczyn pleśni takich jak przecieki, mostki cieplne, brak izolacji czy nieskuteczna wentylacja. Widoczną pleśń trzeba traktować jako sygnał do znalezienia źródła wilgoci.</p></div></details>
          <details class="rk-how-faq"><summary>Gdzie ustawić higrometr przy ogrzewaniu podłogowym?</summary><div class="rk-how-faq-answer"><p>W reprezentatywnej części pomieszczenia, w strefie użytkowej, z dala od podłogi, okna, nawiewnika, promieni słonecznych, łazienki i miejscowych źródeł pary. Dobrze porównać dwa urządzenia i obserwować trend przez kilka dni.</p></div></details>
        </div>

        <div class="rk-how-sources" aria-label="Źródła opracowania">
          <strong>Źródła i podstawa techniczna opracowania</strong>
          Definicje wilgotności i punktu rosy: <a href="https://www.nesdis.noaa.gov/about/k-12-education/atmosphere/what-humidity" target="_blank" rel="noopener noreferrer">NOAA – What Is Humidity?</a>. Zalecenia dotyczące wilgoci i pleśni: <a href="https://www.epa.gov/mold/brief-guide-mold-moisture-and-your-home" target="_blank" rel="noopener noreferrer">US EPA – A Brief Guide to Mold, Moisture and Your Home</a> oraz <a href="https://www.who.int/publications/i/item/9789289041683" target="_blank" rel="noopener noreferrer">WHO Guidelines for Indoor Air Quality: Dampness and Mould</a>. Badania warunków wewnętrznych przy ogrzewaniu podłogowym: <a href="https://www.mdpi.com/2075-5309/12/12/2232" target="_blank" rel="noopener noreferrer">porównanie ogrzewania podłogowego i konwekcyjnego</a> oraz <a href="https://doi.org/10.1016/j.buildenv.2022.109353" target="_blank" rel="noopener noreferrer">badanie procesu nawilżania przy ogrzewaniu podłogowym</a>. Kalkulator wykorzystuje równanie Magnusa i ma charakter edukacyjny.
        </div>
      </section>

      <section class="rk-how-section" id="rk-how-podsumowanie" aria-labelledby="rk-how-s12">
        <div class="rk-how-section-head">
          <div class="rk-how-section-no">12</div>
          <div>
            <h2 id="rk-how-s12">Wniosek: jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu</h2>
            <p>Rodzaj odbiornika ciepła ma znaczenie, ale nie jest głównym regulatorem zawartości pary wodnej.</p>
          </div>
        </div>

        <p>Podłogówka może obniżyć procentową wilgotność względną, gdy podnosi temperaturę, lecz nie usuwa wilgoci samym ogrzewaniem. Zimowy mikroklimat zależy przede wszystkim od zawartości wody w powietrzu zewnętrznym, strumienia wentylacji, infiltracji, temperatury zadanej, odzysku wilgoci oraz sposobu użytkowania domu.</p>

        <div class="rk-how-truth">
          <p><strong>Najlepsza decyzja nie zaczyna się od zakupu nawilżacza.</strong> Zaczyna się od wiarygodnego pomiaru temperatury i RH, obliczenia punktu rosy, sprawdzenia wentylacji oraz oceny zimnych powierzchni. Dopiero wtedy wiadomo, czy problemem jest rzeczywisty niedobór wilgoci, nadmierna wymiana powietrza, przegrzewanie, czy wada budynku.</p>
        </div>
      </section>

      <section class="rk-how-cta" aria-label="Zamówienie projektu ogrzewania podłogowego">
        <h3>Wilgotność to część mikroklimatu. Instalację nadal trzeba policzyć.</h3>
        <p>Projekt określa wymaganą moc pomieszczeń, temperaturę zasilania, rozstaw i długość rur, przepływy, opory hydrauliczne oraz nastawy rozdzielacza. Dzięki temu podłoga pracuje z temperaturą wynikającą z obliczeń, a nie z przypadkowo zawyżonej nastawy.</p>
        <a class="rk-how-cta-link" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego</a>
        <small>Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl – serwisu należącego do autora artykułu.</small>
      </section>

      <aside class="rk-how-author-box" aria-label="Informacje o autorze" itemscope itemtype="https://schema.org/Person">
        <div class="rk-how-author-head">
          <div>
            <h3>Autor opracowania</h3>
            <p>Praktyka projektowa, wiedza techniczna i język zrozumiały dla inwestora.</p>
          </div>
          <div class="rk-how-author-mark">E-E-A-T • HVAC</div>
        </div>
        <div class="rk-how-author-main">
          <div class="rk-how-author-profile">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski – projektant instalacji sanitarnych i specjalista HVAC" width="190" height="190" loading="lazy" itemprop="image">
            <h4 itemprop="name">Robert Kucharski</h4>
            <span class="rk-how-author-role" itemprop="jobTitle">Projektant instalacji sanitarnych • specjalista systemów HVAC i ogrzewania podłogowego</span>
          </div>
          <div class="rk-how-author-content">
            <div class="rk-how-quote">
              <blockquote>„Wilgotności nie ocenia się po samym odczuciu ani po jednym procencie na wyświetlaczu. Trzeba spojrzeć jednocześnie na temperaturę, punkt rosy, wentylację i zachowanie przegród. Sam rodzaj ogrzewania jest tylko jednym z elementów bilansu.”</blockquote>
            </div>
            <div class="rk-how-tabs">
              <div class="rk-how-tab-buttons" role="tablist" aria-label="Informacje o autorze">
                <button class="rk-how-tab-button is-active" type="button" role="tab" aria-selected="true" data-author-tab="about">O autorze</button>
                <button class="rk-how-tab-button" type="button" role="tab" aria-selected="false" data-author-tab="experience">Doświadczenie</button>
                <button class="rk-how-tab-button" type="button" role="tab" aria-selected="false" data-author-tab="portals">Portale</button>
              </div>
              <div class="rk-how-tab-panel is-active" role="tabpanel" data-author-panel="about">
                <p itemprop="description">Specjalizuję się w projektowaniu wodnego ogrzewania podłogowego, obliczeniach obciążenia cieplnego i hydraulice instalacji. Łączę wymagania techniczne z praktycznym spojrzeniem inwestora: dokumentacja ma być policzona, czytelna i możliwa do poprawnego wykonania.</p>
              </div>
              <div class="rk-how-tab-panel" role="tabpanel" data-author-panel="experience" hidden>
                <p>Przygotowuję projekty instalacji grzewczych, analizuję temperatury zasilania, przepływy, opory hydrauliczne, dobór źródeł ciepła i współpracę ogrzewania z wentylacją budynku. Publikuję techniczne opracowania dotyczące HVAC, energooszczędności, budowy i świadomego prowadzenia inwestycji.</p>
              </div>
              <div class="rk-how-tab-panel" role="tabpanel" data-author-panel="portals" hidden>
                <p>Jestem właścicielem trzech serwisów branżowych. Powiązanie podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p>
                <div class="rk-how-portals">
                  <a href="https://projekt-ogrzewania.pl/" target="_blank" rel="noopener">Projekt-Ogrzewania.pl</a>
                  <a href="https://remont.biz.pl/" target="_blank" rel="noopener">Remont.biz.pl</a>
                  <a href="https://sobir.pl/" target="_blank" rel="noopener">Sobir.pl</a>
                </div>
              </div>
            </div>
          </div>
        </div>
      </aside>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#article",
      "url": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/" },
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/" },
      "headline": "Jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu?",
      "alternativeHeadline": "Ogrzewanie podłogowe a wilgotność powietrza – obliczenia, punkt rosy, wentylacja i fakty",
      "description": "Techniczne wyjaśnienie wpływu ogrzewania podłogowego na wilgotność względną, zawartość wilgoci i punkt rosy, wraz z kalkulatorem, diagnostyką i zaleceniami.",
      "datePublished": "2025-01-20T09:56:50+00:00",
      "dateModified": "2026-08-24T11:00:00+02:00",
      "inLanguage": "pl-PL",
      "author": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "image": { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#primaryimage" },
      "keywords": [
        "jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu",
        "ogrzewanie podłogowe a wilgotność powietrza",
        "czy ogrzewanie podłogowe wysusza powietrze",
        "podłogówka a suche powietrze",
        "jaka wilgotność przy ogrzewaniu podłogowym",
        "ogrzewanie podłogowe a rekuperacja",
        "wilgotność względna w domu zimą",
        "punkt rosy w domu",
        "podłogówka a nawilżacz powietrza",
        "ogrzewanie podłogowe a pleśń"
      ],
      "articleSection": [
        "Ogrzewanie podłogowe",
        "Mikroklimat w domu",
        "Wilgotność powietrza",
        "Wentylacja i rekuperacja",
        "Fizyka budowli",
        "Komfort cieplny"
      ],
      "about": [
        { "@type": "DefinedTerm", "name": "Wilgotność względna" },
        { "@type": "DefinedTerm", "name": "Punkt rosy" },
        { "@type": "DefinedTerm", "name": "Zawartość wilgoci" },
        { "@type": "DefinedTerm", "name": "Ogrzewanie podłogowe" },
        { "@type": "DefinedTerm", "name": "Wentylacja mechaniczna z odzyskiem ciepła" }
      ],
      "citation": [
        { "@type": "CreativeWork", "name": "NOAA – What Is Humidity?", "url": "https://www.nesdis.noaa.gov/about/k-12-education/atmosphere/what-humidity" },
        { "@type": "CreativeWork", "name": "US EPA – A Brief Guide to Mold, Moisture and Your Home", "url": "https://www.epa.gov/mold/brief-guide-mold-moisture-and-your-home" },
        { "@type": "CreativeWork", "name": "WHO Guidelines for Indoor Air Quality: Dampness and Mould", "url": "https://www.who.int/publications/i/item/9789289041683" },
        { "@type": "ScholarlyArticle", "name": "Experimental Investigation of Indoor Thermal Comfort under Different Heating Conditions in Winter", "url": "https://www.mdpi.com/2075-5309/12/12/2232" },
        { "@type": "ScholarlyArticle", "name": "Effects of humidification process on thermal performance of floor heating systems: An experimental study", "url": "https://doi.org/10.1016/j.buildenv.2022.109353" }
      ],
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#humidity-calculator" },
        { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#drivers-list" },
        { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq",
      "url": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-faq",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/" },
      "inLanguage": "pl-PL",
      "mainEntity": [
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-1", "name": "Czy ogrzewanie podłogowe wysusza powietrze?", "acceptedAnswer": { "@type": "Answer", "text": "Nie usuwa pary wodnej samym ogrzewaniem. Podniesienie temperatury obniża jednak wilgotność względną, jeśli do pomieszczenia nie zostanie dostarczona dodatkowa wilgoć. Rzeczywiste osuszanie zachodzi przez wentylację, infiltrację, kondensację lub pracę urządzenia osuszającego." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-2", "name": "Dlaczego wilgotność spada po włączeniu podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Ponieważ wraz ze wzrostem temperatury rośnie ciśnienie pary nasyconej. Ta sama zawartość pary wodnej stanowi wtedy mniejszy procent możliwego nasycenia, więc higrometr pokazuje niższą wilgotność względną." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-3", "name": "Czy podłogówka obniża wilgotność bardziej niż grzejniki?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można tego stwierdzić bez porównania temperatury powietrza, wymiany wentylacyjnej i źródeł wilgoci. Oba systemy obniżają RH, gdy ogrzewają powietrze. Podłogówka może zapewniać komfort przy nieco niższej temperaturze powietrza, ale nie gwarantuje wyższej wilgotności w każdym budynku." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-4", "name": "Jaka wilgotność jest najlepsza przy ogrzewaniu podłogowym?", "acceptedAnswer": { "@type": "Answer", "text": "Nie ma osobnego zakresu wyłącznie dla podłogówki. W mieszkaniach praktycznym punktem odniesienia jest zwykle około 30–50% RH, z uwzględnieniem temperatury zewnętrznej, stanu przegród, kondensacji oraz potrzeb materiałów. Długotrwałe wartości powyżej 60% wymagają diagnostyki." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-5", "name": "Czy 30% wilgotności zimą to za mało?", "acceptedAnswer": { "@type": "Answer", "text": "To niski poziom, który może powodować dyskomfort, ale przed nawilżaniem warto potwierdzić pomiar, sprawdzić temperaturę, wentylację i nieszczelności. W czasie silnego mrozu dopuszczalny poziom bywa ograniczony ryzykiem kondensacji na chłodnych powierzchniach." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-6", "name": "Czy rekuperacja wysusza powietrze przy podłogówce?", "acceptedAnswer": { "@type": "Answer", "text": "Wentylacja mechaniczna usuwa wilgoć wraz z powietrzem wywiewanym. Zimą nawiewane powietrze po ogrzaniu ma często niską RH. Stopień osuszania zależy od przepływów, szczelności, źródeł wilgoci oraz rodzaju wymiennika." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-7", "name": "Czym różni się wymiennik entalpiczny od zwykłego?", "acceptedAnswer": { "@type": "Answer", "text": "Zwykły wymiennik odzyskuje przede wszystkim ciepło. Wymiennik entalpiczny może dodatkowo przenosić część wilgoci z powietrza wywiewanego do nawiewanego. Zmniejsza to zimowy spadek RH, ale nie zastępuje aktywnego nawilżacza." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-8", "name": "Czy przy ogrzewaniu podłogowym potrzebny jest nawilżacz?", "acceptedAnswer": { "@type": "Answer", "text": "Tylko wtedy, gdy wiarygodne pomiary potwierdzają trwałą, zbyt niską wilgotność, a wcześniej sprawdzono temperaturę, przepływy wentylacji i infiltrację. Nawilżacz trzeba kontrolować higrometrem i regularnie czyścić." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-9", "name": "Czy rośliny wystarczą do podniesienia wilgotności?", "acceptedAnswer": { "@type": "Answer", "text": "Rośliny oddają część wody przez transpirację, ale efekt jest zmienny i trudny do kontrolowania. Nie zastąpią diagnozy wentylacji ani urządzenia dobranego do rzeczywistego deficytu wilgoci." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-10", "name": "Czy podłogówka może uszkodzić drewnianą podłogę przez suche powietrze?", "acceptedAnswer": { "@type": "Answer", "text": "Ryzyko wynika z połączenia długotrwałej wilgotności, temperatury powierzchni, wilgotności drewna, konstrukcji i sposobu montażu. Należy przestrzegać dopuszczeń okładziny oraz parametrów przyjętych w projekcie, a warunki oceniać w dłuższym okresie." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-11", "name": "Czy ogrzewanie podłogowe zapobiega pleśni?", "acceptedAnswer": { "@type": "Answer", "text": "Może podnosić temperaturę części powierzchni i sprzyjać wysychaniu, ale nie usuwa przyczyn pleśni takich jak przecieki, mostki cieplne, brak izolacji czy nieskuteczna wentylacja. Widoczną pleśń trzeba traktować jako sygnał do znalezienia źródła wilgoci." } },
        { "@type": "Question", "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#faq-12", "name": "Gdzie ustawić higrometr przy ogrzewaniu podłogowym?", "acceptedAnswer": { "@type": "Answer", "text": "W reprezentatywnej części pomieszczenia, w strefie użytkowej, z dala od podłogi, okna, nawiewnika, promieni słonecznych, łazienki i miejscowych źródeł pary. Dobrze porównać dwa urządzenia i obserwować trend przez kilka dni." } }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#drivers-list",
      "name": "Czynniki wpływające na wilgotność powietrza w ogrzewanym domu",
      "numberOfItems": 6,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Temperatura i zawartość wilgoci w powietrzu zewnętrznym", "item": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-flow-1" },
        { "@type": "ListItem", "position": 2, "name": "Intensywność wentylacji", "item": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-flow-2" },
        { "@type": "ListItem", "position": 3, "name": "Infiltracja przez nieszczelności", "item": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-flow-3" },
        { "@type": "ListItem", "position": 4, "name": "Wewnętrzne źródła pary wodnej", "item": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-flow-4" },
        { "@type": "ListItem", "position": 5, "name": "Temperatura powietrza w pomieszczeniu", "item": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-flow-5" },
        { "@type": "ListItem", "position": 6, "name": "Buforowanie wilgoci przez materiały", "item": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-flow-6" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#humidity-calculator",
      "name": "Kalkulator wpływu temperatury na wilgotność względną powietrza",
      "description": "Edukacyjny kalkulator obliczający wilgotność względną po zmianie temperatury, punkt rosy i zawartość wilgoci przy braku dopływu lub odpływu pary wodnej.",
      "url": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/#rk-how-humidity-model",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Any",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": { "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1" },
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "caption": "Robert Kucharski – projektant instalacji sanitarnych i specjalista HVAC"
      },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista branży budowlano-instalacyjnej",
      "description": "Projektant instalacji sanitarnych, specjalista ogrzewania podłogowego, hydrauliki instalacji, obliczeń obciążenia cieplnego i systemów HVAC. Właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl i Sobir.pl.",
      "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "knowsAbout": [
        "HVAC",
        "ogrzewanie podłogowe",
        "projektowanie instalacji sanitarnych",
        "hydraulika instalacji grzewczych",
        "obliczenia OZC",
        "wentylacja mechaniczna",
        "mikroklimat wewnętrzny",
        "efektywność energetyczna"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    {
      "@type": "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 () {
    "use strict";

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

    var progress = root.querySelector(".rk-how-progress");
    var ticking = false;

    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) {
        window.requestAnimationFrame(updateProgress);
        ticking = true;
      }
    }

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

    var flowTitles = [
      "1. Zimne powietrze może mieć wysoką RH, lecz mało wody",
      "2. Wentylacja wymienia nie tylko CO₂, ale również wilgoć",
      "3. Nieszczelności działają jak niekontrolowana wentylacja",
      "4. Domownicy i codzienne czynności wytwarzają parę",
      "5. Temperatura zmienia procent bez usuwania wody",
      "6. Materiały chwilowo magazynują i oddają wilgoć"
    ];

    var flowTexts = [
      "Powietrze zewnętrzne o temperaturze −5°C i wilgotności 80% po ogrzaniu do 21°C, bez dodawania wilgoci, miałoby jedynie około 14% RH. Dlatego zimą nawet wilgotne powietrze na zewnątrz może intensywnie osuszać wnętrze po podgrzaniu.",
      "Każdy metr sześcienny powietrza wywiewanego zabiera część pary wodnej, a nawiew dostarcza wilgoć zależną od warunków zewnętrznych i rodzaju odzysku. Zbyt duży przepływ zimą może obniżać RH, choć nadal trzeba zachować wymaganą jakość powietrza.",
      "Powietrze napływające przez szczeliny omija kontrolę układu wentylacyjnego. W wietrzne i mroźne dni infiltracja może mocno zwiększyć wymianę i powodować suchość, nawet gdy centrala działa z prawidłową nastawą.",
      "Oddychanie, gotowanie, kąpiel, suszenie prania i rośliny zwiększają ilość pary. W domu o małej liczbie mieszkańców i intensywnej wentylacji bilans będzie inny niż w tym samym budynku użytkowanym przez dużą rodzinę.",
      "Podniesienie temperatury z 20°C do 22°C przy niezmienionej zawartości wilgoci obniża RH z 50% do około 44%. Sam spadek wskazania nie dowodzi, że system grzewczy usunął wodę z powietrza.",
      "Tynki, drewno, tekstylia i wyposażenie mogą pochłaniać parę przy wzroście wilgotności oraz oddawać ją podczas spadku. Zjawisko buforuje krótkie wahania, ale nie równoważy długotrwałych strat przez wentylację."
    ];

    var flowBox = root.querySelector("[data-rk-flow]");
    if (flowBox) {
      var flowButtons = flowBox.querySelectorAll("[data-flow-step]");
      var flowTitle = flowBox.querySelector("[data-flow-title]");
      var flowText = flowBox.querySelector("[data-flow-text]");

      flowButtons.forEach(function (button) {
        button.addEventListener("click", function () {
          var index = Number(button.getAttribute("data-flow-step"));
          flowButtons.forEach(function (item) {
            item.classList.remove("is-active");
            item.setAttribute("aria-pressed", "false");
          });
          button.classList.add("is-active");
          button.setAttribute("aria-pressed", "true");
          if (flowTitle) flowTitle.textContent = flowTitles[index] || flowTitles[0];
          if (flowText) flowText.textContent = flowTexts[index] || flowTexts[0];
        });
      });
    }

    var tempStart = root.querySelector("#rk-how-temp-start");
    var rhStart = root.querySelector("#rk-how-rh-start");
    var tempEnd = root.querySelector("#rk-how-temp-end");

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

    function saturationPressure(temp) {
      return 6.112 * Math.exp((17.62 * temp) / (243.12 + temp));
    }

    function dewPoint(actualPressure) {
      var gamma = Math.log(actualPressure / 6.112);
      return (243.12 * gamma) / (17.62 - gamma);
    }

    function moistureRatio(actualPressure) {
      var pvKpa = actualPressure / 10;
      return 0.62198 * pvKpa / (101.325 - pvKpa) * 1000;
    }

    function setText(selector, textValue) {
      var element = root.querySelector(selector);
      if (element) element.textContent = textValue;
    }

    function classify(rhValue, condensed) {
      if (condensed || rhValue > 60) return { label: condensed ? "Możliwa kondensacja" : "Wilgotność podwyższona", badge: "sprawdź przyczynę", className: "is-high" };
      if (rhValue < 30) return { label: "Powietrze bardzo suche", badge: "wymaga diagnozy", className: "is-low" };
      if (rhValue < 40 || rhValue > 55) return { label: "Zakres graniczny", badge: "obserwuj warunki", className: "is-watch" };
      return { label: "Zakres umiarkowany", badge: "bez alarmu", className: "is-good" };
    }

    function chartPoint(temp, rhValue) {
      var x = 70 + (temp - 15) / 13 * 795;
      var capped = Math.min(100, Math.max(0, rhValue));
      var y = 360 - capped / 100 * 320;
      return { x: x, y: y };
    }

    function updateChart(actualPressure, selectedTemp, selectedRh) {
      var line = root.querySelector("#rk-how-chart-line");
      var areaPath = root.querySelector("#rk-how-chart-area");
      var dot = root.querySelector("#rk-how-chart-dot");
      var valueLabel = root.querySelector("#rk-how-chart-value");
      if (!line || !areaPath || !dot || !valueLabel) return;

      var points = [];
      var temp;
      for (temp = 15; temp <= 28.0001; temp += 0.5) {
        var rhAtTemp = actualPressure / saturationPressure(temp) * 100;
        points.push(chartPoint(temp, Math.min(100, rhAtTemp)));
      }

      var path = points.map(function (point, index) {
        return (index === 0 ? "M " : "L ") + point.x.toFixed(2) + " " + point.y.toFixed(2);
      }).join(" ");
      var area = path + " L " + points[points.length - 1].x.toFixed(2) + " 360 L " + points[0].x.toFixed(2) + " 360 Z";
      line.setAttribute("d", path);
      areaPath.setAttribute("d", area);

      var selected = chartPoint(selectedTemp, selectedRh);
      dot.setAttribute("cx", selected.x.toFixed(2));
      dot.setAttribute("cy", selected.y.toFixed(2));
      valueLabel.setAttribute("x", Math.min(815, selected.x + 14).toFixed(2));
      valueLabel.setAttribute("y", Math.max(30, selected.y - 14).toFixed(2));
      valueLabel.textContent = pl(selectedRh, 1) + "%";
    }

    function updateHumidityModel() {
      if (!tempStart || !rhStart || !tempEnd) return;

      var t1 = Number(tempStart.value);
      var rh1 = Number(rhStart.value);
      var t2 = Number(tempEnd.value);
      var actualPressure = saturationPressure(t1) * rh1 / 100;
      var rawRh2 = actualPressure / saturationPressure(t2) * 100;
      var condensed = rawRh2 > 100;
      var rh2 = Math.min(100, rawRh2);
      var change = rh2 - rh1;
      var dew = dewPoint(actualPressure);
      var ratio = moistureRatio(actualPressure);
      var statusData = classify(rh2, condensed);

      setText("#rk-how-temp-start-out", pl(t1, t1 % 1 ? 1 : 0) + "°C");
      setText("#rk-how-rh-start-out", pl(rh1, 0) + "%");
      setText("#rk-how-temp-end-out", pl(t2, t2 % 1 ? 1 : 0) + "°C");
      setText("#rk-how-rh-result", pl(rh2, 1) + "%");
      setText("#rk-how-change-result", (change > 0 ? "+" : change < 0 ? "−" : "") + pl(Math.abs(change), 1) + " p.p.");
      setText("#rk-how-dew-result", pl(dew, 1) + "°C");
      setText("#rk-how-ratio-result", pl(ratio, 1) + " g/kg");
      setText("#rk-how-status-text", statusData.label);

      var meter = root.querySelector("#rk-how-meter-fill");
      if (meter) meter.style.width = Math.max(2, Math.min(100, rh2)).toFixed(1) + "%";

      var status = root.querySelector("#rk-how-status");
      if (status) {
        status.textContent = statusData.badge;
        status.className = "rk-how-status " + statusData.className;
      }

      updateChart(actualPressure, t2, rh2);
    }

    [tempStart, rhStart, tempEnd].forEach(function (input) {
      if (input) input.addEventListener("input", updateHumidityModel);
    });
    updateHumidityModel();

    var tabButtons = root.querySelectorAll("[data-author-tab]");
    var tabPanels = root.querySelectorAll("[data-author-panel]");

    tabButtons.forEach(function (button) {
      button.addEventListener("click", function () {
        var name = button.getAttribute("data-author-tab");
        tabButtons.forEach(function (item) {
          item.classList.remove("is-active");
          item.setAttribute("aria-selected", "false");
        });
        tabPanels.forEach(function (panel) {
          var active = panel.getAttribute("data-author-panel") === name;
          panel.classList.toggle("is-active", active);
          panel.hidden = !active;
        });
        button.classList.add("is-active");
        button.setAttribute("aria-selected", "true");
      });
    });

    window.addEventListener("scroll", requestProgress, { passive: true });
    window.addEventListener("resize", requestProgress, { passive: true });
    updateProgress();
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-ogrzewanie-podlogowe-wplywa-na-wilgotnosc-powietrza-w-domu/">Jak ogrzewanie podłogowe wpływa na wilgotność powietrza w domu?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
