<?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 zyski ciepła - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/zyski-ciepla/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/zyski-ciepla/</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.3</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa zyski ciepła - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/zyski-ciepla/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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>
	</channel>
</rss>
