<?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 obliczanie strat ciepła - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/obliczanie-strat-ciepla/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/obliczanie-strat-ciepla/</link>
	<description>Ogrzewanie podłogowe i systemy HVAC oparte na obliczeniach.</description>
	<lastBuildDate>Mon, 07 Sep 2026 11:37:14 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2026/10/Projekt-Ogrzewania-favicon-512-100x100.webp</url>
	<title>Archiwa obliczanie strat ciepła - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/obliczanie-strat-ciepla/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Projekt ogrzewania podłogowego z ChatGPT i AI – czy to działa?</title>
		<link>https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai-czy-to-dziala/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 07 Sep 2026 11:18:34 +0000</pubDate>
				<category><![CDATA[ChatGPT]]></category>
		<category><![CDATA[Hydraulika instalacji]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Obliczenia cieplne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki domowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Projekt ogrzewania]]></category>
		<category><![CDATA[Projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Sztuczna inteligencja]]></category>
		<category><![CDATA[ai hvac]]></category>
		<category><![CDATA[chatgpt ogrzewanie podłogowe]]></category>
		<category><![CDATA[długość pętli ogrzewania podłogowego]]></category>
		<category><![CDATA[dobór pompy obiegowej]]></category>
		<category><![CDATA[obliczanie strat ciepła]]></category>
		<category><![CDATA[opory hydrauliczne podłogówki]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego ai]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego z chatgpt]]></category>
		<category><![CDATA[projekt podłogówki online]]></category>
		<category><![CDATA[projekt podłogówki samemu]]></category>
		<category><![CDATA[przepływ w ogrzewaniu podłogowym]]></category>
		<category><![CDATA[rozstaw rur ogrzewania podłogowego]]></category>
		<category><![CDATA[sztuczna inteligencja w hvac]]></category>
		<category><![CDATA[weryfikacja projektu ogrzewania podłogowego]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=7493</guid>

					<description><![CDATA[<p>AI + HVAC • analiza techniczna 2026 Projekt wygląda profesjonalnie. Teraz sprawdź, czy liczby naprawdę się spinają. ChatGPT może uporządkować dane, objaśnić wzory i przygotować logicznie brzmiącą koncepcję. Nie oznacza to jeszcze, że podłoga pokryje straty ciepła, pętle dadzą się wyregulować, a pompa obsłuży krytyczny obieg. Czytanie: około 28 minut Interaktywny audyt projektu AI Aktualizacja:&#8230;&#160;<a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai-czy-to-dziala/" rel="bookmark">Dowiedz się więcej &#187;<span class="screen-reader-text">Projekt ogrzewania podłogowego z ChatGPT i AI – czy to działa?</span></a></p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai-czy-to-dziala/">Projekt ogrzewania podłogowego z ChatGPT i AI – czy to działa?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-ai-floor-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #28c9da;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff7438;
    --rk-orange-soft: #fff2ec;
    --rk-green: #16876d;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e7ad2f;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.76;
  }

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

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

  #rk-ai-floor-guide a {
    color: var(--rk-blue);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }

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

  #rk-ai-floor-guide summary,
  #rk-ai-floor-guide a {
    -webkit-tap-highlight-color: transparent;
  }

  #rk-ai-floor-guide h2,
  #rk-ai-floor-guide h3,
  #rk-ai-floor-guide h4,
  #rk-ai-floor-guide p,
  #rk-ai-floor-guide ul,
  #rk-ai-floor-guide ol,
  #rk-ai-floor-guide blockquote {
    margin-top: 0;
  }

  #rk-ai-floor-guide h2,
  #rk-ai-floor-guide h3,
  #rk-ai-floor-guide h4 {
    color: var(--rk-dark);
    line-height: 1.18;
    letter-spacing: -0.025em;
  }

  #rk-ai-floor-guide h2 {
    margin-bottom: 22px;
    font-size: clamp(30px, 4vw, 48px);
    scroll-margin-top: 30px;
  }

  #rk-ai-floor-guide h3 {
    margin-bottom: 12px;
    font-size: clamp(22px, 2.4vw, 29px);
  }

  #rk-ai-floor-guide h4 {
    margin-bottom: 9px;
    font-size: 20px;
  }

  #rk-ai-floor-guide p:last-child,
  #rk-ai-floor-guide ul:last-child,
  #rk-ai-floor-guide ol:last-child {
    margin-bottom: 0;
  }

  #rk-ai-floor-guide .rk-ai-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 28px 80px rgba(16, 37, 54, 0.11);
  }

  #rk-ai-floor-guide .rk-ai-hero {
    position: relative;
    overflow: hidden;
    padding: 62px 58px 54px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 88% 15%, rgba(40, 201, 218, 0.26), transparent 28%),
      radial-gradient(circle at 78% 105%, rgba(255, 116, 56, 0.27), transparent 34%),
      linear-gradient(135deg, #0f2637 0%, #123f55 64%, #174c5c 100%);
  }

  #rk-ai-floor-guide .rk-ai-hero::after {
    content: "AI";
    position: absolute;
    right: -20px;
    top: -62px;
    color: rgba(255, 255, 255, 0.045);
    font-size: 260px;
    font-weight: 1000;
    line-height: 1;
    letter-spacing: -0.12em;
    transform: rotate(-7deg);
  }

  #rk-ai-floor-guide .rk-ai-hero-inner {
    position: relative;
    z-index: 1;
    max-width: 940px;
  }

  #rk-ai-floor-guide .rk-ai-eyebrow,
  #rk-ai-floor-guide .rk-ai-kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    color: var(--rk-blue);
    font-size: 13px;
    font-weight: 900;
    letter-spacing: 0.11em;
    text-transform: uppercase;
  }

  #rk-ai-floor-guide .rk-ai-eyebrow {
    color: #91f4ff;
  }

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

  #rk-ai-floor-guide .rk-ai-hero-title {
    max-width: 910px;
    margin-bottom: 20px;
    color: var(--rk-white);
    font-size: clamp(38px, 6vw, 68px);
    font-weight: 950;
    line-height: 1.02;
    letter-spacing: -0.05em;
  }

  #rk-ai-floor-guide .rk-ai-hero-lead {
    max-width: 850px;
    margin-bottom: 26px;
    color: #dcecf2;
    font-size: clamp(19px, 2.3vw, 24px);
    line-height: 1.55;
  }

  #rk-ai-floor-guide .rk-ai-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }

  #rk-ai-floor-guide .rk-ai-meta span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, 0.17);
    border-radius: 999px;
    color: #e7f7fa;
    background: rgba(255, 255, 255, 0.07);
    font-size: 13px;
    font-weight: 750;
  }

  #rk-ai-floor-guide .rk-ai-meta i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--rk-cyan);
  }

  #rk-ai-floor-guide .rk-ai-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding: 24px 32px;
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-ai-floor-guide .rk-ai-nav strong {
    display: block;
    width: 100%;
    margin-bottom: 2px;
    color: var(--rk-muted);
    font-size: 12px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-ai-floor-guide .rk-ai-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    padding: 9px 15px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 14px;
    font-weight: 850;
    line-height: 1.25;
    text-decoration: none;
    transition: transform 0.18s ease, background 0.18s ease, color 0.18s ease;
  }

  #rk-ai-floor-guide .rk-ai-nav a:hover,
  #rk-ai-floor-guide .rk-ai-nav a:focus-visible {
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-1px);
    outline: none;
  }

  #rk-ai-floor-guide .rk-ai-section {
    padding: 64px 58px;
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-ai-floor-guide .rk-ai-section:nth-of-type(even) {
    background: #fbfdfe;
  }

  #rk-ai-floor-guide .rk-ai-intro {
    max-width: 950px;
    margin-bottom: 30px;
    color: var(--rk-text);
    font-size: 20px;
  }

  #rk-ai-floor-guide .rk-ai-answer {
    display: grid;
    grid-template-columns: 1.45fr 0.8fr;
    overflow: hidden;
    margin: 30px 0;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
  }

  #rk-ai-floor-guide .rk-ai-answer-main,
  #rk-ai-floor-guide .rk-ai-answer-side {
    padding: 28px;
  }

  #rk-ai-floor-guide .rk-ai-answer-main {
    background: var(--rk-cyan-soft);
  }

  #rk-ai-floor-guide .rk-ai-answer-side {
    color: var(--rk-white);
    background: var(--rk-navy);
  }

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

  #rk-ai-floor-guide .rk-ai-answer-side p {
    color: #dcebf0;
  }

  #rk-ai-floor-guide .rk-ai-formula {
    margin: 28px 0;
    padding: 25px 28px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 0 18px 18px 0;
    background: var(--rk-dark);
    color: var(--rk-white);
  }

  #rk-ai-floor-guide .rk-ai-formula strong {
    display: block;
    margin-bottom: 8px;
    color: #8ff5ff;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(21px, 3vw, 31px);
    letter-spacing: -0.03em;
  }

  #rk-ai-floor-guide .rk-ai-formula span {
    color: #d9e8ed;
    font-size: 15px;
  }

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

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

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

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

  #rk-ai-floor-guide .rk-ai-card,
  #rk-ai-floor-guide .rk-ai-error,
  #rk-ai-floor-guide .rk-ai-step,
  #rk-ai-floor-guide .rk-ai-check {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, 0.05);
  }

  #rk-ai-floor-guide .rk-ai-card-number,
  #rk-ai-floor-guide .rk-ai-error b,
  #rk-ai-floor-guide .rk-ai-check b {
    display: inline-flex;
    margin-bottom: 14px;
    color: var(--rk-blue);
    font-size: 12px;
    font-weight: 950;
    letter-spacing: 0.09em;
    text-transform: uppercase;
  }

  #rk-ai-floor-guide .rk-ai-card h3,
  #rk-ai-floor-guide .rk-ai-error h3,
  #rk-ai-floor-guide .rk-ai-step h3,
  #rk-ai-floor-guide .rk-ai-check h3 {
    font-size: 22px;
  }

  #rk-ai-floor-guide .rk-ai-card p,
  #rk-ai-floor-guide .rk-ai-error p,
  #rk-ai-floor-guide .rk-ai-step p,
  #rk-ai-floor-guide .rk-ai-check p {
    color: var(--rk-text);
    font-size: 16px;
  }

  #rk-ai-floor-guide .rk-ai-check {
    border-top: 5px solid var(--rk-cyan);
  }

  #rk-ai-floor-guide .rk-ai-check:nth-child(2n) {
    border-top-color: var(--rk-green);
  }

  #rk-ai-floor-guide .rk-ai-check:nth-child(3n) {
    border-top-color: var(--rk-orange);
  }

  #rk-ai-floor-guide .rk-ai-check:nth-child(4n) {
    border-top-color: var(--rk-purple);
  }

  #rk-ai-floor-guide .rk-ai-callout {
    margin: 28px 0;
    padding: 24px 26px;
    border: 1px solid #eed68d;
    border-radius: 18px;
    background: var(--rk-yellow-soft);
  }

  #rk-ai-floor-guide .rk-ai-callout strong {
    display: block;
    margin-bottom: 7px;
    color: #78550b;
    font-size: 18px;
  }

  #rk-ai-floor-guide .rk-ai-callout p {
    color: #6f5a25;
  }

  #rk-ai-floor-guide .rk-ai-quote {
    position: relative;
    margin: 28px 0;
    padding: 28px 28px 28px 78px;
    border: 0;
    border-radius: 18px;
    background: var(--rk-purple-soft);
  }

  #rk-ai-floor-guide .rk-ai-quote::before {
    content: "„";
    position: absolute;
    left: 24px;
    top: 0;
    color: var(--rk-purple);
    font-family: Georgia, serif;
    font-size: 80px;
    line-height: 1;
  }

  #rk-ai-floor-guide .rk-ai-quote p {
    color: #342b70;
    font-size: 19px;
    font-weight: 750;
  }

  #rk-ai-floor-guide .rk-ai-table-wrap {
    margin: 30px 0;
  }

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

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

  #rk-ai-floor-guide .rk-ai-table th:last-child,
  #rk-ai-floor-guide .rk-ai-table td:last-child {
    border-right: 0;
  }

  #rk-ai-floor-guide .rk-ai-table tr:last-child td {
    border-bottom: 0;
  }

  #rk-ai-floor-guide .rk-ai-table thead th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: 13px;
    letter-spacing: 0.035em;
  }

  #rk-ai-floor-guide .rk-ai-table tbody tr:nth-child(even) td {
    background: var(--rk-soft);
  }

  #rk-ai-floor-guide .rk-ai-table-caption {
    margin-top: 10px;
    color: var(--rk-muted);
    font-size: 13px;
  }

  #rk-ai-floor-guide .rk-ai-tool {
    overflow: hidden;
    margin-top: 30px;
    border-radius: 24px;
    color: var(--rk-white);
    background: var(--rk-dark);
    box-shadow: 0 24px 65px rgba(16, 37, 54, 0.18);
  }

  #rk-ai-floor-guide .rk-ai-tool-head {
    padding: 34px 36px 30px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.11);
    background:
      radial-gradient(circle at 93% 15%, rgba(40, 201, 218, 0.2), transparent 25%),
      linear-gradient(135deg, #123146, #16485a);
  }

  #rk-ai-floor-guide .rk-ai-tool-head h3 {
    margin-bottom: 10px;
    color: var(--rk-white);
    font-size: clamp(27px, 4vw, 40px);
  }

  #rk-ai-floor-guide .rk-ai-tool-head p {
    max-width: 900px;
    color: #d7e9ef;
  }

  #rk-ai-floor-guide .rk-ai-tool-body {
    display: grid;
    gap: 20px;
    padding: 28px;
  }

  #rk-ai-floor-guide .rk-ai-tool-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 20px;
    align-items: stretch;
  }

  #rk-ai-floor-guide .rk-ai-tool-row.rk-ai-analysis-stack {
    grid-template-columns: 1fr;
  }

  #rk-ai-floor-guide .rk-ai-tool-panel {
    min-width: 0;
    padding: 24px;
    border: 1px solid rgba(160, 213, 228, 0.25);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.045);
  }

  #rk-ai-floor-guide .rk-ai-tool-panel h4 {
    margin-bottom: 8px;
    color: var(--rk-white);
    font-size: 22px;
  }

  #rk-ai-floor-guide .rk-ai-tool-panel > p {
    margin-bottom: 18px;
    color: #bfd5de;
    font-size: 14px;
  }

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

  #rk-ai-floor-guide .rk-ai-field {
    min-width: 0;
  }

  #rk-ai-floor-guide .rk-ai-field.is-wide {
    grid-column: 1 / -1;
  }

  #rk-ai-floor-guide .rk-ai-field label {
    display: block;
    margin-bottom: 7px;
    color: #e8f6f9;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.35;
  }

  #rk-ai-floor-guide .rk-ai-field input,
  #rk-ai-floor-guide .rk-ai-field select {
    width: 100%;
    height: 48px;
    padding: 10px 12px;
    border: 1px solid #b8ccd4;
    border-radius: 9px;
    color: var(--rk-dark);
    background: var(--rk-white);
    outline: none;
  }

  #rk-ai-floor-guide .rk-ai-field input:focus,
  #rk-ai-floor-guide .rk-ai-field select:focus {
    border-color: var(--rk-cyan);
    box-shadow: 0 0 0 4px rgba(40, 201, 218, 0.15);
  }

  #rk-ai-floor-guide .rk-ai-field small {
    display: block;
    margin-top: 6px;
    color: #9fb8c3;
    font-size: 11px;
    line-height: 1.4;
  }

  #rk-ai-floor-guide .rk-ai-audit-summary {
    display: grid;
    grid-template-columns: minmax(230px, 0.7fr) minmax(0, 1.3fr);
    gap: 18px;
    align-items: stretch;
  }

  #rk-ai-floor-guide .rk-ai-score-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 240px;
    padding: 28px;
    border: 1px solid rgba(160, 213, 228, 0.25);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.045);
    text-align: center;
  }

  #rk-ai-floor-guide .rk-ai-score-ring {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 132px;
    height: 132px;
    border-radius: 50%;
    background: conic-gradient(var(--rk-score-color, var(--rk-cyan)) 0deg, var(--rk-score-color, var(--rk-cyan)) var(--rk-score-angle, 0deg), rgba(255, 255, 255, 0.12) var(--rk-score-angle, 0deg));
    box-shadow: inset 0 0 0 12px rgba(16, 37, 54, 0.96);
  }

  #rk-ai-floor-guide .rk-ai-score-ring strong {
    color: var(--rk-white);
    font-size: 34px;
    line-height: 1;
  }

  #rk-ai-floor-guide .rk-ai-score-label {
    margin-top: 16px;
    color: #9fb8c3;
    font-size: 11px;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-ai-floor-guide .rk-ai-verdict {
    margin-top: 7px;
    color: #79efc7;
    font-size: 21px;
    font-weight: 950;
    line-height: 1.2;
  }

  #rk-ai-floor-guide .rk-ai-verdict.is-warning {
    color: #ffd26d;
  }

  #rk-ai-floor-guide .rk-ai-verdict.is-danger {
    color: #ff968a;
  }

  #rk-ai-floor-guide .rk-ai-results {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
  }

  #rk-ai-floor-guide .rk-ai-result {
    min-width: 0;
    padding: 15px;
    border: 1px solid rgba(160, 213, 228, 0.2);
    border-radius: 13px;
    background: rgba(4, 22, 34, 0.35);
  }

  #rk-ai-floor-guide .rk-ai-result span {
    display: block;
    margin-bottom: 5px;
    color: #9eb7c1;
    font-size: 10px;
    font-weight: 850;
    letter-spacing: 0.045em;
    text-transform: uppercase;
  }

  #rk-ai-floor-guide .rk-ai-result strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    font-size: clamp(19px, 2.6vw, 27px);
    line-height: 1.1;
  }

  #rk-ai-floor-guide .rk-ai-result small {
    display: block;
    margin-top: 5px;
    color: #8fa8b3;
    font-size: 10px;
  }

  #rk-ai-floor-guide .rk-ai-result.is-accent strong {
    color: #75edf8;
  }

  #rk-ai-floor-guide .rk-ai-chart-wrap {
    overflow: hidden;
    border: 1px solid rgba(160, 213, 228, 0.2);
    border-radius: 14px;
    background: #f8fbfc;
  }

  #rk-ai-floor-guide .rk-ai-chart {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 760 / 330;
  }

  #rk-ai-floor-guide .rk-ai-chart-caption {
    padding: 12px 16px 15px;
    border-top: 1px solid var(--rk-line);
    color: var(--rk-dark);
    font-size: 11px;
    font-weight: 750;
  }

  #rk-ai-floor-guide .rk-ai-diagnostics {
    display: grid;
    gap: 9px;
  }

  #rk-ai-floor-guide .rk-ai-diagnostic {
    padding: 13px 14px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 0 10px 10px 0;
    color: #d7e9ef;
    background: rgba(40, 201, 218, 0.08);
    font-size: 13px;
  }

  #rk-ai-floor-guide .rk-ai-diagnostic.is-good {
    border-left-color: #55d9ae;
    background: rgba(22, 135, 109, 0.13);
  }

  #rk-ai-floor-guide .rk-ai-diagnostic.is-warning {
    border-left-color: var(--rk-yellow);
    background: rgba(231, 173, 47, 0.1);
  }

  #rk-ai-floor-guide .rk-ai-diagnostic.is-danger {
    border-left-color: #ff7669;
    background: rgba(217, 75, 61, 0.12);
  }

  #rk-ai-floor-guide .rk-ai-tool-note {
    margin: 0;
    padding: 0 28px 28px;
    color: #9fb6c0;
    font-size: 12px;
  }

  #rk-ai-floor-guide .rk-ai-mid-cta,
  #rk-ai-floor-guide .rk-ai-final-cta {
    position: relative;
    overflow: hidden;
    margin: 0;
    padding: 46px 58px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 92% 20%, rgba(255, 116, 56, 0.25), transparent 27%),
      linear-gradient(135deg, #12384d, #0f2b3e);
  }

  #rk-ai-floor-guide .rk-ai-mid-cta h3,
  #rk-ai-floor-guide .rk-ai-final-cta .rk-ai-cta-title {
    max-width: 840px;
    margin-bottom: 14px;
    color: var(--rk-white);
    font-size: clamp(28px, 4vw, 42px);
    line-height: 1.12;
  }

  #rk-ai-floor-guide .rk-ai-mid-cta p,
  #rk-ai-floor-guide .rk-ai-final-cta p {
    max-width: 910px;
    color: #d9e9ee;
  }

  #rk-ai-floor-guide .rk-ai-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 54px;
    margin-top: 18px;
    padding: 14px 23px;
    border-radius: 10px;
    color: var(--rk-white);
    background: var(--rk-orange);
    box-shadow: 0 12px 28px rgba(255, 116, 56, 0.27);
    font-size: 16px;
    font-weight: 950;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
    transition: transform 0.18s ease, background 0.18s ease;
  }

  #rk-ai-floor-guide .rk-ai-cta-button:hover,
  #rk-ai-floor-guide .rk-ai-cta-button:focus-visible {
    color: var(--rk-white);
    background: #ef5f27;
    transform: translateY(-2px);
    outline: none;
  }

  #rk-ai-floor-guide .rk-ai-disclosure {
    display: block;
    max-width: 790px;
    margin-top: 12px;
    color: #9fb7c0;
    font-size: 11px;
  }

  #rk-ai-floor-guide .rk-ai-example {
    margin: 28px 0;
    padding: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: linear-gradient(135deg, var(--rk-cyan-soft), var(--rk-white));
  }

  #rk-ai-floor-guide .rk-ai-example h3 {
    font-size: 24px;
  }

  #rk-ai-floor-guide .rk-ai-example-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-top: 18px;
  }

  #rk-ai-floor-guide .rk-ai-example-stat {
    padding: 15px;
    border-radius: 12px;
    background: var(--rk-white);
  }

  #rk-ai-floor-guide .rk-ai-example-stat span {
    display: block;
    color: var(--rk-muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
  }

  #rk-ai-floor-guide .rk-ai-example-stat strong {
    display: block;
    margin-top: 4px;
    color: var(--rk-dark);
    font-size: 22px;
  }

  #rk-ai-floor-guide .rk-ai-error {
    border-top: 5px solid var(--rk-red);
    background: linear-gradient(180deg, var(--rk-red-soft), var(--rk-white) 56%);
  }

  #rk-ai-floor-guide .rk-ai-error b {
    color: var(--rk-red);
  }

  #rk-ai-floor-guide .rk-ai-steps {
    display: grid;
    gap: 14px;
    margin: 28px 0;
    counter-reset: rk-ai-step;
  }

  #rk-ai-floor-guide .rk-ai-step {
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    counter-increment: rk-ai-step;
  }

  #rk-ai-floor-guide .rk-ai-step::before {
    content: counter(rk-ai-step);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 15px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 19px;
    font-weight: 950;
  }

  #rk-ai-floor-guide .rk-ai-faq {
    display: grid;
    gap: 12px;
    margin-top: 28px;
  }

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

  #rk-ai-floor-guide .rk-ai-faq summary {
    position: relative;
    padding: 19px 52px 19px 20px;
    color: var(--rk-dark);
    cursor: pointer;
    font-weight: 900;
    line-height: 1.4;
    list-style: none;
  }

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

  #rk-ai-floor-guide .rk-ai-faq summary::after {
    content: "+";
    position: absolute;
    right: 18px;
    top: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

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

  #rk-ai-floor-guide .rk-ai-faq-answer {
    padding: 0 20px 20px;
    color: var(--rk-text);
  }

  #rk-ai-floor-guide .rk-ai-source-box {
    padding: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }

  #rk-ai-floor-guide .rk-ai-source-box li + li {
    margin-top: 9px;
  }

  #rk-ai-floor-guide .rk-ai-update {
    margin-top: 16px;
    color: var(--rk-muted);
    font-size: 13px;
    font-weight: 800;
  }

  #rk-ai-floor-guide .rk-ai-author {
    margin: 42px 58px;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    background: var(--rk-white);
    box-shadow: 0 16px 45px rgba(16, 37, 54, 0.08);
  }

  #rk-ai-floor-guide .rk-ai-author > input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
  }

  #rk-ai-floor-guide .rk-ai-author-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 28px 30px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-ai-floor-guide .rk-ai-author-title {
    color: var(--rk-white);
    font-size: clamp(28px, 4vw, 40px);
    font-weight: 950;
    line-height: 1.1;
  }

  #rk-ai-floor-guide .rk-ai-author-head p {
    margin: 7px 0 0;
    color: #cfe2e8;
    font-size: 14px;
  }

  #rk-ai-floor-guide .rk-ai-author-mark {
    padding: 8px 11px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 999px;
    color: #8df2fc;
    font-size: 11px;
    font-weight: 950;
    letter-spacing: 0.08em;
  }

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

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

  #rk-ai-floor-guide .rk-ai-author-photo {
    width: 150px;
    height: 150px;
    margin: 0 auto 17px;
    overflow: hidden;
    border: 6px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 10px 30px rgba(16, 37, 54, 0.16);
  }

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

  #rk-ai-floor-guide .rk-ai-author-name {
    color: var(--rk-dark);
    font-size: 22px;
    font-weight: 950;
  }

  #rk-ai-floor-guide .rk-ai-author-role {
    margin-top: 6px;
    color: var(--rk-text);
    font-size: 13px;
  }

  #rk-ai-floor-guide .rk-ai-author-social-label {
    margin-top: 20px;
    color: var(--rk-muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
  }

  #rk-ai-floor-guide .rk-ai-author-social {
    display: flex;
    justify-content: center;
    gap: 9px;
    margin-top: 10px;
  }

  #rk-ai-floor-guide .rk-ai-author-social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-navy);
  }

  #rk-ai-floor-guide .rk-ai-author-social svg {
    width: 20px;
    height: 20px;
    fill: currentColor;
  }

  #rk-ai-floor-guide .rk-ai-author-main {
    padding: 30px;
  }

  #rk-ai-floor-guide .rk-ai-author-quote {
    position: relative;
    margin-bottom: 22px;
    padding: 25px 25px 25px 68px;
    border: 0;
    border-radius: 16px;
    background: var(--rk-cyan-soft);
  }

  #rk-ai-floor-guide .rk-ai-author-quote::before {
    content: "„";
    position: absolute;
    left: 22px;
    top: 1px;
    color: var(--rk-blue);
    font-family: Georgia, serif;
    font-size: 76px;
    line-height: 1;
  }

  #rk-ai-floor-guide .rk-ai-author-quote p {
    color: var(--rk-dark);
    font-size: 18px;
    font-weight: 750;
  }

  #rk-ai-floor-guide .rk-ai-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 13px 13px 0 0;
  }

  #rk-ai-floor-guide .rk-ai-author-tab {
    padding: 12px 10px;
    border-right: 1px solid var(--rk-line);
    color: var(--rk-dark);
    background: var(--rk-soft);
    cursor: pointer;
    font-size: 13px;
    font-weight: 900;
    text-align: center;
  }

  #rk-ai-floor-guide .rk-ai-author-tab:last-child {
    border-right: 0;
  }

  #rk-ai-floor-guide .rk-ai-author-panel {
    display: none;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 13px 13px;
    color: var(--rk-text);
    font-size: 15px;
  }

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

  #rk-ai-floor-guide #rk-ai-author-about:checked ~ .rk-ai-author-layout label[for="rk-ai-author-about"],
  #rk-ai-floor-guide #rk-ai-author-exp:checked ~ .rk-ai-author-layout label[for="rk-ai-author-exp"],
  #rk-ai-floor-guide #rk-ai-author-sites:checked ~ .rk-ai-author-layout label[for="rk-ai-author-sites"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-ai-floor-guide .rk-ai-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-top: 13px;
  }

  #rk-ai-floor-guide .rk-ai-site-links a {
    padding: 7px 10px;
    border-radius: 8px;
    background: var(--rk-soft);
    font-size: 12px;
    font-weight: 850;
    text-decoration: none;
  }

  @media (max-width: 980px) {
    #rk-ai-floor-guide .rk-ai-author-layout,
    #rk-ai-floor-guide .rk-ai-audit-summary {
      grid-template-columns: 1fr;
    }

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

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

  @media (max-width: 760px) {
    #rk-ai-floor-guide {
      margin: 0 auto 45px;
      font-size: 17px;
    }

    #rk-ai-floor-guide .rk-ai-shell {
      border-right: 0;
      border-left: 0;
      border-radius: 0;
    }

    #rk-ai-floor-guide .rk-ai-hero,
    #rk-ai-floor-guide .rk-ai-section,
    #rk-ai-floor-guide .rk-ai-mid-cta,
    #rk-ai-floor-guide .rk-ai-final-cta {
      padding: 42px 20px;
    }

    #rk-ai-floor-guide .rk-ai-hero-title {
      font-size: clamp(36px, 12vw, 53px);
    }

    #rk-ai-floor-guide .rk-ai-hero::after {
      right: -20px;
      top: -15px;
      font-size: 150px;
    }

    #rk-ai-floor-guide .rk-ai-nav {
      gap: 8px;
      padding: 18px 16px;
    }

    #rk-ai-floor-guide .rk-ai-nav a {
      flex: 1 1 calc(50% - 8px);
      justify-content: center;
      min-width: 0;
      padding: 9px 10px;
      border-radius: 12px;
      font-size: 12px;
      text-align: center;
    }

    #rk-ai-floor-guide .rk-ai-answer,
    #rk-ai-floor-guide .rk-ai-grid-2,
    #rk-ai-floor-guide .rk-ai-grid-3,
    #rk-ai-floor-guide .rk-ai-grid-4,
    #rk-ai-floor-guide .rk-ai-example-grid,
    #rk-ai-floor-guide .rk-ai-tool-row,
    #rk-ai-floor-guide .rk-ai-fields,
    #rk-ai-floor-guide .rk-ai-results {
      grid-template-columns: 1fr;
    }

    #rk-ai-floor-guide .rk-ai-tool-head {
      padding: 28px 20px 24px;
    }

    #rk-ai-floor-guide .rk-ai-tool-body {
      padding: 16px;
    }

    #rk-ai-floor-guide .rk-ai-tool-panel {
      padding: 19px;
    }

    #rk-ai-floor-guide .rk-ai-field.is-wide {
      grid-column: auto;
    }

    #rk-ai-floor-guide .rk-ai-tool-note {
      padding: 0 18px 22px;
    }

    #rk-ai-floor-guide .rk-ai-chart {
      min-height: 300px;
      aspect-ratio: 420 / 360;
    }

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

    #rk-ai-floor-guide .rk-ai-table {
      overflow: visible;
      border: 0;
      background: transparent;
    }

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

    #rk-ai-floor-guide .rk-ai-table tr {
      overflow: hidden;
      margin-bottom: 14px;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      background: var(--rk-white);
      box-shadow: 0 8px 22px rgba(16, 37, 54, 0.05);
    }

    #rk-ai-floor-guide .rk-ai-table td,
    #rk-ai-floor-guide .rk-ai-table tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(105px, 0.85fr) minmax(0, 1.15fr);
      gap: 12px;
      padding: 12px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
      overflow-wrap: anywhere;
    }

    #rk-ai-floor-guide .rk-ai-table td::before {
      content: attr(data-label);
      color: var(--rk-muted);
      font-size: 10px;
      font-weight: 950;
      letter-spacing: 0.055em;
      text-transform: uppercase;
    }

    #rk-ai-floor-guide .rk-ai-table tr td:last-child {
      border-bottom: 0;
    }

    #rk-ai-floor-guide .rk-ai-step {
      grid-template-columns: 42px minmax(0, 1fr);
      gap: 13px;
      padding: 17px;
    }

    #rk-ai-floor-guide .rk-ai-step::before {
      width: 40px;
      height: 40px;
      border-radius: 12px;
    }

    #rk-ai-floor-guide .rk-ai-quote {
      padding: 68px 20px 22px;
    }

    #rk-ai-floor-guide .rk-ai-author {
      margin: 30px 16px;
    }

    #rk-ai-floor-guide .rk-ai-author-head {
      display: block;
      padding: 25px 22px;
    }

    #rk-ai-floor-guide .rk-ai-author-mark {
      display: inline-flex;
      margin-top: 17px;
    }

    #rk-ai-floor-guide .rk-ai-author-main {
      padding: 24px 18px;
    }

    #rk-ai-floor-guide .rk-ai-author-quote {
      padding: 65px 20px 22px;
    }

    #rk-ai-floor-guide .rk-ai-author-tabs {
      grid-template-columns: 1fr;
    }

    #rk-ai-floor-guide .rk-ai-author-tab {
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }

    #rk-ai-floor-guide .rk-ai-cta-button {
      width: 100%;
    }
  }

  @media (max-width: 410px) {
    #rk-ai-floor-guide .rk-ai-nav a {
      flex-basis: 100%;
    }

    #rk-ai-floor-guide .rk-ai-table td {
      grid-template-columns: 1fr;
      gap: 4px;
    }
  }

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

<article id="rk-ai-floor-guide" aria-label="Projekt ogrzewania podłogowego z ChatGPT i AI — techniczna weryfikacja">
  <div class="rk-ai-shell">
    <header class="rk-ai-hero">
      <div class="rk-ai-hero-inner">
        <span class="rk-ai-eyebrow"><b aria-hidden="true"></b> AI + HVAC • analiza techniczna 2026</span>
        <div class="rk-ai-hero-title">Projekt wygląda profesjonalnie. Teraz sprawdź, czy liczby naprawdę się spinają.</div>
        <p class="rk-ai-hero-lead">ChatGPT może uporządkować dane, objaśnić wzory i przygotować logicznie brzmiącą koncepcję. Nie oznacza to jeszcze, że podłoga pokryje straty ciepła, pętle dadzą się wyregulować, a pompa obsłuży krytyczny obieg.</p>
        <div class="rk-ai-meta">
          <span><i aria-hidden="true"></i> Czytanie: około 28 minut</span>
          <span><i aria-hidden="true"></i> Interaktywny audyt projektu AI</span>
          <span><i aria-hidden="true"></i> Aktualizacja: 7 września 2026 r.</span>
        </div>
      </div>
    </header>

    <nav class="rk-ai-nav" aria-label="Spis treści artykułu">
      <strong>Na skróty — wszystkie główne części analizy</strong>
      <a href="#rk-ai-answer">Szybka odpowiedź</a>
      <a href="#rk-ai-can">Co AI potrafi?</a>
      <a href="#rk-ai-risk">Skąd biorą się błędy?</a>
      <a href="#rk-ai-prompt">Dlaczego prompt nie wystarcza?</a>
      <a href="#rk-ai-project">Co zawiera projekt?</a>
      <a href="#rk-ai-inputs">Dane wejściowe</a>
      <a href="#rk-ai-heat-load">Straty ciepła</a>
      <a href="#rk-ai-output">Moc i temperatura podłogi</a>
      <a href="#rk-ai-spacing">Rozstaw i powierzchnia</a>
      <a href="#rk-ai-loops">Długości pętli</a>
      <a href="#rk-ai-flow">Przepływy i ΔT</a>
      <a href="#rk-ai-pressure">Opory i pompa</a>
      <a href="#rk-ai-main">Rozdzielacze i magistrala</a>
      <a href="#rk-ai-source">Źródło ciepła</a>
      <a href="#rk-ai-audit">Audyt projektu AI</a>
      <a href="#rk-ai-read-result">Jak czytać wynik?</a>
      <a href="#rk-ai-case">Przykład domu 145 m²</a>
      <a href="#rk-ai-comparison">AI a algorytm i projektant</a>
      <a href="#rk-ai-workflow">Bezpieczna praca z AI</a>
      <a href="#rk-ai-docs">Dokumenty do sprawdzenia</a>
      <a href="#rk-ai-red-flags">10 czerwonych flag</a>
      <a href="#rk-ai-checklist">Checklista przed wylewką</a>
      <a href="#rk-ai-faq">FAQ</a>
      <a href="#rk-ai-sources">Źródła</a>
    </nav>

    <main>
      <section class="rk-ai-section" id="rk-ai-answer">
        <span class="rk-ai-kicker">Odpowiedź w 60 sekund</span>
        <h2>Czy ChatGPT może zaprojektować ogrzewanie podłogowe?</h2>
        <p class="rk-ai-intro"><strong>ChatGPT może pomóc przygotować koncepcję i przeanalizować przekazane liczby, ale sama odpowiedź modelu nie jest dowodem poprawności <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">projektu ogrzewania podłogowego</a>.</strong> Wiarygodna dokumentacja wymaga danych konkretnego budynku, obliczeń dla pomieszczeń, kontroli mocy podłogi, temperatur powierzchni, długości i przepływów pętli, strat ciśnienia, magistrali, pompy oraz źródła ciepła.</p>

        <div class="rk-ai-answer">
          <div class="rk-ai-answer-main">
            <h3>Tak — jako pomocnik</h3>
            <p>AI dobrze porządkuje założenia, tworzy checklisty, tłumaczy zależności, porównuje warianty i może wskazać brakujące pozycje w tabeli. Jeżeli otrzyma poprawne dane oraz właściwy model obliczeniowy, przyspiesza analizę.</p>
          </div>
          <div class="rk-ai-answer-side">
            <h3>Nie — jako samoweryfikujący projektant</h3>
            <p>Model może uzupełnić brakujące dane wartościami, które brzmią rozsądnie. Nie ma fizycznego kontaktu z budynkiem i nie wie, czy rzut, przegrody, okładziny i parametry źródła odpowiadają rzeczywistości.</p>
          </div>
        </div>

        <div class="rk-ai-formula" aria-label="Najważniejsza zasada weryfikacji projektu AI">
          <strong>przekonująca odpowiedź ≠ sprawdzony projekt</strong>
          <span>O jakości dokumentacji decyduje możliwość prześledzenia danych wejściowych, metody, jednostek, obliczeń i wyników — nie płynność języka ani estetyka rysunku.</span>
        </div>

        <div class="rk-ai-table-wrap">
          <table class="rk-ai-table">
            <thead><tr><th>Materiał od AI</th><th>Co może dać?</th><th>Co trzeba potwierdzić?</th><th>Decyzja wykonawcza</th></tr></thead>
            <tbody>
              <tr><td data-label="Materiał"><strong>Opis tekstowy</strong></td><td data-label="Korzyść">Logikę kolejnych etapów i listę parametrów.</td><td data-label="Weryfikacja">Źródło każdej liczby, jednostkę i kompletność danych.</td><td data-label="Decyzja">Nie układać rur tylko z opisu.</td></tr>
              <tr><td data-label="Materiał"><strong>Tabela pętli</strong></td><td data-label="Korzyść">Wstępne długości, rozstawy i przepływy.</td><td data-label="Weryfikacja">Moc przypisaną do obiegu, ΔT, średnicę i opór hydrauliczny.</td><td data-label="Decyzja">Sprawdzić każdą pętlę, nie tylko sumę.</td></tr>
              <tr><td data-label="Materiał"><strong>Rysunek na rzucie</strong></td><td data-label="Korzyść">Poglądowy podział pól i przebiegów.</td><td data-label="Weryfikacja">Skalę, strefy bez rur, dobiegi, dylatacje i liczbę metrów.</td><td data-label="Decyzja">Nie traktować wizualizacji jak CAD.</td></tr>
              <tr><td data-label="Materiał"><strong>Podsumowanie mocy</strong></td><td data-label="Korzyść">Szybką orientację w bilansie.</td><td data-label="Weryfikacja">Obciążenia pomieszczeń i moc możliwą do oddania przez podłogę.</td><td data-label="Decyzja">Porównać stronę potrzeb z możliwościami systemu.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-ai-section" id="rk-ai-can">
        <span class="rk-ai-kicker">Użyteczne zastosowania bez udawania pewności</span>
        <h2>Co ChatGPT i inne modele AI potrafią zrobić dobrze?</h2>
        <p class="rk-ai-intro">Najwięcej korzyści pojawia się wtedy, gdy AI pracuje na jawnych danych i ma wykonać zadanie, którego wynik można później niezależnie sprawdzić.</p>
        <div class="rk-ai-grid-4">
          <article class="rk-ai-card"><span class="rk-ai-card-number">01 • Dane</span><h3>Porządkowanie założeń</h3><p>Może zamienić luźny opis domu w listę brakujących informacji: lokalizacja, warstwy, stolarka, temperatury, okładziny, źródło i rzuty.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">02 • Nauka</span><h3>Wyjaśnianie zależności</h3><p>Potrafi wytłumaczyć, dlaczego rozstaw rur nie wynika wyłącznie z metrażu, a przepływ musi odpowiadać mocy i różnicy temperatur.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">03 • Kontrola</span><h3>Szukanie niespójności</h3><p>W tabeli może zauważyć brak jednostki, odwróconą temperaturę zasilania i powrotu, pętlę 140 m albo sumę przepływów niezgodną z bilansem.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">04 • Warianty</span><h3>Porównywanie scenariuszy</h3><p>Może zestawić skutki zmiany ΔT, liczby obiegów, rozstawu lub średnicy — pod warunkiem użycia jawnych wzorów i właściwych danych.</p></article>
        </div>
        <p>Aktualne narzędzia AI mogą analizować pliki, obrazy i tabele, lecz dostępność funkcji zależy od używanego produktu i trybu. Sam fakt odczytania rzutu nie potwierdza jego skali, wszystkich wymiarów ani zgodności modelu z dokumentacją budynku.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-risk">
        <span class="rk-ai-kicker">Najgroźniejszy błąd nie musi wyglądać jak błąd</span>
        <h2>Dlaczego odpowiedź AI może być logiczna i jednocześnie błędna?</h2>
        <p class="rk-ai-intro">Model językowy tworzy odpowiedź na podstawie wzorców i przekazanego kontekstu. Gdy brakuje danych, może nie zatrzymać obliczeń, lecz uzupełnić lukę prawdopodobnie brzmiącym założeniem. W dokumentacji technicznej to szczególnie niebezpieczne, bo wynik bywa spójny językowo i estetyczny.</p>

        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Brak danych</span><h3>Założenie staje się „faktem”</h3><p>Jeżeli nie podasz Uw okien, infiltracji albo <a href="https://projekt-ogrzewania.pl/strefy-klimatyczne-w-polsce-a-ogrzewanie-podlogowe-i-ozc-dlaczego-blad-o-jedna-strefe-klimatyczna-kosztuje-cie-6000-zl-rocznie/">temperatury projektowej</a>, AI może przyjąć wartości typowe bez wyraźnego zaznaczenia ich wpływu na wynik.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Zła metoda</span><h3>Poprawna arytmetyka nie wystarczy</h3><p>Kalkulator może bezbłędnie mnożyć liczby, a mimo to liczyć podłogę na gruncie jak zwykłą ścianę lub dobierać rozstaw z powierzchni domu.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Brak sprzężenia</span><h3>Jedna zmiana psuje kilka wyników</h3><p>Zmiana rozstawu zmienia długość rur, liczbę pętli, moc i hydraulikę. Odpowiedź punktowa może nie przeliczyć całego systemu.</p></article>
        </div>

        <div class="rk-ai-callout">
          <strong>NIST nazywa to ryzykiem konfabulacji</strong>
          <p>Profil ryzyka generatywnej AI wskazuje na możliwość tworzenia fałszywych lub błędnych treści podanych w sposób przekonujący. Dlatego wynik wpływający na zakup materiałów i nieodwracalne prace powinien mieć ślad obliczeniowy oraz niezależną kontrolę.</p>
        </div>

        <blockquote class="rk-ai-quote"><p>Najbardziej niebezpieczna odpowiedź nie brzmi „nie wiem”. Brzmi: „dla domu 145 m² zastosuj rozstaw 15 cm, 12 pętli i zasilanie 35°C” — mimo że model nie zna strat żadnego pomieszczenia.</p></blockquote>
      </section>

      <section class="rk-ai-section" id="rk-ai-prompt">
        <span class="rk-ai-kicker">Metraż i źródło ciepła to nie projekt</span>
        <h2>Dlaczego prompt „dom 145 m², pompa ciepła, zaprojektuj podłogówkę” nie wystarcza?</h2>
        <p class="rk-ai-intro">Taki prompt może wygenerować orientacyjny opis, ale nie zawiera danych pozwalających obliczyć, ile ciepła traci salon, łazienka czy sypialnia i czy dostępna podłoga może te straty pokryć.</p>

        <div class="rk-ai-example">
          <h3>AI otrzymało trzy informacje</h3>
          <p><strong>Dom 145 m² • pompa ciepła • ogrzewanie podłogowe.</strong> Na tej podstawie może przywołać często spotykane rozstawy, temperatury i długości. Nie zna jednak bryły, lokalizacji, izolacji, stolarki, wentylacji, okładzin, mebli stałych ani położenia rozdzielaczy.</p>
          <div class="rk-ai-example-grid">
            <div class="rk-ai-example-stat"><span>Znamy</span><strong>145 m²</strong></div>
            <div class="rk-ai-example-stat"><span>Znamy</span><strong>pompę ciepła</strong></div>
            <div class="rk-ai-example-stat"><span>Nie znamy</span><strong>W na pokój</strong></div>
            <div class="rk-ai-example-stat"><span>Nie znamy</span><strong>hydrauliki</strong></div>
          </div>
        </div>

        <div class="rk-ai-grid-2">
          <article class="rk-ai-error"><b>Brak 01</b><h3>Warunki obliczeniowe</h3><p>Nie ma lokalizacji, projektowej temperatury zewnętrznej, temperatur wewnętrznych ani sposobu użytkowania stref.</p></article>
          <article class="rk-ai-error"><b>Brak 02</b><h3>Parametry przegród</h3><p>Nie ma geometrii netto, warstw ścian, dachu i podłogi, współczynników okien, drzwi ani mostków.</p></article>
          <article class="rk-ai-error"><b>Brak 03</b><h3>Wentylacja i infiltracja</h3><p>Nie wiadomo, jakie strumienie powietrza przyjąć, jak działa rekuperacja i jaka część strat wynika z nieszczelności.</p></article>
          <article class="rk-ai-error"><b>Brak 04</b><h3>Warstwy nad rurą</h3><p>Nie znamy jastrychu, okładziny, <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">oporu cieplnego podłogi</a> ani maksymalnych temperatur dopuszczonych przez producenta.</p></article>
          <article class="rk-ai-error"><b>Brak 05</b><h3>Powierzchnia czynna</h3><p>Metraż pomieszczenia nie mówi, ile podłogi pozostaje po wyłączeniu zabudowy stałej, brodzika, wanny i <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">stref bez rur</a>.</p></article>
          <article class="rk-ai-error"><b>Brak 06</b><h3>Geometria instalacji</h3><p>Nie ma lokalizacji rozdzielaczy, długości dobiegów, kondygnacji, dylatacji, magistral ani dostępnego budżetu ciśnienia.</p></article>
        </div>
        <p>Pełny artykuł o konstruowaniu promptu powinien pozostać osobną częścią klastra. Tutaj najważniejsza zasada brzmi: <strong>najpierw zbierz dane projektowe, dopiero później pytaj AI o obliczenia i zawsze wymagaj pokazania założeń.</strong></p>
      </section>

      <section class="rk-ai-section" id="rk-ai-project">
        <span class="rk-ai-kicker">Rysunek pętli jest dopiero jedną warstwą dokumentacji</span>
        <h2>Co powinien zawierać profesjonalny projekt ogrzewania podłogowego?</h2>
        <p class="rk-ai-intro">Dokumentacja wykonawcza powinna łączyć część cieplną, emisyjną, hydrauliczną i graficzną. Każda liczba na rzucie musi wynikać z wcześniejszego etapu i dać się odtworzyć.</p>
        <div class="rk-ai-grid-4">
          <article class="rk-ai-check"><b>01 • OZC</b><h3>Obciążenia pomieszczeń</h3><p>Waty dla każdej strefy przy jawnych temperaturach i parametrach budynku.</p></article>
          <article class="rk-ai-check"><b>02 • Emisja</b><h3>Moc z czynnej podłogi</h3><p>Kontrola W/m², okładziny, temperatury powierzchni i parametrów wody.</p></article>
          <article class="rk-ai-check"><b>03 • Rzut</b><h3>Trasy i rozstawy</h3><p><a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">Pętle w skali</a>, strefy bez rur, dobiegi, dylatacje i przypisanie do rozdzielaczy.</p></article>
          <article class="rk-ai-check"><b>04 • Długości</b><h3>Pełne metry obiegów</h3><p>Pole grzewcze razem z zasilaniem i powrotem od rozdzielacza.</p></article>
          <article class="rk-ai-check"><b>05 • Przepływy</b><h3>Nastawy każdej pętli</h3><p>Przepływ wynikający z mocy przypisanej do obiegu i projektowego ΔT.</p></article>
          <article class="rk-ai-check"><b>06 • Opory</b><h3>Krytyczna droga</h3><p>Strata ciśnienia pętli, przyłączy, rozdzielacza i magistrali.</p></article>
          <article class="rk-ai-check"><b>07 • Zasilanie</b><h3>Rozdzielacze i magistrale</h3><p>Lokalizacje, liczba sekcji, przepływy sumaryczne, średnice i prędkości.</p></article>
          <article class="rk-ai-check"><b>08 • Źródło</b><h3>Bilans całego układu</h3><p>Moc źródła w warunkach projektowych, punkt pracy pompy i sposób sterowania.</p></article>
        </div>
        <p>Zobacz także szczegółowy przewodnik: <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-inputs">
        <span class="rk-ai-kicker">AI nie naprawi danych, których nigdy nie otrzymało</span>
        <h2>Jakie dane wejściowe są potrzebne do projektu podłogówki?</h2>
        <p class="rk-ai-intro">Dane muszą opisywać stan, który rzeczywiście zostanie wykonany. Jeżeli inwestor zmieni okna, izolację, wentylację albo okładzinę po wykonaniu obliczeń, projekt trzeba ponownie sprawdzić.</p>
        <div class="rk-ai-table-wrap">
          <table class="rk-ai-table">
            <thead><tr><th>Grupa danych</th><th>Co jest potrzebne?</th><th>Do czego służy?</th><th>Typowy błąd AI</th></tr></thead>
            <tbody>
              <tr><td data-label="Grupa"><strong>Geometria</strong></td><td data-label="Dane">Rzuty z wymiarami, wysokości, przekroje, orientacja i podział stref.</td><td data-label="Zastosowanie">Powierzchnie przegród, kubatury, podłoga czynna i trasy rur.</td><td data-label="Błąd">Odczyt wymiaru ze zdjęcia bez potwierdzenia skali.</td></tr>
              <tr><td data-label="Grupa"><strong>Przegrody</strong></td><td data-label="Dane">Warstwy ścian, dachu, stropu i podłogi; izolacja; mostki.</td><td data-label="Zastosowanie">Straty przez przenikanie i warunki pod systemem.</td><td data-label="Błąd">Przyjęcie U z samej nazwy materiału.</td></tr>
              <tr><td data-label="Grupa"><strong>Stolarka</strong></td><td data-label="Dane">Wymiary, Uw okien, Ud drzwi, sposób montażu.</td><td data-label="Zastosowanie">Bilans pomieszczeń z <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">dużymi przeszkleniami</a>.</td><td data-label="Błąd">Pomylenie Uw całego okna z Ug szyby.</td></tr>
              <tr><td data-label="Grupa"><strong>Powietrze</strong></td><td data-label="Dane">System wentylacji, strumienie, odzysk, infiltracja.</td><td data-label="Zastosowanie">Projektowe straty wentylacyjne.</td><td data-label="Błąd">Odjęcie deklarowanych 90% od wszystkich strat powietrza.</td></tr>
              <tr><td data-label="Grupa"><strong>Podłoga</strong></td><td data-label="Dane">Jastrych, okładzina, opór, strefy bez rur, dylatacje.</td><td data-label="Zastosowanie">Moc powierzchniowa i temperatura powierzchni.</td><td data-label="Błąd">Policzenie mocy z całej powierzchni pokoju.</td></tr>
              <tr><td data-label="Grupa"><strong>Instalacja</strong></td><td data-label="Dane">Rura, rozdzielacze, źródło, parametry wody i magistrale.</td><td data-label="Zastosowanie">Długości, przepływy, opory, pompa i bilans.</td><td data-label="Błąd">Dobór pompy tylko z całkowitej długości rur.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-ai-section" id="rk-ai-heat-load">
        <span class="rk-ai-kicker">Najpierw potrzeby każdego pomieszczenia</span>
        <h2>Czy AI policzy straty ciepła budynku i pomieszczeń?</h2>
        <p class="rk-ai-intro">Może wykonać działania na przekazanych danych, ale trzeba oddzielić umiejętność liczenia od poprawności modelu. Projekt podłogówki potrzebuje wyników dla pomieszczeń, nie tylko jednej liczby w kW dla całego domu.</p>
        <div class="rk-ai-formula" aria-label="Uproszczona struktura projektowego obciążenia cieplnego">
          <strong>Φ<sub>pom</sub> ≈ Φ<sub>przenikanie</sub> + Φ<sub>mostki</sub> + Φ<sub>wentylacja</sub></strong>
          <span>Pełna metodyka zależy od warunków i przyjętego standardu obliczeń. Wynik w W jest mocą projektową, a nie rocznym zużyciem energii w kWh.</span>
        </div>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Przenikanie</span><h3>Powierzchnie netto i U</h3><p>Ściany liczy się bez okien liczonych osobno. Podłoga na gruncie wymaga właściwej metody, a nie arbitralnej różnicy temperatur.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Mostki</span><h3>ψ razy długość</h3><p>Nie należy automatycznie doliczać 20% do każdej bryły. Współczynniki i długości wynikają z detali lub przyjętej metody uproszczonej.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Powietrze</span><h3>Strumień projektowy</h3><p>Wentylacja mechaniczna nie usuwa infiltracji, a deklarowana sprawność centrali nie jest prostym rabatem od wszystkich strat.</p></article>
        </div>
        <p>Metodykę i przykład jednego pomieszczenia omawia osobny artykuł: <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty ciepła w budynku</a>. Norma EN 12831-1 opisuje <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektową moc</a> potrzebną do utrzymania temperatury wewnętrznej przy projektowych warunkach zewnętrznych — dlatego temperatura lokalizacji i funkcja pomieszczenia nie mogą być zgadywane.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-output">
        <span class="rk-ai-kicker">Waty z podłogi muszą spotkać się z watami strat</span>
        <h2>Jak sprawdzić moc podłogi i temperaturę jej powierzchni?</h2>
        <p class="rk-ai-intro">Obciążenie pomieszczenia trzeba odnieść do powierzchni, która rzeczywiście może grzać. Dopiero potem sprawdza się, czy konstrukcja podłogi przy danej temperaturze wody i okładzinie osiągnie wymaganą moc bez przekroczenia temperatury powierzchni.</p>
        <div class="rk-ai-formula" aria-label="Wymagana moc jednostkowa ogrzewania podłogowego">
          <strong>q<sub>wym</sub> = Φ<sub>pomieszczenia</sub> ÷ A<sub>czynna</sub></strong>
          <span>Jeżeli pokój traci 1200 W, a rury mogą znaleźć się na 16 m², wymagana średnia moc czynnej podłogi wynosi 75 W/m² — nie 60 W/m² wynikające z całych 20 m² pokoju.</span>
        </div>
        <div class="rk-ai-table-wrap">
          <table class="rk-ai-table">
            <thead><tr><th>Kontrola</th><th>Co wpływa na wynik?</th><th>Czego nie wolno robić?</th><th>Wynik w projekcie</th></tr></thead>
            <tbody>
              <tr><td data-label="Kontrola"><strong>Moc</strong></td><td data-label="Wpływ">Temperatura wody, rozstaw, jastrych, okładzina i powierzchnia czynna.</td><td data-label="Zakaz">Przypisać jednej mocy do rozstawu bez warstw podłogi.</td><td data-label="Wynik">W/m² oraz suma W dla strefy.</td></tr>
              <tr><td data-label="Kontrola"><strong>Temperatura powierzchni</strong></td><td data-label="Wpływ">Moc, temperatura pomieszczenia i konstrukcja systemu.</td><td data-label="Zakaz">Założyć, że gęstsza rura zawsze rozwiąże duże straty.</td><td data-label="Wynik">Najwyższa temperatura w analizowanej strefie.</td></tr>
              <tr><td data-label="Kontrola"><strong>Okładzina</strong></td><td data-label="Wpływ">Opór cieplny płytki, panelu, drewna, podkładu i kleju.</td><td data-label="Zakaz">Użyć identycznej charakterystyki dla płytki i grubej deski.</td><td data-label="Wynik">Przyjęty R<sub>λ,B</sub> i ograniczenia producenta.</td></tr>
            </tbody>
          </table>
        </div>
        <div class="rk-ai-callout"><strong>Temperaturę powierzchni kontroluje się strefowo</strong><p>W praktyce projektowej sprawdza się między innymi wartości graniczne około 29°C w strefie stałego przebywania, 33°C w łazience i 35°C w strefie brzegowej. Nie są to trzy zamienne liczby — najpierw trzeba prawidłowo zakwalifikować powierzchnię.</p></div>
        <p>Zakres obliczeń mocy i wymiarowania wodnych systemów płaszczyznowych opisują między innymi <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">seria PN-EN 1264</a> oraz ISO 11855-2 i ISO 11855-3. Sama odpowiedź modelu AI nie potwierdza zgodności z tymi zasadami — projekt musi pokazać dane, założenia i wyniki, które można niezależnie sprawdzić.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-spacing">
        <span class="rk-ai-kicker">Rozstaw jest wynikiem, a nie pierwszą decyzją</span>
        <h2>Czy AI może dobrać rozstaw rur 10, 15 lub 20 cm?</h2>
        <p class="rk-ai-intro">Może porównać warianty, ale nie powinno wybierać rozstawu z samego metrażu albo rodzaju źródła ciepła. Rozstaw wynika z wymaganej mocy, konstrukcji podłogi, temperatury wody, powierzchni czynnej i ograniczeń hydraulicznych.</p>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">10 cm</span><h3>Więcej rury w polu</h3><p>Może obniżyć wymaganą temperaturę wody lub pomóc w strefie o większej mocy, ale zwiększa metry rur i może wymagać większej liczby pętli.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">15 cm</span><h3>Częsty punkt wyjścia</h3><p>Nie jest uniwersalnym standardem dla całego domu. Dwa pokoje z tym samym rozstawem mogą mieć inne moce z powodu okładziny i temperatury.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">20 cm</span><h3>Mniej rury, inna charakterystyka</h3><p>Może być wystarczający przy małym obciążeniu, ale wymaga sprawdzenia mocy, temperatury powierzchni i równomierności oddawania ciepła.</p></article>
        </div>
        <p>Pełną analizę zależności znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur w ogrzewaniu podłogowym — 10 czy 15 cm</a>.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-loops">
        <span class="rk-ai-kicker">Długość jest sygnałem, hydraulika wydaje werdykt</span>
        <h2>Jak sprawdzić długości pętli wygenerowane przez ChatGPT?</h2>
        <p class="rk-ai-intro">Dla rury 16×2 mm wartość około 80–100 m jest praktycznym punktem kontrolnym, a nie samodzielnym dowodem poprawności. Do długości pola trzeba doliczyć pełny dobieg zasilający i powrotny od rozdzielacza.</p>
        <div class="rk-ai-formula" aria-label="Szacowanie całkowitej długości rur">
          <strong>L<sub>całk</sub> ≈ A<sub>czynna</sub> ÷ s × k + 2d</strong>
          <span>s to rozstaw w metrach, k uwzględnia geometrię i zawroty, a d jest odległością pola od rozdzielacza. Ostateczną długość potwierdza rysunek wykonany w skali.</span>
        </div>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Pole</span><h3>Metry wynikające z rozstawu</h3><p>Zmiana z 15 na 10 cm zwiększa długość rury przypadającą na tę samą powierzchnię i może wymusić inny podział.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Dobiegi</span><h3>Każda pętla ma dwie drogi</h3><p>Rozdzielacz oddalony o 6 m dodaje około 12 m do każdej pętli, a nie 12 m do całej kondygnacji.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Przepływ</span><h3>Ten sam metr nie zawsze ma ten sam opór</h3><p>Pętla o większym przepływie może mieć wyższą stratę ciśnienia mimo tej samej długości i średnicy.</p></article>
        </div>
        <p>Do kontroli użyj kalkulatora w artykule <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki może mieć jedna pętla</a>.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-flow">
        <span class="rk-ai-kicker">Rotametr nie jest pokrętłem „więcej ciepła”</span>
        <h2>Jak AI powinno obliczyć przepływy i różnicę temperatur ΔT?</h2>
        <p class="rk-ai-intro">Przepływ obiegu wynika z mocy, którą ma przenieść woda, i z przyjętej <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatur zasilania oraz powrotu</a>. Nie ustawia się wszystkich pętli na 2 l/min tylko dlatego, że brzmi to typowo.</p>
        <div class="rk-ai-formula" aria-label="Przepływ wody dla zadanej mocy i różnicy temperatur">
          <strong>V̇ [l/h] ≈ Φ [W] ÷ (1,163 × ΔT [K])</strong>
          <span>Dla 800 W i ΔT = 6 K otrzymujemy około 115 l/h, czyli 1,92 l/min. Wynik trzeba następnie sprawdzić hydraulicznie dla konkretnej rury i długości.</span>
        </div>
        <div class="rk-ai-table-wrap">
          <table class="rk-ai-table">
            <thead><tr><th>Wielkość</th><th>Skąd ją wziąć?</th><th>Co zmienia?</th><th>Kontrola</th></tr></thead>
            <tbody>
              <tr><td data-label="Wielkość"><strong>Moc pętli Φ</strong></td><td data-label="Źródło">Z obciążenia obsługiwanej części pomieszczenia.</td><td data-label="Wpływ">Wymagany przepływ i zdolność pokrycia strat.</td><td data-label="Kontrola">Suma mocy pętli powinna odpowiadać modelowi emisji.</td></tr>
              <tr><td data-label="Wielkość"><strong>ΔT</strong></td><td data-label="Źródło">Z przyjętych parametrów zasilania i powrotu.</td><td data-label="Wpływ">Przepływ, średnią temperaturę wody i moc podłogi.</td><td data-label="Kontrola">Nie może być dopisane niezależnie w dwóch tabelach.</td></tr>
              <tr><td data-label="Wielkość"><strong>V̇ pętli</strong></td><td data-label="Źródło">Z mocy i ΔT.</td><td data-label="Wpływ">Prędkość oraz stratę ciśnienia.</td><td data-label="Kontrola">Porównać z <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">zakresem rotametru</a> i obliczeniami rury.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-ai-section" id="rk-ai-pressure">
        <span class="rk-ai-kicker">Pompa pracuje przeciwko jednej krytycznej drodze</span>
        <h2>Dlaczego projekt AI musi zawierać straty ciśnienia i dobór pompy?</h2>
        <p class="rk-ai-intro">Suma metrów wszystkich pętli nie jest wysokością podnoszenia pompy. W układzie równoległym sprawdza się drogę o największym wymaganym oporze: pętlę, rozdzielacz, przyłącza, armaturę oraz wspólną magistralę.</p>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Pętla</span><h3>Przepływ i średnica wewnętrzna</h3><p>Opór rośnie z długością i bardzo silnie z prędkością. Sama nazwa rury 16 mm nie podaje rzeczywistej średnicy wewnętrznej.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Droga wspólna</span><h3>Magistrala i armatura</h3><p>Przepływ sumaryczny przechodzi przez zasilanie, powrót, zawory, separator, bufor lub wymiennik — zależnie od schematu.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Punkt pracy</span><h3>Q i H jednocześnie</h3><p>Pompa musi dostarczyć <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">wymagany przepływ całkowity przy wysokości podnoszenia</a> odpowiadającej krytycznej drodze, a nie jedną z tych wartości osobno.</p></article>
        </div>
        <div class="rk-ai-callout"><strong>Dławienie nie tworzy dodatkowego ciśnienia</strong><p>Rotametry i zawory służą do zrównoważenia obiegów. Nie naprawią pętli, której wymagany przepływ powoduje opór przekraczający dostępny budżet ciśnienia.</p></div>
      </section>

      <section class="rk-ai-section" id="rk-ai-main">
        <span class="rk-ai-kicker">Prawidłowe pętle mogą być zasilane źle dobraną magistralą</span>
        <h2>Czy AI dobierze rozdzielacze i średnicę rury zasilającej?</h2>
        <p class="rk-ai-intro"><a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">Liczba sekcji rozdzielacza</a> wynika z rzeczywistego podziału pętli. Średnica magistrali zależy od sumarycznego przepływu, długości trasy, materiału, armatury i dostępnego ciśnienia.</p>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Sekcje</span><h3>Jedno wyjście na jedną pętlę</h3><p>Rezerwa może być rozsądna, ale nie wolno łączyć dwóch pętli do jednego wyjścia tylko po to, aby zmieścić się w mniejszym rozdzielaczu.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Prędkość</span><h3>Kontrola przepływu w przewodzie</h3><p>W instalacjach projektowych często dąży się do zakresu około 0,15–0,60 m/s, sprawdzając jednocześnie opory i warunki pracy całego układu.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Długość</span><h3>Zasilanie i powrót</h3><p>Do obliczeń oporu należy wprowadzić pełną długość hydrauliczną, a nie odległość mierzoną w jedną stronę na rzucie.</p></article>
        </div>
        <p>Szczegółowe obliczenia rozwija poradnik o tym, <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">jaka średnica rury powinna zasilać rozdzielacz podłogówki</a>.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-source">
        <span class="rk-ai-kicker">Nazwa urządzenia nie jest jego mocą w punkcie projektowym</span>
        <h2>Jak sprawdzić bilans podłogówki z pompą ciepła lub kotłem?</h2>
        <p class="rk-ai-intro">Źródło ma pokryć projektowe potrzeby budynku przy określonych warunkach, a instalacja odbiorcza ma odebrać i rozprowadzić tę moc przy założonych temperaturach oraz przepływach.</p>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Pompa ciepła</span><h3>Moc zależy od temperatur</h3><p>Porównuje się <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">moc urządzenia</a> przy właściwej temperaturze zewnętrznej i zasilaniu instalacji, a nie wyłącznie liczbę z nazwy modelu.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Kocioł</span><h3>Liczy się także moc minimalna</h3><p>Moc maksymalna może pokrywać mróz, lecz w sezonie przejściowym ważna jest modulacja i sposób współpracy z małym chwilowym odbiorem.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Układ</span><h3>Hydraulika łączy źródło z odbiornikami</h3><p><a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">Bufor</a>, <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło</a>, pompy i zawory muszą wynikać ze schematu oraz wymagań producenta, a nie z uniwersalnej odpowiedzi AI.</p></article>
        </div>
        <p><strong>Bilans ogrzewania pomieszczeń nie jest automatycznie doborem przygotowania CWU.</strong> Jeżeli AI dodaje arbitralne 20–30% do mocy, poproś o wyjaśnienie strategii pracy, priorytetu CWU i danych urządzenia.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-audit">
        <span class="rk-ai-kicker">Narzędzie przesiewowe przed zakupem materiałów</span>
        <h2>Sprawdź projekt ogrzewania podłogowego wygenerowany przez AI</h2>
        <p class="rk-ai-intro">Wpisz liczby z otrzymanej dokumentacji. Analizator sprawdzi ich podstawową spójność, policzy wymagane W/m², przepływ, orientacyjną długość rur, prędkości i przybliżoną stratę krytycznej drogi. Brak konkretnej pozycji zaznacz jako „nie wiem” — to również ważny wynik audytu.</p>

        <div class="rk-ai-tool" id="rk-ai-tool">
          <div class="rk-ai-tool-head">
            <h3>Audyt spójności projektu AI: ciepło, podłoga, hydraulika i źródło</h3>
            <p>Domyślne dane opisują przykładowy dom 145 m². Zastąp je wartościami z własnego projektu. Zielony wynik oznacza brak oczywistej sprzeczności w tym uproszczonym badaniu — nie zatwierdzenie projektu.</p>
          </div>

          <div class="rk-ai-tool-body">
            <div class="rk-ai-tool-row">
              <div class="rk-ai-tool-panel">
                <h4>1. Budynek i obciążenie cieplne</h4>
                <p>Wpisz wynik dla ogrzewania pomieszczeń przy projektowych warunkach, nie roczne kWh ani moc z etykiety źródła.</p>
                <div class="rk-ai-fields">
                  <div class="rk-ai-field"><label for="rk-ai-area">Powierzchnia ogrzewana [m²]</label><input id="rk-ai-area" type="number" min="10" max="2000" step="1" value="145" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-active-area">Łączna powierzchnia czynna [m²]</label><input id="rk-ai-active-area" type="number" min="1" max="2000" step="1" value="115" inputmode="decimal"><small>Bez stałej zabudowy i stref, w których nie wolno ułożyć rur.</small></div>
                  <div class="rk-ai-field"><label for="rk-ai-load">Projektowe obciążenie budynku [kW]</label><input id="rk-ai-load" type="number" min="0.1" max="500" step="0.1" value="6.4" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-outdoor">Temperatura zewnętrzna obliczeniowa [°C]</label><input id="rk-ai-outdoor" type="number" min="-40" max="10" step="1" value="-20" inputmode="decimal"></div>
                  <div class="rk-ai-field is-wide"><label for="rk-ai-room-loads">Czy projekt zawiera obciążenie cieplne każdego pomieszczenia?</label><select id="rk-ai-room-loads"><option value="yes">Tak — tabela W dla każdego pomieszczenia</option><option value="unknown">Nie wiem / widzę tylko sumę budynku</option><option value="no">Nie — wartości nie zostały pokazane</option></select></div>
                </div>
              </div>

              <div class="rk-ai-tool-panel">
                <h4>2. Emisja podłogi</h4>
                <p>Sprawdź parametry wody, najbardziej obciążoną strefę i warstwy nad rurą.</p>
                <div class="rk-ai-fields">
                  <div class="rk-ai-field"><label for="rk-ai-supply">Temperatura zasilania [°C]</label><input id="rk-ai-supply" type="number" min="20" max="70" step="0.1" value="35" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-return">Temperatura powrotu [°C]</label><input id="rk-ai-return" type="number" min="15" max="65" step="0.1" value="29" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-spacing-input">Dominujący rozstaw rur [cm]</label><input id="rk-ai-spacing-input" type="number" min="5" max="40" step="1" value="15" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-cover-r">Najwyższy opór okładziny [m²K/W]</label><input id="rk-ai-cover-r" type="number" min="0" max="1" step="0.01" value="0.10" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-zone">Strefa z najwyższą temperaturą</label><select id="rk-ai-zone"><option value="occupied">Strefa stałego przebywania</option><option value="bathroom">Łazienka</option><option value="peripheral">Strefa brzegowa</option></select></div>
                  <div class="rk-ai-field"><label for="rk-ai-surface-temp">Najwyższa temperatura powierzchni [°C]</label><input id="rk-ai-surface-temp" type="number" min="15" max="50" step="0.1" value="28.5" inputmode="decimal"></div>
                  <div class="rk-ai-field is-wide"><label for="rk-ai-surface-check">Czy dokumentacja pokazuje obliczenie mocy i temperatury powierzchni?</label><select id="rk-ai-surface-check"><option value="yes">Tak — dla pomieszczeń / stref</option><option value="unknown">Nie wiem / jest tylko rozstaw</option><option value="no">Nie — brak takiej kontroli</option></select></div>
                </div>
              </div>
            </div>

            <div class="rk-ai-tool-row">
              <div class="rk-ai-tool-panel">
                <h4>3. Pętle i hydraulika</h4>
                <p>Podaj długości razem z dobiegami. Średnica wewnętrzna wynika z wybranego wymiaru rury.</p>
                <div class="rk-ai-fields">
                  <div class="rk-ai-field"><label for="rk-ai-pipe">Rura pętli</label><select id="rk-ai-pipe"><option value="16x2">16×2,0 mm — średnica wewn. 12 mm</option><option value="17x2">17×2,0 mm — średnica wewn. 13 mm</option><option value="20x2">20×2,0 mm — średnica wewn. 16 mm</option></select></div>
                  <div class="rk-ai-field"><label for="rk-ai-loop-count">Liczba pętli</label><input id="rk-ai-loop-count" type="number" min="1" max="300" step="1" value="12" inputmode="numeric"></div>
                  <div class="rk-ai-field"><label for="rk-ai-longest-loop">Najdłuższa pętla z dobiegami [m]</label><input id="rk-ai-longest-loop" type="number" min="5" max="500" step="1" value="96" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-approach">Średni dobieg w jedną stronę [m/pętlę]</label><input id="rk-ai-approach" type="number" min="0" max="100" step="0.5" value="4" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-main-diameter">Średnica wewnętrzna magistrali [mm]</label><select id="rk-ai-main-diameter"><option value="20">20 mm</option><option value="25" selected="">25 mm</option><option value="32">32 mm</option><option value="35">35 mm</option></select></div>
                  <div class="rk-ai-field"><label for="rk-ai-main-length">Magistrala zasilanie + powrót [m]</label><input id="rk-ai-main-length" type="number" min="1" max="1000" step="1" value="24" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-pump-head">Dostępne ciśnienie pompy dla obiegu [kPa]</label><input id="rk-ai-pump-head" type="number" min="1" max="500" step="1" value="25" inputmode="decimal"></div>
                  <div class="rk-ai-field"><label for="rk-ai-hydraulic-check">Czy projekt zawiera przepływ i opór każdej pętli?</label><select id="rk-ai-hydraulic-check"><option value="yes">Tak — l/min oraz kPa dla pętli</option><option value="unknown">Nie wiem / są tylko długości</option><option value="no">Nie — brak obliczeń hydraulicznych</option></select></div>
                </div>
              </div>

              <div class="rk-ai-tool-panel">
                <h4>4. Źródło ciepła i dane producenta</h4>
                <p>Porównuj moc urządzenia w odpowiednim punkcie pracy, szczególnie dla pompy ciepła.</p>
                <div class="rk-ai-fields">
                  <div class="rk-ai-field"><label for="rk-ai-source-type">Źródło ciepła</label><select id="rk-ai-source-type"><option value="heat-pump">Pompa ciepła</option><option value="gas">Kocioł gazowy</option><option value="pellet">Kocioł na pellet</option><option value="network">Sieć ciepłownicza / inne</option></select></div>
                  <div class="rk-ai-field"><label for="rk-ai-source-power">Dostępna moc przy warunkach projektowych [kW]</label><input id="rk-ai-source-power" type="number" min="0.1" max="1000" step="0.1" value="7.0" inputmode="decimal"></div>
                  <div class="rk-ai-field is-wide"><label for="rk-ai-source-data">Czy moc pochodzi z dokumentacji urządzenia dla przyjętych temperatur?</label><select id="rk-ai-source-data"><option value="yes">Tak — sprawdzony punkt pracy producenta</option><option value="unknown">Nie wiem / wpisano moc z nazwy modelu</option><option value="no">Nie — to wartość orientacyjna</option></select></div>
                  <div class="rk-ai-field is-wide"><label for="rk-ai-drawing-scale">Czy rzut pętli ma skalę, wymiary, rozdzielacze i strefy bez rur?</label><select id="rk-ai-drawing-scale"><option value="yes">Tak — rysunek wykonawczy jest zwymiarowany</option><option value="unknown">Nie wiem / jest tylko grafika</option><option value="no">Nie — mam wyłącznie opis lub wizualizację</option></select></div>
                </div>
                <div class="rk-ai-callout" style="margin-bottom:0;background:rgba(231,173,47,.12);border-color:rgba(231,173,47,.35)"><strong style="color:#ffd26d">Nie wpisuj mocy grzałki jako mocy sprężarki</strong><p style="color:#d9e8ed">W pompie ciepła sprawdź, jaka moc jest dostępna przy projektowej temperaturze zewnętrznej i wymaganej temperaturze wody. Strategię biwalentną oceniaj osobno.</p></div>
              </div>
            </div>

            <div class="rk-ai-audit-summary" aria-live="polite">
              <div class="rk-ai-score-box">
                <div class="rk-ai-score-ring" id="rk-ai-score-ring"><strong id="rk-ai-score">0/100</strong></div>
                <div class="rk-ai-score-label">kompletność i spójność kontroli</div>
                <div class="rk-ai-verdict" id="rk-ai-verdict">Obliczanie…</div>
              </div>
              <div class="rk-ai-results">
                <div class="rk-ai-result is-accent"><span>Obciążenie czynnej podłogi</span><strong id="rk-ai-result-q">—</strong><small>średnia dla całego budynku, nie dla najgorszego pokoju</small></div>
                <div class="rk-ai-result is-accent"><span>Wymagany przepływ całkowity</span><strong id="rk-ai-result-flow">—</strong><small>dla wody i wpisanego ΔT</small></div>
                <div class="rk-ai-result"><span>Średni przepływ pętli</span><strong id="rk-ai-result-loop-flow">—</strong><small>orientacyjnie przy równym podziale mocy</small></div>
                <div class="rk-ai-result"><span>Szacowane rury w polach</span><strong id="rk-ai-result-pipe-total">—</strong><small>bez dokładnego trasowania CAD</small></div>
                <div class="rk-ai-result"><span>Szacowana średnia pętla</span><strong id="rk-ai-result-average-loop">—</strong><small>pole + przeciętny dobieg</small></div>
                <div class="rk-ai-result"><span>Prędkość w pętli</span><strong id="rk-ai-result-loop-velocity">—</strong><small>dla średniego przepływu</small></div>
                <div class="rk-ai-result"><span>Prędkość w magistrali</span><strong id="rk-ai-result-main-velocity">—</strong><small>dla przepływu sumarycznego</small></div>
                <div class="rk-ai-result"><span>Szacowana krytyczna Δp</span><strong id="rk-ai-result-pressure">—</strong><small>pętla + magistrala + rezerwa armatury</small></div>
                <div class="rk-ai-result"><span>Rezerwa mocy źródła</span><strong id="rk-ai-result-source">—</strong><small>tylko ogrzewanie pomieszczeń</small></div>
              </div>
            </div>

            <div class="rk-ai-tool-row rk-ai-analysis-stack">
              <div class="rk-ai-tool-panel">
                <h4>Mapa czterech obszarów projektu</h4>
                <p>Długość belki pokazuje kompletność i wstępną spójność wpisanych danych w danym obszarze.</p>
                <div class="rk-ai-chart-wrap">
                  <svg id="rk-ai-chart" class="rk-ai-chart" viewBox="0 0 760 330" role="img" aria-labelledby="rk-ai-chart-title rk-ai-chart-desc"></svg>
                  <div class="rk-ai-chart-caption">Wynik 100 nie oznacza zgodności z normą. Oznacza jedynie, że narzędzie nie wykryło braków i sprzeczności objętych tym formularzem.</div>
                </div>
              </div>
              <div class="rk-ai-tool-panel">
                <h4>Diagnostyka — co sprawdzić przed wykonaniem?</h4>
                <p>Lista aktualizuje się po każdej zmianie wartości.</p>
                <div class="rk-ai-diagnostics" id="rk-ai-diagnostics"></div>
              </div>
            </div>
          </div>
          <p class="rk-ai-tool-note">Model hydrauliczny wykorzystuje uproszczone równanie Darcy’ego-Weisbacha dla wody o orientacyjnych właściwościach w temperaturze pracy oraz rezerwę na elementy miejscowe. Nie zastępuje charakterystyk konkretnej rury, rozdzielacza, zaworów ani obliczenia rzeczywistej krytycznej drogi. Średnie obciążenie i średni przepływ nie wykrywają najtrudniejszego pomieszczenia.</p>
        </div>
      </section>

      <aside class="rk-ai-mid-cta" aria-label="Weryfikacja projektu ogrzewania podłogowego wygenerowanego przez AI">
        <span class="rk-ai-kicker" style="color:#83f1fb">Analizator znalazł sygnał ostrzegawczy albo nie masz wszystkich danych?</span>
        <h3>Prześlij projekt z ChatGPT lub innego AI, zanim na jego podstawie zamówisz rury</h3>
        <p>Sprawdzimy projekt w odniesieniu do rzeczywistego zapotrzebowania pomieszczeń, powierzchni czynnych, temperatur podłogi, długości pętli, przepływów, oporów hydraulicznych, magistrali i źródła ciepła. Jeżeli masz tylko opis, tabelę albo rysunek, najpierw ustalimy, czego brakuje do wykonania dokumentacji.</p>
        <a class="rk-ai-cta-button rk-ai-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt lub weryfikację obliczeń</a>
        <small class="rk-ai-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </aside>

      <section class="rk-ai-section" id="rk-ai-read-result">
        <span class="rk-ai-kicker">Kolor nie zatwierdza instalacji</span>
        <h2>Jak prawidłowo czytać wynik audytu projektu AI?</h2>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Zielony</span><h3>Brak oczywistej sprzeczności</h3><p>Wpisane dane przechodzą zastosowane kontrole, a dokumentacja deklaruje podstawowe obliczenia. Nadal trzeba sprawdzić pomieszczenia, rysunek, charakterystyki i rzeczywistą hydraulikę.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Pomarańczowy</span><h3>Braki lub wartości graniczne</h3><p>Projekt może być poprawny, ale nie da się tego ocenić z dostarczonych danych albo część parametrów wymaga ponownego przeliczenia.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Czerwony</span><h3>Poważna luka albo niespójność</h3><p>Występuje sygnał, którego nie należy ignorować przed zakupem i wylewką: brak obciążeń pomieszczeń, zbyt długa pętla, niewystarczająca moc źródła lub przekroczony budżet ciśnienia.</p></article>
        </div>
        <p><strong>Najważniejsze ograniczenie:</strong> analizator używa średnich dla całego budynku. Łazienka o małej powierzchni czynnej może nie pokrywać strat, nawet gdy średni wynik domu wygląda bardzo dobrze. Ostateczna weryfikacja zawsze schodzi do poziomu pomieszczenia i pętli.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-case">
        <span class="rk-ai-kicker">Ten sam dom — dwa zupełnie różne poziomy odpowiedzi</span>
        <h2>Przykład: dom 145 m² i projekt podłogówki z ChatGPT</h2>
        <p class="rk-ai-intro">Załóżmy, że AI proponuje 12 pętli rury 16×2 mm, rozstaw 15 cm, zasilanie 35°C i najdłuższy obieg 96 m. Zestaw brzmi wiarygodnie, ale bez kolejnych danych nie wiadomo, czy jest poprawny.</p>
        <div class="rk-ai-example">
          <h3>Warstwa pierwsza: odpowiedź orientacyjna</h3>
          <p>„Dla domu 145 m² zastosuj około 12 pętli, rozstaw 15 cm i temperaturę zasilania 35°C.” To może być rozsądny szkic rozmowy, ale nie zawiera dowodu, że każde pomieszczenie osiągnie wymaganą temperaturę.</p>
          <div class="rk-ai-example-grid">
            <div class="rk-ai-example-stat"><span>Dom</span><strong>145 m²</strong></div>
            <div class="rk-ai-example-stat"><span>Pętle</span><strong>12 szt.</strong></div>
            <div class="rk-ai-example-stat"><span>Rozstaw</span><strong>15 cm</strong></div>
            <div class="rk-ai-example-stat"><span>Zasilanie</span><strong>35°C</strong></div>
          </div>
        </div>
        <div class="rk-ai-example">
          <h3>Warstwa druga: projekt możliwy do weryfikacji</h3>
          <p>Do tych czterech liczb dochodzą: obciążenie 6,4 kW przy właściwej temperaturze zewnętrznej, tabela strat każdego pokoju, 115 m² powierzchni czynnej, warstwy podłogi, moc i temperatura powierzchni, przepływ około 0,92 m³/h przy ΔT 6 K, opory pętli, magistrala, punkt pracy pompy oraz moc źródła w tych warunkach.</p>
          <div class="rk-ai-example-grid">
            <div class="rk-ai-example-stat"><span>Obciążenie</span><strong>6,4 kW</strong></div>
            <div class="rk-ai-example-stat"><span>Podłoga czynna</span><strong>115 m²</strong></div>
            <div class="rk-ai-example-stat"><span>ΔT wody</span><strong>6 K</strong></div>
            <div class="rk-ai-example-stat"><span>Przepływ</span><strong>≈ 0,92 m³/h</strong></div>
          </div>
        </div>
        <p>Dopiero druga warstwa pozwala zadać sensowne pytania: czy 96 m jest najtrudniejszą pętlą, jaki przepływ ma ten konkretny obieg, czy łazienka pokrywa straty i czy pompa daje wymagane Q przy wymaganym H.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-comparison">
        <span class="rk-ai-kicker">Trzy narzędzia, trzy różne role</span>
        <h2>Model językowy, algorytm obliczeniowy i projektant — czym się różnią?</h2>
        <div class="rk-ai-table-wrap">
          <table class="rk-ai-table">
            <thead><tr><th>Cecha</th><th>ChatGPT / model językowy</th><th>Program obliczeniowy</th><th>Projektant HVAC</th></tr></thead>
            <tbody>
              <tr><td data-label="Cecha"><strong>Główna rola</strong></td><td data-label="Model AI">Rozmowa, synteza, wyjaśnianie, praca na treści i danych.</td><td data-label="Algorytm">Powtarzalne obliczenia według zaimplementowanego modelu.</td><td data-label="Projektant">Dobór metody, założeń i rozwiązań dla konkretnego budynku.</td></tr>
              <tr><td data-label="Cecha"><strong>Brakujące dane</strong></td><td data-label="Model AI">Może je wskazać, ale może też niejawnie założyć.</td><td data-label="Algorytm">Zwykle wymaga pola albo używa jawnej wartości domyślnej.</td><td data-label="Projektant">Weryfikuje dokumentację i dopytuje o stan planowany.</td></tr>
              <tr><td data-label="Cecha"><strong>Geometria</strong></td><td data-label="Model AI">Może interpretować obraz, lecz wymaga kontroli skali i wymiarów.</td><td data-label="Algorytm">Liczy na wprowadzonym modelu CAD/BIM lub tabeli.</td><td data-label="Projektant">Koordynuje rzut z architekturą i wykonaniem.</td></tr>
              <tr><td data-label="Cecha"><strong>Odpowiedzialność za wynik</strong></td><td data-label="Model AI">Nie ogląda budowy i nie potwierdza zgodności stanu rzeczywistego.</td><td data-label="Algorytm">Wynik zależy od implementacji i danych wejściowych.</td><td data-label="Projektant">Ocenia wynik, dokumentuje decyzje i reaguje na kolizje.</td></tr>
              <tr><td data-label="Cecha"><strong>Najlepsze użycie</strong></td><td data-label="Model AI">Pomoc w przygotowaniu danych i kontroli pytań.</td><td data-label="Algorytm"><a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">OZC, emisja, hydraulika i wariantowanie</a>.</td><td data-label="Projektant">Połączenie wszystkich części w wykonalną dokumentację.</td></tr>
            </tbody>
          </table>
        </div>
        <p><strong>Najmocniejszy układ nie polega na wyborze „AI albo człowiek”.</strong> Polega na wykorzystaniu AI do porządkowania i kontroli, algorytmów do obliczeń oraz doświadczenia projektowego do weryfikacji danych, wyjątków i wykonania.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-workflow">
        <span class="rk-ai-kicker">AI ma ujawniać niepewność, a nie ją maskować</span>
        <h2>Jak bezpiecznie używać ChatGPT przy projektowaniu podłogówki?</h2>
        <div class="rk-ai-steps">
          <article class="rk-ai-step"><div><h3>Zacznij od kompletnej listy danych</h3><p>Poproś AI o checklistę, ale porównaj ją z dokumentacją techniczną budynku i zakresem profesjonalnego projektu.</p></div></article>
          <article class="rk-ai-step"><div><h3>Oddziel dane od założeń</h3><p>Każda wartość powinna mieć status: z projektu, z dokumentacji produktu, zmierzona, obliczona albo przyjęta do potwierdzenia.</p></div></article>
          <article class="rk-ai-step"><div><h3>Wymagaj jednostek i wzorów</h3><p>Nie przyjmuj tabeli z samymi liczbami. Poproś o równanie, podstawienie, wynik pośredni i kontrolę wymiarową.</p></div></article>
          <article class="rk-ai-step"><div><h3>Każ obliczać pomieszczenia osobno</h3><p>Suma budynku nie pokaże, że łazienka albo salon z przeszkleniami jest krytyczny dla temperatury zasilania.</p></div></article>
          <article class="rk-ai-step"><div><h3>Po każdej zmianie przelicz cały łańcuch</h3><p>Zmiana rozstawu, okładziny, temperatury lub liczby pętli wpływa jednocześnie na emisję, długości, przepływy i opory.</p></div></article>
          <article class="rk-ai-step"><div><h3>Porównaj wynik z dokumentacją producentów</h3><p>Sprawdź opór okładziny, wymiary rur, zakres rotametrów, charakterystykę pompy i moc źródła w odpowiednim punkcie pracy.</p></div></article>
          <article class="rk-ai-step"><div><h3>Wykonaj niezależną kontrolę</h3><p>Najlepiej użyć innej metody obliczeniowej i sprawdzić wartości skrajne, a nie tylko poprosić ten sam model: „czy na pewno?”.</p></div></article>
          <article class="rk-ai-step"><div><h3>Zamknij projekt przed zakupem i wylewką</h3><p>Po wykonaniu <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">jastrychu</a> zmiana rozstawu, podziału pętli lub lokalizacji rozdzielacza staje się kosztowna albo niemożliwa.</p></div></article>
        </div>
      </section>

      <section class="rk-ai-section" id="rk-ai-docs">
        <span class="rk-ai-kicker">Weryfikuj liczby u ich źródła</span>
        <h2>Jakie dokumenty trzeba sprawdzić poza odpowiedzią AI?</h2>
        <div class="rk-ai-grid-3">
          <article class="rk-ai-card"><span class="rk-ai-card-number">Budynek</span><h3>Projekt i stan planowany</h3><p>Rzuty, przekroje, zestawienie stolarki, charakterystyka przegród, wentylacja oraz wszystkie zmiany wprowadzone przez inwestora.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Podłoga</span><h3>Karty systemu i okładziny</h3><p>Opór cieplny, dopuszczalne temperatury, konstrukcja jastrychu, dylatacje i wymagania montażowe producentów.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Hydraulika</span><h3>Charakterystyki elementów</h3><p>Średnice wewnętrzne rur, wykresy strat, zakresy przepływomierzy, Kv zaworów i charakterystyka Q–H pompy.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Źródło</span><h3>Tabele punktów pracy</h3><p>Moc i sprawność przy temperaturze zewnętrznej oraz zasilaniu, zakres modulacji, przepływ minimalny i wymagania schematu.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Obliczenia</span><h3>Raporty z wynikami pośrednimi</h3><p>Założenia, temperatury, U, powierzchnie, strumienie powietrza, moce pomieszczeń, emisja, pętle, przepływy i opory.</p></article>
          <article class="rk-ai-card"><span class="rk-ai-card-number">Wykonanie</span><h3>Rysunek i protokoły</h3><p>Rzut w skali, opisy obiegów, <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próba szczelności</a>, zdjęcia przed zakryciem, pomiary przepływów i ustawienia uruchomieniowe.</p></article>
        </div>
      </section>

      <section class="rk-ai-section" id="rk-ai-red-flags">
        <span class="rk-ai-kicker">Dziesięć sygnałów, przy których trzeba zatrzymać wykonanie</span>
        <h2>10 błędów i czerwonych flag w projekcie podłogówki z AI</h2>
        <div class="rk-ai-grid-2">
          <article class="rk-ai-error"><b>01</b><h3>Jeden wynik W/m² dla całego domu</h3><p>Brak strat pomieszczeń uniemożliwia poprawny dobór mocy i rozstawu dla każdej strefy.</p></article>
          <article class="rk-ai-error"><b>02</b><h3>Rozstaw dobrany tylko z metrażu</h3><p>Nie uwzględnia powierzchni czynnej, okładziny, temperatury i różnic między pomieszczeniami.</p></article>
          <article class="rk-ai-error"><b>03</b><h3>Brak temperatury powierzchni</h3><p>Nie wiadomo, czy wymagana moc nie prowadzi do przekroczenia warunków komfortu lub ograniczeń podłogi.</p></article>
          <article class="rk-ai-error"><b>04</b><h3>Każda pętla ma identyczny przepływ</h3><p>Przepływ powinien wynikać z mocy przypisanej do obiegu oraz ΔT, a nie z jednej uniwersalnej nastawy.</p></article>
          <article class="rk-ai-error"><b>05</b><h3>Pętla 16×2 mm ma 120–150 m</h3><p>Taką długość trzeba szczególnie sprawdzić pod kątem przepływu, oporu i dostępnego ciśnienia — przed wylewką.</p></article>
          <article class="rk-ai-error"><b>06</b><h3>Dobiegi nie są wliczone</h3><p>Długości w tabeli obejmują tylko pole grzewcze, więc rzeczywiste pętle i ilość rury będą większe.</p></article>
          <article class="rk-ai-error"><b>07</b><h3>Pompa dobrana z sumy metrów rur</h3><p>Brakuje przepływu całkowitego i straty ciśnienia krytycznej drogi przy tym przepływie.</p></article>
          <article class="rk-ai-error"><b>08</b><h3>Magistrala bez przepływu i oporu</h3><p>Średnica pojawia się jako „typowa”, ale nie ma prędkości, pełnej długości ani wpływu armatury.</p></article>
          <article class="rk-ai-error"><b>09</b><h3>Moc pompy ciepła wzięta z nazwy</h3><p>Nie pokazano mocy przy projektowej temperaturze zewnętrznej i wymaganej temperaturze zasilania.</p></article>
          <article class="rk-ai-error"><b>10</b><h3>AI potwierdza samo siebie</h3><p>Pytanie „czy jesteś pewien?” nie jest niezależną weryfikacją danych, metody, rysunku i wyników.</p></article>
        </div>
        <p>Każdy z tych problemów zasługuje na osobne rozwinięcie. W tym pillarze tworzą mapę kontroli, natomiast szczegółowy artykuł o błędach AI powinien przejąć frazy listowe i case’y z konkretnymi odpowiedziami modeli.</p>
      </section>

      <section class="rk-ai-section" id="rk-ai-checklist">
        <span class="rk-ai-kicker">Ostatnia kontrola przed zakryciem rur</span>
        <h2>Checklista: co potwierdzić przed wykonaniem wylewki?</h2>
        <div class="rk-ai-steps">
          <article class="rk-ai-step"><div><h3>Warunki i obciążenia pomieszczeń</h3><p>W projekcie są temperatury obliczeniowe, opis przegród, wentylacji oraz wynik w W dla każdej strefy.</p></div></article>
          <article class="rk-ai-step"><div><h3>Powierzchnie czynne i okładziny</h3><p>Wyłączono stałą zabudowę, uwzględniono różne opory podłóg i ograniczenia temperatury.</p></div></article>
          <article class="rk-ai-step"><div><h3>Moc systemu w każdym pomieszczeniu</h3><p>Wymagane W/m² porównano z możliwą mocą przy wybranych temperaturach, rozstawie i konstrukcji.</p></div></article>
          <article class="rk-ai-step"><div><h3>Rzut wykonawczy w skali</h3><p>Widać pętle, rozstawy, rozdzielacze, dobiegi, <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">dylatacje</a>, strefy bez rur oraz opisy obiegów.</p></div></article>
          <article class="rk-ai-step"><div><h3>Długość każdej pętli</h3><p>Tabela obejmuje pole, zasilanie i powrót, a wynik jest zgodny z rzeczywistym trasowaniem na rzucie.</p></div></article>
          <article class="rk-ai-step"><div><h3>Przepływ i strata ciśnienia</h3><p>Każdy obieg ma wymaganą nastawę oraz opór policzony dla własnej mocy, długości i średnicy.</p></div></article>
          <article class="rk-ai-step"><div><h3>Magistrala i punkt pracy pompy</h3><p>Przepływ sumaryczny, prędkości i krytyczna droga mieszczą się w możliwościach układu.</p></div></article>
          <article class="rk-ai-step"><div><h3>Źródło i schemat</h3><p>Moc źródła potwierdzono w warunkach projektowych, a wymagania przepływu, bufora, sprzęgła i sterowania są skoordynowane.</p></div></article>
          <article class="rk-ai-step"><div><h3>Zmiany wykonawcze</h3><p>Każdą zmianę rozstawu, długości, rozdzielacza, okładziny lub źródła przeliczono przed ułożeniem jastrychu.</p></div></article>
          <article class="rk-ai-step"><div><h3>Próba, opis i zdjęcia</h3><p>Instalacja przeszła próbę szczelności, obiegi są opisane, a przebieg rur udokumentowany przed zakryciem.</p></div></article>
        </div>
      </section>

      <section class="rk-ai-section" id="rk-ai-faq">
        <span class="rk-ai-kicker">Najczęstsze pytania inwestorów</span>
        <h2>FAQ — projekt ogrzewania podłogowego z ChatGPT i AI</h2>
        <div class="rk-ai-faq">
          <details><summary>Czy ChatGPT potrafi zrobić kompletny projekt ogrzewania podłogowego?</summary><div class="rk-ai-faq-answer"><p>Może przygotować opis, tabele, obliczenia pomocnicze i poglądowy układ, jeśli otrzyma dane. Kompletna dokumentacja wymaga jednak zweryfikowanych obciążeń cieplnych pomieszczeń, modelu mocy podłogi, hydrauliki, rysunku w skali oraz kontroli źródła i wykonania. Sam wydruk odpowiedzi nie potwierdza tych elementów.</p></div></details>
          <details><summary>Czy projekt podłogówki wygenerowany przez AI jest bezpieczny do wykonania?</summary><div class="rk-ai-faq-answer"><p>Nie można tego stwierdzić na podstawie pochodzenia dokumentu ani jego wyglądu. Trzeba sprawdzić dane wejściowe, metodę, jednostki, obciążenia pomieszczeń, moc i temperaturę podłogi, długości, przepływy, opory, magistrale, pompę oraz źródło ciepła.</p></div></details>
          <details><summary>Jakie pliki można przekazać ChatGPT do analizy podłogówki?</summary><div class="rk-ai-faq-answer"><p>Zależnie od dostępnych funkcji mogą to być rzuty, zestawienia i tabele. Wymiary i skala odczytane z obrazu muszą zostać potwierdzone z dokumentacją, a dane wrażliwe warto usunąć. Analiza pliku nie oznacza automatycznego wykonania modelu CAD ani obliczeń normowych.</p></div></details>
          <details><summary>Czy AI może obliczyć straty ciepła według PN-EN 12831?</summary><div class="rk-ai-faq-answer"><p>AI może wykonywać działania i pomagać opisać metodę, ale użytkownik musi mieć dostęp do właściwych danych oraz legalnego tekstu stosowanego standardu. Należy potwierdzić krajowe warunki, temperatury, wentylację, infiltrację, mostki i wyniki dla pomieszczeń. Sama deklaracja „policzone według normy” nie jest raportem obliczeniowym.</p></div></details>
          <details><summary>Czy rozstaw 10 albo 15 cm podany przez ChatGPT może być poprawny?</summary><div class="rk-ai-faq-answer"><p>Może, ale liczba musi wynikać z obciążenia danego pomieszczenia, powierzchni czynnej, parametrów wody, jastrychu, oporu okładziny i ograniczeń temperatury. Ten sam rozstaw nie musi być właściwy dla wszystkich stref domu.</p></div></details>
          <details><summary>Czy pętla 120 m z rury 16×2 mm zawsze jest błędem?</summary><div class="rk-ai-faq-answer"><p>Nie należy oceniać długości bez przepływu, średnicy wewnętrznej i dostępnego ciśnienia, ale 120 m wyraźnie przekracza typowy punkt kontrolny 80–100 m dla rury 16×2 mm. Przed wylewką trzeba policzyć opór pętli i rozważyć inny podział pola.</p></div></details>
          <details><summary>Jak sprawdzić przepływy podane przez AI?</summary><div class="rk-ai-faq-answer"><p>Dla każdej pętli potrzebna jest przypisana moc i projektowe ΔT. Dla wody przepływ w l/h można orientacyjnie policzyć jako moc w W podzieloną przez 1,163 i ΔT. Następnie sprawdza się prędkość, stratę ciśnienia, zakres rotametru i sumę przepływów.</p></div></details>
          <details><summary>Czy zielony wynik analizatora oznacza, że projekt jest poprawny?</summary><div class="rk-ai-faq-answer"><p>Nie. Oznacza tylko, że wpisane wartości nie ujawniły oczywistych braków i sprzeczności objętych narzędziem. Analizator nie zna rozkładu strat pomieszczeń, pełnego trasowania, wszystkich oporów miejscowych ani charakterystyk konkretnych produktów.</p></div></details>
          <details><summary>Czy można używać AI do zaprojektowania podłogówki samemu?</summary><div class="rk-ai-faq-answer"><p>AI jest wartościowym pomocnikiem przy zbieraniu danych, nauce i kontrolowaniu tabel. Nie powinno być jedynym źródłem decyzji o pracach, których po wylewce nie da się łatwo zmienić. Wyniki trzeba niezależnie zweryfikować przed zakupem i wykonaniem.</p></div></details>
          <details><summary>Co przesłać do weryfikacji projektu wygenerowanego przez ChatGPT?</summary><div class="rk-ai-faq-answer"><p>Prześlij rzuty z wymiarami, pełną odpowiedź lub plik AI, opis przegród i wentylacji, zestawienie stolarki, źródło ciepła, warstwy i okładziny podłogi oraz wszystkie otrzymane tabele pętli, przepływów i oporów. Brakujące dane można następnie uporządkować w ankiecie projektowej.</p></div></details>
        </div>
      </section>

      <section class="rk-ai-section" id="rk-ai-sources">
        <span class="rk-ai-kicker">Źródła techniczne i zarządzanie ryzykiem AI</span>
        <h2>Podstawa merytoryczna opracowania</h2>
        <div class="rk-ai-source-box">
          <ul>
            <li><a href="https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-generative-artificial-intelligence" target="_blank" rel="nofollow noopener noreferrer">NIST AI 600-1 — Generative Artificial Intelligence Profile</a>, profil ryzyk generatywnej AI, w tym ryzyka tworzenia przekonująco podanych błędnych treści.</li>
            <li><a href="https://knowledge.bsigroup.com/products/energy-performance-of-buildings-method-for-calculation-of-the-design-heat-load-space-heating-load-module-m3-3" target="_blank" rel="nofollow noopener noreferrer">BSI — BS EN 12831-1:2017</a>, zakres metody wyznaczania projektowego obciążenia cieplnego pomieszczeń, części budynku i całych budynków.</li>
            <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021</a>, procedury wyznaczania mocy wodnych systemów ogrzewania i chłodzenia płaszczyznowego oraz wyników związanych z temperaturą powierzchni.</li>
            <li><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021</a>, projektowanie i wymiarowanie wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego.</li>
          </ul>
          <p>Normy mogą być chronione prawem autorskim i odpłatne. Artykuł opisuje strukturę kontroli, ale nie zastępuje pełnego tekstu norm, krajowych załączników, dokumentacji producentów ani indywidualnego opracowania technicznego.</p>
        </div>
        <div class="rk-ai-update">Ostatnia aktualizacja merytoryczna: 7 września 2026 r.</div>
      </section>
    </main>

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

      <header class="rk-ai-author-head">
        <div><span class="rk-ai-kicker" style="color:#83f1fb">Autor opracowania</span><div class="rk-ai-author-title">Robert Kucharski</div><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
        <span class="rk-ai-author-mark">AI • OBLICZENIA • PODŁOGÓWKA</span>
      </header>

      <div class="rk-ai-author-layout">
        <aside class="rk-ai-author-side">
          <div class="rk-ai-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
          <div class="rk-ai-author-name">Robert Kucharski</div>
          <div class="rk-ai-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-ai-author-social-label">Znajdziesz mnie również:</div>
          <div class="rk-ai-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg></a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg></a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt HVAC w serwisie X" title="X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg></a>
          </div>
        </aside>

        <div class="rk-ai-author-main">
          <blockquote class="rk-ai-author-quote"><p>„AI może skrócić drogę od pytania do analizy, ale nie może skrócić fizyki. Jeżeli nie potrafimy wskazać, skąd wzięła się moc, przepływ i opór pętli, mamy sugestię — nie projekt.”</p></blockquote>
          <div class="rk-ai-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-ai-author-tab" for="rk-ai-author-about">O autorze</label>
            <label class="rk-ai-author-tab" for="rk-ai-author-exp">Doświadczenie</label>
            <label class="rk-ai-author-tab" for="rk-ai-author-sites">Portale</label>
          </div>
          <div class="rk-ai-author-panel rk-ai-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła z doborem temperatur, rozstawów, przepływów, długości pętli, strat ciśnienia i nastaw rozdzielaczy.</p></div>
          <div class="rk-ai-author-panel rk-ai-author-panel-exp"><p>Weryfikuję cały łańcuch decyzji: od parametrów przegród i obciążenia pomieszczeń przez możliwości czynnej podłogi po hydraulikę, źródło ciepła i dokumentację dla wykonawcy. Narzędzia AI wykorzystuję jako wsparcie analizy, nie zamiennik danych i odpowiedzialności projektowej.</p></div>
          <div class="rk-ai-author-panel rk-ai-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-ai-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a></div></div>
        </div>
      </div>
    </section>

    <section class="rk-ai-final-cta" aria-label="Indywidualny projekt ogrzewania podłogowego z obliczeniami">
      <span class="rk-ai-kicker" style="color:#83f1fb">Niech AI pomoże zadać pytania. Wylewkę wykonaj według sprawdzonych liczb.</span>
      <div class="rk-ai-cta-title">Otrzymaj projekt podłogówki z obliczeniami cieplnymi i hydraulicznymi</div>
      <p>Dokumentacja obejmuje obciążenia pomieszczeń, kontrolę mocy podłogi, temperaturę zasilania i powrotu, układ oraz długości pętli, przepływy, opory, rozdzielacze i zestawienie materiałów. Po zakupie otrzymasz ankietę oraz możliwość przesłania rzutów budynku.</p>
      <a class="rk-ai-cta-button rk-ai-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      <small class="rk-ai-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#article",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/",
      "headline": "Projekt ogrzewania podłogowego z ChatGPT i AI – czy to działa?",
      "description": "Techniczna analiza projektowania ogrzewania podłogowego z ChatGPT i AI z interaktywnym audytem obciążenia cieplnego, emisji podłogi, pętli, przepływów, hydrauliki i źródła ciepła.",
      "inLanguage": "pl-PL",
      "datePublished": "2026-09-07",
      "dateModified": "2026-09-07",
      "proficiencyLevel": "Beginner",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "about": [
        {"@type": "Thing", "name": "Projekt ogrzewania podłogowego z ChatGPT"},
        {"@type": "Thing", "name": "Sztuczna inteligencja w HVAC"},
        {"@type": "Thing", "name": "Weryfikacja projektu ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Obliczenia hydrauliczne podłogówki"}
      ],
      "keywords": [
        "projekt ogrzewania podłogowego z ChatGPT",
        "projekt ogrzewania podłogowego AI",
        "ChatGPT ogrzewanie podłogowe",
        "czy ChatGPT zrobi projekt podłogówki",
        "jak sprawdzić projekt ogrzewania podłogowego",
        "AI HVAC"
      ],
      "citation": [
        "https://www.nist.gov/publications/artificial-intelligence-risk-management-framework-generative-artificial-intelligence",
        "https://knowledge.bsigroup.com/products/energy-performance-of-buildings-method-for-calculation-of-the-design-heat-load-space-heating-load-module-m3-3",
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html"
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#webpage",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/",
      "name": "Projekt ogrzewania podłogowego z ChatGPT i AI – czy to działa?",
      "description": "ChatGPT przygotował projekt podłogówki? Sprawdź straty ciepła, moc podłogi, pętle, przepływy i hydraulikę przed wylewką.",
      "inLanguage": "pl-PL",
      "datePublished": "2026-09-07",
      "dateModified": "2026-09-07",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#application"},
        {"@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Ogrzewanie podłogowe", "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/"},
        {"@type": "ListItem", "position": 3, "name": "Projekt ogrzewania podłogowego z ChatGPT i AI", "item": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#application",
      "name": "Audyt projektu ogrzewania podłogowego wygenerowanego przez AI",
      "url": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#rk-ai-audit",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie przesiewowo sprawdza kompletność i spójność danych cieplnych, parametrów podłogi, długości pętli, przepływów, prędkości, strat ciśnienia, magistrali i mocy źródła ciepła."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#howto",
      "name": "Jak bezpiecznie zweryfikować projekt ogrzewania podłogowego z AI?",
      "description": "Osiem etapów od zebrania danych po niezależną kontrolę i zamknięcie dokumentacji przed wylewką.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Zbierz komplet danych", "text": "Przygotuj rzuty, parametry przegród, stolarki, wentylacji, źródła ciepła i warstw podłogi."},
        {"@type": "HowToStep", "position": 2, "name": "Oddziel fakty od założeń", "text": "Oznacz, które wartości pochodzą z projektu i dokumentacji, a które są tylko założeniem do potwierdzenia."},
        {"@type": "HowToStep", "position": 3, "name": "Sprawdź obciążenia pomieszczeń", "text": "Potwierdź straty ciepła w watach dla każdej strefy przy właściwych warunkach projektowych."},
        {"@type": "HowToStep", "position": 4, "name": "Sprawdź możliwości podłogi", "text": "Porównaj wymaganą moc z powierzchnią czynną, temperaturą wody, rozstawem, okładziną i temperaturą powierzchni."},
        {"@type": "HowToStep", "position": 5, "name": "Zweryfikuj pętle i przepływy", "text": "Skontroluj pełne długości z dobiegami oraz przepływy wynikające z mocy każdej pętli i różnicy temperatur."},
        {"@type": "HowToStep", "position": 6, "name": "Policz krytyczną drogę hydrauliczną", "text": "Uwzględnij pętlę, rozdzielacz, przyłącza, armaturę i magistralę przy wymaganym przepływie."},
        {"@type": "HowToStep", "position": 7, "name": "Sprawdź źródło ciepła", "text": "Porównaj obciążenie z mocą źródła w odpowiednim punkcie pracy i skoordynuj schemat hydrauliczny."},
        {"@type": "HowToStep", "position": 8, "name": "Wykonaj niezależną kontrolę przed wylewką", "text": "Porównaj wyniki inną metodą, usuń niespójności i zatwierdź rysunek wykonawczy przed zakryciem rur."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Czy ChatGPT potrafi zrobić kompletny projekt ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Może przygotować opis, tabele, obliczenia pomocnicze i poglądowy układ, jeśli otrzyma dane. Kompletna dokumentacja wymaga zweryfikowanych obciążeń cieplnych pomieszczeń, modelu mocy podłogi, hydrauliki, rysunku w skali oraz kontroli źródła i wykonania."}},
        {"@type": "Question", "name": "Czy projekt podłogówki wygenerowany przez AI jest bezpieczny do wykonania?", "acceptedAnswer": {"@type": "Answer", "text": "Nie można tego stwierdzić na podstawie pochodzenia dokumentu ani jego wyglądu. Trzeba sprawdzić dane wejściowe, metodę, jednostki, obciążenia pomieszczeń, moc i temperaturę podłogi, długości, przepływy, opory, magistrale, pompę oraz źródło ciepła."}},
        {"@type": "Question", "name": "Jakie pliki można przekazać ChatGPT do analizy podłogówki?", "acceptedAnswer": {"@type": "Answer", "text": "Zależnie od dostępnych funkcji mogą to być rzuty, zestawienia i tabele. Wymiary oraz skala odczytane z obrazu muszą zostać potwierdzone z dokumentacją, a analiza pliku nie oznacza automatycznego wykonania modelu CAD ani obliczeń normowych."}},
        {"@type": "Question", "name": "Czy AI może obliczyć straty ciepła według PN-EN 12831?", "acceptedAnswer": {"@type": "Answer", "text": "AI może wykonywać działania i pomagać opisać metodę, ale trzeba potwierdzić dane, krajowe warunki, temperatury, wentylację, infiltrację, mostki oraz wyniki dla pomieszczeń. Sama deklaracja obliczenia według normy nie jest raportem obliczeniowym."}},
        {"@type": "Question", "name": "Czy rozstaw 10 albo 15 cm podany przez ChatGPT może być poprawny?", "acceptedAnswer": {"@type": "Answer", "text": "Może, ale liczba musi wynikać z obciążenia pomieszczenia, powierzchni czynnej, parametrów wody, jastrychu, oporu okładziny i ograniczeń temperatury. Ten sam rozstaw nie musi być właściwy dla wszystkich stref domu."}},
        {"@type": "Question", "name": "Czy pętla 120 m z rury 16 na 2 mm zawsze jest błędem?", "acceptedAnswer": {"@type": "Answer", "text": "Długości nie ocenia się bez przepływu, średnicy wewnętrznej i dostępnego ciśnienia, ale 120 m przekracza typowy punkt kontrolny 80–100 m dla rury 16 na 2 mm. Przed wylewką trzeba policzyć opór i rozważyć inny podział."}},
        {"@type": "Question", "name": "Jak sprawdzić przepływy podane przez AI?", "acceptedAnswer": {"@type": "Answer", "text": "Dla każdej pętli potrzebna jest przypisana moc i projektowa różnica temperatur. Dla wody przepływ w litrach na godzinę można orientacyjnie policzyć jako moc w watach podzieloną przez 1,163 oraz różnicę temperatur, a potem sprawdzić prędkość i opór."}},
        {"@type": "Question", "name": "Czy zielony wynik analizatora oznacza, że projekt jest poprawny?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Oznacza tylko, że wpisane wartości nie ujawniły oczywistych braków i sprzeczności objętych narzędziem. Analizator nie zna rozkładu strat pomieszczeń, pełnego trasowania ani charakterystyk konkretnych produktów."}},
        {"@type": "Question", "name": "Czy można używać AI do zaprojektowania podłogówki samemu?", "acceptedAnswer": {"@type": "Answer", "text": "AI jest wartościowym pomocnikiem przy zbieraniu danych, nauce i kontrolowaniu tabel, ale nie powinno być jedynym źródłem decyzji o pracach, których po wylewce nie da się łatwo zmienić. Wyniki trzeba niezależnie zweryfikować."}},
        {"@type": "Question", "name": "Co przesłać do weryfikacji projektu wygenerowanego przez ChatGPT?", "acceptedAnswer": {"@type": "Answer", "text": "Prześlij rzuty z wymiarami, pełną odpowiedź lub plik AI, opis przegród i wentylacji, zestawienie stolarki, źródło ciepła, warstwy i okładziny podłogi oraz wszystkie tabele pętli, przepływów i oporów."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

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

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

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

  var readNumber = function (id, fallback, minimum, maximum) {
    var field = byId(id);
    var value = parseFloat(field.value);
    if (!Number.isFinite(value)) {
      return fallback;
    }
    return Math.min(maximum, Math.max(minimum, value));
  };

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

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

  var svgNamespace = "http://www.w3.org/2000/svg";

  var svgElement = function (name, attributes, textValue) {
    var node = document.createElementNS(svgNamespace, name);
    Object.keys(attributes).forEach(function (key) {
      node.setAttribute(key, attributes[key]);
    });
    if (typeof textValue === "string") {
      node.textContent = textValue;
    }
    return node;
  };

  var pipeData = {
    "16x2": {inner: 12, limit: 100, label: "16×2,0 mm"},
    "17x2": {inner: 13, limit: 110, label: "17×2,0 mm"},
    "20x2": {inner: 16, limit: 120, label: "20×2,0 mm"}
  };

  var optionScore = function (value, yesScore, unknownScore) {
    if (value === "yes") {
      return yesScore;
    }
    if (value === "unknown") {
      return unknownScore;
    }
    return 0;
  };

  var flowVelocity = function (flowM3h, diameterMm) {
    var diameter = diameterMm / 1000;
    var section = Math.PI * diameter * diameter / 4;
    if (section <= 0) {
      return 0;
    }
    return flowM3h / 3600 / section;
  };

  var pressureDrop = function (lengthM, flowM3h, diameterMm, extraFactor) {
    var diameter = diameterMm / 1000;
    var velocity = flowVelocity(flowM3h, diameterMm);
    var density = 994;
    var viscosity = 0.00072;
    var reynolds = density * velocity * diameter / viscosity;
    var friction;

    if (reynolds <= 0) {
      return 0;
    }
    if (reynolds < 2300) {
      friction = 64 / reynolds;
    } else {
      friction = 0.3164 / Math.pow(reynolds, 0.25);
    }
    return friction * (lengthM / diameter) * (density * velocity * velocity / 2) / 1000 * extraFactor;
  };

  var addDiagnostic = function (container, textValue, stateClass) {
    var item = document.createElement("div");
    item.className = "rk-ai-diagnostic";
    if (stateClass) {
      item.classList.add(stateClass);
    }
    item.textContent = textValue;
    container.appendChild(item);
  };

  var clampScore = function (value) {
    return Math.max(0, Math.min(100, Math.round(value)));
  };

  var drawChart = function (scores) {
    var chart = byId("rk-ai-chart");
    if (!chart) {
      return;
    }

    while (chart.firstChild) {
      chart.removeChild(chart.firstChild);
    }

    chart.appendChild(svgElement("title", {id: "rk-ai-chart-title"}, "Mapa kompletności i spójności projektu ogrzewania podłogowego"));
    chart.appendChild(svgElement("desc", {id: "rk-ai-chart-desc"}, "Cztery poziome belki przedstawiają wynik dla danych cieplnych, emisji podłogi, hydrauliki i źródła ciepła."));
    chart.appendChild(svgElement("rect", {x: 0, y: 0, width: 760, height: 330, fill: "#f8fbfc"}));

    var labels = ["Dane cieplne", "Emisja podłogi", "Hydraulika", "Źródło ciepła"];
    var colors = ["#078fbe", "#28c9da", "#695ac9", "#ff7438"];
    var index;

    for (index = 0; index <= 4; index += 1) {
      var gridX = 205 + index * 120;
      chart.appendChild(svgElement("line", {x1: gridX, y1: 38, x2: gridX, y2: 288, stroke: "#d9e7ed", "stroke-width": 1}));
      chart.appendChild(svgElement("text", {x: gridX, y: 310, fill: "#617684", "font-size": 11, "text-anchor": "middle", "font-family": "system-ui, sans-serif"}, String(index * 25)));
    }

    scores.forEach(function (score, itemIndex) {
      var y = 54 + itemIndex * 62;
      var width = 480 * clampScore(score) / 100;
      chart.appendChild(svgElement("text", {x: 185, y: y + 22, fill: "#263f4d", "font-size": 14, "font-weight": 850, "text-anchor": "end", "font-family": "system-ui, sans-serif"}, labels[itemIndex]));
      chart.appendChild(svgElement("rect", {x: 205, y: y, width: 480, height: 30, rx: 15, fill: "#e5eef2"}));
      chart.appendChild(svgElement("rect", {x: 205, y: y, width: width, height: 30, rx: 15, fill: colors[itemIndex]}));
      chart.appendChild(svgElement("text", {x: 705, y: y + 21, fill: "#263f4d", "font-size": 13, "font-weight": 900, "text-anchor": "start", "font-family": "system-ui, sans-serif"}, format(clampScore(score), 0) + "%"));
    });
  };

  var update = function () {
    var area = readNumber("rk-ai-area", 145, 10, 2000);
    var activeArea = readNumber("rk-ai-active-area", 115, 1, 2000);
    var load = readNumber("rk-ai-load", 6.4, 0.1, 500);
    var outdoor = readNumber("rk-ai-outdoor", -20, -40, 10);
    var roomLoads = byId("rk-ai-room-loads").value;
    var supply = readNumber("rk-ai-supply", 35, 20, 70);
    var returnTemperature = readNumber("rk-ai-return", 29, 15, 65);
    var spacing = readNumber("rk-ai-spacing-input", 15, 5, 40);
    var coverR = readNumber("rk-ai-cover-r", 0.10, 0, 1);
    var zone = byId("rk-ai-zone").value;
    var surfaceTemperature = readNumber("rk-ai-surface-temp", 28.5, 15, 50);
    var surfaceCheck = byId("rk-ai-surface-check").value;
    var pipeKey = byId("rk-ai-pipe").value;
    var pipe = pipeData[pipeKey];
    var loopCount = Math.round(readNumber("rk-ai-loop-count", 12, 1, 300));
    var longestLoop = readNumber("rk-ai-longest-loop", 96, 5, 500);
    var approach = readNumber("rk-ai-approach", 4, 0, 100);
    var mainDiameter = readNumber("rk-ai-main-diameter", 25, 10, 100);
    var mainLength = readNumber("rk-ai-main-length", 24, 1, 1000);
    var pumpHead = readNumber("rk-ai-pump-head", 25, 1, 500);
    var hydraulicCheck = byId("rk-ai-hydraulic-check").value;
    var sourceType = byId("rk-ai-source-type").value;
    var sourcePower = readNumber("rk-ai-source-power", 7, 0.1, 1000);
    var sourceData = byId("rk-ai-source-data").value;
    var drawingScale = byId("rk-ai-drawing-scale").value;

    var deltaT = supply - returnTemperature;
    var safeDeltaT = Math.max(0.5, deltaT);
    var qRequired = load * 1000 / activeArea;
    var totalFlow = 0.86 * load / safeDeltaT;
    var loopFlow = totalFlow / loopCount;
    var loopFlowLMin = loopFlow * 1000 / 60;
    var spacingM = spacing / 100;
    var fieldPipe = activeArea / spacingM * 1.05;
    var averageLoop = fieldPipe / loopCount + 2 * approach;
    var loopVelocity = flowVelocity(loopFlow, pipe.inner);
    var mainVelocity = flowVelocity(totalFlow, mainDiameter);
    var loopPressure = pressureDrop(longestLoop, loopFlow, pipe.inner, 1.15);
    var mainPressure = pressureDrop(mainLength, totalFlow, mainDiameter, 1.20);
    var criticalPressure = loopPressure + mainPressure + 3;
    var sourceReserve = sourcePower - load;
    var surfaceLimit = 29;
    var surfaceLabel = "strefy stałego przebywania";

    if (zone === "bathroom") {
      surfaceLimit = 33;
      surfaceLabel = "łazienki";
    }
    if (zone === "peripheral") {
      surfaceLimit = 35;
      surfaceLabel = "strefy brzegowej";
    }

    setText("rk-ai-result-q", format(qRequired, 1) + " W/m²");
    setText("rk-ai-result-flow", format(totalFlow, 2) + " m³/h");
    setText("rk-ai-result-loop-flow", format(loopFlowLMin, 2) + " l/min");
    setText("rk-ai-result-pipe-total", format(fieldPipe, 0) + " m");
    setText("rk-ai-result-average-loop", format(averageLoop, 0) + " m");
    setText("rk-ai-result-loop-velocity", format(loopVelocity, 2) + " m/s");
    setText("rk-ai-result-main-velocity", format(mainVelocity, 2) + " m/s");
    setText("rk-ai-result-pressure", format(criticalPressure, 1) + " kPa");
    setText("rk-ai-result-source", (sourceReserve < 0 ? "−" : "+") + format(Math.abs(sourceReserve), 1) + " kW");

    var thermalScore = 25 + optionScore(roomLoads, 55, 18);
    if (activeArea <= area) {
      thermalScore += 10;
    }
    if (outdoor <= 5) {
      thermalScore += 10;
    }

    var emissionScore = optionScore(surfaceCheck, 40, 15);
    if (qRequired <= 70) {
      emissionScore += 30;
    } else if (qRequired <= 90) {
      emissionScore += 22;
    } else if (qRequired <= 110) {
      emissionScore += 10;
    }
    if (supply <= 40) {
      emissionScore += 20;
    } else if (supply <= 45) {
      emissionScore += 10;
    }
    if (surfaceTemperature <= surfaceLimit) {
      emissionScore += 10;
    }

    var hydraulicScore = optionScore(hydraulicCheck, 35, 10) + optionScore(drawingScale, 15, 5);
    if (longestLoop <= pipe.limit) {
      hydraulicScore += 20;
    } else if (longestLoop <= pipe.limit + 20) {
      hydraulicScore += 8;
    }
    if (criticalPressure <= 20) {
      hydraulicScore += 15;
    } else if (criticalPressure <= 25) {
      hydraulicScore += 8;
    }
    if (loopVelocity >= 0.15) {
      if (loopVelocity <= 0.60) {
        hydraulicScore += 8;
      }
    }
    if (mainVelocity >= 0.15) {
      if (mainVelocity <= 0.60) {
        hydraulicScore += 7;
      }
    }

    var sourceScore = optionScore(sourceData, 45, 15);
    if (sourceReserve >= 0) {
      sourceScore += 40;
    }
    if (sourceType) {
      sourceScore += 15;
    }

    thermalScore = clampScore(thermalScore);
    emissionScore = clampScore(emissionScore);
    hydraulicScore = clampScore(hydraulicScore);
    sourceScore = clampScore(sourceScore);

    var overall = clampScore((thermalScore + emissionScore + hydraulicScore + sourceScore) / 4);
    var dangerCount = 0;
    var warningCount = 0;

    if (roomLoads === "no") {
      dangerCount += 1;
    } else if (roomLoads === "unknown") {
      warningCount += 1;
    }
    if (activeArea > area) {
      dangerCount += 1;
    }
    if (deltaT <= 1) {
      dangerCount += 1;
    }
    if (qRequired > 110) {
      dangerCount += 1;
    } else if (qRequired > 80) {
      warningCount += 1;
    }
    if (surfaceTemperature > surfaceLimit) {
      dangerCount += 1;
    }
    if (coverR > 0.15) {
      warningCount += 1;
    }
    if (longestLoop > pipe.limit + 20) {
      dangerCount += 1;
    } else if (longestLoop > pipe.limit) {
      warningCount += 1;
    }
    if (longestLoop + 1 < averageLoop) {
      dangerCount += 1;
    }
    if (criticalPressure > pumpHead) {
      dangerCount += 1;
    } else if (criticalPressure > 20) {
      warningCount += 1;
    }
    if (mainVelocity > 0.60) {
      warningCount += 1;
    }
    if (sourceReserve < 0) {
      dangerCount += 1;
    }
    if (hydraulicCheck !== "yes") {
      warningCount += 1;
    }
    if (surfaceCheck !== "yes") {
      warningCount += 1;
    }
    if (sourceData !== "yes") {
      warningCount += 1;
    }
    if (drawingScale !== "yes") {
      warningCount += 1;
    }

    var verdict = byId("rk-ai-verdict");
    verdict.classList.remove("is-warning", "is-danger");
    setText("rk-ai-score", format(overall, 0) + "/100");
    byId("rk-ai-score-ring").style.setProperty("--rk-score-angle", format(overall * 3.6, 1).replace(",", ".") + "deg");

    if (dangerCount > 0) {
      verdict.classList.add("is-danger");
      verdict.textContent = "Wykryto poważne ryzyko";
      byId("rk-ai-score-ring").style.setProperty("--rk-score-color", "#ff7669");
    } else if (warningCount > 0) {
      verdict.classList.add("is-warning");
      verdict.textContent = "Projekt wymaga weryfikacji";
      byId("rk-ai-score-ring").style.setProperty("--rk-score-color", "#e7ad2f");
    } else {
      verdict.textContent = "Dane wstępnie spójne";
      byId("rk-ai-score-ring").style.setProperty("--rk-score-color", "#28c9da");
    }

    drawChart([thermalScore, emissionScore, hydraulicScore, sourceScore]);

    var diagnostics = byId("rk-ai-diagnostics");
    diagnostics.innerHTML = "";

    if (roomLoads === "yes") {
      addDiagnostic(diagnostics, "Obciążenia pomieszczeń są zadeklarowane. Sprawdź, czy tabela pokazuje warunki, dane i wynik w W dla każdej strefy.", "is-good");
    } else if (roomLoads === "unknown") {
      addDiagnostic(diagnostics, "Widzisz tylko sumę budynku. Bez strat pomieszczeń nie da się potwierdzić rozstawów i mocy lokalnej podłogi.", "is-warning");
    } else {
      addDiagnostic(diagnostics, "Brak obciążeń cieplnych pomieszczeń jest luką krytyczną. Sam metraż i jedna wartość W/m² nie wystarczą do projektu.", "is-danger");
    }

    if (activeArea > area) {
      addDiagnostic(diagnostics, "Powierzchnia czynna jest większa od ogrzewanej. Sprawdź jednostki i sposób sumowania pól.", "is-danger");
    } else {
      addDiagnostic(diagnostics, "Średnie obciążenie czynnej podłogi wynosi " + format(qRequired, 1) + " W/m². Najtrudniejsze pomieszczenie trzeba policzyć osobno.", qRequired > 80 ? "is-warning" : "is-good");
    }

    if (deltaT <= 1) {
      addDiagnostic(diagnostics, "Temperatura zasilania musi być wyższa od powrotu. Wpisane ΔT = " + format(deltaT, 1) + " K uniemożliwia wiarygodne obliczenie przepływu.", "is-danger");
    } else {
      addDiagnostic(diagnostics, "Dla ΔT = " + format(deltaT, 1) + " K i mocy " + format(load, 1) + " kW orientacyjny przepływ wody wynosi " + format(totalFlow, 2) + " m³/h.", "");
    }

    if (surfaceTemperature > surfaceLimit) {
      addDiagnostic(diagnostics, "Temperatura powierzchni " + format(surfaceTemperature, 1) + "°C przekracza punkt kontrolny " + format(surfaceLimit, 0) + "°C dla " + surfaceLabel + ". Sprawdź klasyfikację strefy i obliczenie emisji.", "is-danger");
    } else {
      addDiagnostic(diagnostics, "Wpisana temperatura powierzchni mieści się poniżej punktu kontrolnego " + format(surfaceLimit, 0) + "°C dla " + surfaceLabel + ". Zweryfikuj ją dla każdego pomieszczenia.", "is-good");
    }

    if (coverR > 0.15) {
      addDiagnostic(diagnostics, "Opór okładziny " + format(coverR, 2) + " m²K/W jest wysoki. Moc i wymagane temperatury trzeba przeliczyć dla konkretnego zestawu warstw.", "is-warning");
    }

    if (longestLoop > pipe.limit + 20) {
      addDiagnostic(diagnostics, "Najdłuższa pętla ma " + format(longestLoop, 0) + " m przy rurze " + pipe.label + ". To wyraźnie przekracza punkt kontrolny " + pipe.limit + " m i wymaga zmiany podziału albo pełnego obliczenia hydraulicznego.", "is-danger");
    } else if (longestLoop > pipe.limit) {
      addDiagnostic(diagnostics, "Pętla " + format(longestLoop, 0) + " m przekracza praktyczny punkt kontrolny " + pipe.limit + " m dla rury " + pipe.label + ". Sprawdź jej rzeczywisty przepływ i opór.", "is-warning");
    } else {
      addDiagnostic(diagnostics, "Najdłuższa pętla pozostaje w praktycznym punkcie kontrolnym dla rury " + pipe.label + ", ale ostatecznie decydują przepływ i strata ciśnienia.", "is-good");
    }

    if (longestLoop + 1 < averageLoop) {
      addDiagnostic(diagnostics, "Szacowana średnia długość " + format(averageLoop, 0) + " m jest większa od wpisanej najdłuższej pętli. Sprawdź powierzchnię czynną, rozstaw, liczbę pętli i dobiegi.", "is-danger");
    }

    if (criticalPressure > pumpHead) {
      addDiagnostic(diagnostics, "Szacowana krytyczna strata " + format(criticalPressure, 1) + " kPa przekracza wpisane dostępne ciśnienie " + format(pumpHead, 1) + " kPa. Układ może nie osiągnąć wymaganego przepływu.", "is-danger");
    } else {
      addDiagnostic(diagnostics, "Szacowana krytyczna strata wynosi " + format(criticalPressure, 1) + " kPa przy dostępnym ciśnieniu " + format(pumpHead, 1) + " kPa. Potwierdź charakterystyki realnych elementów.", criticalPressure > 20 ? "is-warning" : "is-good");
    }

    if (mainVelocity > 0.60) {
      addDiagnostic(diagnostics, "Prędkość w magistrali wynosi około " + format(mainVelocity, 2) + " m/s i przekracza przyjęty punkt kontrolny 0,60 m/s. Sprawdź średnicę, hałas i opory.", "is-warning");
    } else if (mainVelocity < 0.15) {
      addDiagnostic(diagnostics, "Prędkość w magistrali wynosi około " + format(mainVelocity, 2) + " m/s. Niska wartość nie musi być błędem, ale warto sprawdzić ekonomiczność średnicy i regulację.", "is-warning");
    } else {
      addDiagnostic(diagnostics, "Prędkość w magistrali wynosi około " + format(mainVelocity, 2) + " m/s i mieści się w przyjętym zakresie przesiewowym 0,15–0,60 m/s.", "is-good");
    }

    if (sourceReserve < 0) {
      addDiagnostic(diagnostics, "Źródłu brakuje około " + format(Math.abs(sourceReserve), 1) + " kW do pokrycia wpisanego obciążenia ogrzewania. Sprawdź punkt pracy i przyjętą strategię biwalentną.", "is-danger");
    } else {
      addDiagnostic(diagnostics, "Moc źródła ma rezerwę " + format(sourceReserve, 1) + " kW względem ogrzewania pomieszczeń. To nie jest automatyczny dobór CWU ani potwierdzenie modulacji.", sourceData === "yes" ? "is-good" : "is-warning");
    }

    if (drawingScale !== "yes") {
      addDiagnostic(diagnostics, "Brak potwierdzonego rysunku w skali oznacza, że długości, strefy bez rur, dobiegi i kolizje pozostają niezweryfikowane.", drawingScale === "no" ? "is-danger" : "is-warning");
    }
  };

  var fields = root.querySelectorAll("#rk-ai-tool input, #rk-ai-tool select");
  Array.prototype.forEach.call(fields, function (field) {
    field.addEventListener("input", update);
    field.addEventListener("change", update);
  });

  update();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-chatgpt-i-ai-czy-to-dziala/">Projekt ogrzewania podłogowego z ChatGPT i AI – czy to działa?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 09 Mar 2026 11:26:18 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Modernizacja domu]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[ile wat na m2]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator strat ciepła]]></category>
		<category><![CDATA[moc ogrzewania domu]]></category>
		<category><![CDATA[obliczanie strat ciepła]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[straty ciepła domu]]></category>
		<category><![CDATA[zapotrzebowanie na ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3743</guid>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        rkHlClear(grid);

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

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

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

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

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

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

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

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

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

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

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

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

        rkHlClear(diagnostics);

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

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

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

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

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

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

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

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

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

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

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

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

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

      scope.addEventListener("change", rkHlScopeChange);

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

      rkHlScopeChange();
    }

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", rkHlInit);
    } else {
      rkHlInit();
    }
  }());
  </script>
</article>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
