<?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 Modernizacja ogrzewania - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/modernizacja-ogrzewania/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/modernizacja-ogrzewania/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Tue, 09 Jun 2026 21:26:11 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Modernizacja ogrzewania - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/modernizacja-ogrzewania/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Zasada działania wymiennika płytowego w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 23 Apr 2026 07:09:15 +0000</pubDate>
				<category><![CDATA[Błędy wykonawcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Modernizacja instalacji]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Wymiennik płytowy]]></category>
		<category><![CDATA[Zabezpieczenia instalacji]]></category>
		<category><![CDATA[awarie instalacji]]></category>
		<category><![CDATA[jastrych cementowy]]></category>
		<category><![CDATA[kocioł na paliwo stałe]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opory hydrauliczne]]></category>
		<category><![CDATA[pex]]></category>
		<category><![CDATA[podłogówka]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[przepływ przeciwprądowy]]></category>
		<category><![CDATA[rozdzielacz podłogowy]]></category>
		<category><![CDATA[separacja hydrauliczna]]></category>
		<category><![CDATA[sprzęgło hydrauliczne]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[wymiennik płytowy]]></category>
		<category><![CDATA[zawór trójdrogowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4369</guid>

					<description><![CDATA[<p>Zastanawiasz się, jak bezpiecznie połączyć nowoczesny system płaszczyznowy ze starszym kotłem stałopalnym lub gazowym, który generuje bardzo wysokie temperatury? Odpowiedzią na to wyzwanie inżynieryjne jest prawidłowo dobrany wymiennik płytowy w ogrzewaniu podłogowym. To stosunkowo niewielkie, ale absolutnie kluczowe urządzenie pełni funkcję głównego strażnika całej instalacji. Skutecznie obniża temperaturę wody zasilającej, chroniąc rury PEX przed przyspieszonym starzeniem oraz wylewkę przed pękaniem. W naszym najnowszym artykule dokładnie analizujemy, kiedy jego montaż jest konieczny, a w jakich sytuacjach (np. przy nowoczesnych pompach ciepła) można z niego zrezygnować. Poznaj zasady przepływu przeciwprądowego, naucz się samodzielnie obliczać opory hydrauliczne i zobacz na konkretnych przykładach, jak uniknąć krytycznych błędów, które mogą kosztować Cię nawet kilkadziesiąt tysięcy złotych za kucie zniszczonej posadzki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">Zasada działania wymiennika płytowego w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --primary: #0f172a;
    --accent: #0284c7; /* Zmiana na chłodny niebieski/techniczny, pasujący do hydrauliki i wymienników */
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f0f9ff; /* Jasnoniebieskie tło dopasowane do akcentu */
    --border-color: #e2e8f0;
}

.premium-hero-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
    position: relative;
}

/* Subtelne tło dekoracyjne */
.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 300px;
    height: 300px;
    background: radial-gradient(circle, rgba(2, 132, 199, 0.05) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    transform: translate(30%, -30%);
    z-index: 0;
}

.hero-content {
    position: relative;
    z-index: 1;
    padding: 45px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #e0f2fe;
    color: var(--accent);
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid #bae6fd;
}

.hero-text {
    font-size: 17px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 20px;
}

.hero-text strong {
    color: var(--primary);
}

.hero-text a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.2s ease;
}

.hero-text a:hover {
    color: #0369a1;
}

.hero-text:last-of-type {
    margin-bottom: 40px;
}

/* Moduły / Spis treści */
.hero-modules-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.hero-modules-title::after {
    content: "";
    flex-grow: 1;
    height: 1px;
    background: var(--border-color);
}

.hero-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
}

.hero-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    padding: 20px 15px;
    border-radius: 16px;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    position: relative;
    top: 0;
}

.hero-card:hover {
    top: -5px;
    border-color: var(--accent);
    box-shadow: 0 15px 25px -5px rgba(2, 132, 199, 0.1);
}

.hero-card-icon {
    font-size: 28px;
    margin-bottom: 12px;
    display: block;
    transition: transform 0.3s;
}

.hero-card:hover .hero-card-icon {
    transform: scale(1.15);
}

.hero-card-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.4;
}

@media (max-width: 900px) {
    .hero-content { padding: 35px 25px; }
    .hero-grid { grid-template-columns: repeat(2, 1fr); gap: 15px; }
}

@media (max-width: 500px) {
    .hero-grid { grid-template-columns: 1fr; }
    .hero-card { display: flex; align-items: center; text-align: left; gap: 15px; padding: 15px; }
    .hero-card-icon { margin-bottom: 0; font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Zasada działania wymiennika płytowego w ogrzewaniu podłogowym",
    "description": "Kompendium wiedzy na temat zasady działania, parametrów technicznych i doboru wymiennika płytowego do instalacji ogrzewania podłogowego. Separacja hydrauliczna i ochrona termiczna jastrychu.",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl"
    },
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Przegląd techniczny pracy wymiennika płytowego",
    "description": "Zestawienie kluczowych parametrów technicznych oraz procesów fizycznych zachodzących w wymienniku płytowym w układzie ogrzewania płaszczyznowego.",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Fizyka procesu",
        "value": "Przewodzenie przeciwprądowe",
        "description": "Zjawisko przekazywania ciepła przez stalową przegrodę przy wysokiej efektywności"
      },
      {
        "@type": "PropertyValue",
        "name": "Separacja hydrauliczna",
        "value": "Dwa niezależne obiegi",
        "description": "Całkowite oddzielenie medium pierwotnego od wtórnego"
      },
      {
        "@type": "PropertyValue",
        "name": "Ochrona termiczna",
        "value": "Redukcja temperatury",
        "description": "Zabezpieczenie wylewki przed przegrzaniem wg normy PN-EN 1264"
      },
      {
        "@type": "PropertyValue",
        "name": "Zastosowanie",
        "value": "Kotły stałopalne i gazowe",
        "description": "Współpraca wysokotemperaturowych źródeł z systemem niskotemperaturowym"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-hero-box" id="hero-app-container">
    <div class="hero-content">
        
        <div class="hero-badge">
            <span>🛡️</span> Fundament Bezpieczeństwa
        </div>
        
        <p class="hero-text">Zasada działania wymiennika płytowego w ogrzewaniu podłogowym opiera się na zjawisku przewodzenia ciepła przez cienką stalową przegrodę przy zachowaniu <strong>całkowitej separacji hydraulicznej</strong> dwóch niezależnych obiegów. Jest to kluczowy element instalacji niskotemperaturowych, który umożliwia bezpieczną współpracę wysokotemperaturowego źródła ciepła z wrażliwą na przegrzanie wylewką podłogową. W niniejszym artykule przeanalizuję szczegółowo fizykę tego procesu, parametry techniczne oraz kryteria optymalnego doboru urządzenia w kontekście <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normy PN-EN 1264</a> dotyczącej ogrzewania płaszczyznowego.</p>
        
        <p class="hero-text">Współczesne systemy grzewcze coraz częściej wymagają oddzielenia obiegu źródła ciepła od obiegu odbiorczego. W przypadku podłogówki, gdzie <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">temperatura zasilania nie powinna przekraczać 55°C</a> (a optymalnie wynosi 35-40°C), wymiennik płytowy staje się nie tyle dodatkiem, co koniecznością techniczną przy współpracy z <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">kotłami stałopalnymi</a>, gazowymi niekondensacyjnymi czy nawet niektórymi pompami ciepła pracującymi w trybie wysokotemperaturowym.</p>

        <div class="hero-modules-title">W tym kompendium przeanalizujemy:</div>
        
        <div class="hero-grid">
            <div class="hero-card">
                <span class="hero-card-icon">🌡️</span>
                <span class="hero-card-title">Fizyka wymiany ciepła</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">🔀</span>
                <span class="hero-card-title">Separacja hydrauliczna</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">📉</span>
                <span class="hero-card-title">Parametry doboru wg EN 1264</span>
            </div>
            <div class="hero-card">
                <span class="hero-card-icon">🛡️</span>
                <span class="hero-card-title">Ochrona rur i wylewki</span>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 20px 50px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h2 style="font-size: 18px; color: #0f172a; margin-bottom: 15px;">Kluczowe parametry i funkcje wymiennika płytowego</h2>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left;">
                <thead>
                    <tr style="border-bottom: 2px solid #cbd5e1;">
                        <th style="padding: 10px 0; color: #475569;">Aspekt techniczny</th>
                        <th style="padding: 10px 0; color: #475569;">Charakterystyka</th>
                        <th style="padding: 10px 0; color: #475569;">Główne zadanie</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;">Fizyka procesu</td>
                        <td style="padding: 10px 0; font-weight: bold;">Przewodzenie przez przegrodę</td>
                        <td style="padding: 10px 0; color: #0284c7;">Wysoka efektywność wymiany bez mieszania</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;">Separacja hydrauliczna</td>
                        <td style="padding: 10px 0; font-weight: bold;">Dwa niezależne obiegi</td>
                        <td style="padding: 10px 0; color: #0284c7;">Ochrona instalacji przed zanieczyszczeniami z kotła</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;">Redukcja temperatury</td>
                        <td style="padding: 10px 0; font-weight: bold;">T_max zasilania = 55°C</td>
                        <td style="padding: 10px 0; color: #0284c7;">Zabezpieczenie rur PEX/PERT oraz jastrychu</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0;">Zastosowanie (Źródło)</td>
                        <td style="padding: 10px 0; font-weight: bold;">Wysokotemperaturowe</td>
                        <td style="padding: 10px 0; color: #0284c7;">Współpraca ze stałopałami i kotłami starszego typu</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE (Domain Lock)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('hero-app-container');
        if (container) {
            container.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #e0f2fe; color: #0284c7; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 300px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona prawem autorskim</div>
                    <p style="font-size: 16px; max-width: 500px; color: #0369a1; line-height: 1.5;">Ten moduł wprowadzający jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #0284c7; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
/* STYLE DLA TABELI TECHNICZNEJ I CECH KONSTRUKCYJNYCH */
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-compare-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    color: var(--primary);
}

.compare-header {
    padding: 40px 40px 20px 40px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
    text-align: left;
}

.compare-header h3 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.compare-header p {
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
    margin: 0 0 15px 0;
}

/* TABELA */
.table-container {
    padding: 10px 40px 20px 40px;
}

.table-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1px;
    margin-bottom: 20px;
    display: block;
}

.styled-table {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 20px;
}

.styled-table th,
.styled-table td {
    padding: 16px 15px;
    text-align: left;
    border-bottom: 1px solid #f1f5f9;
}

.styled-table th {
    background-color: var(--bg-light);
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #64748b;
    border-bottom: 3px solid var(--border-color);
}

.styled-table th:nth-child(1) { width: 25%; }
.styled-table th:nth-child(2) { width: 15%; color: var(--accent); border-bottom-color: var(--accent); }
.styled-table th:nth-child(3) { width: 25%; }
.styled-table th:nth-child(4) { width: 35%; }

.styled-table td {
    font-size: 14px;
    color: #334155;
    line-height: 1.6;
}

.styled-table td a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--accent);
    transition: 0.2s;
}

.styled-table td a:hover {
    color: #1e3a8a;
    border-bottom-style: solid;
}

.styled-table td:first-child {
    font-weight: 700;
    color: var(--primary);
}

.styled-table td:nth-child(2) {
    font-family: 'Georgia', serif;
    font-style: italic;
    font-weight: 700;
    font-size: 16px;
    color: var(--accent);
}

.styled-table tr:hover td {
    background-color: #f8fafc;
}

.styled-table td strong {
    color: var(--primary);
}

/* CECHY KONSTRUKCYJNE (Zamiast Case Study) */
.case-study-container {
    padding: 20px 40px 40px 40px;
    background: #ffffff;
}

.case-study-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--primary);
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.case-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.case-card {
    background: var(--bg-light);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid #e2e8f0;
    position: relative;
    overflow: hidden;
}

.case-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 5px;
    height: 100%;
}

.case-card.feat-1::before { background: var(--accent); }
.case-card.feat-2::before { background: var(--success); }

.case-card h5 {
    margin: 0 0 15px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--primary);
}

.case-card p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.power-result {
    background: #ffffff;
    padding: 15px;
    border-radius: 10px;
    margin-top: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.power-result span {
    display: block;
    font-size: 13px;
    color: #64748b;
    margin-bottom: 5px;
    text-transform: uppercase;
    font-weight: 700;
    letter-spacing: 0.5px;
}

.power-result strong {
    font-size: 20px;
    font-weight: 900;
    color: var(--primary);
}

/* RESPONSYWNOŚĆ TABELI (KARTY NA MOBILE) */
@media (max-width: 768px) {
    .compare-header { padding: 30px 20px; }
    .table-container { padding: 10px 20px; }
    .case-study-container { padding: 20px; }
    .case-grid { grid-template-columns: 1fr; }
    
    /* Transformacja tabeli w bloki na małych ekranach */
    .styled-table thead { display: none; }
    .styled-table, .styled-table tbody, .styled-table tr, .styled-table td {
        display: block;
        width: 100%;
    }
    
    .styled-table tr {
        margin-bottom: 20px;
        background: #ffffff;
        border: 1px solid #e2e8f0;
        border-radius: 12px;
        overflow: hidden;
        box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    }
    
    .styled-table td {
        padding: 12px 15px;
        text-align: right;
        border-bottom: 1px solid #f1f5f9;
        position: relative;
    }
    
    .styled-table td:last-child {
        border-bottom: 0;
    }

    /* Etykiety dla bloków (zastępują nagłówki kolumn) */
    .styled-table td::before {
        content: attr(data-label);
        position: absolute;
        left: 15px;
        width: 45%;
        padding-right: 10px;
        white-space: nowrap;
        text-align: left;
        font-weight: 800;
        font-size: 12px;
        color: #64748b;
        text-transform: uppercase;
    }

    .styled-table td:nth-child(2) {
        text-align: right;
    }
    
    /* Upewnienie się, że tekst się mieści */
    .styled-table td {
        padding-left: 50%; /* Zostawia miejsce na etykietę */
    }
    
    /* Na pierwszym wierszu wyłączamy etykietę żeby służył jako tytuł karty */
    .styled-table td:first-child {
        padding-left: 15px;
        text-align: left;
        background: var(--bg-light);
        font-size: 15px;
        border-bottom: 2px solid var(--accent);
    }
    
    .styled-table td:first-child::before {
        content: none;
    }
}
</style>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Dataset",
  "name": "Podstawowe parametry techniczne wymiennika płytowego",
  "description": "Zestawienie kluczowych wielkości fizycznych i technicznych definiujących pracę wymiennika płytowego w instalacji ogrzewania podłogowego o mocy 10-30 kW.",
  "license": "https://projekt-ogrzewania.pl/",
  "variableMeasured": [
    {
      "@type": "PropertyValue",
      "name": "Moc nominalna",
      "propertyID": "Q",
      "value": "15–40 kW",
      "description": "Musi odpowiadać zapotrzebowaniu cieplnemu budynku powiększonemu o 15–20% zapasu"
    },
    {
      "@type": "PropertyValue",
      "name": "Współczynnik przenikania ciepła",
      "propertyID": "k",
      "value": "3000–6000 W/(m²·K)",
      "description": "Im wyższy, tym mniejszy wymiennik potrzebny do tej samej mocy"
    },
    {
      "@type": "PropertyValue",
      "name": "Spadek ciśnienia po stronie wtórnej",
      "propertyID": "Δp",
      "value": "5–20 kPa",
      "description": "Krytyczny dla doboru pompy obiegowej podłogówki"
    },
    {
      "@type": "PropertyValue",
      "name": "Maksymalne ciśnienie pracy",
      "propertyID": "Pmax",
      "value": "10–16 bar",
      "description": "Standard dla instalacji zamkniętych z naczyniem przeponowym"
    },
    {
      "@type": "PropertyValue",
      "name": "Maksymalna temperatura pracy",
      "propertyID": "Tmax",
      "value": "110–180°C",
      "description": "Zabezpieczenie przed przegrzaniem z kotła stałopalnego"
    },
    {
      "@type": "PropertyValue",
      "name": "Liczba płyt",
      "propertyID": "n",
      "value": "20–60",
      "description": "Decyduje o mocy i oporach hydraulicznych"
    },
    {
      "@type": "PropertyValue",
      "name": "Pojemność wodna",
      "propertyID": "V",
      "value": "0,5–2,5 dm³",
      "description": "Mała bezwładność cieplna = szybka reakcja na zmiany zapotrzebowania"
    }
  ],
  "creator": {
    "@type": "Person",
    "name": "Robert Kucharski",
    "url": "https://projekt-ogrzewania.pl",
    "sameAs": [
      "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
      "https://www.linkedin.com/in/robert-kucharski-38069b48/"
    ]
  }
}
</script>

<div class="premium-compare-module premium-protected" id="exchanger-params-app">
    
    <div class="compare-header">
        <h3>Czym dokładnie jest wymiennik płytowy w instalacji podłogowej?</h3>
        <p>Wymiennik płytowy to urządzenie składające się z pakietu cienkich, profilowanych płyt ze stali nierdzewnej (najczęściej <strong>AISI 316L</strong> lub <strong>AISI 304</strong>), które są ze sobą szczelnie zlutowane lub skręcone.</p>
        
        <p>Pomiędzy płytami powstają naprzemienne kanały przepływowe – jedne dla <strong>medium pierwotnego</strong> (gorąca woda z kotła), drugie dla <strong>medium wtórnego</strong> (woda krążąca w pętlach podłogowych). <strong>Fizyczny kontakt obu cieczy jest niemożliwy</strong>, co stanowi fundament bezpieczeństwa całej instalacji.</p>
    </div>

    <div class="table-container">
        <span class="table-title">Podstawowe parametry techniczne definiujące pracę wymiennika</span>
        <p style="font-size: 14px; color: #475569; margin-top: 0; margin-bottom: 20px;">Każdy wymiennik charakteryzuje się zestawem parametrów, które bezpośrednio determinują jego przydatność. Poniższa tabela przedstawia kluczowe wielkości dla typowych aplikacji mieszkaniowych (10–30 kW).</p>
        
        <table class="styled-table">
            <thead>
                <tr>
                    <th>Parametr techniczny</th>
                    <th>Oznaczenie</th>
                    <th>Typowa wartość</th>
                    <th>Znaczenie praktyczne</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td data-label="Parametr">Moc nominalna</td>
                    <td data-label="Oznaczenie">Q</td>
                    <td data-label="Wartość"><strong>15–40 kW</strong></td>
                    <td data-label="Znaczenie">Musi odpowiadać <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">zapotrzebowaniu cieplnemu budynku</a> powiększonemu o 15–20% zapasu.</td>
                </tr>
                <tr>
                    <td data-label="Parametr">Współczynnik przenikania</td>
                    <td data-label="Oznaczenie">k</td>
                    <td data-label="Wartość"><strong>3000–6000 W/(m²·K)</strong></td>
                    <td data-label="Znaczenie">Im wyższy, tym mniejszy wymiennik potrzebny do przeniesienia tej samej mocy.</td>
                </tr>
                <tr>
                    <td data-label="Parametr">Spadek ciśnienia wtórny</td>
                    <td data-label="Oznaczenie">Δp</td>
                    <td data-label="Wartość"><strong>5–20 kPa</strong></td>
                    <td data-label="Znaczenie">Krytyczny parametr dla prawidłowego doboru <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy obiegowej podłogówki</a>.</td>
                </tr>
                <tr>
                    <td data-label="Parametr">Maksymalne ciśnienie</td>
                    <td data-label="Oznaczenie">Pmax</td>
                    <td data-label="Wartość"><strong>10–16 bar</strong></td>
                    <td data-label="Znaczenie">Standard wytrzymałościowy dla instalacji zamkniętych z <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczyniem wzbiorczym przeponowym</a>.</td>
                </tr>
                <tr>
                    <td data-label="Parametr">Maksymalna temp.</td>
                    <td data-label="Oznaczenie">Tmax</td>
                    <td data-label="Wartość"><strong>110–180°C</strong></td>
                    <td data-label="Znaczenie">Zabezpieczenie strukturalne przed skrajnym przegrzaniem z kotła stałopalnego.</td>
                </tr>
                <tr>
                    <td data-label="Parametr">Liczba płyt</td>
                    <td data-label="Oznaczenie">n</td>
                    <td data-label="Wartość"><strong>20–60</strong></td>
                    <td data-label="Znaczenie">Decyduje o fizycznej powierzchni wymiany ciepła i oporach hydraulicznych.</td>
                </tr>
                <tr>
                    <td data-label="Parametr">Pojemność wodna</td>
                    <td data-label="Oznaczenie">V</td>
                    <td data-label="Wartość"><strong>0,5–2,5 dm³</strong></td>
                    <td data-label="Znaczenie">Mała bezwładność cieplna = błyskawiczna reakcja układu na zmiany zapotrzebowania.</td>
                </tr>
            </tbody>
        </table>
    </div>

    <div class="case-study-container">
        <div class="case-study-title">
            <span>🔍</span> Kluczowe Cechy Konstrukcyjne
        </div>
        
        <div class="case-grid">
            
            <div class="case-card feat-1">
                <h5>Rozwinięta powierzchnia wymiany</h5>
                <p>Mimo małych gabarytów, wymiennik oferuje gigantyczną powierzchnię kontaktu między mediami dzięki specjalnemu tłoczeniu w jodełkę (herringbone pattern).</p>
                
                <div class="power-result">
                    <span>Pojedyncza płyta (100 × 300 mm)</span>
                    Rzeczywisty kontakt: <strong>> 0,05 m²</strong>
                </div>
            </div>

            <div class="case-card feat-2">
                <h5>Kompaktowa potęga (Model 30-płytowy)</h5>
                <p>Złożenie kilkudziesięciu takich płyt w jeden zlutowany blok tworzy urządzenie, które bez problemu zasili ogrzewanie w dużym domu jednorodzinnym.</p>
                
                <div class="power-result" style="border-top: 3px solid var(--success);">
                    <span>Wymiennik 30-płytowy</span>
                    Łączna powierzchnia: <strong>1,5 – 2,0 m²</strong>
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE (Domain Lock - Jawny skrypt)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('exchanger-params-app');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; border-radius: 24px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <h3 style="margin-top:0; font-size: 24px; font-weight: 900;">Treść chroniona prawem autorskim</h3>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5; margin-bottom: 25px;">To zestawienie edukacyjne jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i zostało skopiowane nielegalnie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #ef4444; /* Czerwony - ostrzegawczy */
    --accent-hover: #dc2626;
    --danger: #dc2626;
    --warning: #f59e0b;
    --success: #16a34a;
    --bg-light: #fef2f2; /* Delikatny czerwony podkład */
    --border-color: #fecaca;
}

.premium-impact-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(220, 38, 38, 0.15);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
}

.impact-header {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(135deg, #ffffff 0%, var(--bg-light) 100%);
    border-bottom: 1px solid var(--border-color);
}

.impact-header h3 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 12px;
}

.impact-header p {
    margin: 0;
    font-size: 16px;
    line-height: 1.8;
    color: #475569;
}

.impact-header a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dashed var(--accent);
    transition: 0.2s;
}

.impact-header a:hover {
    color: var(--accent-hover);
    border-bottom-style: solid;
}

.impact-content {
    padding: 45px;
}

.consequences-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 40px;
}

.consequence-card {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 16px;
    padding: 25px;
    position: relative;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.consequence-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(0,0,0,0.1);
    border-color: var(--border-color);
}

.card-icon {
    font-size: 32px;
    margin-bottom: 15px;
    display: block;
}

.consequence-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--primary);
}

.consequence-card p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.consequence-card a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
}

.consequence-card a:hover {
    text-decoration: underline;
}

.card-metric {
    background: #f8fafc;
    padding: 10px 15px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    color: var(--danger);
    display: flex;
    justify-content: space-between;
    align-items: center;
    border: 1px solid #f1f5f9;
}

.interactive-widget-container {
    width: 100%;
    margin-top: 30px;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    border: 1px solid #e2e8f0;
    background: #ffffff;
}

.sim-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.sim-card {
    background: #f8fafc;
    padding: 15px;
    border-radius: 12px;
    border: 1px solid #e2e8f0;
    text-align: center;
    transition: 0.3s;
}

input[type=range] {
    width: 100%; height: 8px; background: #e2e8f0; border-radius: 10px; appearance: none; outline: none; margin-top: 15px;
}
input[type=range]::-webkit-slider-thumb {
    appearance: none; width: 24px; height: 24px; background: var(--primary); border-radius: 50%; border: 3px solid white; box-shadow: 0 2px 5px rgba(0,0,0,0.2); cursor: pointer; transition: 0.2s;
}

@media (max-width: 900px) {
    .consequences-grid { grid-template-columns: 1fr; }
    .impact-header { padding: 30px 25px; }
    .impact-content { padding: 30px 25px; }
    .sim-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Limity termiczne i konsekwencje przegrzania ogrzewania podłogowego",
    "description": "Zestawienie krytycznych temperatur oraz fizycznych i materiałowych konsekwencji braku podmieszania wody w instalacjach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Maksymalna temperatura pracy ciągłej rur PEX",
        "value": "55–60°C",
        "description": "Przekroczenie powoduje starzenie termiczne. Przy 80°C żywotność spada z 50 do 10-15 lat (PN-EN ISO 15875)."
      },
      {
        "@type": "PropertyValue",
        "name": "Współczynnik rozszerzalności termicznej wylewki",
        "value": "0,012 mm/(m·K)",
        "description": "Ryzyko pęknięć jastrychu przy nagłych skokach temperatury o 40°C."
      },
      {
        "@type": "PropertyValue",
        "name": "Maksymalna temperatura posadzki (Strefa mieszkalna)",
        "value": "29°C",
        "description": "Zgodnie z normą PN-EN 1264-2. Wyższe wartości powodują dyskomfort i problemy zdrowotne."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator degradacji termicznej podłogówki",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Interaktywne narzędzie pozwalające symulować wpływ temperatury zasilania z kotła (35°C - 90°C) na żywotność rur, naprężenia w jastrychu oraz odczuwalną temperaturę posadzki.",
    "featureList": [
      "Symulacja skracania żywotności rur PEX w czasie rzeczywistym",
      "Wizualizacja pęknięć jastrychu cementowego w funkcji ΔT",
      "Wskaźnik dyskomfortu termicznego stóp"
    ],
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-impact-box" id="impact-app-lock">
    <div class="impact-header">
        <h2><span>🔥</span> Dlaczego nie można pompować wrzątku w podłogę?</h2>
        <p>Odpowiedź jest dwutorowa: <strong>bezpieczeństwo materiałowe</strong> oraz <strong>komfort użytkowania</strong>. Woda z typowego kotła gazowego lub na paliwo stałe osiąga temperaturę 70–80°C, a w przypadku kotłów zgazowujących drewno może to być nawet 85–90°C w szczycie pracy. Wprowadzenie tak gorącego medium bezpośrednio do <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rur PEX lub PERT</a> zatopionych w posadzce prowadzi do natychmiastowych, destrukcyjnych konsekwencji.</p>
    </div>

    <div class="impact-content">
        <div class="consequences-grid">
            
            <div class="consequence-card">
                <span class="card-icon">☠️</span>
                <h4>Degradacja Rur (PN-EN ISO 15875)</h4>
                <p>Maksymalna temperatura ciągłej pracy rur PEX wynosi 55–60°C. Długotrwałe narażenie na 80°C powoduje przyspieszone starzenie termiczne polietylenu, kruchość i utratę elastyczności.</p>
                <div class="card-metric">
                    <span>Żywotność układu:</span>
                    <span>Spadek z 50 do 10 lat</span>
                </div>
            </div>

            <div class="consequence-card">
                <span class="card-icon">⚡</span>
                <h4>Rozrywanie Wylewki</h4>
                <p>Naprężenia termiczne w <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">jastrychu cementowym</a> (współczynnik 0,012 mm/(m·K)) przy różnicy temperatur rzędu 40°C przekraczają jego wytrzymałość na rozciąganie.</p>
                <div class="card-metric">
                    <span>Skutek wizualny:</span>
                    <span>Pękanie płytek</span>
                </div>
            </div>

            <div class="consequence-card">
                <span class="card-icon">👣</span>
                <h4>Dyskomfort i Oparzenia</h4>
                <p>Norma PN-EN 1264-2 określa maksymalną temperaturę podłogi na 29°C. Przy zasilaniu rzędu 80°C, miejscowa temperatura posadzki osiąga wartości nieakceptowalne dla człowieka.</p>
                <div class="card-metric">
                    <span>Temp. podeszwy:</span>
                    <span>Nawet > 40°C</span>
                </div>
            </div>

        </div>

        <h4 style="margin: 0 0 15px 0; font-size: 16px; color: var(--primary);">Symulator Degradacji Termicznej</h4>
        <p style="font-size: 14px; color: #475569; margin-bottom: 20px;">Sprawdź na własne oczy, co dzieje się z instalacją, gdy temperatura zasilania przekracza bezpieczne normy. Przesuń suwak na temperaturę generowaną np. przez stary kocioł węglowy.</p>

        <div class="interactive-widget-container">
            <div style="padding: 25px;">
                <div style="margin-bottom: 20px;">
                    <label style="font-weight: 800; font-size: 15px; color: var(--primary); display: flex; justify-content: space-between; align-items: center;">
                        Temperatura Zasilania z Kotła
                        <span id="sim-temp-val" style="color: var(--success); font-size: 22px; font-weight: 900;">35°C</span>
                    </label>
                    <input type="range" id="sim-temp-slider" min="35" max="90" step="1" value="35">
                </div>
                
                <div id="sim-alert" style="padding: 12px 15px; border-radius: 8px; background: #f0fdf4; color: #166534; font-weight: 700; font-size: 14px; margin-bottom: 20px; border: 1px solid #bbf7d0; transition: 0.3s;">
                    Optymalne warunki pracy instalacji.
                </div>
                
                <div class="sim-grid">
                    <div class="sim-card" id="card-pex">
                        <span style="display: block; font-size: 11px; color: #64748b; font-weight: 800; text-transform: uppercase; margin-bottom: 5px;">Żywotność Rury PEX</span>
                        <strong id="sim-pex" style="font-size: 18px; color: var(--success);">50 lat</strong>
                    </div>
                    <div class="sim-card" id="card-screed">
                        <span style="display: block; font-size: 11px; color: #64748b; font-weight: 800; text-transform: uppercase; margin-bottom: 5px;">Stan Jastrychu</span>
                        <strong id="sim-screed" style="font-size: 18px; color: var(--success);">Stabilny</strong>
                    </div>
                    <div class="sim-card" id="card-floor">
                        <span style="display: block; font-size: 11px; color: #64748b; font-weight: 800; text-transform: uppercase; margin-bottom: 5px;">Temp. Posadzki</span>
                        <strong id="sim-floor" style="font-size: 18px; color: var(--success);">~24°C</strong>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; border-top: 1px solid #334155; font-family: sans-serif; color: #cbd5e1;">
            <h2 style="color: #ffffff; margin-top: 0;">Tabela krytycznych parametrów termicznych</h2>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left; margin-bottom: 20px;">
                <thead>
                    <tr style="border-bottom: 2px solid #334155;">
                        <th style="padding: 10px 0; color: #94a3b8;">Temperatura Zasilania</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Żywotność Rury PEX</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Stan Jastrychu</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Komfort</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold; color: #10b981;">35°C &#8211; 45°C</td>
                        <td style="padding: 10px 0;">Projektowe 50 lat</td>
                        <td style="padding: 10px 0;">Stabilny, bezpieczny</td>
                        <td style="padding: 10px 0;">Optymalny (ok. 24°C)</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold; color: #f59e0b;">55°C &#8211; 60°C</td>
                        <td style="padding: 10px 0;">Przyspieszone starzenie</td>
                        <td style="padding: 10px 0;">Mikropęknięcia</td>
                        <td style="padding: 10px 0;">Dyskomfort (przekroczone 29°C)</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0; font-weight: bold; color: #ef4444;">70°C &#8211; 90°C</td>
                        <td style="padding: 10px 0; color: #ef4444;">Zaledwie 10-15 lat!</td>
                        <td style="padding: 10px 0; color: #ef4444;">Destrukcja / pękanie płytek</td>
                        <td style="padding: 10px 0; color: #ef4444;">Oparzenia, brak możliwości chodzenia</td>
                    </tr>
                </tbody>
            </table>
            <p style="font-size: 13px; line-height: 1.6;">
                Aby przetestować interaktywny symulator wpływu temperatury, włącz obsługę skryptów JavaScript.
            </p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('impact-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten interaktywny moduł jest własnością Projekt-Ogrzewania.pl</p><a href="https://projekt-ogrzewania.pl/" style="margin-top: 20px; display: inline-block; padding: 12px 24px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold;">ZOBACZ ORYGINAŁ</a></div>';
        }
        return;
    }

    // LOGIKA SYMULATORA
    const slider = document.getElementById('sim-temp-slider');
    const valDisp = document.getElementById('sim-temp-val');
    const alertBox = document.getElementById('sim-alert');
    const outPex = document.getElementById('sim-pex');
    const outScreed = document.getElementById('sim-screed');
    const outFloor = document.getElementById('sim-floor');
    
    const cardPex = document.getElementById('card-pex');
    const cardScreed = document.getElementById('card-screed');
    const cardFloor = document.getElementById('card-floor');

    if(slider) {
        slider.addEventListener('input', function() {
            let temp = parseInt(this.value);
            valDisp.innerText = temp + '°C';

            // Uproszczona kalkulacja temperatury posadzki dla celów demonstracyjnych
            let floorTemp = 24 + ((temp - 35) * 0.4);

            if (temp <= 45) {
                valDisp.style.color = 'var(--success)';
                alertBox.style.background = '#f0fdf4';
                alertBox.style.color = '#166534';
                alertBox.style.borderColor = '#bbf7d0';
                alertBox.innerHTML = '✅ Optymalne warunki pracy instalacji.';

                outPex.innerText = '50 lat (Zgodnie z normą)';
                outPex.style.color = 'var(--success)';
                cardPex.style.borderColor = '#bbf7d0';

                outScreed.innerText = 'Stabilny, bezpieczny';
                outScreed.style.color = 'var(--success)';
                cardScreed.style.borderColor = '#bbf7d0';

                outFloor.innerText = '~' + Math.round(floorTemp) + '°C (Komfort)';
                outFloor.style.color = 'var(--success)';
                cardFloor.style.borderColor = '#bbf7d0';

            } else if (temp <= 60) {
                valDisp.style.color = 'var(--warning)';
                alertBox.style.background = '#fffbeb';
                alertBox.style.color = '#b45309';
                alertBox.style.borderColor = '#fde68a';
                alertBox.innerHTML = '⚠️ Ostrzeżenie: Rozpoczyna się przyspieszone starzenie materiałów.';

                outPex.innerText = '~30 lat (Skrócona)';
                outPex.style.color = 'var(--warning)';
                cardPex.style.borderColor = '#fde68a';

                outScreed.innerText = 'Ryzyko mikropęknięć';
                outScreed.style.color = 'var(--warning)';
                cardScreed.style.borderColor = '#fde68a';

                outFloor.innerText = '~' + Math.round(floorTemp) + '°C (Zbyt ciepło)';
                outFloor.style.color = 'var(--warning)';
                cardFloor.style.borderColor = '#fde68a';

            } else if (temp <= 75) {
                valDisp.style.color = 'var(--danger)';
                alertBox.style.background = '#fef2f2';
                alertBox.style.color = '#b91c1c';
                alertBox.style.borderColor = '#fecaca';
                alertBox.innerHTML = '🚨 Krytycznie: Znaczne przekroczenie norm! Parametry destrukcyjne.';

                outPex.innerText = '~15-20 lat';
                outPex.style.color = 'var(--danger)';
                cardPex.style.borderColor = '#fecaca';

                outScreed.innerText = 'Naprężenia, pękanie';
                outScreed.style.color = 'var(--danger)';
                cardScreed.style.borderColor = '#fecaca';

                outFloor.innerText = '~' + Math.round(floorTemp) + '°C (Ryzyko oparzeń)';
                outFloor.style.color = 'var(--danger)';
                cardFloor.style.borderColor = '#fecaca';

            } else {
                valDisp.style.color = '#7f1d1d';
                slider.style.background = '#fecaca';
                alertBox.style.background = '#7f1d1d';
                alertBox.style.color = '#ffffff';
                alertBox.style.borderColor = '#450a0a';
                alertBox.innerHTML = '☠️ AWARIA: Wrzątek w instalacji! Natychmiastowe zniszczenia.';

                outPex.innerText = '< 10 lat!';
                outPex.style.color = '#7f1d1d';
                cardPex.style.borderColor = '#7f1d1d';

                outScreed.innerText = 'Destrukcja / odspojenia';
                outScreed.style.color = '#7f1d1d';
                cardScreed.style.borderColor = '#7f1d1d';

                outFloor.innerText = '> 40°C!';
                outFloor.style.color = '#7f1d1d';
                cardFloor.style.borderColor = '#7f1d1d';
            }
        });
        
        // Trigger initial state
        slider.dispatchEvent(new Event('input'));
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-formula-box {
    max-width: 850px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
}

.formula-header {
    padding: 35px 45px;
    text-align: left;
    background: linear-gradient(135deg, #f8fafc 0%, #eff6ff 100%);
    border-bottom: 1px solid var(--border-color);
}

.formula-header h3 {
    margin: 0 0 12px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 12px;
}

.formula-header p {
    margin: 0;
    font-size: 16px;
    line-height: 1.6;
    color: #475569;
}

.formula-content {
    padding: 45px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 40px;
}

.math-display {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    font-size: 42px;
    font-weight: 700;
    font-family: 'Georgia', 'Times New Roman', serif;
    font-style: italic;
    color: var(--accent);
    background: #f0f7ff;
    padding: 30px 60px;
    border-radius: 20px;
    border: 2px solid #dbeafe;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.02);
}

.math-sub {
    font-size: 20px;
    vertical-align: baseline;
    position: relative;
    top: 6px;
}

.legend-box {
    width: 100%;
    max-width: 650px;
}

.legend-title {
    font-weight: 800;
    margin-bottom: 20px;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    color: #94a3b8;
    display: flex;
    align-items: center;
    gap: 10px;
}

.legend-title::after {
    content: "";
    flex-grow: 1;
    height: 1px;
    background: var(--border-color);
}

.legend-item {
    display: flex;
    align-items: flex-start;
    padding: 16px 20px;
    margin-bottom: 10px;
    background: #ffffff;
    border-radius: 14px;
    border: 1px solid #f1f5f9;
    font-size: 15px;
    color: #334155;
    transition: all 0.2s ease;
}

.legend-item:hover {
    background: var(--bg-light);
    border-color: var(--accent);
    transform: translateX(5px);
}

.legend-symbol {
    font-family: 'Georgia', 'Times New Roman', serif;
    font-style: italic;
    font-weight: 700;
    font-size: 22px;
    color: var(--accent);
    width: 60px;
    flex-shrink: 0;
}

.legend-desc strong {
    color: var(--primary);
}

.calculation-example {
    width: 100%;
    background: #f8fafc;
    border-radius: 16px;
    padding: 25px;
    border-left: 4px solid var(--accent);
}

.example-title {
    font-weight: 800;
    font-size: 14px;
    color: var(--primary);
    margin-bottom: 15px;
    text-transform: uppercase;
}

.formula-footer {
    padding: 25px 45px;
    background: #ffffff;
    border-top: 1px solid #f1f5f9;
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 13px;
    color: #64748b;
}

.formula-footer a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 700;
}

@media (max-width: 600px) {
    .formula-header { padding: 30px 25px; }
    .formula-content { padding: 30px 20px; }
    .math-display { font-size: 28px; padding: 20px; flex-wrap: wrap; }
    .legend-item { padding: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wzór inżynierski na moc cieplną wymiennika płytowego (Równanie Fouriera)",
    "description": "Zestawienie parametrów termodynamicznych wymiennika ciepła, w tym strumień cieplny (Q), współczynnik przenikania (k), powierzchnia wymiany (A) oraz średnia logarytmiczna różnica temperatur (ΔTlm).",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Q (Strumień cieplny)",
        "description": "Całkowita moc [W/kW], jaką musi dostarczyć wymiennik, by pokryć straty ciepła budynku."
      },
      {
        "@type": "PropertyValue",
        "name": "k (Współczynnik przenikania)",
        "description": "Zdolność przewodzenia ciepła stali (np. AISI 316L) zależna od profilu płyt [W/(m²·K)]."
      },
      {
        "@type": "PropertyValue",
        "name": "A (Powierzchnia wymiany)",
        "description": "Suma powierzchni kontaktowych płyt [m²]."
      },
      {
        "@type": "PropertyValue",
        "name": "ΔTlm (Średnia logarytmiczna różnica temperatur)",
        "description": "Siła napędowa wymiany ciepła w układzie przeciwprądowym [K]."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Edukacyjny Panel Obliczeniowy: Inżynieria Wymiany Ciepła",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Interaktywny moduł edukacyjny wyjaśniający proces termodynamiczny w wymienniku płytowym. Prezentuje układ równania Fouriera, analizę parametrów wejściowych oraz Case Study dla doboru urządzenia o mocy 20 kW.",
    "featureList": [
      "Dekonstrukcja równania Fouriera dla wymiany ciepła",
      "Analiza parametrów Q, k, A, ΔTlm",
      "Przykład obliczeniowy dla projektowania układu o mocy 20 kW"
    ],
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-formula-box" id="formula-thermal-app">
    <div class="formula-header">
        <h3><span>🔬</span> Inżynieria Wymiany Ciepła</h3>
        <p>Proces termodynamiczny w wymienniku płytowym opisuje równanie Fouriera, które definiuje sprawność przekazu energii między obiegiem kotła a <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/" style="color: var(--accent); font-weight: 600;">pętlami podłogówki</a>.</p>
    </div>

    <div class="formula-content">
        <div class="math-display">
            <span>Q</span>
            <span style="color: var(--primary); font-style: normal; margin: 0 10px;">=</span>
            <span>k · A · ΔT<sub class="math-sub">lm</sub></span>
        </div>

        <div class="legend-box">
            <div class="legend-title">Analiza parametrów wejściowych:</div>
            
            <div class="legend-item">
                <div class="legend-symbol">Q</div>
                <div class="legend-desc"><strong>Strumień cieplny</strong> [W/kW] – całkowita moc, jaką musi dostarczyć wymiennik, by pokryć <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">straty ciepła budynku</a>.</div>
            </div>

            <div class="legend-item">
                <div class="legend-symbol">k</div>
                <div class="legend-desc"><strong>Współczynnik przenikania</strong> [W/(m²·K)] – zdolność stali (AISI 316L) do przewodzenia, zależna od profilu płyt i turbulencji przepływu.</div>
            </div>

            <div class="legend-item">
                <div class="legend-symbol">A</div>
                <div class="legend-desc"><strong>Powierzchnia wymiany</strong> [m²] – suma powierzchni wszystkich płyt kontaktu; klucz do kompaktowości urządzenia.</div>
            </div>

            <div class="legend-item">
                <div class="legend-symbol">ΔT<sub style="font-size: 10px; position: relative; top: 2px;">lm</sub></div>
                <div class="legend-desc"><strong>Średnia logarytmiczna różnica temperatur</strong> – rzeczywista „siła napędowa” wymiany w układzie przeciwprądowym.</div>
            </div>
        </div>

        <div class="calculation-example">
            <div class="example-title">💡 Case Study: Dobór dla 20 kW</div>
            <p style="font-size: 14px; line-height: 1.6; color: #475569; margin: 0;">
                Przy parametrach 75/55°C (kocioł) oraz 40/30°C (podłoga), ΔT<sub>lm</sub> wynosi <strong>29,7 K</strong>. 
                Dla standardowego wymiennika (k=4500), wymagana powierzchnia to zaledwie <strong>0,15 m²</strong>. 
                To pokazuje, dlaczego urządzenia te są tak małe przy tak ogromnych mocach.
            </p>
        </div>
    </div>

    <div class="formula-footer">
        <span>Norma: <strong>PN-EN 1264</strong></span>
        <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const app = document.getElementById('formula-thermal-app');
        if (app) {
            app.innerHTML = '<div style="padding: 50px; text-align: center; color: #dc2626; font-weight: 800;">Zasób chroniony prawem autorskim Projekt-Ogrzewania.pl</div>';
        }
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --accent-hover: #1e40af;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    --text-muted: #475569;
}

.premium-download-banner {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    position: relative;
}

/* LEWA STRONA - OBRAZ Z KLIKIEM */
.banner-image-wrapper {
    background: #f1f5f9;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--border-color);
    cursor: pointer;
    transition: background 0.3s ease;
}

.banner-image-wrapper:hover {
    background: #e2e8f0;
}

.img-click-target {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: top center;
    transition: transform 0.4s ease;
}

.banner-image-wrapper:hover .img-click-target {
    transform: scale(1.03); /* Delikatne powiększenie zachęcające do kliknięcia */
}

.zoom-hint {
    position: absolute;
    bottom: 20px;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(15, 23, 42, 0.85);
    color: white;
    padding: 8px 16px;
    border-radius: 20px;
    font-size: 13px;
    font-weight: 700;
    pointer-events: none;
    display: flex;
    align-items: center;
    gap: 8px;
    backdrop-filter: blur(4px);
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    transition: all 0.3s ease;
}

.banner-image-wrapper:hover .zoom-hint {
    background: var(--accent);
    transform: translateX(-50%) translateY(-3px);
}

/* PRAWA STRONA - TREŚĆ I CTA */
.banner-content {
    padding: 45px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.banner-badge {
    display: inline-block;
    align-self: flex-start;
    padding: 6px 12px;
    background: #eff6ff;
    color: var(--accent);
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    border-radius: 8px;
    margin-bottom: 20px;
    letter-spacing: 0.5px;
}

.banner-title {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.2;
}

.banner-desc {
    margin: 0 0 25px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--text-muted);
}

.banner-features {
    list-style: none;
    padding: 0;
    margin: 0 0 35px 0;
}

.banner-features li {
    font-size: 14px;
    color: var(--primary);
    font-weight: 600;
    margin-bottom: 12px;
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.banner-features li::before {
    content: '✅';
    font-size: 14px;
    line-height: 1.4;
}

.btn-download-pdf {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 18px 30px;
    background: var(--accent);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    border-radius: 12px;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.4);
    transition: all 0.3s ease;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.btn-download-pdf:hover {
    background: var(--accent-hover);
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(37, 99, 235, 0.5);
    color: #ffffff;
}

.btn-subtext {
    display: block;
    margin-top: 12px;
    font-size: 12px;
    color: #94a3b8;
    font-weight: 600;
    text-align: center;
}

/* LIGHTBOX MODAL */
.lightbox-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(15, 23, 42, 0.95);
    z-index: 99999;
    display: none; /* Ukryte domyślnie */
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.3s ease;
    backdrop-filter: blur(5px);
}

.lightbox-overlay.active {
    display: flex;
    opacity: 1;
}

.lightbox-content {
    position: relative;
    max-width: 90vw;
    max-height: 90vh;
}

.lightbox-content img {
    max-width: 100%;
    max-height: 90vh;
    border-radius: 12px;
    box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5);
    object-fit: contain;
}

.lightbox-close {
    position: absolute;
    top: -40px;
    right: 0;
    color: #ffffff;
    font-size: 30px;
    font-weight: bold;
    cursor: pointer;
    transition: color 0.2s ease;
}

.lightbox-close:hover {
    color: var(--danger);
}

@media (max-width: 768px) {
    .premium-download-banner {
        grid-template-columns: 1fr;
    }
    .banner-image-wrapper {
        height: 250px;
        border-right: none;
        border-bottom: 1px solid var(--border-color);
    }
    .banner-content {
        padding: 35px 25px;
    }
    .banner-title {
        font-size: 22px;
    }
    .lightbox-close {
        top: -35px;
        right: 10px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Infografika: Zasada działania wymiennika płytowego w ogrzewaniu podłogowym",
    "description": "Kompleksowa infografika inżynierska prezentująca zasady separacji hydraulicznej, algorytmy doboru wymiennika płytowego (wzór na moc Q) oraz ryzyka związane z przekraczaniem bezpiecznej temperatury zasilania w systemach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "distribution": [
      {
        "@type": "DataDownload",
        "encodingFormat": "application/pdf",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.pdf"
      },
      {
        "@type": "DataDownload",
        "encodingFormat": "image/webp",
        "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.webp"
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Galeria Infografik: Wymiennik Płytowy",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Interaktywny interfejs wizualny (Lightbox) umożliwiający przeglądanie schematów hydraulicznych ogrzewania podłogowego w pełnym oknie przeglądarki. Narzędzie integruje również punkt pobierania zasobów edukacyjnych PDF w wysokiej rozdzielczości.",
    "featureList": [
      "Przeglądarka pełnoekranowa (Lightbox) dla schematów technicznych",
      "Pobieranie plików inżynierskich w formacie PDF",
      "Prezentacja strukturalna danych technicznych (Tabela krytycznych temperatur, Algorytm doboru)"
    ],
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-download-banner" id="banner-app-lock">
    
    <div class="banner-image-wrapper" id="open-lightbox-btn">
        <img decoding="async" 
            src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.webp" 
            alt="Szczegółowy schemat i zasada działania wymiennika płytowego w podłogówce" 
            class="img-click-target"
            loading="lazy"
        >
        <div class="zoom-hint">🔍 Kliknij, aby powiększyć</div>
    </div>

    <div class="banner-content">
        <span class="banner-badge">📚 Darmowe Kompendium Wiedzy</span>
        
        <h3 class="banner-title">Wymiennik płytowy w podłogówce: Separacja, Bezpieczeństwo, Dobór</h3>
        
        <p class="banner-desc">Dlaczego nie można pompować wrzątku w podłogę? Pobierz naszą autorską infografikę w wysokiej rozdzielczości i miej najważniejsze wytyczne projektowe zawsze pod ręką.</p>
        
        <ul class="banner-features">
            <li><strong>Tabela Krytycznych Temperatur:</strong> Skutki wpuszczenia 80°C w wylewkę.</li>
            <li><strong>Algorytm Doboru (Skrót):</strong> Wzór inżynierski i parametry pomp.</li>
            <li><strong>Analiza Układów:</strong> Dlaczego przeciwprąd jest zawsze preferowany.</li>
        </ul>

        <div>
            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.pdf" target="_blank" rel="noopener noreferrer" class="btn-download-pdf">
                <span>📄 Pobierz Infografikę (PDF)</span>
            </a>
            <span class="btn-subtext">Plik bezpieczny, gotowy do druku A4/A3.</span>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #fffbeb; color: #b45309; text-align: center; font-size: 14px;">
            Plik PDF ze schematami możesz pobrać bezpiecznie klikając w przycisk powyżej.
        </div>
    </noscript>
</div>

<div class="lightbox-overlay" id="lightbox-modal">
    <div class="lightbox-content">
        <span class="lightbox-close" id="close-lightbox-btn">&times;</span>
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym.webp" alt="Powiększona Infografika - Zasada Działania Wymiennika">
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('banner-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten interaktywny baner jest własnością Projekt-Ogrzewania.pl</p></div>';
        }
        return;
    }

    // 2. LOGIKA LIGHTBOXA
    const openBtn = document.getElementById('open-lightbox-btn');
    const closeBtn = document.getElementById('close-lightbox-btn');
    const modal = document.getElementById('lightbox-modal');

    if (openBtn && modal && closeBtn) {
        // Otwieranie
        openBtn.addEventListener('click', function() {
            modal.classList.add('active');
            document.body.style.overflow = 'hidden'; // Blokuje przewijanie strony pod spodem
        });

        // Zamykanie X-em
        closeBtn.addEventListener('click', function() {
            modal.classList.remove('active');
            document.body.style.overflow = '';
        });

        // Zamykanie kliknięciem w tło (poza obrazkiem)
        modal.addEventListener('click', function(e) {
            if (e.target === modal) {
                modal.classList.remove('active');
                document.body.style.overflow = '';
            }
        });

        // Zamykanie klawiszem ESC
        document.addEventListener('keydown', function(e) {
            if (e.key === 'Escape' && modal.classList.contains('active')) {
                modal.classList.remove('active');
                document.body.style.overflow = '';
            }
        });
    }
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #ef4444;
    --warning: #f59e0b;
    --success: #10b981;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    
    /* Kolory termiczne */
    --temp-75: #ef4444; /* Gorąca */
    --temp-72: #f97316; /* Bardzo ciepła */
    --temp-52: #fcd34d; /* Letnia / Pośrednia */
    --temp-33: #7dd3fc; /* Wychłodzona */
    --temp-30: #3b82f6; /* Zimna */
}

.premium-flow-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
}

.flow-header {
    padding: 40px 45px 25px 45px;
    background: linear-gradient(135deg, #ffffff 0%, var(--bg-light) 100%);
    border-bottom: 1px solid var(--border-color);
}

.flow-header h3 {
    margin: 0 0 15px 0;
    font-size: 26px;
    font-weight: 900;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 12px;
}

.flow-header p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

.flow-content {
    padding: 40px 45px;
}

/* SYMULATOR PRZEPŁYWU */
.sim-container {
    background: #f8fafc;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 40px;
}

.sim-controls {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 35px;
}

.sim-btn {
    padding: 12px 25px;
    border: 2px solid #cbd5e1;
    background: #ffffff;
    border-radius: 12px;
    font-weight: 800;
    font-size: 14px;
    color: #64748b;
    cursor: pointer;
    transition: all 0.3s ease;
}

.sim-btn.active {
    border-color: var(--accent);
    background: var(--accent);
    color: #ffffff;
    box-shadow: 0 5px 15px rgba(37, 99, 235, 0.3);
}

.pipe-wrapper {
    position: relative;
    margin-bottom: 30px;
}

.pipe-wrapper:last-child {
    margin-bottom: 0;
}

.pipe-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #475569;
    margin-bottom: 8px;
    display: flex;
    justify-content: space-between;
}

.pipe-track {
    height: 40px;
    border-radius: 20px;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 2px 5px rgba(0,0,0,0.1);
}

/* Warstwy gradientów do płynnego przenikania */
.pipe-gradient {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    transition: opacity 0.5s ease;
}

/* Gradienty Kocioł */
.grad-kociol-przeciw { background: linear-gradient(to right, var(--temp-75), var(--temp-33)); }
.grad-kociol-wspol { background: linear-gradient(to right, var(--temp-75), var(--temp-52)); opacity: 0; }

/* Gradienty Podłoga */
.grad-podloga-przeciw { background: linear-gradient(to left, var(--temp-30), var(--temp-72)); }
.grad-podloga-wspol { background: linear-gradient(to right, var(--temp-30), var(--temp-52)); opacity: 0; }

.flow-arrow {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    color: rgba(255,255,255,0.8);
    font-size: 20px;
    font-weight: bold;
    pointer-events: none;
    transition: all 0.5s ease;
}

.arrow-left { left: 20px; }
.arrow-right { right: 20px; }
.arrow-center { left: 50%; transform: translate(-50%, -50%); }

.temp-badge {
    position: absolute;
    top: -12px;
    background: #ffffff;
    border: 2px solid var(--primary);
    padding: 4px 10px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 900;
    color: var(--primary);
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    transition: all 0.5s ease;
    z-index: 2;
}

.badge-start { left: 0; }
.badge-end { right: 0; }

.result-metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 30px;
    padding-top: 30px;
    border-top: 1px dashed #cbd5e1;
}

.metric-box {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    padding: 15px;
    border-radius: 12px;
    text-align: center;
}

.metric-title {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    display: block;
    margin-bottom: 5px;
}

.metric-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--primary);
}

.metric-diff {
    font-size: 12px;
    font-weight: 700;
    color: var(--success);
    margin-top: 5px;
    display: block;
}

/* TEKST ARTYKUŁU */
.text-section {
    font-size: 15px;
    line-height: 1.8;
    color: #334155;
}

.text-section h4 {
    font-size: 18px;
    color: var(--primary);
    margin-top: 30px;
    margin-bottom: 15px;
    font-weight: 800;
}

.text-section p {
    margin-bottom: 15px;
}

.text-section strong {
    color: var(--primary);
    font-weight: 700;
}

.highlight-box {
    background: #eff6ff;
    border-left: 4px solid var(--accent);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin: 20px 0;
}

.highlight-box code {
    display: block;
    font-family: monospace;
    font-size: 14px;
    color: #1e3a8a;
    font-weight: 700;
    margin-bottom: 5px;
}

@media (max-width: 768px) {
    .flow-header { padding: 30px 25px; }
    .flow-content { padding: 30px 25px; }
    .sim-controls { flex-direction: column; }
    .result-metrics { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Porównanie parametrów układu przeciwprądowego i współprądowego",
    "description": "Zestawienie efektywności termodynamicznej wymienników ciepła z uwzględnieniem kierunku przepływu mediów.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Układ Współprądowy (T_końcowa)",
        "value": "52,5°C",
        "description": "Osiągana wartość asymptotyczna. Niemożliwe schłodzenie wody kotłowej poniżej tej wartości."
      },
      {
        "@type": "PropertyValue",
        "name": "Układ Przeciwprądowy (T1_wyj kocioł)",
        "value": "33°C",
        "description": "Przy tzw. approach temperature rzędu 3 K."
      },
      {
        "@type": "PropertyValue",
        "name": "Układ Przeciwprądowy (T2_wyj podłogówka)",
        "value": "72°C",
        "description": "Wysoka efektywność odzysku energii ze źródła ciepła."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator przepływów w wymienniku płytowym",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Narzędzie interaktywne ilustrujące zjawisko przepływu współprądowego i przeciwprądowego. Pozwala wizualnie zaobserwować proces dążenia do asymptoty (współprąd) w kontraście do efektywnego schłodzenia medium pierwotnego (przeciwprąd).",
    "featureList": [
      "Animacja gradientów termicznych wewnątrz kanałów przepływowych",
      "Dynamiczne przeliczanie parametrów wyjściowych (T1_wyj, T2_wyj)",
      "Graficzna prezentacja odwróconych strumieni przepływu"
    ],
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-flow-module" id="flow-app-lock">
    <div class="flow-header">
        <h2><span>🔄</span> Jak przepływ przeciwprądowy maksymalizuje efektywność?</h2>
        <p>Przełącz tryb przepływu poniżej, aby fizycznie zobaczyć, dlaczego jeden układ marnuje energię, a drugi wyciska z niej 100%.</p>
    </div>

    <div class="flow-content">
        
        <div class="sim-container">
            <div class="sim-controls">
                <button class="sim-btn active" id="btn-counter">Układ Przeciwprądowy</button>
                <button class="sim-btn" id="btn-co">Układ Współprądowy</button>
            </div>

            <div class="pipe-wrapper">
                <div class="pipe-label">
                    <span>Medium Pierwotne (Kocioł)</span>
                    <span id="p1-direction" style="color:var(--danger)">Przepływ: → Lewo do Prawa</span>
                </div>
                <div class="pipe-track">
                    <div class="pipe-gradient grad-kociol-przeciw" id="p1-grad-counter"></div>
                    <div class="pipe-gradient grad-kociol-wspol" id="p1-grad-co"></div>
                    <span class="flow-arrow arrow-left">»</span>
                    <span class="flow-arrow arrow-center">»</span>
                    <span class="flow-arrow arrow-right">»</span>
                </div>
                <div class="temp-badge badge-start" style="border-color: var(--temp-75)">T1 wej = 75°C</div>
                <div class="temp-badge badge-end" id="p1-out-badge" style="border-color: var(--temp-33)">T1 wyj = 33°C</div>
            </div>

            <div class="pipe-wrapper" style="margin-top: 45px;">
                <div class="pipe-label">
                    <span>Medium Wtórne (Podłogówka)</span>
                    <span id="p2-direction" style="color:var(--success)">Przepływ: ← Prawo do Lewa</span>
                </div>
                <div class="pipe-track">
                    <div class="pipe-gradient grad-podloga-przeciw" id="p2-grad-counter"></div>
                    <div class="pipe-gradient grad-podloga-wspol" id="p2-grad-co"></div>
                    <span class="flow-arrow arrow-left" id="p2-arr-1">«</span>
                    <span class="flow-arrow arrow-center" id="p2-arr-2">«</span>
                    <span class="flow-arrow arrow-right" id="p2-arr-3">«</span>
                </div>
                <div class="temp-badge badge-start" id="p2-badge-left" style="border-color: var(--temp-72)">T2 wyj = 72°C</div>
                <div class="temp-badge badge-end" id="p2-badge-right" style="border-color: var(--temp-30)">T2 wej = 30°C</div>
            </div>

            <div class="result-metrics">
                <div class="metric-box">
                    <span class="metric-title">Sprawność termodynamiczna</span>
                    <span class="metric-val" id="eff-val">Max (Odzysk +50%)</span>
                    <span class="metric-diff" id="eff-desc">Minimalne straty egzergii</span>
                </div>
                <div class="metric-box">
                    <span class="metric-title">Średnia różnica temp. (ΔTlm)</span>
                    <span class="metric-val" id="dt-val">Wysoka i stabilna</span>
                    <span class="metric-diff" id="dt-desc" style="color:var(--accent)">Siła napędowa zachowana</span>
                </div>
            </div>
        </div>

        <div class="text-section">
            <p>Przepływ przeciwprądowy polega na skierowaniu obu mediów w przeciwne strony – gorące wchodzi od dołu, zimne od góry. Taka konfiguracja zapewnia <strong>najwyższą możliwą średnią różnicę temperatur</strong> na całej długości wymiennika, co przekłada się na minimalne straty egzergii i możliwość schłodzenia medium pierwotnego poniżej temperatury wylotowej medium wtórnego.</p>

            <h4>Zalety układu przeciwprądowego w liczbach</h4>
            <p>Porównanie efektywności układu współprądowego i przeciwprądowego dla identycznych parametrów wejściowych (T1_wej = 75°C, T2_wej = 30°C) doskonale obrazuje tę przewagę.</p>

            <p>W <strong>układzie współprądowym</strong> oba media płyną w tym samym kierunku. Temperatury dążą asymptotycznie do wspólnej wartości pośredniej. Przy założeniu nieskończenie dużej powierzchni wymiany, oba strumienie osiągnęłyby tę samą temperaturę końcową <strong>T_końcowa = 52,5°C</strong> (średnia arytmetyczna). Oznacza to, że <strong>niemożliwe jest schłodzenie wody kotłowej poniżej 52,5°C</strong>, a podłogówka nigdy nie osiągnie temperatury wyższej niż 52,5°C.</p>

            <p>W <strong>układzie przeciwprądowym</strong> sytuacja wygląda diametralnie inaczej. Teoretycznie, przy nieskończonej powierzchni wymiany, woda z kotła może zostać schłodzona do temperatury wejściowej podłogówki (30°C), a woda podłogowa podgrzana do temperatury wejściowej kotła (75°C). W praktyce inżynierskiej osiąga się tzw. <em>approach temperature</em> rzędu 2–5 K, co oznacza:</p>

            <div class="highlight-box">
                <code>T1_wyj (kocioł) = 30°C + 3 K = 33°C</code>
                <code>T2_wyj (podłogówka) = 75°C – 3 K = 72°C</code>
            </div>

            <p>Efektywność termodynamiczna układu przeciwprądowego jest zatem o <strong>30–50% wyższa</strong> niż współprądowego przy zachowaniu dokładnie tej samej powierzchni wymiany (wielkości wymiennika).</p>
        </div>

    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; border-top: 1px solid #334155; font-family: sans-serif; color: #cbd5e1;">
            <h3 style="color: #ffffff; margin-top: 0;">Podsumowanie wyników: Współprąd vs Przeciwprąd</h3>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left;">
                <thead>
                    <tr style="border-bottom: 2px solid #334155;">
                        <th style="padding: 10px 0; color: #94a3b8;">Parametr</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Współprądowy</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Przeciwprądowy</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0;">Temperatura Kotła (Wyjście)</td>
                        <td style="padding: 10px 0; color: #f59e0b;">52,5°C (Zbyt wysoka)</td>
                        <td style="padding: 10px 0; font-weight: bold; color: #3b82f6;">33,0°C (Idealna)</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0;">Temperatura Podłogi (Wyjście)</td>
                        <td style="padding: 10px 0; color: #f59e0b;">52,5°C (Ograniczona)</td>
                        <td style="padding: 10px 0; font-weight: bold; color: #ef4444;">72,0°C (Maksymalna)</td>
                    </tr>
                </tbody>
            </table>
            <p style="font-size: 13px; line-height: 1.6; margin-top:15px;">Aby skorzystać z interaktywnego symulatora przepływów, włącz obsługę JavaScript w swojej przeglądarce.</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('flow-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten interaktywny moduł jest własnością Projekt-Ogrzewania.pl</p><a href="https://projekt-ogrzewania.pl/" style="margin-top: 20px; display: inline-block; padding: 12px 24px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold;">ZOBACZ ORYGINAŁ</a></div>';
        }
        return;
    }

    // LOGIKA SYMULATORA PRZEPŁYWU
    const btnCounter = document.getElementById('btn-counter');
    const btnCo = document.getElementById('btn-co');

    // Warstwy gradientów
    const p1GradCo = document.getElementById('p1-grad-co');
    const p2GradCo = document.getElementById('p2-grad-co');
    
    // Etykiety i Badges
    const p1OutBadge = document.getElementById('p1-out-badge');
    const p2BadgeLeft = document.getElementById('p2-badge-left');
    const p2BadgeRight = document.getElementById('p2-badge-right');
    const p2Direction = document.getElementById('p2-direction');
    
    // Strzałki rury 2
    const p2Arr1 = document.getElementById('p2-arr-1');
    const p2Arr2 = document.getElementById('p2-arr-2');
    const p2Arr3 = document.getElementById('p2-arr-3');

    // Wyniki pod spodem
    const effVal = document.getElementById('eff-val');
    const effDesc = document.getElementById('eff-desc');
    const dtVal = document.getElementById('dt-val');
    const dtDesc = document.getElementById('dt-desc');

    function setCounterFlow() {
        btnCounter.classList.add('active');
        btnCo.classList.remove('active');

        // Przejście gradientów
        p1GradCo.style.opacity = '0';
        p2GradCo.style.opacity = '0';

        // Teksty Kocioł
        p1OutBadge.innerText = 'T1 wyj = 33°C';
        p1OutBadge.style.borderColor = 'var(--temp-33)';

        // Teksty Podłogówka (w przeciwprądzie wejście jest z prawej)
        p2Direction.innerText = 'Przepływ: ← Prawo do Lewa';
        p2Direction.style.color = 'var(--success)';
        
        p2BadgeRight.innerText = 'T2 wej = 30°C';
        p2BadgeRight.style.borderColor = 'var(--temp-30)';
        p2BadgeLeft.innerText = 'T2 wyj = 72°C';
        p2BadgeLeft.style.borderColor = 'var(--temp-72)';

        // Strzałki
        p2Arr1.innerText = '«'; p2Arr2.innerText = '«'; p2Arr3.innerText = '«';

        // Wyniki
        effVal.innerText = 'Max (Odzysk +50%)';
        effVal.style.color = 'var(--primary)';
        effDesc.innerText = 'Minimalne straty egzergii';
        effDesc.style.color = 'var(--success)';

        dtVal.innerText = 'Wysoka i stabilna';
        dtVal.style.color = 'var(--primary)';
        dtDesc.innerText = 'Siła napędowa zachowana';
        dtDesc.style.color = 'var(--accent)';
    }

    function setCoFlow() {
        btnCo.classList.add('active');
        btnCounter.classList.remove('active');

        // Przejście gradientów
        p1GradCo.style.opacity = '1';
        p2GradCo.style.opacity = '1';

        // Teksty Kocioł
        p1OutBadge.innerText = 'T1 wyj = 52.5°C';
        p1OutBadge.style.borderColor = 'var(--temp-52)';

        // Teksty Podłogówka (we współprądzie wejście jest z lewej)
        p2Direction.innerText = 'Przepływ: → Lewo do Prawa';
        p2Direction.style.color = 'var(--danger)';
        
        p2BadgeLeft.innerText = 'T2 wej = 30°C';
        p2BadgeLeft.style.borderColor = 'var(--temp-30)';
        p2BadgeRight.innerText = 'T2 wyj = 52.5°C';
        p2BadgeRight.style.borderColor = 'var(--temp-52)';

        // Strzałki
        p2Arr1.innerText = '»'; p2Arr2.innerText = '»'; p2Arr3.innerText = '»';

        // Wyniki
        effVal.innerText = 'Zaniżona / Asymptota';
        effVal.style.color = 'var(--danger)';
        effDesc.innerText = 'Zablokowany transfer energii';
        effDesc.style.color = 'var(--danger)';

        dtVal.innerText = 'Spada do Zera';
        dtVal.style.color = 'var(--danger)';
        dtDesc.innerText = 'Brak siły napędowej na końcu';
        dtDesc.style.color = 'var(--danger)';
    }

    btnCounter.addEventListener('click', setCounterFlow);
    btnCo.addEventListener('click', setCoFlow);
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #ef4444;
    --warning: #f59e0b;
    --success: #10b981;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    --chart-hot: #ef4444;
    --chart-cold: #3b82f6;
    --chart-fill: rgba(37, 99, 235, 0.1);
}

.premium-chart-box {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
}

.chart-header {
    padding: 35px 45px;
    text-align: left;
    background: linear-gradient(135deg, #f8fafc 0%, #eff6ff 100%);
    border-bottom: 1px solid var(--border-color);
}

.chart-header h3 {
    margin: 0 0 12px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 12px;
}

.chart-content {
    padding: 45px;
}

.chart-text-section {
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    margin-bottom: 30px;
}

/* WIZUALIZACJA WYKRESU */
.interactive-chart-wrapper {
    margin-top: 20px;
    border: 1px solid var(--border-color);
    border-radius: 16px;
    background: #ffffff;
    padding: 20px;
}

.chart-controls {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-bottom: 25px;
}

.chart-toggle {
    padding: 10px 20px;
    border: 2px solid #cbd5e1;
    background: #ffffff;
    border-radius: 10px;
    font-weight: 700;
    font-size: 13px;
    color: #64748b;
    cursor: pointer;
    transition: 0.2s;
}

.chart-toggle.active {
    border-color: var(--accent);
    background: #eff6ff;
    color: var(--accent);
}

.chart-canvas-area {
    position: relative;
    width: 100%;
    height: 350px;
}

.svg-main {
    width: 100%;
    height: 100%;
    overflow: visible;
}

.chart-tooltip {
    position: absolute;
    background: rgba(15, 23, 42, 0.95);
    color: white;
    padding: 12px;
    border-radius: 8px;
    font-size: 12px;
    pointer-events: none;
    opacity: 0;
    z-index: 10;
    min-width: 180px;
    box-shadow: 0 10px 15px rgba(0,0,0,0.2);
}

.chart-legend {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-top: 20px;
    font-size: 12px;
    font-weight: 600;
    color: #64748b;
}

@media (max-width: 600px) {
    .chart-header { padding: 25px; }
    .chart-content { padding: 20px; }
    .chart-controls { flex-direction: column; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Profil temperaturowy wymiennika płytowego",
    "description": "Zestawienie zmian temperatur dla medium pierwotnego i wtórnego w układzie przeciwprądowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Symulator wymiany ciepła",
    "applicationCategory": "EducationalApplication",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-chart-box" id="chart-app-lock">
    <div class="chart-header">
        <h3><span>📈</span> Dynamika wymiany ciepła na wykresie</h3>
        <p style="margin:0; font-size:15px; color:#64748b;">Przetestuj różnicę między układem optymalnym a błędnym.</p>
    </div>

    <div class="chart-content">
        <div class="chart-text-section">
            <p>Poniższy model pokazuje, jak zmienia się temperatura wody wewnątrz wymiennika. Przełączając tryby, zobaczysz dlaczego <strong>układ przeciwprądowy</strong> jest jedynym słusznym rozwiązaniem w podłogówce.</p>
            <ul>
                <li>🔴 <strong>Kocioł:</strong> Oddaje ciepło (spadek z 75°C).</li>
                <li>🔵 <strong>Podłogówka:</strong> Odbiera ciepło (wzrost do ok. 72°C).</li>
            </ul>
        </div>

        <div class="interactive-chart-wrapper">
            <div class="chart-controls">
                <button class="chart-toggle active" id="btn-przeciw">Układ Przeciwprądowy</button>
                <button class="chart-toggle" id="btn-wspol">Układ Współprądowy</button>
            </div>

            <div class="chart-canvas-area" id="canvas-container">
                <svg class="svg-main" id="chart-svg" viewBox="0 0 800 400" preserveAspectRatio="none"></svg>
                <div id="chart-tt" class="chart-tooltip"></div>
            </div>

            <div class="chart-legend">
                <span><b style="color:var(--chart-hot)">—</b> Kocioł</span>
                <span><b style="color:var(--chart-cold)">—</b> Podłogówka</span>
                <span><span style="background:var(--chart-fill); border:1px solid #ccc; padding:0 5px;">&nbsp;</span> Lokalne ΔT</span>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var container = document.getElementById('chart-app-lock');
        if (container) container.innerHTML = '<div style="padding:40px; text-align:center; color:red; font-weight:bold;">Treść chroniona prawem autorskim Projekt-Ogrzewania.pl</div>';
        return;
    }

    const svg = document.getElementById('chart-svg');
    const tt = document.getElementById('chart-tt');
    const btnP = document.getElementById('btn-przeciw');
    const btnW = document.getElementById('btn-wspol');
    
    let mode = 'przeciw';

    function getPoints(currentMode) {
        if(currentMode === 'przeciw') {
            return {
                hot: Array.from({length: 11}, (_, i) => ({x: i * 80, y: 400 - ((75 - (i * 4.2)) - 20) * 6.6})),
                cold: Array.from({length: 11}, (_, i) => ({x: i * 80, y: 400 - ((72 - (i * 4.2)) - 20) * 6.6}))
            };
        } else {
            return {
                hot: Array.from({length: 11}, (_, i) => ({x: i * 80, y: 400 - ((52.5 + 22.5 * Math.exp(-i/2)) - 20) * 6.6})),
                cold: Array.from({length: 11}, (_, i) => ({x: i * 80, y: 400 - ((52.5 - 22.5 * Math.exp(-i/2)) - 20) * 6.6}))
            };
        }
    }

    function draw() {
        const pts = getPoints(mode);
        const pathH = "M" + pts.hot.map(p => `${p.x},${p.y}`).join(" L");
        const pathC = "M" + pts.cold.map(p => `${p.x},${p.y}`).join(" L");
        
        // Cieniowanie obszaru ΔT
        const fillPath = pathH + " L" + pts.cold.slice().reverse().map(p => `${p.x},${p.y}`).join(" L") + " Z";

        svg.innerHTML = `
            <g stroke="#e2e8f0" stroke-width="1">
                ${[0, 100, 200, 300].map(y => `<line x1="0" y1="${y}" x2="800" y2="${y}" />`).join('')}
            </g>
            <path d="${fillPath}" fill="var(--chart-fill)" stroke="none" />
            <path d="${pathH}" fill="none" stroke="var(--chart-hot)" stroke-width="4" stroke-linecap="round" />
            <path d="${pathC}" fill="none" stroke="var(--chart-cold)" stroke-width="4" stroke-linecap="round" />
        `;
    }

    function updateTooltip(e) {
        const rect = svg.getBoundingClientRect();
        const x = (e.clientX || e.touches[0].clientX) - rect.left;
        const pct = Math.max(0, Math.min(100, (x / rect.width) * 100));
        
        // Uproszczone wyliczanie wartości dla tooltipa
        let th, tc;
        if(mode === 'przeciw') {
            th = 75 - (pct * 0.42);
            tc = 72 - (pct * 0.42);
        } else {
            th = 52.5 + 22.5 * Math.exp(-pct/20);
            tc = 52.5 - 22.5 * Math.exp(-pct/20);
        }

        tt.style.opacity = "1";
        tt.style.left = x + "px";
        tt.style.top = "20px";
        tt.innerHTML = `
            <b>Długość: ${Math.round(pct)}%</b><br>
            Kocioł: ${th.toFixed(1)}°C<br>
            Podłogówka: ${tc.toFixed(1)}°C<br>
            <hr style="border:0; border-top:1px solid #444">
            Lokalne ΔT: ${(th-tc).toFixed(1)} K
        `;
    }

    btnP.onclick = () => { mode='przeciw'; btnP.classList.add('active'); btnW.classList.remove('active'); draw(); };
    btnW.onclick = () => { mode='wspol'; btnW.classList.add('active'); btnP.classList.remove('active'); draw(); };
    
    svg.onmousemove = updateTooltip;
    svg.ontouchmove = updateTooltip;
    svg.onmouseleave = () => tt.style.opacity = "0";

    draw();
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
}

/* ZAJAWKA SEO I LINK */
.calc-intro {
    max-width: 1150px;
    margin: 40px auto 10px auto;
    text-align: center;
    padding: 0 20px;
}

.calc-intro h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin-bottom: 15px;
}

.calc-intro p {
    font-size: 16px;
    color: #475569;
    line-height: 1.6;
    max-width: 800px;
    margin: 0 auto;
}

.screed-calc {
    max-width: 1150px;
    margin: 30px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    overflow: hidden;
    color: var(--primary);
}

.calc-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
}

/* LEWA STRONA - KONFIGURACJA */
.config-side {
    padding: 40px;
    background: #ffffff;
}

.section-title {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: #94a3b8;
    letter-spacing: 1.2px;
    margin-bottom: 20px;
    display: block;
}

.type-selector {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 30px;
}

.type-selector.two-cols {
    grid-template-columns: repeat(2, 1fr);
}

.type-btn {
    padding: 14px 8px;
    border: 2px solid #cbd5e1;
    border-radius: 12px;
    cursor: pointer;
    text-align: center;
    font-weight: 700;
    font-size: 13px;
    color: #475569;
    background: #fff;
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
}

.type-btn span {
    margin-top: 4px;
}

.type-btn.active {
    border-color: var(--accent);
    background: #eff6ff;
    color: var(--accent);
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.1);
}

.input-wrap { margin-bottom: 25px; }
.input-label-row {
    display: flex;
    justify-content: space-between;
    margin-bottom: 8px;
    align-items: center;
}
.input-label-row label { font-weight: 600; font-size: 14px; }
.input-label-row .val-badge {
    background: #f1f5f9;
    padding: 4px 12px;
    border-radius: 8px;
    font-weight: 800;
    color: var(--accent);
    font-size: 14px;
}

input[type=range] {
    width: 100%; height: 6px; background: #e2e8f0; border-radius: 10px; appearance: none; outline: none; margin-top: 10px;
}
input[type=range]::-webkit-slider-thumb {
    appearance: none; width: 22px; height: 22px; background: var(--accent); border-radius: 50%; border: 3px solid white; box-shadow: 0 2px 5px rgba(0,0,0,0.15); cursor: pointer;
}

/* PRAWA STRONA - WYNIKI */
.result-side {
    padding: 40px;
    background: var(--bg-light);
    border-left: 1px solid #f1f5f9;
}

.main-score-box {
    background: white; padding: 30px; border-radius: 20px; text-align: center; box-shadow: 0 10px 25px rgba(0,0,0,0.03); margin-bottom: 25px; border-bottom: 6px solid var(--accent); transition: 0.3s;
}
.score-num { font-size: 48px; font-weight: 900; line-height: 1; display: block; margin: 10px 0; color: var(--primary); }
.score-label { font-size: 12px; color: #64748b; font-weight: 700; text-transform: uppercase; }

#risk-msg {
    margin-top: 15px; padding: 12px; border-radius: 10px; font-size: 13px; font-weight: 600; display: none; background: #fee2e2; color: var(--danger); border: 1px solid #fecaca; line-height: 1.4; text-align: left;
}

.tech-grid {
    background: var(--primary); color: white; padding: 25px; border-radius: 20px; display: grid; gap: 12px;
}
.tech-item {
    display: flex; justify-content: space-between; padding-bottom: 12px; border-bottom: 1px solid #1e293b; align-items: center;
}
.tech-item:last-child { border: none; padding-bottom: 0; }
.tech-item span { color: #94a3b8; font-size: 13px; }
.tech-item strong { font-size: 15px; text-align: right; color: #f8fafc;}
.tech-item strong.highlight { color: #38bdf8; }

.material-grid {
    display: grid; grid-template-columns: 1fr; gap: 10px; margin-top: 15px;
}
.mini-card { background: rgba(255,255,255,0.08); padding: 15px; border-radius: 12px; text-align: center;}
.mini-card span { font-size: 11px; color: #94a3b8; display: block; margin-bottom: 6px; text-transform: uppercase; font-weight: 600;}
.mini-card strong { font-size: 18px; color: #fbbf24; }

/* STOPKA */
.footer-cta {
    margin: 0 40px 40px 40px;
    padding: 30px;
    background: #eff6ff;
    border-radius: 20px;
    border-left: 6px solid var(--accent);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
}

.cta-text-side {
    max-width: 550px;
}

.cta-buttons-stack {
    display: flex;
    flex-direction: column; 
    gap: 12px;
    min-width: 280px; 
}

.cta-btn {
    display: block; background: var(--accent); color: white; text-decoration: none; padding: 16px 20px; border-radius: 12px; font-weight: 800; transition: 0.3s; font-size: 13px; text-align: center; border: none; cursor: pointer;
}
.cta-btn:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(37, 99, 235, 0.2); }

@media (max-width: 900px) {
    .calc-grid { grid-template-columns: 1fr; }
    .footer-cta { flex-direction: column; text-align: center; gap: 25px; margin: 20px; }
    .cta-buttons-stack { min-width: 100%; width: 100%; }
    .type-selector { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Kalkulator doboru wymiennika płytowego",
    "description": "Narzędzie inżynierskie pozwalające oszacować parametry wymiennika ciepła na podstawie zapotrzebowania cieplnego budynku, rodzaju źródła ciepła oraz reżimu pracy ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Q_obl",
        "description": "Moc obliczeniowa powiększona o 15% współczynnik zapasu."
      },
      {
        "@type": "PropertyValue",
        "name": "m1 (Przepływ pierwotny)",
        "value": "Q / (1.16 * ΔT1)",
        "unitText": "m³/h"
      },
      {
        "@type": "PropertyValue",
        "name": "m2 (Przepływ wtórny podłogówki)",
        "value": "Q / (1.16 * ΔT2)",
        "unitText": "m³/h"
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Kalkulator inżynierski: Dobór wymiennika płytowego",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Algorytm krok po kroku służący do oszacowania wielkości wymiennika płytowego oraz wymaganych przepływów masowych (m1, m2) przy współpracy z różnymi źródłami ciepła.",
    "featureList": [
      "Obliczanie przepływu dla podłogówki (m2)",
      "Obliczanie przepływu dla kotła/pompy (m1)",
      "Szacowanie liczby płyt i oporów hydraulicznych"
    ],
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="calc-intro">
    <h2>Algorytm doboru wymiennika ciepła</h2>
    <p>Poniższy schemat logiczny pozwala na samodzielne oszacowanie wymaganego rozmiaru wymiennika płytowego do instalacji podłogowej. Jest to uproszczony algorytm inżynierski, który daje silną podstawę do rozmowy z instalatorem i zapobiega błędom w <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" style="color: #2563eb; font-weight: 700; text-decoration: none;">doborze pompy obiegowej</a>.</p>
</div>

<div class="screed-calc" id="heat-exchanger-calc-app">
    <div class="calc-grid">
        <div class="config-side">
            
            <span class="section-title">Krok 1: Zapotrzebowanie na ciepło (Q)</span>
            <div class="input-wrap">
                <div class="input-label-row"><label>Projektowe obciążenie cieplne</label><span class="val-badge"><span id="v-heat">10</span> kW</span></div>
                <input type="range" id="heat-load" min="5" max="30" step="1" value="10">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Dla nowych domów ok. 150m² w standardzie WT 2021 to zazwyczaj 6-9 kW. Kalkulator automatycznie doliczy 15% zapasu inżynierskiego.</div>
            </div>

            <span class="section-title">Krok 2 &#038; 3: Parametry układu (Temperatury)</span>
            
            <label style="font-size: 12px; font-weight: 700; color: #475569; margin-bottom: 8px; display: block;">Źródło ciepła (Strona pierwotna)</label>
            <div class="type-selector" id="src-group">
                <div class="type-btn active" id="btn-src-stal" data-dt="20">Kocioł Stałopalny<span style="font-size:10px; font-weight:400">75/55°C</span></div>
                <div class="type-btn" id="btn-src-gaz" data-dt="10">Kocioł Gazowy<span style="font-size:10px; font-weight:400">55/45°C</span></div>
                <div class="type-btn" id="btn-src-pc" data-dt="15">Pompa Ciepła<span style="font-size:10px; font-weight:400">50/35°C</span></div>
            </div>

            <label style="font-size: 12px; font-weight: 700; color: #475569; margin-bottom: 8px; display: block;">Obieg odbiorczy (Strona wtórna &#8211; podłogówka)</label>
            <div class="type-selector two-cols" id="flr-group">
                <div class="type-btn active" id="btn-flr-std" data-dt="5">Standard Podłogowy<span style="font-size:10px; font-weight:400">35/30°C (Zalecane)</span></div>
                <div class="type-btn" id="btn-flr-mix" data-dt="10">Układ Mieszany<span style="font-size:10px; font-weight:400">40/30°C (np. z drabinką)</span></div>
            </div>
        </div>

        <div class="result-side">
            <div id="mainBox" class="main-score-box">
                <span class="score-label">Szacowana wielkość urządzenia</span>
                <span class="score-num" id="resPlates">20-30</span>
                <span class="score-label">Płyt wymiany ciepła</span>
                <div id="risk-msg">⚠️ Opory po stronie podłogówki mogą być wysokie!</div>
            </div>

            <div class="tech-grid">
                <div class="tech-item"><span>Obliczeniowa moc wymiennika:</span><strong id="resPower">&#8212; kW</strong></div>
                <div class="tech-item"><span>Przepływ &#8211; Kocioł (m1):</span><strong id="resFlow1">&#8212; m³/h</strong></div>
                <div class="tech-item"><span>Przepływ &#8211; Podłogówka (m2):</span><strong class="highlight" id="resFlow2">&#8212; m³/h</strong></div>
                
                <div class="material-grid">
                    <div class="mini-card"><span>Sugerowane przyłącza:</span><strong id="resConn">1&#8243; (Cal)</strong></div>
                </div>
            </div>
            
            <div style="margin-top:20px; font-size:11px; color:#94a3b8; line-height: 1.5;">
                <strong>Krok 4-7:</strong> Algorytm przelicza przepływy masowe przy użyciu ciepła właściwego wody (cp ≈ 1,16 Wh/kg·K). Parametr <strong style="color: #38bdf8;">m2</strong> jest kluczowy do określenia spadków ciśnienia (Δp) i doboru wydajnej pompy.
            </div>
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin:0 0 10px 0; color:#1e3a8a">Potrzebujesz pełnej analizy instalacji?</h3>
            <p style="margin:0; font-size:14px; color:#475569">Ten kalkulator służy do wstępnego szacowania parametrów. Profesjonalny dobór wymaga uwzględnienia dokładnej straty ciśnienia oraz krzywej roboczej pompy obiegowej.</p>
        </div>
        <div class="cta-buttons-stack">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
                📐 ZAMÓW PROJEKT INSTALACJI
            </a>
        </div>
    </div>

    <noscript>
        <div style="padding: 30px; background: #f8fafc; border-top: 1px solid #e2e8f0; font-family: sans-serif;">
            <h3 style="font-size: 18px; color: #0f172a;">Metodyka obliczeń (Wzory Inżynierskie)</h3>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left; margin-bottom: 20px;">
                <thead>
                    <tr style="border-bottom: 2px solid #cbd5e1;">
                        <th style="padding: 10px 0; color: #475569;">Krok Algorytmu</th>
                        <th style="padding: 10px 0; color: #475569;">Wzór / Działanie</th>
                        <th style="padding: 10px 0; color: #475569;">Wynik dla przykładowych 10 kW</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;"><strong>Moc z zapasem</strong></td>
                        <td style="padding: 10px 0;">Q_obl = Q_budynek × 1.15</td>
                        <td style="padding: 10px 0;">10 * 1.15 = 11.5 kW</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;"><strong>Przepływ wtórny (m2)</strong></td>
                        <td style="padding: 10px 0;">m2 = Q_obl / (1.16 * ΔT2)</td>
                        <td style="padding: 10px 0;">11.5 / (1.16 * 5) ≈ 1.98 m³/h</td>
                    </tr>
                    <tr style="border-bottom: 1px solid #e2e8f0;">
                        <td style="padding: 10px 0;"><strong>Przepływ pierwotny (m1)</strong></td>
                        <td style="padding: 10px 0;">m1 = Q_obl / (1.16 * ΔT1)</td>
                        <td style="padding: 10px 0;">11.5 / (1.16 * 20) ≈ 0.50 m³/h</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0;"><strong>Szacunek Płyt</strong></td>
                        <td style="padding: 10px 0;">Na podst. m2 i Q_obl</td>
                        <td style="padding: 10px 0;">20-30 płyt, przyłącza 1&#8243;</td>
                    </tr>
                </tbody>
            </table>
            <p style="font-size: 13px; color: #475569; line-height: 1.6;">
                Spadek ciśnienia po stronie wtórnej Δp2 nie powinien przekraczać 20 kPa, aby zapobiec przewymiarowaniu pompy obiegowej podłogówki.
            </p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA (Domain Lock)
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('heat-exchanger-calc-app');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; font-family: sans-serif;">' +
                '<span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span>' +
                '<div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px; color: #dc2626;">Narzędzie chronione</div>' +
                '<p style="font-size: 16px; margin-bottom: 25px;">Ten kalkulator jest własnością serwisu <a href="https://projekt-ogrzewania.pl/" style="color: #dc2626; font-weight: bold; text-decoration: underline;">Projekt-Ogrzewania.pl</a></p>' +
                '<a href="https://projekt-ogrzewania.pl/" style="display: inline-block; padding: 14px 28px; background: #dc2626; color: #ffffff; text-decoration: none; border-radius: 12px; font-weight: 800;">PRZEJDŹ DO ORYGINAŁU</a>' +
                '</div>';
        }
        return; 
    }

    // Stan aplikacji
    var q_nominal = 10;
    var dt_src = 20; // Domyślnie Kocioł Stałopalny
    var dt_flr = 5;  // Domyślnie Standard Podłogowy

    var heatInput = document.getElementById('heat-load');
    var vHeat = document.getElementById('v-heat');

    // Elementy wynikowe
    var resPower = document.getElementById('resPower');
    var resFlow1 = document.getElementById('resFlow1');
    var resFlow2 = document.getElementById('resFlow2');
    var resPlates = document.getElementById('resPlates');
    var resConn = document.getElementById('resConn');
    var mainBox = document.getElementById('mainBox');
    var riskMsg = document.getElementById('risk-msg');

    function calculate() {
        if(!heatInput) return;
        q_nominal = parseFloat(heatInput.value);
        vHeat.innerText = q_nominal;

        // Krok 1: Moc z zapasem
        var q_calc = q_nominal * 1.15;
        
        // Krok 4 & 5: Przepływy masowe m = Q / (cp * dT)
        // cp wody w przybliżeniu = 1.16 kWh/(t*K) -> wynik w m3/h
        var m1 = q_calc / (1.16 * dt_src);
        var m2 = q_calc / (1.16 * dt_flr);

        // Krok 6: Wstępny dobór płyt na podstawie przepływu strony wtórnej (m2 generuje największe opory)
        var platesText = "20-30";
        var connText = '1" (Cal)';
        var warningText = "";
        var boxColor = 'var(--accent)';

        if (m2 <= 1.2) {
            platesText = "20";
        } else if (m2 > 1.2 && m2 <= 2.2) {
            platesText = "30-40";
        } else if (m2 > 2.2 && m2 <= 3.2) {
            platesText = "40-50";
        } else if (m2 > 3.2 && m2 <= 4.5) {
            platesText = "60+";
            connText = '5/4" (Cale)';
            warningText = "⚠️ <strong>Wysoki przepływ!</strong> Skonsultuj dobór pompy. Przyłącza 1\" mogą stawiać zbyt duży opór (>20 kPa). Konieczny większy wymiennik z przyłączami 5/4\".";
            boxColor = 'var(--warning)';
        } else {
            platesText = "Duży dobór";
            connText = 'Min. 5/4" lub więcej';
            warningText = "❌ <strong>Przekroczone standardy domowe!</strong> Wymagany indywidualny dobór wymiennika przez biuro projektowe.";
            boxColor = 'var(--danger)';
        }

        // Aktualizacja UI
        resPower.innerText = q_calc.toFixed(1) + " kW";
        resFlow1.innerText = m1.toFixed(2) + " m³/h";
        resFlow2.innerText = m2.toFixed(2) + " m³/h";
        resPlates.innerText = platesText;
        resConn.innerText = connText;

        if (warningText !== "") {
            riskMsg.innerHTML = warningText;
            riskMsg.style.display = 'block';
        } else {
            riskMsg.style.display = 'none';
        }
        mainBox.style.borderBottomColor = boxColor;
    }

    // Event Listenery dla źródła ciepła
    var srcButtons = document.querySelectorAll('#src-group .type-btn');
    srcButtons.forEach(function(btn) {
        btn.addEventListener('click', function(e) {
            srcButtons.forEach(function(b){ b.classList.remove('active'); });
            var target = e.currentTarget;
            target.classList.add('active');
            dt_src = parseFloat(target.getAttribute('data-dt'));
            calculate();
        });
    });

    // Event Listenery dla podłogówki
    var flrButtons = document.querySelectorAll('#flr-group .type-btn');
    flrButtons.forEach(function(btn) {
        btn.addEventListener('click', function(e) {
            flrButtons.forEach(function(b){ b.classList.remove('active'); });
            var target = e.currentTarget;
            target.classList.add('active');
            dt_flr = parseFloat(target.getAttribute('data-dt'));
            calculate();
        });
    });

    // Event Listener dla suwaka
    if(heatInput) {
        heatInput.addEventListener('input', calculate);
    }

    // Inicjalizacja
    calculate();
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --accent-hover: #1d4ed8;
    --danger: #ef4444;
    --warning: #f59e0b;
    --success: #10b981;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    --cta-grad: linear-gradient(135deg, #1e3a8a 0%, #2563eb 100%);
    --btn-bg: #ffffff;
    --btn-text: #1e3a8a;
}

.premium-system-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
}

.system-header {
    padding: 40px 45px 25px 45px;
    background: linear-gradient(135deg, #ffffff 0%, var(--bg-light) 100%);
    border-bottom: 1px solid var(--border-color);
}

.system-header h2 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.system-header p {
    margin: 0;
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
}

.system-content {
    padding: 40px 45px;
}

/* KARTY PORÓWNAWCZE */
.split-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 40px;
}

.info-card {
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--border-color);
    background: #ffffff;
    transition: transform 0.3s ease;
}

.info-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(0,0,0,0.05);
}

.info-card h4 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 10px;
}

.info-card p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

/* INTERAKTYWNY PULPIT */
.dashboard-container {
    background: #f8fafc;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 40px;
}

.dashboard-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--primary);
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.calc-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 30px;
}

.calc-inputs label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 700;
    color: #475569;
    margin-bottom: 8px;
}

.calc-inputs .val-badge {
    color: var(--accent);
    font-weight: 900;
    background: #eff6ff;
    padding: 2px 8px;
    border-radius: 6px;
}

.calc-inputs input[type=range] {
    width: 100%; height: 6px; background: #e2e8f0; border-radius: 10px; appearance: none; outline: none; margin-bottom: 20px;
}

.calc-inputs input[type=range]::-webkit-slider-thumb {
    appearance: none; width: 20px; height: 20px; background: var(--accent); border-radius: 50%; border: 3px solid white; box-shadow: 0 2px 5px rgba(0,0,0,0.2); cursor: pointer;
}

.calc-outputs {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.calc-outputs span {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    letter-spacing: 0.5px;
}

.calc-outputs strong {
    font-size: 42px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.1;
    margin: 10px 0;
}

.pump-recommendation {
    display: inline-block;
    padding: 8px 15px;
    background: #f0fdf4;
    color: #166534;
    font-weight: 700;
    font-size: 14px;
    border-radius: 8px;
    border: 1px solid #bbf7d0;
    margin-top: 10px;
}

/* AUTOMATYKA */
.automation-box {
    margin-top: 30px;
    padding-top: 30px;
    border-top: 1px dashed #cbd5e1;
}

.valve-status {
    padding: 15px;
    border-radius: 12px;
    font-weight: 800;
    font-size: 15px;
    text-align: center;
    transition: 0.3s;
    border: 1px solid transparent;
}

/* PREMIUM CTA */
.premium-cta-box {
    background: var(--cta-grad);
    padding: 50px 45px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.premium-cta-box::before {
    content: '';
    position: absolute;
    top: -50%; left: -50%; width: 200%; height: 200%;
    background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 60%);
    pointer-events: none;
}

.premium-cta-box h3 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
}

.premium-cta-box p {
    margin: 0 0 30px 0;
    font-size: 16px;
    color: #bfdbfe;
    line-height: 1.6;
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

.cta-btn-premium {
    display: inline-block;
    padding: 18px 40px;
    background: var(--btn-bg);
    color: var(--btn-text);
    font-size: 16px;
    font-weight: 900;
    text-decoration: none;
    border-radius: 14px;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
    transition: all 0.3s ease;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    position: relative;
    z-index: 2;
}

.cta-btn-premium:hover {
    transform: translateY(-3px) scale(1.02);
    box-shadow: 0 15px 35px rgba(0, 0, 0, 0.25);
    background: #f8fafc;
}

@media (max-width: 768px) {
    .system-header { padding: 30px 25px; }
    .system-content { padding: 30px 25px; }
    .split-cards { grid-template-columns: 1fr; }
    .calc-grid { grid-template-columns: 1fr; }
    .premium-cta-box { padding: 40px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Wpływ wymiennika płytowego na parametry układu",
    "description": "Obliczenia hydrauliczne spadku ciśnienia i logiki automatyki zaworu mieszającego w instalacji ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Sprzęgło hydrauliczne",
        "description": "Zapewnia separację hydrauliczną bez zmiany parametrów fizycznych wody. Nie chroni przed przegrzaniem."
      },
      {
        "@type": "PropertyValue",
        "name": "Wymiennik płytowy",
        "description": "Pełna separacja fizyczna. Pozwala zasilać podłogówkę wodą 35°C z kotła pracującego na 80°C."
      },
      {
        "@type": "PropertyValue",
        "name": "Opór wymiennika (Δp_wym)",
        "value": "12 kPa",
        "description": "Zjawisko wymagające doliczenia do całkowitego sprężu pompy obiegowej."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Kalkulator Sprężu Pompy i Symulator Automatyki",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Interaktywny panel inżynierski pozwalający na obliczenie wymaganej wysokości podnoszenia pompy obiegowej z uwzględnieniem oporów wymiennika oraz symulację logiki pracy zaworu trójdrogowego.",
    "featureList": [
      "Dynamiczne sumowanie oporów hydraulicznych (pętle + wymiennik + armatura)",
      "Przeliczanie oporów z kPa na wysokość podnoszenia (m H2O)",
      "Symulacja reakcji siłownika zaworu na zmiany temperatury zasilania"
    ],
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-system-module" id="system-app-lock">
    
    <div class="system-header">
        <h2>Rola wymiennika płytowego w projekcie ogrzewania podłogowego – aspekty systemowe.</h2>
        <p>Wymiennika płytowego nie można rozpatrywać jako izolowanego komponentu. Jego obecność wymusza szereg inżynierskich decyzji dotyczących hydrauliki, automatyki i zabezpieczeń całej instalacji.</p>
    </div>

    <div class="system-content">
        
        <div class="split-cards">
            <div class="info-card">
                <h4>🔀 Sprzęgło Hydrauliczne</h4>
                <p>Oddziela obieg kotła od obiegów grzewczych przy zachowaniu <strong>wspólnego medium</strong>. Problem pojawia się, gdy kocioł wymaga wysokiej temperatury powrotu (np. 60°C dla stałopalnego), a podłogówka pracuje na niskich parametrach. Sprzęgło nie zapobiega mieszaniu, a jedynie stabilizuje przepływy.</p>
            </div>
            <div class="info-card" style="border-top: 4px solid var(--accent);">
                <h4>🧱 Wymiennik Płytowy</h4>
                <p>Zapewnia <strong>pełną separację fizyczną</strong> mediów. Umożliwia stabilną pracę kotła na parametrach rzędu 80/60°C, jednocześnie oddając do podłogówki wodę o bezpiecznej temperaturze 35/30°C. To rozwiązanie bezwzględnie niezbędne przy modernizacji starszych instalacji.</p>
            </div>
        </div>

        <div class="dashboard-container">
            <div class="dashboard-title">🧮 Wpływ na dobór pompy obiegowej (Kalkulator)</div>
            <p style="font-size: 14px; color: #475569; margin-bottom: 25px;">Opór hydrauliczny wymiennika musi zostać uwzględniony w obliczeniach wysokości podnoszenia pompy podłogowej. Pominięcie tego elementu skutkuje niedogrzaniem najdalszych pętli.</p>

            <div class="calc-grid">
                <div class="calc-inputs">
                    <label>Opór pętli grzewczych (Δp pętle) <span class="val-badge" id="v-loops">25 kPa</span></label>
                    <input type="range" id="sl-loops" min="10" max="40" step="1" value="25">

                    <label>Opór wymiennika (Δp wym) <span class="val-badge" id="v-exch">12 kPa</span></label>
                    <input type="range" id="sl-exch" min="5" max="25" step="1" value="12">

                    <label>Opór armatury i rur (Δp armatura) <span class="val-badge" id="v-arm">8 kPa</span></label>
                    <input type="range" id="sl-arm" min="2" max="15" step="1" value="8">
                </div>

                <div class="calc-outputs">
                    <span>Całkowity Wymagany Spręż</span>
                    <strong id="v-total">45 kPa</strong>
                    <span style="color: var(--accent); font-weight: 900; font-size: 18px;" id="v-meter">~4.5 m H₂O</span>
                    <div class="pump-recommendation" id="v-pump">Sugerowana pompa: 25-60</div>
                </div>
            </div>

            <div class="automation-box">
                <div class="dashboard-title">⚙️ Automatyka (Logika Zaworu Trójdrogowego)</div>
                <p style="font-size: 14px; color: #475569; margin-bottom: 15px;">Układ chroni podłogówkę przed przegrzaniem. Zmiana temperatury za wymiennikiem wymusza natychmiastową reakcję siłownika zaworu. (Temperatura zadana: 35°C).</p>
                
                <div style="margin-bottom: 15px;">
                    <label style="display:flex; justify-content:space-between; font-size: 13px; font-weight: 700; color: #475569; margin-bottom: 8px;">
                        Bieżąca temp. zasilania (T2_zas) <span class="val-badge" id="v-temp" style="background:#fef2f2; color:var(--danger)">25°C</span>
                    </label>
                    <input type="range" id="sl-temp" min="20" max="50" step="1" value="25">
                </div>

                <div class="valve-status" id="v-status">
                    Oczekiwanie na dane&#8230;
                </div>
            </div>
        </div>
    </div>

    <div class="premium-cta-box">
        <h3>Zbyt wiele zmiennych do opanowania?</h3>
        <p>Błędy hydrauliczne (zły dobór pompy, brak uwzględnienia oporów wymiennika) mszczą się latami zimnymi podłogami. Zabezpiecz swoją inwestycję profesjonalnym projektem, zanim wylejesz beton.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn-premium">
            📐 Zamów Indywidualny Projekt Instalacji
        </a>
    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; border-top: 1px solid #334155; font-family: sans-serif; color: #cbd5e1;">
            <h3 style="color: #ffffff; margin-top: 0;">Obliczenia inżynierskie w pigułce</h3>
            <p><strong>Wzór na całkowity spręż:</strong> Δp_całk = Δp_pętle + Δp_wym + Δp_armatura</p>
            <p>Przykład: 25 kPa + 12 kPa + 8 kPa = 45 kPa (odpowiada wysokości podnoszenia ok. 4,5 metra słupa wody).</p>
            <p><strong>Logika sterowania:</strong> Jeśli T2_zas < 35°C (Zawór otwiera się). Jeśli T2_zas > 35°C (Zawór przymyka się odcinając gorące źródło).</p>
            <p style="font-size: 13px; line-height: 1.6; margin-top:15px;">Włącz JavaScript, aby uzyskać dostęp do interaktywnego kalkulatora i symulacji automatyki w czasie rzeczywistym.</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('system-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten interaktywny moduł jest własnością Projekt-Ogrzewania.pl</p><a href="https://projekt-ogrzewania.pl/" style="margin-top: 20px; display: inline-block; padding: 12px 24px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold;">ZOBACZ ORYGINAŁ</a></div>';
        }
        return;
    }

    // LOGIKA KALKULATORA POMPY
    const slLoops = document.getElementById('sl-loops');
    const slExch = document.getElementById('sl-exch');
    const slArm = document.getElementById('sl-arm');
    
    const vLoops = document.getElementById('v-loops');
    const vExch = document.getElementById('v-exch');
    const vArm = document.getElementById('v-arm');
    
    const vTotal = document.getElementById('v-total');
    const vMeter = document.getElementById('v-meter');
    const vPump = document.getElementById('v-pump');

    function updatePump() {
        let loops = parseInt(slLoops.value);
        let exch = parseInt(slExch.value);
        let arm = parseInt(slArm.value);
        
        let total = loops + exch + arm;
        let meters = (total / 9.81).toFixed(1);

        vLoops.innerText = loops + ' kPa';
        vExch.innerText = exch + ' kPa';
        vArm.innerText = arm + ' kPa';
        
        vTotal.innerText = total + ' kPa';
        vMeter.innerText = '~' + meters + ' m H₂O';

        if(total <= 35) {
            vPump.innerText = 'Wystarczy standardowa pompa (np. 25-40)';
            vPump.style.color = '#166534';
            vPump.style.background = '#f0fdf4';
            vPump.style.borderColor = '#bbf7d0';
        } else if(total <= 55) {
            vPump.innerText = 'Sugerowana mocniejsza pompa (np. 25-60)';
            vPump.style.color = '#b45309';
            vPump.style.background = '#fffbeb';
            vPump.style.borderColor = '#fde68a';
        } else {
            vPump.innerText = 'Wymagana pompa wysokiego podnoszenia (np. 25-80)';
            vPump.style.color = '#b91c1c';
            vPump.style.background = '#fef2f2';
            vPump.style.borderColor = '#fecaca';
        }
    }

    if(slLoops) slLoops.addEventListener('input', updatePump);
    if(slExch) slExch.addEventListener('input', updatePump);
    if(slArm) slArm.addEventListener('input', updatePump);

    // LOGIKA ZAWORU
    const slTemp = document.getElementById('sl-temp');
    const vTemp = document.getElementById('v-temp');
    const vStatus = document.getElementById('v-status');
    const targetTemp = 35;

    function updateValve() {
        let t = parseInt(slTemp.value);
        vTemp.innerText = t + '°C';

        if(t < targetTemp) {
            vStatus.innerHTML = '🔄 Siłownik: <strong>OTWIERA ZAWÓR</strong> (Zwiększenie dopływu ciepła z kotła)';
            vStatus.style.background = '#eff6ff';
            vStatus.style.color = '#1e3a8a';
            vStatus.style.borderColor = '#bfdbfe';
        } else if (t > targetTemp) {
            vStatus.innerHTML = '🛑 Siłownik: <strong>PRZYMYKA ZAWÓR</strong> (Ograniczenie ciepła - ochrona posadzki)';
            vStatus.style.background = '#fef2f2';
            vStatus.style.color = '#b91c1c';
            vStatus.style.borderColor = '#fecaca';
        } else {
            vStatus.innerHTML = '✅ Siłownik: <strong>STABILNY</strong> (Parametry idealne)';
            vStatus.style.background = '#f0fdf4';
            vStatus.style.color = '#166534';
            vStatus.style.borderColor = '#bbf7d0';
        }
    }

    if(slTemp) slTemp.addEventListener('input', updateValve);

    // Init
    updatePump();
    updateValve();
});
</script>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --accent-hover: #1e40af;
    --danger: #ef4444;
    --warning: #f59e0b;
    --success: #10b981;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    --risk-bg: #fef2f2;
}

.premium-decision-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
}

.decision-header {
    padding: 40px 45px 30px 45px;
    background: linear-gradient(135deg, #ffffff 0%, var(--bg-light) 100%);
    border-bottom: 1px solid var(--border-color);
}

.decision-header h2 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.decision-header p {
    margin: 0;
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
}

.decision-header a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
    border-bottom: 1px dashed var(--accent);
    transition: 0.2s;
}

.decision-header a:hover {
    color: var(--accent-hover);
    border-bottom-style: solid;
}

.decision-content {
    padding: 0;
}

/* SEKACJA TEKSTOWA */
.text-arguments {
    padding: 40px 45px;
}

.arg-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
}

.arg-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    padding: 25px;
    border-radius: 16px;
    transition: 0.3s;
}

.arg-card:hover {
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.05);
    border-color: #cbd5e1;
    transform: translateY(-3px);
}

.arg-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--primary);
    display: flex;
    align-items: center;
    gap: 8px;
}

.arg-card p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}

.arg-card a {
    color: var(--accent);
    text-decoration: none;
    font-weight: 600;
}

.arg-card a:hover { text-decoration: underline; }

/* WIDŻET INTERAKTYWNY */
.interactive-decision-tool {
    background: #f8fafc;
    border-top: 1px solid var(--border-color);
    border-bottom: 1px solid var(--border-color);
    padding: 40px 45px;
}

.tool-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--primary);
    margin-bottom: 25px;
    text-align: center;
}

.source-selectors {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 35px;
    flex-wrap: wrap;
}

.source-btn {
    padding: 14px 24px;
    background: #ffffff;
    border: 2px solid #cbd5e1;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: #475569;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
    min-width: 180px;
}

.source-btn span { font-size: 11px; font-weight: 600; text-transform: uppercase; color: #94a3b8; }

.source-btn.active {
    border-color: var(--accent);
    background: #eff6ff;
    color: var(--accent);
    box-shadow: 0 4px 15px rgba(37, 99, 235, 0.15);
}
.source-btn.active span { color: var(--accent); }

.decision-result {
    background: #ffffff;
    border-radius: 16px;
    padding: 30px;
    border: 1px solid var(--border-color);
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 30px;
    align-items: center;
}

.verdict-box {
    text-align: center;
    padding-right: 30px;
    border-right: 1px dashed #cbd5e1;
}

.verdict-box span {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    display: block;
    margin-bottom: 10px;
}

.verdict-status {
    font-size: 28px;
    font-weight: 900;
    display: block;
    margin-bottom: 10px;
    line-height: 1.1;
}

.risk-analysis {
    padding-left: 10px;
}

.risk-bar-group {
    margin-bottom: 15px;
}

.risk-label {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    font-weight: 700;
    margin-bottom: 8px;
    color: #475569;
}

.risk-track {
    height: 12px;
    background: #e2e8f0;
    border-radius: 6px;
    overflow: hidden;
}

.risk-fill {
    height: 100%;
    border-radius: 6px;
    transition: width 0.5s ease-out, background 0.5s ease;
}

@media (max-width: 768px) {
    .decision-header { padding: 30px 25px; }
    .text-arguments { padding: 30px 25px; }
    .interactive-decision-tool { padding: 30px 25px; }
    .arg-grid { grid-template-columns: 1fr; }
    .source-selectors { flex-direction: column; }
    .decision-result { grid-template-columns: 1fr; gap: 20px; }
    .verdict-box { padding-right: 0; border-right: none; border-bottom: 1px dashed #cbd5e1; padding-bottom: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Analiza opłacalności i ryzyka instalacji wymiennika płytowego",
    "description": "Zestawienie kosztów prewencyjnych (wymiennik) z potencjalnymi stratami (wymiana posadzki) w zależności od źródła ciepła pracującego z ogrzewaniem podłogowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Koszt ubezpieczenia (Wymiennik płytowy)",
        "value": "300 - 800 PLN",
        "description": "Stanowi mniej niż 1% wartości całej instalacji grzewczej."
      },
      {
        "@type": "PropertyValue",
        "name": "Potencjalne straty (Brak zabezpieczenia)",
        "value": "15 000 - 30 000 PLN",
        "description": "Koszty generalnego remontu w przypadku wpuszczenia wody >55°C z kotła stałopalnego wprost w posadzkę."
      },
      {
        "@type": "PropertyValue",
        "name": "Zysk energetyczny",
        "value": "5 - 10%",
        "description": "Redukcja strat energii dzięki eliminacji przegrzewania pomieszczeń przez zastosowanie układu mieszającego z wymiennikiem."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Decyzjomat Wymiennika Płytowego",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Interaktywne narzędzie pozwalające użytkownikowi określić konieczność zastosowania wymiennika płytowego na podstawie wybranego źródła ciepła (kocioł węglowy, stary gazowy, pompa ciepła) oraz wizualizujące stosunek kosztów ubezpieczenia do ryzyka zniszczenia posadzki.",
    "featureList": [
      "Wybór źródła ciepła i weryfikacja wymogów technicznych",
      "Dynamiczna weryfikacja konieczności instalacji wymiennika (TAK/NIE)",
      "Wizualny wykres porównujący koszt prewencji z kosztem generalnego remontu"
    ],
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-decision-module" id="decision-app-lock">
    
    <div class="decision-header">
        <h2>Dlaczego wymiennik płytowy jest rozwiązaniem optymalnym?</h2>
        <p>Główne pytanie inwestorów brzmi: <em>&#8222;Czy do ogrzewania podłogowego faktycznie potrzebuję wymiennika?&#8221;</em></p>
        <p style="margin-top: 10px;">Krótka odpowiedź: <strong>TAK</strong>, jest on niezbędny, jeśli Twoje źródło ciepła (np. kocioł stałopalny, stary kocioł gazowy) pracuje na temperaturze zasilania przekraczającej 55°C. Wymiennik obniża temperaturę wody do bezpiecznego poziomu 35–45°C, chroniąc system przed zniszczeniem. Sytuacja wygląda inaczej tylko przy <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">nowoczesnych pompach ciepła</a> pracujących na bardzo niskich parametrach.</p>
    </div>

    <div class="decision-content">
        
        <div class="interactive-decision-tool">
            <div class="tool-title">🎯 Interaktywny Doradca: Czy potrzebujesz wymiennika?</div>
            
            <div class="source-selectors">
                <button class="source-btn active" data-source="stalopalny">
                    <span>Temp. > 70°C</span>
                    Kocioł Węglowy / Drewno
                </button>
                <button class="source-btn" data-source="gaz">
                    <span>Temp. 55-65°C</span>
                    Stary Kocioł Gazowy
                </button>
                <button class="source-btn" data-source="pompa">
                    <span>Temp. < 45°C</span>
                    Pompa Ciepła / Kondensat
                </button>
            </div>

            <div class="decision-result">
                <div class="verdict-box">
                    <span>Status Wymiennika Płytowego</span>
                    <strong class="verdict-status" id="res-status" style="color: var(--danger);">NIEZBĘDNY</strong>
                    <div id="res-desc" style="font-size: 13px; color: #475569; line-height: 1.5;">Kocioł może zagotować wodę. Bez separacji hydraulicznej i temperaturowej zniszczysz posadzkę.</div>
                </div>
                
                <div class="risk-analysis">
                    <div style="font-size: 14px; font-weight: 800; margin-bottom: 15px; color: var(--primary);">Bilans Finansowy (ROI)</div>
                    
                    <div class="risk-bar-group">
                        <div class="risk-label">
                            Koszt Wymiennika (Ochrona) <span style="color: var(--success);">~ 500 zł</span>
                        </div>
                        <div class="risk-track">
                            <div class="risk-fill" id="bar-protect" style="width: 5%; background: var(--success);"></div>
                        </div>
                    </div>

                    <div class="risk-bar-group">
                        <div class="risk-label">
                            Ryzyko uszkodzenia (Wylewka) <span id="risk-val" style="color: var(--danger);">~ 25 000 zł</span>
                        </div>
                        <div class="risk-track">
                            <div class="risk-fill" id="bar-risk" style="width: 100%; background: var(--danger);"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="text-arguments">
            <h3 style="margin: 0 0 20px 0; font-size: 20px; font-weight: 800; color: var(--primary);">Naukowe i finansowe argumenty za instalacją</h3>
            
            <div class="arg-grid">
                <div class="arg-card">
                    <h4>📐 Zgodność z PN-EN 1264-3</h4>
                    <p>Norma bezwzględnie wymaga, aby temperatura zasilania nie przekraczała odporności materiałowej jastrychu. Wymiennik sprzęgnięty z 
                    <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-ogrzewania-podlogowego-mosiezny-czy-ze-stali-nierdzewnej/">profesjonalnym rozdzielaczem</a> to inżynierska gwarancja tej zgodności.</p>
                </div>

                <div class="arg-card">
                    <h4>🛡️ Ochrona Inwestycji</h4>
                    <p>Instalacja jest praktycznie niewymienialna. Koszt wymiennika (300-800 zł) to <strong>mniej niż 1%</strong> wartości systemu, a zabezpiecza przed remontem wartym nawet 30 000 zł.</p>
                </div>

                <div class="arg-card">
                    <h4>⚡ Efektywność (Oszczędności)</h4>
                    <p>Kocioł pracuje stabilnie z wysoką sprawnością, a podłogówka otrzymuje idealnie dawkowe ciepło. Dodając <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">nowoczesne sterowanie</a>, eliminujesz przegrzewanie i oszczędzasz 5-10% energii.</p>
                </div>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; border-top: 1px solid #334155; font-family: sans-serif; color: #cbd5e1;">
            <h3 style="color: #ffffff; margin-top: 0;">Podsumowanie analizy techniczno-ekonomicznej</h3>
            <p><strong>Dla kotłów stałopalnych i wysokotemperaturowych (>55°C):</strong> Wymiennik płytowy jest absolutnie niezbędny do zabezpieczenia rur przed starzeniem, a wylewki przed pękaniem. Ryzykujesz zniszczenie posadzki wartej 25 000 zł, oszczędzając na elemencie za 500 zł.</p>
            <p><strong>Dla pomp ciepła (<45°C):</strong> Wymiennik płytowy może być pominięty, jeśli układ jest zamknięty, co pozwala na dodatkowe oszczędności.</p>
            <p style="font-size: 13px; line-height: 1.6; margin-top:15px;">Włącz obsługę skryptów JavaScript, aby uzyskać dostęp do interaktywnego Decyzjomatu i kalkulatora ryzyka finansowego.</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('decision-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten interaktywny moduł jest własnością Projekt-Ogrzewania.pl</p><a href="https://projekt-ogrzewania.pl/" style="margin-top: 20px; display: inline-block; padding: 12px 24px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold;">ZOBACZ ORYGINAŁ</a></div>';
        }
        return;
    }

    // LOGIKA DECZYJOMATU
    const buttons = document.querySelectorAll('.source-btn');
    const statusEl = document.getElementById('res-status');
    const descEl = document.getElementById('res-desc');
    const barRisk = document.getElementById('bar-risk');
    const valRisk = document.getElementById('risk-val');

    const data = {
        'stalopalny': {
            status: 'NIEZBĘDNY', color: 'var(--danger)',
            desc: 'Kocioł może zagotować wodę. Bez separacji hydraulicznej i temperaturowej zniszczysz posadzkę i rury.',
            riskW: '100%', riskV: '~ 25 000 zł'
        },
        'gaz': {
            status: 'WYsoce ZALECANY', color: 'var(--warning)',
            desc: 'Stare kotły gazowe rzadko schodzą poniżej 50°C. Wymiennik stabilizuje parametry i chroni przed brudem z rur.',
            riskW: '50%', riskV: '~ 12 000 zł (Spadek żywotności)'
        },
        'pompa': {
            status: 'ZBĘDNY (Opcjonalny)', color: 'var(--success)',
            desc: 'Nowoczesna pompa ciepła podaje gotowe 35°C wprost na rozdzielacz. Brak wymiennika poprawia jej sprawność (COP).',
            riskW: '0%', riskV: '0 zł (Bezpiecznie)'
        }
    };

    buttons.forEach(btn => {
        btn.addEventListener('click', function() {
            // Reset active
            buttons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Update UI
            const key = this.getAttribute('data-source');
            const d = data[key];

            statusEl.innerText = d.status;
            statusEl.style.color = d.color;
            descEl.innerText = d.desc;
            
            barRisk.style.width = d.riskW;
            if(key === 'pompa') {
                barRisk.style.background = 'var(--success)';
                valRisk.style.color = 'var(--success)';
            } else {
                barRisk.style.background = 'var(--danger)';
                valRisk.style.color = 'var(--danger)';
            }
            valRisk.innerText = d.riskV;
        });
    });
});
</script>



<style>
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --accent-hover: #1e40af;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
    --text-muted: #475569;
    --success: #10b981;
}

.premium-faq-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(0, 0, 0, 0.05);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
}

.faq-header {
    padding: 40px 45px 25px 45px;
    background: linear-gradient(135deg, #ffffff 0%, var(--bg-light) 100%);
    border-bottom: 1px solid var(--border-color);
    text-align: center;
}

.faq-header h2 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.faq-header p {
    margin: 0;
    font-size: 16px;
    line-height: 1.7;
    color: var(--text-muted);
}

.faq-content {
    padding: 20px 45px 40px 45px;
}

.faq-item {
    border-bottom: 1px solid var(--border-color);
    transition: all 0.3s ease;
}

.faq-item:last-child {
    border-bottom: none;
}

.faq-question {
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    padding: 25px 0;
    font-size: 17px;
    font-weight: 800;
    color: var(--primary);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
    transition: color 0.2s ease;
    font-family: inherit;
}

.faq-question-text {
    display: flex;
    align-items: center;
    gap: 12px;
}

.faq-question-text span.emoji {
    font-size: 22px;
    opacity: 0.8;
}

.faq-question:hover {
    color: var(--accent);
}

.faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #eff6ff;
    color: var(--accent);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    font-weight: bold;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s;
}

.faq-item.active .faq-question {
    color: var(--accent);
}

.faq-item.active .faq-icon {
    transform: rotate(45deg);
    background: var(--accent);
    color: #ffffff;
}

.faq-answer {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.faq-answer-inner {
    padding-bottom: 25px;
    padding-left: 34px; /* Wcięcie żeby pasowało do tekstu pod emoji */
    font-size: 15px;
    line-height: 1.7;
    color: var(--text-muted);
}

.faq-answer-inner a {
    color: var(--accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.2s ease;
}

.faq-answer-inner a:hover {
    color: var(--accent-hover);
}

.faq-answer-inner strong {
    color: var(--primary);
    font-weight: 700;
}

@media (max-width: 768px) {
    .faq-header { padding: 30px 25px; }
    .faq-content { padding: 10px 25px 30px 25px; }
    .faq-question { font-size: 15px; padding: 20px 0; }
    .faq-question-text span.emoji { font-size: 18px; }
    .faq-answer-inner { padding-left: 0; }
    .faq-icon { width: 28px; height: 28px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy wymiennik płytowy można zastąpić zaworem mieszającym?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zawór trój- lub czterodrogowy z siłownikiem może zastąpić wymiennik płytowy tylko wtedy, gdy oba obiegi są tego samego typu i nie ma ryzyka zanieczyszczenia. Zawór mieszający nie zapewnia jednak separacji hydraulicznej. W przypadku kotłów stałopalnych z otwartym naczyniem zastosowanie wymiennika jest obowiązkowe."
        }
      },
      {
        "@type": "Question",
        "name": "Jak dobrać moc wymiennika płytowego do podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Moc wymiennika powinna być równa lub nieznacznie wyższa od zapotrzebowania na ciepło. Należy zwracać uwagę na parametry katalogowe, gdyż przy niskich temperaturach zasilania wymiennik np. 30 kW może oddać jedynie 18–22 kW."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki spadek temperatury na wymienniku jest prawidłowy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Po stronie wtórnej (podłogówka) typowy spadek to ΔT = 5–10 K (np. 35/30°C). Po stronie pierwotnej (kocioł) spadek powinien wynosić ok. ΔT = 20 K (np. 75/55°C)."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wymiennik płytowy wymaga konserwacji?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wymienniki lutowane są praktycznie bezobsługowe. Zaleca się montaż separatora zanieczyszczeń na powrocie, a w przypadku spadku wydajności - płukanie chemiczne."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wymiennik płytowy może współpracować z pompą ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, ale jest niezbędny głównie w układach hybrydowych z kotłem gazowym lub podczas modernizacji starej instalacji grzejnikowej. W typowych, nowych układach z pompą ciepła jest on zbędny."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Baza wiedzy Q&A: Wymienniki Płytowe",
    "description": "Zbiór technicznych odpowiedzi dotyczących doboru, eksploatacji i różnic systemowych wymienników ciepła w układach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "name": "Interaktywny Panel FAQ",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "license": "https://projekt-ogrzewania.pl/",
    "description": "Dynamiczny komponent interfejsu (akordeon) pozwalający na szybkie odnalezienie odpowiedzi na najczęściej zadawane pytania inżynierskie.",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-faq-module" id="faq-app-lock">
    <div class="faq-header">
        <h2>Sekcja FAQ – Najczęściej zadawane pytania</h2>
        <p>Błyskawiczne odpowiedzi na dylematy projektowe i montażowe.</p>
    </div>

    <div class="faq-content">
        
        <div class="faq-item">
            <button class="faq-question">
                <div class="faq-question-text">
                    <span class="emoji">🔀</span> Czy wymiennik płytowy można zastąpić zaworem mieszającym?
                </div>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    <a href="https://projekt-ogrzewania.pl/produkt/uklad-mieszajacy-kisan-z-pompa-elektroniczna-wilo/">Układ mieszający</a> z zaworem trój- lub czterodrogowym z siłownikiem może zastąpić wymiennik płytowy w funkcji obniżania temperatury zasilania podłogówki <strong>tylko wtedy, gdy oba obiegi (kocioł i podłogówka) są tego samego typu</strong> (np. oba zamknięte) i nie ma ryzyka zanieczyszczenia podłogówki szlamem z instalacji kotłowej. Zawór mieszający <strong>nie zapewnia separacji hydraulicznej</strong>, więc nie chroni przed skokami ciśnienia ani przedostaniem się tlenu do instalacji z otwartego naczynia wzbiorczego. W przypadku kotłów stałopalnych z otwartym naczyniem, zastosowanie wymiennika jest <strong>obowiązkowe</strong> dla zachowania gwarancji na rury podłogowe.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <div class="faq-question-text">
                    <span class="emoji">⚙️</span> Jak dobrać moc wymiennika płytowego do podłogówki?
                </div>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    Moc wymiennika (w kW) powinna być <strong>równa lub nieznacznie wyższa</strong> od projektowanego zapotrzebowania na ciepło ogrzewanej powierzchni. Należy jednak zwrócić uwagę na <strong>temperatury katalogowe</strong>, przy których moc ta jest deklarowana. Wymiennik o mocy 30 kW przy parametrach 80/60°C po stronie pierwotnej i 40/30°C po stronie wtórnej, przy zasilaniu podłogówki 35/30°C może oddać jedynie <strong>18–22 kW</strong>. Zawsze należy posługiwać się programem doborowym producenta lub tabelami korekcyjnymi, planując wielkość <a href="https://projekt-ogrzewania.pl/produkt/szafka-podtynkowa-do-rozdzielaczy-ogrzewania-podlogowego/">szafki instalacyjnej</a>, aby go pomieścić.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <div class="faq-question-text">
                    <span class="emoji">📉</span> Jaki spadek temperatury na wymienniku jest prawidłowy?
                </div>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    Prawidłowy spadek temperatury zależy od strony wymiennika. Po stronie <strong>wtórnej (podłogówka)</strong> typowy spadek to <strong>ΔT = 5–10 K</strong> (np. 35/30°C). Po stronie <strong>pierwotnej (kocioł)</strong> spadek powinien być wyższy, zazwyczaj <strong>ΔT = 20 K</strong> (np. 75/55°C). Zbyt mały spadek po stronie pierwotnej (np. 75/70°C) świadczy o zbyt dużym przepływie i niedostatecznym wychłodzeniu medium, co obniża sprawność kotła. Odczyt ten zależy również od prawidłowej regulacji na <a href="https://projekt-ogrzewania.pl/produkt/rozdzielacz-mosiezny-do-ogrzewania-podlogowego-z-rotametrami/">rozdzielaczach z rotametrami</a>.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <div class="faq-question-text">
                    <span class="emoji">🛠️</span> Czy wymiennik płytowy wymaga konserwacji?
                </div>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    Wymienniki <strong>lutowane</strong> (nierozbieralne) są praktycznie <strong>bezobsługowe</strong>. Jedyną zalecaną czynnością jest okresowe płukanie chemiczne w przypadku znacznego spadku wydajności spowodowanego osadzaniem się kamienia kotłowego. Wymienniki <strong>skręcane</strong> (rozbieralne) umożliwiają mechaniczne czyszczenie płyt, co jest zalecane co 3–5 lat w instalacjach z twardą wodą.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <div class="faq-question-text">
                    <span class="emoji">📏</span> Jakie przyłącza są standardem w wymiennikach do domów?
                </div>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    Dla instalacji o mocy do 30 kW standardem są przyłącza gwintowane o średnicy <strong>1&#8243;</strong> (cal) lub <strong>5/4&#8243;</strong>. Dla mniejszych instalacji (do 15 kW) spotyka się przyłącza <strong>3/4&#8243;</strong>. Należy bezwzględnie unikać przewężania średnic na podejściu do wymiennika, gdyż zwiększa to prędkość przepływu i hałas w instalacji, niezależnie od tego, jakiej <a href="https://projekt-ogrzewania.pl/produkt/spinka-do-styropianu-do-takera/">spinki montażowej</a> czy metody mocowania rur w podłodze użyto na pętlach.
                </div>
            </div>
        </div>

        <div class="faq-item">
            <button class="faq-question">
                <div class="faq-question-text">
                    <span class="emoji">⚡</span> Czy wymiennik może współpracować z pompą ciepła?
                </div>
                <span class="faq-icon">+</span>
            </button>
            <div class="faq-answer">
                <div class="faq-answer-inner">
                    Tak, ale w specyficznych przypadkach. W standardowej instalacji z pompą ciepła niskotemperaturową (zasilanie 35°C) wymiennik jest <strong>zbędny</strong> i stanowi niepotrzebne źródło strat egzergii (spadek temperatury o 2–5 K). Wymiennik jest natomiast <strong>niezbędny</strong>, gdy pompa ciepła pracuje w układzie hybrydowym z kotłem gazowym lub gdy dobudowujemy podłogówkę do istniejącej sieci wysokotemperaturowej.
                </div>
            </div>
        </div>

    </div>

    <noscript>
        <div style="padding: 20px 45px 30px 45px; background: #fffbeb; color: #b45309; border-top: 1px solid #fde68a;">
            <p style="margin:0; font-size: 14px;"><strong>Uwaga:</strong> Twój system blokuje skrypty. Pełna lista pytań i odpowiedzi (akordeon) może nie działać prawidłowo bez włączonego języka JavaScript.</p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('faq-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten moduł FAQ jest własnością Projekt-Ogrzewania.pl</p><a href="https://projekt-ogrzewania.pl/" style="margin-top: 20px; display: inline-block; padding: 12px 24px; background: #dc2626; color: white; text-decoration: none; border-radius: 8px; font-weight: bold;">ZOBACZ ORYGINAŁ</a></div>';
        }
        return;
    }

    // LOGIKA AKORDEONU
    const faqItems = document.querySelectorAll('.faq-item');

    faqItems.forEach(item => {
        const question = item.querySelector('.faq-question');
        const answer = item.querySelector('.faq-answer');

        question.addEventListener('click', () => {
            const isActive = item.classList.contains('active');

            // Zamykamy wszystkie inne (opcjonalne, odkomentuj jeśli chcesz żeby otwierał się tylko 1 na raz)
            /*
            faqItems.forEach(otherItem => {
                otherItem.classList.remove('active');
                otherItem.querySelector('.faq-answer').style.maxHeight = null;
            });
            */

            // Otwieramy/Zamykamy kliknięty
            if (isActive) {
                item.classList.remove('active');
                answer.style.maxHeight = null;
            } else {
                item.classList.add('active');
                answer.style.maxHeight = answer.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --sum-bg-gradient: linear-gradient(145deg, #1e293b 0%, #0f172a 100%);
    --sum-text: #f8fafc;
    --sum-accent: #3b82f6;
    --sum-danger: #ef4444;
    --sum-warning: #f59e0b;
    --sum-success: #10b981;
}

.premium-summary-box {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--sum-bg-gradient);
    border-radius: 24px;
    box-shadow: 0 30px 60px -15px rgba(0, 0, 0, 0.4);
    border: 1px solid #334155;
    overflow: hidden;
    color: var(--sum-text);
    position: relative;
}

/* Subtelny szum / poświata w tle */
.premium-summary-box::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(59,130,246,0.05) 0%, transparent 60%);
    z-index: 0;
    pointer-events: none;
}

.summary-content {
    position: relative;
    z-index: 1;
    padding: 50px;
}

.summary-header {
    text-align: center;
    margin-bottom: 35px;
}

.summary-icon {
    font-size: 56px;
    line-height: 1;
    margin-bottom: 20px;
    display: inline-block;
    filter: drop-shadow(0 4px 6px rgba(0,0,0,0.3));
}

.summary-header h2 {
    margin: 0 0 15px 0;
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.summary-text {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    text-align: center;
    max-width: 800px;
    margin: 0 auto 30px auto;
}

.summary-text strong {
    color: #ffffff;
    font-weight: 700;
}

.summary-text a {
    color: var(--sum-accent);
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.2s ease;
}

.summary-text a:hover {
    color: #60a5fa;
}

/* WIZUALNA WAGA RYZYKA */
.risk-scale-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin: 40px 0;
}

.risk-card {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 16px;
    padding: 30px;
    text-align: center;
    transition: transform 0.3s ease;
}

.risk-card:hover {
    transform: translateY(-5px);
    background: rgba(255, 255, 255, 0.05);
}

.risk-card.bad-choice {
    border-bottom: 4px solid var(--sum-danger);
}

.risk-card.good-choice {
    border-bottom: 4px solid var(--sum-success);
}

.risk-label {
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    font-weight: 800;
    margin-bottom: 15px;
    display: block;
}

.bad-choice .risk-label { color: #fca5a5; }
.good-choice .risk-label { color: #6ee7b7; }

.risk-value {
    font-size: 36px;
    font-weight: 900;
    color: #ffffff;
    margin-bottom: 10px;
    display: block;
}

.risk-desc {
    font-size: 14px;
    color: #94a3b8;
    line-height: 1.5;
    margin: 0;
}

.risk-desc a {
    color: var(--sum-accent);
    text-decoration: none;
    font-weight: 600;
}

/* CTA BUTTONS */
.summary-actions {
    display: flex;
    justify-content: center;
    gap: 20px;
    margin-top: 40px;
    flex-wrap: wrap;
}

.sum-btn {
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    transition: all 0.3s ease;
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.sum-btn-primary {
    background: var(--sum-accent);
    color: #ffffff !important;
    box-shadow: 0 10px 20px -5px rgba(59, 130, 246, 0.5);
    border: 1px solid #60a5fa;
}

.sum-btn-primary:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 25px -5px rgba(59, 130, 246, 0.6);
    background: #2563eb;
}

.sum-btn-secondary {
    background: transparent;
    color: #ffffff !important;
    border: 2px solid #475569;
}

.sum-btn-secondary:hover {
    border-color: #cbd5e1;
    background: rgba(255, 255, 255, 0.05);
}

@media (max-width: 768px) {
    .summary-content { padding: 40px 25px; }
    .risk-scale-grid { grid-template-columns: 1fr; gap: 15px; }
    .summary-actions { flex-direction: column; width: 100%; gap: 15px; }
    .sum-btn { justify-content: center; width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "headline": "Podsumowanie: Dlaczego warto rozumieć zasadę działania wymiennika płytowego?",
    "abstract": "Zrozumienie zasady działania wymiennika płytowego w ogrzewaniu podłogowym to fundament świadomego projektowania. Prawidłowy dobór urządzenia gwarantuje ochronę instalacji i maksymalną efektywność energetyczną budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "name": "Analiza wartości wymiennika płytowego w instalacji",
    "description": "Zestawienie porównawcze kosztu zakupu wymiennika płytowego do wartości całej instalacji ogrzewania podłogowego, którą zabezpiecza.",
    "license": "https://projekt-ogrzewania.pl/",
    "variableMeasured": [
      {
        "@type": "PropertyValue",
        "name": "Koszt ubezpieczenia (Wymiennik)",
        "value": "300 - 800 PLN",
        "description": "Jednorazowy koszt urządzenia zapewniającego separację hydrauliczną i redukcję temperatury."
      },
      {
        "@type": "PropertyValue",
        "name": "Wartość chroniona (Instalacja)",
        "value": "15 000 - 30 000 PLN",
        "description": "Szacunkowa wartość rur, wylewki i robocizny, która jest chroniona przed zniszczeniem termicznym."
      }
    ],
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    }
  }
]
</script>

<div class="premium-summary-box" id="summary-app-lock">
    <div class="summary-content">
        
        <div class="summary-header">
            <span class="summary-icon">🏁</span>
            <h2>Podsumowanie: Strażnik Twojej Instalacji</h2>
        </div>

        <p class="summary-text">
            Zrozumienie <strong>zasady działania wymiennika płytowego w ogrzewaniu podłogowym</strong> wykracza poza czystą ciekawość techniczną. Jest to fundament świadomego projektowania i eksploatacji nowoczesnych, energooszczędnych systemów grzewczych. Wiedza o przepływie przeciwprądowym, średniej logarytmicznej różnicy temperatur i krytycznych parametrach doboru pozwala uniknąć kosztownych błędów wykonawczych, które w przypadku instalacji zatopionej w posadzce są praktycznie nieodwracalne.
        </p>

        <div class="risk-scale-grid">
            <div class="risk-card good-choice">
                <span class="risk-label">Koszt polisy</span>
                <span class="risk-value">300–800 zł</span>
                <p class="risk-desc">Inwestycja w prawidłowo dobrany wymiennik to ułamek budżetu. To tania polisa chroniąca przed awarią serca układu hydraulicznego.</p>
            </div>
            <div class="risk-card bad-choice" style="border-bottom-color: #3b82f6;"> <span class="risk-label">Chroniony majątek</span>
                <span class="risk-value">Wysoki</span>
                <p class="risk-desc">Wymiennik zabezpiecza układ opisany w <a href="https://projekt-ogrzewania.pl/kompleksowa-wycena-ogrzewania-podlogowego-wodnego-na-co-przygotowac-budzet/">kompleksowej wycenie instalacji</a>, warty nierzadko dziesiątki tysięcy złotych.</p>
            </div>
        </div>

        <p class="summary-text">
            W kontekście rosnących wymagań normy PN-EN 1264 oraz dążenia do maksymalnej efektywności energetycznej budynków, rola wymiennika jako <strong>strażnika temperatury i czystości hydraulicznej</strong> będzie wyłącznie rosła, nierzadko przewyższając funkcjonalnością tradycyjne <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>.
        </p>

        <div class="summary-actions">
            <a href="https://projekt-ogrzewania.pl/blog/" class="sum-btn sum-btn-primary">
                📖 CZYTAJ NASZ BLOG
            </a>
        </div>

    </div>

    <noscript>
        <div style="padding: 30px; background: #0f172a; border-top: 1px solid #334155; font-family: sans-serif; color: #cbd5e1;">
            <h3 style="color: #ffffff; margin-top: 0;">Analiza ekonomiczna zastosowania wymiennika płytowego</h3>
            <table style="width: 100%; border-collapse: collapse; font-size: 14px; text-align: left; margin-bottom: 20px;">
                <thead>
                    <tr style="border-bottom: 2px solid #334155;">
                        <th style="padding: 10px 0; color: #94a3b8;">Element analizy</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Wartość szacunkowa</th>
                        <th style="padding: 10px 0; color: #94a3b8;">Znaczenie w systemie</th>
                    </tr>
                </thead>
                <tbody>
                    <tr style="border-bottom: 1px solid #1e293b;">
                        <td style="padding: 10px 0; font-weight: bold;">Zakup wymiennika</td>
                        <td style="padding: 10px 0; color: #10b981;">300 &#8211; 800 PLN</td>
                        <td style="padding: 10px 0;">Niski koszt początkowy stanowiący polisę ochronną.</td>
                    </tr>
                    <tr>
                        <td style="padding: 10px 0; font-weight: bold;">Zabezpieczona instalacja</td>
                        <td style="padding: 10px 0; color: #3b82f6;">Dziesiątki tysięcy PLN</td>
                        <td style="padding: 10px 0;">Ochrona rur PEX/PERT oraz wylewki przed zniszczeniem termicznym.</td>
                    </tr>
                </tbody>
            </table>
            <p style="font-size: 13px; line-height: 1.6;">
                Wiedza o przepływie przeciwprądowym i parametrach wymiennika zapobiega błędom wykonawczym, wspierając bezpieczną eksploatację zgodnie z normą PN-EN 1264.
            </p>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // BLOKADA DOMENOWA
    var domain = window.location.hostname;
    var allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (allowedDomains.indexOf(domain) === -1) {
        var appContainer = document.getElementById('summary-app-lock');
        if (appContainer) {
            appContainer.innerHTML = '<div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px;"><span style="font-size: 48px; display: block; margin-bottom: 15px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight: bold; margin-bottom: 10px;">Treść chroniona</div><p>Ten moduł jest własnością Projekt-Ogrzewania.pl</p></div>';
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">Zasada działania wymiennika płytowego w ogrzewaniu podłogowym.</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>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-panel: #1e293b;
    --rk-intro-brand: #2563eb;
    --rk-intro-brand-light: #eff6ff;
    --rk-intro-accent: #f97316;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-success: #10b981;
}

.rk-intro-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.1);
    border: 1px solid var(--rk-intro-border);
    overflow: hidden;
}

/* Sekcja Główna - Hook & Tytuł */
.rk-intro-header {
    padding: 50px 50px 40px 50px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-intro-brand);
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-intro-dark);
    color: #ffffff;
    padding: 8px 18px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    box-shadow: 0 4px 10px rgba(15, 23, 42, 0.15);
}

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    line-height: 1.25;
    margin: 0 0 25px 0;
}

.rk-intro-title span {
    color: var(--rk-intro-brand);
}

/* Hook Section */
.rk-intro-hook-box {
    background: #ffffff;
    border-left: 5px solid var(--rk-intro-accent);
    padding: 25px 30px;
    border-radius: 0 16px 16px 0;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    margin-bottom: 30px;
}

.rk-intro-hook-box p {
    margin: 0;
    font-size: 17px;
    line-height: 1.7;
    color: var(--rk-intro-text);
    font-weight: 500;
}

.rk-intro-hook-box strong {
    color: var(--rk-intro-dark);
    font-weight: 800;
}

.rk-intro-description {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-intro-text);
    margin: 0;
}

/* Sekcja Czego się dowiesz (Kafelki) */
.rk-intro-learn-section {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-intro-learn-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-intro-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-intro-card {
    background: var(--rk-intro-brand-light);
    border: 1px solid #bfdbfe;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
}

.rk-intro-card-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-intro-brand);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    color: #ffffff;
}

.rk-intro-card-content h4 {
    margin: 0 0 8px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-intro-card-content p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-intro-text);
}

/* Author Tag */
.rk-intro-author {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-top: 30px;
    padding-top: 25px;
    border-top: 1px solid var(--rk-intro-border);
}

.rk-intro-author-avatar {
    width: 45px;
    height: 45px;
    border-radius: 50%;
    border: 2px solid var(--rk-intro-brand);
    object-fit: cover;
}

.rk-intro-author-info span {
    display: block;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-intro-author-info small {
    font-size: 12px;
    color: var(--rk-intro-muted);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

@media (max-width: 768px) {
    .rk-intro-header { padding: 35px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-intro-hook-box { padding: 20px; }
    .rk-intro-learn-section { padding: 35px 25px; }
    .rk-intro-grid { grid-template-columns: 1fr; }
    .rk-intro-card { padding: 20px; flex-direction: column; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-intro",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie?",
    "description": "Zanim wydasz pieniądze na pompę ciepła, poznaj inżynierskie metody szacowania mocy. Kompletny przewodnik po obliczeniach OZC dla inwestorów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-intro",
    "name": "Parametry wejściowe do obliczeń zapotrzebowania cieplnego budynku",
    "description": "Baza wiedzy definiująca podstawowe składowe analizy cieplnej budynków jednorodzinnych: izolacyjność, wentylację oraz założenia projektowe.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła",
      "obliczanie zapotrzebowania na ogrzewanie",
      "moc pompy ciepła",
      "projekt ogrzewania podłogowego",
      "obciążenie cieplne budynku"
    ],
    "measurementTechnique": "Przegląd inżynierski: Weryfikacja parametrów izolacyjnych, mostków termicznych oraz wentylacyjnych wpływających na dobór źródła ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metodyka określania mocy cieplnej bez ryzyka przewymiarowania instalacji.",
        "Analiza parametrów przegród (U) i ich wpływ na całkowite zapotrzebowanie.",
        "Zasady doboru rozstawu rur grzewczych na podstawie wyniku W/m2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-intro",
    "name": "Przewodnik: Kalkulator Strat Ciepła",
    "description": "Edukacyjny moduł wprowadzający inwestora do zagadnień fizyki budowli, stanowiący mapę drogową do samodzielnego szacowania obciążenia cieplnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-wrapper">
    
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
            Kompendium Inwestora
        </div>
        
        <h2 class="rk-intro-title">Kalkulator strat ciepła budynku – <span>jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie?</span></h2>
        
        <div class="rk-intro-hook-box">
            <p><strong>Zanim wydasz kilkadziesiąt tysięcy złotych</strong> na pompę ciepła lub instalację podłogówki, musisz znać jedną, absolutnie fundamentalną liczbę: rzeczywiste obciążenie cieplne Twojego domu. Dobór źródła ciepła „na oko” to najprostsza droga do drastycznego przewymiarowania systemu, ciągłych awarii sprężarki i gigantycznych rachunków za prąd.</p>
        </div>

        <p class="rk-intro-description">Planowanie ogrzewania podłogowego w nowym domu lub podczas modernizacji starej instalacji zawsze rozpoczyna się od kluczowego pytania: jak samodzielnie obliczyć straty ciepła budynku pod ogrzewanie podłogowe, aby mieć pewność, że system będzie działał efektywnie? Właśnie w tym pomaga <strong>kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie</strong>, który pozwala w prosty sposób oszacować, ile energii potrzebuje budynek do utrzymania komfortowej temperatury. Narzędzie to, opierając się na uproszczonych algorytmach inżynierskich, pozwala inwestorowi na precyzyjne określenie mocy źródła ciepła.</p>
        
        <div class="rk-intro-author">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-intro-author-avatar" loading="lazy">
            <div class="rk-intro-author-info">
                <span>Jako wieloletni praktyk i twórca tego poratlu, w tym artykule przeprowadzę Cię przez cały proces matematyczny.</span>
                <small>Robert Kucharski, CEO projekt-ogrzewania.pl</small>
            </div>
        </div>
    </div>

    <div class="rk-intro-learn-section">
        <h3 class="rk-intro-learn-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-intro-accent)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Z tego poradnika dowiesz się:
        </h3>
        
        <div class="rk-intro-grid">
            
            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line><line x1="12" y1="14" x2="12.01" y2="14"></line><line x1="8" y1="14" x2="8.01" y2="14"></line><line x1="16" y1="18" x2="16.01" y2="18"></line><line x1="12" y1="18" x2="12.01" y2="18"></line><line x1="8" y1="18" x2="8.01" y2="18"></line></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Algorytmy i Narzędzia</h4>
                    <p>Jak w uproszczony sposób korzystać ze wzorów na przenikanie (U) oraz straty wentylacyjne, bez konieczności opłacania drogich audytów na wczesnym etapie inwestycji.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Diagnostyka Przegród</h4>
                    <p>Zrozumiesz, dlaczego gruby styropian to nie wszystko, jak obliczyć opór cieplny paneli podłogowych i jak strefa klimatyczna wpływa na bilans Twojego domu.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polygon points="12 2 22 20 2 20 12 2"></polygon><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Najdroższe Błędy Inwestorów</h4>
                    <p>Dowiesz się, jakich 6 najczęstszych pomyłek (np. zła kubatura, brak izolacji brzegowej) unikać podczas szacowania mocy, aby nie zawyżyć sztucznie kosztów instalacji.</p>
                </div>
            </div>

            <div class="rk-intro-card">
                <div class="rk-intro-card-icon">
                    <svg width="26" height="26" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M4 6h16M4 12h16M4 18h16"></path><path d="M12 2v20"></path></svg>
                </div>
                <div class="rk-intro-card-content">
                    <h4>Przełożenie na Projekt</h4>
                    <p>Zobaczysz, jak uzyskane Waty na metr kwadratowy (W/m²) bezpośrednio decydują o zagęszczeniu rur (co 10 czy 15 cm), długości pętli i ustawieniach rotametrów.</p>
                </div>
            </div>

        </div>
    </div>

</div>



<style>
:root {
    --rk-wt-dark: #0f172a;
    --rk-wt-panel: #1e293b;
    --rk-wt-brand: #0ea5e9; /* Główny niebieski */
    --rk-wt-brand-light: #f0f9ff;
    --rk-wt-accent: #f97316; /* Pomarańczowy dla ciepła */
    --rk-wt-success: #10b981;
    --rk-wt-warn: #f59e0b;
    --rk-wt-danger: #ef4444;
    --rk-wt-bg: #ffffff;
    --rk-wt-border: #e2e8f0;
    --rk-wt-text: #334155;
    --rk-wt-muted: #64748b;
}

.rk-wt-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-wt-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.15);
    border: 1px solid rgba(14, 165, 233, 0.3);
    overflow: hidden;
    color: var(--rk-wt-dark);
}

/* Nagłówek Sekcji */
.rk-wt-header {
    background: linear-gradient(135deg, var(--rk-wt-dark) 0%, #082f49 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-wt-brand);
}

.rk-wt-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(14, 165, 233, 0.2);
    color: #38bdf8;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.2);
}

.rk-wt-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
}

.rk-wt-title span { color: #38bdf8; }

.rk-wt-direct-box {
    background: rgba(255, 255, 255, 0.05);
    border-left: 4px solid var(--rk-wt-accent);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
}

.rk-wt-direct-box p {
    margin: 0 0 10px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #e0f2fe;
}

.rk-wt-direct-box p:last-child { margin: 0; }
.rk-wt-direct-box strong { color: #ffffff; }

/* Sekcja Interaktywna */
.rk-wt-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-wt-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-wt-dark);
    margin: 0 0 10px 0;
}

.rk-wt-subtitle {
    text-align: center;
    font-size: 15px;
    color: var(--rk-wt-muted);
    margin: 0 0 35px 0;
}

/* Przełącznik Budynków */
.rk-wt-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

.rk-wt-tab-btn {
    background: #ffffff;
    border: 2px solid var(--rk-wt-border);
    border-radius: 16px;
    padding: 15px;
    text-align: center;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-wt-tab-btn:hover {
    border-color: var(--rk-wt-brand);
    transform: translateY(-3px);
}

.rk-wt-tab-btn.active {
    border-color: var(--rk-wt-brand);
    background: var(--rk-wt-brand-light);
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.2);
}

.rk-wt-tab-icon {
    width: 40px;
    height: 40px;
    background: #f1f5f9;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-wt-muted);
    transition: 0.3s;
}

.rk-wt-tab-btn.active .rk-wt-tab-icon {
    background: var(--rk-wt-brand);
    color: #ffffff;
}

.rk-wt-tab-text {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-wt-dark);
}

/* Grid Wyników i Animacji */
.rk-wt-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

/* Kafelki z danymi (Zastępują Tabelę) */
.rk-wt-data-wrapper {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-wt-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-wt-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-wt-data-card.highlight {
    background: var(--rk-wt-dark);
    border-color: var(--rk-wt-dark);
}

.rk-wt-data-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-wt-muted);
}

.rk-wt-data-card.highlight .rk-wt-data-label {
    color: #94a3b8;
}

.rk-wt-data-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-wt-dark);
    text-align: right;
}

.rk-wt-data-card.highlight .rk-wt-data-val {
    color: #ffffff;
    font-size: 20px;
}

/* SVG Symulator */
.rk-wt-visual {
    background: var(--rk-wt-dark);
    border-radius: 16px;
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
}

.rk-wt-svg { width: 100%; height: 100%; }

/* Animacje i stany SVG */
.anim-heat-floor { transition: fill 0.5s ease; }
.anim-heat-escape { transition: opacity 0.5s ease; stroke-dasharray: 6 6; }
.anim-warning-sign { opacity: 0; transition: opacity 0.3s; transform-origin: center; }

/* Stan: Nowy Dom */
.state-new .anim-heat-floor { fill: #f59e0b; }
.state-new .anim-heat-escape { opacity: 0.2; stroke: #f59e0b; animation: floatHeat 3s linear infinite; }

/* Stan: Modernizacja */
.state-mod .anim-heat-floor { fill: #ea580c; }
.state-mod .anim-heat-escape { opacity: 0.6; stroke: #ea580c; animation: floatHeat 2s linear infinite; stroke-width: 4; }

/* Stan: Stary Dom */
.state-old .anim-heat-floor { fill: #ef4444; }
.state-old .anim-heat-escape { opacity: 1; stroke: #ef4444; animation: floatHeat 1s linear infinite; stroke-width: 6; }
.state-old .anim-warning-sign { opacity: 1; animation: pulseWarn 1s infinite alternate; }

@keyframes floatHeat { to { stroke-dashoffset: -20; } }
@keyframes pulseWarn { from { transform: scale(0.9); } to { transform: scale(1.1); } }

/* Podsumowanie tekstowe */
.rk-wt-summary {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-wt-summary-box {
    background: #ffffff;
    border: 1px solid var(--rk-wt-border);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-wt-summary-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-wt-brand-light);
    color: var(--rk-wt-brand);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-wt-summary-text p {
    margin: 0 0 10px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-wt-text);
}

.rk-wt-link {
    color: var(--rk-wt-brand);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 2px dashed rgba(14, 165, 233, 0.4);
    transition: 0.3s;
    font-size: 14px;
}

.rk-wt-link:hover {
    color: #0284c7;
    border-bottom-style: solid;
}

@media (max-width: 768px) {
    .rk-wt-header { padding: 35px 20px; }
    .rk-wt-title { font-size: 24px; }
    .rk-wt-direct-box { padding: 15px; }
    .rk-wt-interactive { padding: 30px 20px; }
    .rk-wt-tabs { grid-template-columns: 1fr; gap: 10px; }
    .rk-wt-tab-btn { flex-direction: row; padding: 12px 20px; }
    .rk-wt-grid { grid-template-columns: 1fr; }
    .rk-wt-data-card { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-wt-data-val { text-align: left; }
    .rk-wt-visual { min-height: 220px; }
    .rk-wt-summary { padding: 0 20px 30px 20px; }
    .rk-wt-summary-box { flex-direction: column; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-w-m2",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Ile watów ogrzewania podłogowego na metr kwadratowy (W/m²) potrzebuje nowoczesny dom?",
    "description": "Analiza wskaźników zapotrzebowania cieplnego budynku W/m2 według standardów WT 2021 oraz normy PN-EN 1264. Sprawdź limity mocy dla ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-w-m2",
    "name": "Wskaźniki zapotrzebowania na ciepło W/m2 (Tabela techniczna)",
    "description": "Zestawienie współczynników przenikania ciepła przegród oraz jednostkowego zapotrzebowania na moc grzewczą w zależności od standardu budynku (Nowy, Po termomodernizacji, Stary).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zapotrzebowanie na ciepło W/m2",
      "moc ogrzewania podłogowego z m2",
      "maksymalna temperatura podłogówki",
      "norma PN-EN 1264",
      "współczynnik przenikania U ściany"
    ],
    "measurementTechnique": "Dane tabelaryczne określające relację między izolacyjnością budynku a wymaganą gęstością i temperaturą zasilania układu płaszczyznowego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Nowy dom WT 2021: 45 W/m2, U ściany 0.15-0.18, zasilanie 30-35°C (Idealne)",
        "Dom z lat 90 po ociepleniu: 75 W/m2, U ściany 0.25-0.30 (Warunkowe, gęsty rozstaw)",
        "Stary dom: 160 W/m2, U ściany 1.20-1.50 (Brak możliwości samej podłogówki)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-w-m2",
    "name": "Symulator Standardu Energetycznego W/m2",
    "description": "Interaktywny panel prezentujący limity mocy grzewczej i ryzyko przegrzania posadzki w zależności od izolacji termicznej budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-wt-container" id="rk-wt-app">
    
    <div class="rk-wt-header">
        <div class="rk-wt-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Bilans Mocy W/m²
        </div>
        <h2 class="rk-wt-title">Ile watów ogrzewania podłogowego na metr kwadratowy (W/m²) <span>potrzebuje nowoczesny dom?</span></h2>
        
        <div class="rk-wt-direct-box">
            <p><strong>Bezpośrednia odpowiedź:</strong> Nowoczesny dom jednorodzinny spełniający standardy WT 2021 wykazuje jednostkowe zapotrzebowanie na ciepło na poziomie od <strong>40 W/m² do 50 W/m²</strong> w najzimniejszy dzień roku. Maksymalna dopuszczalna norma emisji ciepła przez podłogę w strefie stałego przebywania ludzi wynosi <strong>80 W/m²</strong> (reguluje to międzynarodowa norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" style="color:#7dd3fc;">PN-EN 1264</a>).</p>
            <p>Gdy zapotrzebowanie przekracza bezpieczną granicę (np. w starych domach), posadzka staje się zbyt gorąca. Wymuszanie mocy powyżej 100 W/m² z samej podłogówki prowadzi do temperatur rzędu 32-35°C, co wywołuje syndrom „ciężkich nóg” i pękanie okładzin.</p>
        </div>
    </div>

    

    <div class="rk-wt-interactive">
        <h3>Wskaźniki zapotrzebowania na ciepło</h3>
        <p class="rk-wt-subtitle">Wybierz standard izolacji swojego budynku, aby sprawdzić parametry dla przykładowego domu 150 m².</p>
        
        <div class="rk-wt-tabs">
            <div class="rk-wt-tab-btn active" onclick="rkUpdateWT('new')">
                <div class="rk-wt-tab-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg></div>
                <div class="rk-wt-tab-text">Nowy Dom<br><span style="font-size:11px; font-weight:normal; color:var(--rk-wt-muted)">WT 2021 / 2026</span></div>
            </div>
            <div class="rk-wt-tab-btn" onclick="rkUpdateWT('mod')">
                <div class="rk-wt-tab-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-wt-tab-text">Po modernizacji<br><span style="font-size:11px; font-weight:normal; color:var(--rk-wt-muted)">Docieplony (Lata 90.)</span></div>
            </div>
            <div class="rk-wt-tab-btn" onclick="rkUpdateWT('old')">
                <div class="rk-wt-tab-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg></div>
                <div class="rk-wt-tab-text">Stary Dom<br><span style="font-size:11px; font-weight:normal; color:var(--rk-wt-muted)">Brak izolacji</span></div>
            </div>
        </div>

        <div class="rk-wt-grid">
            
            <div class="rk-wt-data-wrapper">
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Współczynnik U ściany</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-uwall">0,15 – 0,18</span> <span style="font-size:12px; color:var(--rk-wt-muted)">W/(m²·K)</span></span>
                </div>
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Współczynnik U okien</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-uwin">0,80 – 0,90</span> <span style="font-size:12px; color:var(--rk-wt-muted)">W/(m²·K)</span></span>
                </div>
                <div class="rk-wt-data-card highlight" id="card-req">
                    <span class="rk-wt-data-label">Średnie zapotrzebowanie</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-req">45</span> <span style="font-size:14px;">W/m²</span></span>
                </div>
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Całkowita moc dla 150 m²</span>
                    <span class="rk-wt-data-val"><span id="rk-wt-tot">6,75</span> <span style="font-size:12px; color:var(--rk-wt-muted)">kW</span></span>
                </div>
                <div class="rk-wt-data-card">
                    <span class="rk-wt-data-label">Zdatność do podłogówki</span>
                    <span class="rk-wt-data-val" id="rk-wt-stat" style="font-size:14px;">Idealna (zasilanie 30-35°C)</span>
                </div>
            </div>

            <div class="rk-wt-visual state-new" id="rk-wt-svg-box">
                <svg class="rk-wt-svg" viewBox="0 0 200 150">
                    <rect x="20" y="40" width="160" height="90" fill="none" stroke="#64748b" stroke-width="4" />
                    <rect x="140" y="50" width="40" height="50" fill="rgba(56, 189, 248, 0.1)" stroke="#38bdf8" stroke-width="2" />
                    
                    <rect class="anim-heat-floor" x="20" y="120" width="160" height="10" />
                    <circle cx="40" cy="125" r="3" fill="#ffffff" />
                    <circle cx="70" cy="125" r="3" fill="#ffffff" />
                    <circle cx="100" cy="125" r="3" fill="#ffffff" />
                    <circle cx="130" cy="125" r="3" fill="#ffffff" />
                    <circle cx="160" cy="125" r="3" fill="#ffffff" />

                    <path class="anim-heat-escape" d="M 60 40 L 60 10" fill="none" stroke-width="2" />
                    <path class="anim-heat-escape" d="M 100 40 L 100 10" fill="none" stroke-width="2" />
                    
                    <path class="anim-heat-escape" d="M 180 60 L 220 60" fill="none" stroke-width="2" />
                    <path class="anim-heat-escape" d="M 180 80 L 220 80" fill="none" stroke-width="2" />

                    <g class="anim-warning-sign" transform="translate(100, 80)">
                        <polygon points="0,-20 -20,15 20,15" fill="#ef4444" stroke="#ffffff" stroke-width="2"/>
                        <text x="0" y="10" fill="#ffffff" font-size="20" font-weight="bold" text-anchor="middle">!</text>
                    </g>
                </svg>
            </div>

        </div>
    </div>

    <div class="rk-wt-summary">
        <div class="rk-wt-summary-box">
            <div class="rk-wt-summary-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><path d="M12 8v4l3 3"></path></svg>
            </div>
            <div class="rk-wt-summary-text">
                <p>Jeśli z obliczeń w Twoim arkuszu lub audycie wynika wskaźnik na poziomie <strong>40-50 W/m²</strong>, system płaszczyznowy będzie pracował w trybie niskotemperaturowym. Oznacza to zużywanie absolutnie minimalnej ilości energii elektrycznej przez pompę ciepła lub gazu w kotle kondensacyjnym.</p>
                <p>Przy wysokich stratach (np. 160 W/m²), sama podłogówka nie wystarczy. Pamiętaj, by nie przegrzewać posadzki i zadbać o izolację. Przeczytaj również, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/" class="rk-wt-link">czy podłogówka może być jedynym źródłem ciepła w domu</a> oraz dowiedz się, <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/" class="rk-wt-link">jaka jest optymalna temperatura posadzki</a> dla zdrowia mieszkańców.</p>
            </div>
        </div>
    </div>

</div>

<script>
const houseData = {
    new: {
        wU: '0,15 – 0,18', winU: '0,80 – 0,90', req: '45', tot: '6,75', stat: 'Idealna (zasilanie 30-35°C)',
        color: '#10b981', stateClass: 'state-new'
    },
    mod: {
        wU: '0,25 – 0,30', winU: '1,30 – 1,60', req: '75', tot: '11,25', stat: 'Warunkowa (gęsty rozstaw)',
        color: '#f59e0b', stateClass: 'state-mod'
    },
    old: {
        wU: '1,20 – 1,50', winU: '2,50 – 3,00', req: '160', tot: '24,00', stat: 'Brak (wymagane grzejniki)',
        color: '#ef4444', stateClass: 'state-old'
    }
};

function rkUpdateWT(type) {
    const btns = document.querySelectorAll('.rk-wt-tab-btn');
    btns.forEach(b => b.classList.remove('active'));
    event.currentTarget.classList.add('active');

    const data = houseData[type];
    
    document.getElementById('rk-wt-uwall').innerText = data.wU;
    document.getElementById('rk-wt-uwin').innerText = data.winU;
    document.getElementById('rk-wt-req').innerText = data.req;
    document.getElementById('rk-wt-tot').innerText = data.tot;
    
    const statEl = document.getElementById('rk-wt-stat');
    statEl.innerText = data.stat;
    statEl.style.color = data.color;

    const reqCard = document.getElementById('card-req');
    reqCard.style.backgroundColor = data.color;
    reqCard.style.borderColor = data.color;

    const svgBox = document.getElementById('rk-wt-svg-box');
    svgBox.className = 'rk-wt-visual ' + data.stateClass;
}
</script>



<style>
:root {
    --rk-zone-dark: #0f172a;
    --rk-zone-panel: #1e293b;
    --rk-zone-brand: #0284c7; 
    --rk-zone-brand-light: #e0f2fe;
    --rk-zone-accent: #f59e0b; /* Pomarańcz - Ciepło wewnątrz */
    --rk-zone-freeze: #3b82f6; /* Błękit - Zimno na zewnątrz */
    --rk-zone-bg: #ffffff;
    --rk-zone-border: #e2e8f0;
    --rk-zone-text: #334155;
    --rk-zone-muted: #64748b;
}

.rk-zone-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-zone-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    overflow: hidden;
    color: var(--rk-zone-dark);
}

/* Nagłówek Sekcji */
.rk-zone-header {
    background: linear-gradient(135deg, var(--rk-zone-dark) 0%, #082f49 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-zone-brand);
}

.rk-zone-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-zone-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-zone-header h2 span { color: #38bdf8; }

.rk-zone-direct {
    font-size: 15px;
    line-height: 1.7;
    color: #e0f2fe;
    margin: 0;
    padding-left: 20px;
    border-left: 3px solid var(--rk-zone-accent);
}

.rk-zone-direct strong {
    color: #ffffff;
}

/* Moduł Interaktywny */
.rk-zone-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-zone-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 35px;
    align-items: center;
}

/* Kontrolki - Suwak Stref */
.rk-zone-controls {
    background: #ffffff;
    border: 1px solid var(--rk-zone-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

.rk-zone-ctrl-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 25px;
}

.rk-zone-ctrl-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-zone-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0;
}

.rk-zone-val-display {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-zone-brand);
    line-height: 1;
}

.rk-zone-slider-wrap {
    position: relative;
    padding: 20px 0;
}

.rk-zone-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: linear-gradient(to right, #7dd3fc, #1e3a8a);
    border-radius: 4px;
    outline: none;
}

.rk-zone-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-zone-brand);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.3);
    transition: transform 0.1s;
}

.rk-zone-range::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

.rk-zone-markers {
    display: flex;
    justify-content: space-between;
    margin-top: 10px;
    font-size: 11px;
    font-weight: 700;
    color: var(--rk-zone-muted);
}

/* Wyniki (Kafelki) */
.rk-zone-data-box {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-top: 25px;
}

.rk-zone-card {
    background: #f1f5f9;
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-left: 4px solid var(--rk-zone-brand);
}

.rk-zone-card-label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-zone-text);
}

.rk-zone-card-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-zone-dark);
}

.rk-zone-card-val span {
    font-size: 12px;
    color: var(--rk-zone-muted);
}

/* Prawa Kolumna - SVG Wizualizacja */
.rk-zone-visual {
    background: var(--rk-zone-dark);
    border-radius: 20px;
    height: 100%;
    min-height: 320px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid #334155;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}

.rk-zone-svg {
    width: 100%;
    height: 100%;
}

/* Bloki Tekstowe z Obliczeniami */
.rk-zone-content {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-zone-content h3 {
    margin: 0 0 20px 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-zone-dark);
}

.rk-zone-formula-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-zone-formula-box {
    background: #ffffff;
    border: 1px solid var(--rk-zone-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-zone-formula-box h4 {
    margin: 0 0 10px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-zone-brand);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-zone-formula-box p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-zone-text);
}

.rk-math-block {
    background: #f1f5f9;
    padding: 12px 15px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 13px;
    color: var(--rk-zone-dark);
    border-left: 3px solid var(--rk-zone-accent);
}

.rk-math-block b {
    color: #ef4444;
}

.rk-zone-alert {
    margin-top: 25px;
    padding: 20px;
    background: #fffbeb;
    border: 1px solid #fde68a;
    border-radius: 12px;
    color: #92400e;
    font-size: 14px;
    line-height: 1.6;
    display: flex;
    gap: 15px;
}

.rk-zone-link {
    color: var(--rk-zone-brand);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 2px dashed rgba(2, 132, 199, 0.4);
    transition: 0.3s;
}

.rk-zone-link:hover {
    color: #0369a1;
    border-bottom-style: solid;
}

/* Animacje SVG */
.anim-thermo-fluid { transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1), fill 0.5s; transform-origin: bottom; }
.anim-frost { transition: opacity 0.5s; }
.anim-heat-wave { stroke-dasharray: 6 6; animation: flowHeat 1.5s linear infinite; }
@keyframes flowHeat { to { stroke-dashoffset: -12; } }

@media (max-width: 768px) {
    .rk-zone-header { padding: 35px 25px; }
    .rk-zone-interactive { padding: 30px 25px; }
    .rk-zone-grid { grid-template-columns: 1fr; }
    .rk-zone-content { padding: 0 25px 30px 25px; }
    .rk-zone-formula-grid { grid-template-columns: 1fr; }
    .rk-zone-visual { min-height: 250px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-strefy-klimatyczne",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak strefa klimatyczna w Polsce wpływa na wynik kalkulatora strat ciepła?",
    "description": "Zobacz, jak błędne przyjęcie projektowej temperatury zewnętrznej według normy PN-EN 12831 powoduje niedoszacowanie instalacji nawet o 22%.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-strefy",
    "name": "Wpływ Stref Klimatycznych na Projektowe Obciążenie Cieplne",
    "description": "Dane z normy PN-EN 12831 obrazujące wahania zapotrzebowania cieplnego w zależności od przypisanej strefy klimatycznej w Polsce (od I do V).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "strefy klimatyczne w Polsce",
      "norma PN-EN 12831",
      "projektowa temperatura zewnętrzna",
      "dobór mocy pompy ciepła",
      "kalkulator strat ciepła strefy"
    ],
    "measurementTechnique": "Analiza różnic w obciążeniu cieplnym ściany o stałym współczynniku przenikania (U=0,20) w funkcji strefy klimatycznej (ΔT od 36 K do 44 K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa I (Świnoujście): -16°C. Różnica temperatur (ΔT) wynosi 36 K.",
        "Strefa III (Polska Centralna): -20°C. Różnica temperatur (ΔT) wynosi 40 K.",
        "Strefa V (Suwałki, Zakopane): -24°C. Różnica temperatur (ΔT) wynosi 44 K.",
        "Błąd między Strefą I a V skutkuje odchyleniem wyniku aż o 22% dla pojedynczej przegrody."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-strefy",
    "name": "Symulator Stref Klimatycznych OZC",
    "description": "Interaktywne narzędzie wizualizujące różnice w stratach ciepła, przyroście różnicy temperatur (ΔT) i doborze źródła energii w zależności od strefy w Polsce.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-zone-container" id="rk-zone-app">
    
    <div class="rk-zone-header">
        <div class="rk-zone-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M2 12h20"></path><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"></path></svg>
            Geografia Ogrzewania
        </div>
        <h2>Jak strefa klimatyczna w Polsce wpływa na wynik <span>kalkulatora strat ciepła?</span></h2>
        <div class="rk-zone-direct">
            <strong>Bezpośrednia odpowiedź:</strong> Polska podzielona jest na 5 stref klimatycznych według normy <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" style="color:#7dd3fc; font-weight:700;">PN-EN 12831</a>, dla których projektowa temperatura zewnętrzna wynosi od <strong>-16°C</strong> (Strefa I &#8211; Świnoujście) do <strong>-24°C</strong> (Strefa V &#8211; Suwałki, Zakopane). Wybór błędnej strefy w kalkulatorze powoduje błąd obliczeniowy mocy źródła ciepła sięgający nawet 22%.
        </div>
    </div>

    <div class="rk-zone-interactive">
        <div class="rk-zone-grid">
            
            <div class="rk-zone-controls">
                <div class="rk-zone-ctrl-header">
                    <div>
                        <p class="rk-zone-ctrl-title">Wybierz Strefę</p>
                        <p style="margin:5px 0 0 0; font-size:12px; color:var(--rk-zone-muted);">Pokój 20 m², U=0.20, Wewnątrz: +20°C</p>
                    </div>
                    <div class="rk-zone-val-display" id="rk-z-display">I</div>
                </div>

                <div class="rk-zone-slider-wrap">
                    <input type="range" class="rk-zone-range" id="rk-zone-slider" min="1" max="5" step="1" value="1" oninput="rkUpdateZone()">
                    <div class="rk-zone-markers">
                        <span>I (Zima łagodna)</span>
                        <span>III (Standard)</span>
                        <span>V (Biegun zimna)</span>
                    </div>
                </div>

                <div class="rk-zone-data-box">
                    <div class="rk-zone-card">
                        <span class="rk-zone-card-label">Projektowa Temp. Zewnętrzna</span>
                        <span class="rk-zone-card-val" id="rk-z-temp">-16 °C</span>
                    </div>
                    <div class="rk-zone-card">
                        <span class="rk-zone-card-label">Różnica Temperatur (ΔT)</span>
                        <span class="rk-zone-card-val" id="rk-z-delta">36 K</span>
                    </div>
                    <div class="rk-zone-card" style="border-left-color: var(--rk-zone-accent); background: #fffbeb;">
                        <span class="rk-zone-card-label" style="color: #92400e;">Zapotrzebowanie Pokoju (Q)</span>
                        <span class="rk-zone-card-val" style="color: #ea580c;" id="rk-z-power">144 <span>W</span></span>
                    </div>
                </div>
            </div>

            <div class="rk-zone-visual">
                <svg class="rk-zone-svg" viewBox="0 0 200 100">
                    <path d="M 20 80 L 20 40 L 50 20 L 80 40 L 80 80 Z" fill="#1e293b" stroke="#cbd5e1" stroke-width="2" stroke-linejoin="round"/>
                    <rect x="40" y="50" width="20" height="15" fill="#f59e0b" opacity="0.8"/>
                    
                    <path class="anim-heat-wave" d="M 85 50 L 115 50" fill="none" stroke="#f59e0b" stroke-width="3" stroke-linecap="round"/>
                    
                    <path id="svg-frost" class="anim-frost" d="M 20 40 L 50 20 L 80 40 L 80 45 L 50 25 L 20 45 Z" fill="#38bdf8" opacity="0"/>

                    <rect x="130" y="20" width="16" height="50" rx="8" fill="rgba(255,255,255,0.1)" stroke="#cbd5e1" stroke-width="2"/>
                    <circle cx="138" cy="70" r="12" fill="rgba(255,255,255,0.1)" stroke="#cbd5e1" stroke-width="2"/>
                    
                    <rect id="svg-thermo-bar" class="anim-thermo-fluid" x="134" y="30" width="8" height="40" rx="4" fill="#38bdf8"/>
                    <circle id="svg-thermo-bulb" class="anim-thermo-fluid" cx="138" cy="70" r="8" fill="#38bdf8"/>
                    
                    <line x1="155" y1="25" x2="160" y2="25" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="165" y="28" fill="#cbd5e1" font-size="10" font-weight="bold">-16</text>
                    <line x1="155" y1="45" x2="160" y2="45" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="165" y="48" fill="#cbd5e1" font-size="10" font-weight="bold">-20</text>
                    <line x1="155" y1="65" x2="160" y2="65" stroke="#cbd5e1" stroke-width="2"/>
                    <text x="165" y="68" fill="#cbd5e1" font-size="10" font-weight="bold">-24</text>
                </svg>
            </div>

        </div>
    </div>

    <div class="rk-zone-content">
        <h3>Przykład obliczeniowy wpływu strefy klimatycznej</h3>
        <p>Przeanalizujmy identyczny pokój o powierzchni <b>A = 20 m²</b>, który posiada ścianę zewnętrzną o współczynniku przenikania ciepła <b>U = 0,20 W/(m²·K)</b>. Zakładana temperatura wewnętrzna (komfortowa) to <b>T_wewn = +20°C</b>.</p>

        <div class="rk-zone-formula-grid">
            <div class="rk-zone-formula-box">
                <h4>
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Scenariusz A (Strefa I &#8211; Łagodna)
                </h4>
                <p>Budynek zlokalizowany np. w Szczecinie. Projektowa temperatura zewnętrzna wynosi T_zewn = -16°C. Różnica temperatur (ΔT) to 36 K.</p>
                <div class="rk-math-block">
                    Q = A × U × ΔT<br>
                    Q = 20 × 0,20 × 36 = <b>144 W</b>
                </div>
            </div>

            <div class="rk-zone-formula-box">
                <h4>
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Scenariusz B (Strefa V &#8211; Zimna)
                </h4>
                <p>Ten sam budynek zlokalizowany w Zakopanem lub Suwałkach. Temperatura spada do T_zewn = -24°C. Różnica temperatur (ΔT) rośnie do 44 K.</p>
                <div class="rk-math-block">
                    Q = A × U × ΔT<br>
                    Q = 20 × 0,20 × 44 = <b>176 W</b>
                </div>
            </div>
        </div>

        <div class="rk-zone-alert">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" style="flex-shrink:0"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
            <div>
                <strong>Konsekwencje dla inwestora:</strong> Różnica czysto fizyczna w obciążeniu dla zaledwie jednej ściany wynosi 22% (176 W vs 144 W). Przemnożenie tego błędu przez gabaryty całego budynku decyduje o wyborze klasy mocowej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-zone-link">pompy ciepła</a>. Jeśli zainstalujesz 6 kW zamiast wymaganych 8 kW, instalacja po prostu nie dogrzeje domu. Z kolei przewymiarowanie zniszczy sprężarkę przez taktowanie.
            </div>
        </div>
    </div>

</div>

<script>
const zData = [
    { zone: "I", temp: -16, delta: 36, power: 144, color: "#38bdf8", yH: 1, frost: 0 },
    { zone: "II", temp: -18, delta: 38, power: 152, color: "#0284c7", yH: 0.75, frost: 0.2 },
    { zone: "III", temp: -20, delta: 40, power: 160, color: "#2563eb", yH: 0.5, frost: 0.5 },
    { zone: "IV", temp: -22, delta: 42, power: 168, color: "#4f46e5", yH: 0.25, frost: 0.8 },
    { zone: "V", temp: -24, delta: 44, power: 176, color: "#312e81", yH: 0, frost: 1 }
];

function rkUpdateZone() {
    const val = parseInt(document.getElementById('rk-zone-slider').value) - 1;
    const data = zData[val];

    // Teksty
    document.getElementById('rk-z-display').innerText = data.zone;
    document.getElementById('rk-z-temp').innerText = data.temp + " °C";
    document.getElementById('rk-z-delta').innerText = data.delta + " K";
    document.getElementById('rk-z-power').innerHTML = data.power + " <span>W</span>";

    // SVG Termometr
    const tBar = document.getElementById('svg-thermo-bar');
    const tBulb = document.getElementById('svg-thermo-bulb');
    const frost = document.getElementById('svg-frost');

    // Skala SVG od 25 (-16) do 65 (-24). 
    // Wysokość słupka (maks = 40, min = 0).
    const scaleY = data.yH; 
    
    tBar.style.transform = `scaleY(${scaleY})`;
    tBar.style.fill = data.color;
    tBulb.style.fill = data.color;
    frost.style.opacity = data.frost;
}

// Init
document.addEventListener('DOMContentLoaded', rkUpdateZone);
</script>



<style>
:root {
    --rk-iso-dark: #0f172a;
    --rk-iso-panel: #1e293b;
    --rk-iso-brand: #8b5cf6; /* Indigo - nauka, inżynieria */
    --rk-iso-brand-light: #e0e7ff;
    --rk-iso-accent: #f97316; /* Pomarańcz - ciepło */
    --rk-iso-success: #10b981;
    --rk-iso-danger: #ef4444;
    --rk-iso-bg: #ffffff;
    --rk-iso-border: #e2e8f0;
    --rk-iso-text: #334155;
    --rk-iso-muted: #64748b;
}

.rk-iso-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-iso-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.15);
    border: 1px solid rgba(139, 92, 246, 0.3);
    overflow: hidden;
    color: var(--rk-iso-dark);
}

/* Nagłówek */
.rk-iso-header {
    background: linear-gradient(135deg, var(--rk-iso-dark) 0%, #312e81 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-iso-brand);
}

.rk-iso-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.2);
    color: #a5b4fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(165, 180, 252, 0.2);
}

.rk-iso-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-iso-header h2 span { color: #a5b4fc; }

.rk-iso-header p {
    font-size: 16px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.6;
    max-width: 800px;
}

/* Sekcja Główna */
.rk-iso-body {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Kalkulator Interaktywny */
.rk-iso-calculator {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-iso-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    margin-bottom: 30px;
}

/* Kontrolki (Lewa) */
.rk-iso-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-iso-ctrl-title {
    font-size: 18px;
    font-weight: 900;
    margin: 0;
    color: var(--rk-iso-dark);
}

.rk-iso-presets {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.rk-iso-preset-btn {
    background: #f1f5f9;
    border: 2px solid var(--rk-iso-border);
    border-radius: 12px;
    padding: 12px;
    text-align: center;
    cursor: pointer;
    font-weight: 800;
    font-size: 13px;
    color: var(--rk-iso-muted);
    transition: all 0.3s;
}

.rk-iso-preset-btn:hover {
    border-color: var(--rk-iso-brand);
    color: var(--rk-iso-brand);
}

.rk-iso-preset-btn.active {
    background: var(--rk-iso-brand-light);
    border-color: var(--rk-iso-brand);
    color: var(--rk-iso-brand);
}

.rk-iso-slider-wrap {
    background: #f8fafc;
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid #f1f5f9;
}

.rk-iso-slider-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.rk-iso-slider-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-iso-dark);
}

.rk-iso-slider-val {
    background: var(--rk-iso-brand);
    color: #ffffff;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
}

.rk-iso-range {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: #cbd5e1;
    border-radius: 3px;
    outline: none;
}

.rk-iso-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-iso-brand);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.15);
}

/* Wyniki (Prawa) */
.rk-iso-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-iso-visual {
    background: var(--rk-iso-dark);
    border-radius: 16px;
    height: 180px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 3px solid #334155;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}

.rk-iso-svg {
    width: 100%;
    height: 100%;
}

.rk-iso-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-iso-data-box {
    background: #ffffff;
    border: 1px solid var(--rk-iso-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-iso-data-box.highlight {
    background: var(--rk-iso-dark);
    border-color: var(--rk-iso-dark);
}

.rk-iso-data-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-iso-muted);
    margin-bottom: 5px;
}

.rk-iso-data-box.highlight .rk-iso-data-label { color: #94a3b8; }

.rk-iso-data-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-iso-dark);
}

.rk-iso-data-box.highlight .rk-iso-data-val { color: #ffffff; }

/* Bloki Tekstowe z Wiedzą */
.rk-iso-content-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.rk-iso-card {
    background: #ffffff;
    border: 1px solid var(--rk-iso-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-iso-card h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-iso-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-iso-card p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-iso-text);
}

.rk-iso-card strong { color: var(--rk-iso-dark); font-weight: 800; }

.rk-iso-formula {
    background: #f1f5f9;
    padding: 15px;
    border-radius: 8px;
    border-left: 4px solid var(--rk-iso-brand);
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 14px;
    color: var(--rk-iso-dark);
    margin-bottom: 15px;
    overflow-x: auto;
}

.rk-iso-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    color: var(--rk-iso-brand);
    font-weight: 800;
    font-size: 14px;
    text-decoration: none;
    margin-top: 10px;
    transition: color 0.3s;
}

.rk-iso-link:hover { color: #4f46e5; }
.rk-iso-link svg { transition: transform 0.3s; }
.rk-iso-link:hover svg { transform: translateX(4px); }

/* Animacje SVG */
.anim-iso-layer { transition: height 0.4s ease, y 0.4s ease; }
.anim-heat-arrow { transition: opacity 0.4s, stroke 0.4s; }

@media (max-width: 768px) {
    .rk-iso-header, .rk-iso-body { padding: 30px 20px; }
    .rk-iso-calculator, .rk-iso-content-grid { grid-template-columns: 1fr; }
    .rk-iso-visual { height: 160px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-wspolczynnik-u",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak wyliczyć współczynnik przenikania ciepła U z grubości izolacji i lambdy materiału?",
    "description": "Praktyczny poradnik inżynierski: obliczanie oporu cieplnego (R) i współczynnika przenikania (U). Zobacz, dlaczego 15 cm grafitu to to samo co 20 cm białego styropianu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-wspolczynnik-u",
    "name": "Parametry Fizyki Budowli: Współczynnik U i Opór R",
    "description": "Zestawienie analityczne parametrów izolacyjnych dla najpopularniejszych grubości i typów styropianu podłogowego, stanowiące bazę do obliczeń OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "współczynnik przenikania ciepła U",
      "jak obliczyć opór cieplny R",
      "styropian grafitowy czy biały",
      "ile styropianu pod ogrzewanie podłogowe",
      "kalkulator strat ciepła wzory",
      "izolacja podłogi na gruncie"
    ],
    "measurementTechnique": "Algorytm fizyki budowli określający zależność: Opór (R) = grubość w metrach (d) / lambda (λ). Współczynnik przenikania U = 1 / R.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Styropian biały EPS: zazwyczaj λ = 0,042 W/mK.",
        "Styropian grafitowy: zazwyczaj λ = 0,031 W/mK.",
        "Dla 20 cm EPS (λ=0,036): Opór R = 5,55 m2K/W, Przenikanie U = 0,18 W/m2K."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-kalkulator-u",
    "name": "Kalkulator Przenikania Ciepła U i Oporu R",
    "description": "Interaktywny kalkulator inżynierski pozwalający natychmiast przeliczyć grubość i lambdę izolacji na współczynnik U wymagany do bilansu cieplnego OZC.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-iso-container" id="rk-iso-app">
    
    <div class="rk-iso-header">
        <div class="rk-iso-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Fizyka budowli w praktyce
        </div>
        <h2>Jak wyliczyć współczynnik przenikania ciepła U <span>z grubości izolacji i lambdy materiału?</span></h2>
        <p>Inwestorzy często mylą pojęcia i kupują tani styropian o ogromnej grubości, sądząc, że chroni on budynek lepiej niż cieńszy materiał premium. Matematyki jednak nie oszukasz. Przelicz to samemu.</p>
    </div>

    <div class="rk-iso-body">
        
        <div class="rk-iso-calculator">
            
            <div class="rk-iso-controls">
                <h3 class="rk-iso-ctrl-title">Kalkulator Izolacji</h3>
                
                <div class="rk-iso-presets">
                    <div class="rk-iso-preset-btn active" id="btn-eps-graphite" onclick="rkSetIso('graphite')">Styropian Grafitowy<br><span style="font-size:11px; font-weight:600;">(Premium)</span></div>
                    <div class="rk-iso-preset-btn" id="btn-eps-white" onclick="rkSetIso('white')">Styropian Biały<br><span style="font-size:11px; font-weight:600;">(Standard)</span></div>
                </div>

                <div class="rk-iso-slider-wrap">
                    <div class="rk-iso-slider-head">
                        <span class="rk-iso-slider-label">Przewodność (Lambda λ)</span>
                        <span class="rk-iso-slider-val"><span id="rk-val-lam">0.031</span> W/mK</span>
                    </div>
                    <input type="range" class="rk-iso-range" id="rk-range-lam" min="0.030" max="0.045" step="0.001" value="0.031" oninput="rkUpdateIso()">
                </div>

                <div class="rk-iso-slider-wrap">
                    <div class="rk-iso-slider-head">
                        <span class="rk-iso-slider-label">Grubość materiału (d)</span>
                        <span class="rk-iso-slider-val"><span id="rk-val-thick">15</span> cm</span>
                    </div>
                    <input type="range" class="rk-iso-range" id="rk-range-thick" min="5" max="30" step="1" value="15" oninput="rkUpdateIso()">
                </div>
            </div>

            <div class="rk-iso-results">
                
                <div class="rk-iso-visual">
                    <svg class="rk-iso-svg" viewBox="0 0 200 100">
                        <rect x="20" y="80" width="160" height="20" fill="#334155" />
                        
                        <rect id="svg-iso-layer" class="anim-iso-layer" x="20" y="50" width="160" height="30" fill="#64748b" opacity="0.9" />
                        <text id="svg-text-thick" x="100" y="70" fill="#ffffff" font-size="12" font-weight="bold" text-anchor="middle">15 cm</text>

                        <rect id="svg-screed" class="anim-iso-layer" x="20" y="35" width="160" height="15" fill="#94a3b8" />
                        <circle id="svg-pipe" class="anim-iso-layer" cx="100" cy="42" r="5" fill="#ef4444" />

                        <g id="svg-heat-loss" class="anim-heat-arrow">
                            <path d="M 60 85 L 60 95" stroke="#ef4444" stroke-width="3" stroke-linecap="round" />
                            <polygon points="56,92 60,98 64,92" fill="#ef4444" />
                            <path d="M 140 85 L 140 95" stroke="#ef4444" stroke-width="3" stroke-linecap="round" />
                            <polygon points="136,92 140,98 144,92" fill="#ef4444" />
                        </g>
                    </svg>
                </div>

                <div class="rk-iso-data-grid">
                    <div class="rk-iso-data-box">
                        <span class="rk-iso-data-label">Opór cieplny (R)</span>
                        <span class="rk-iso-data-val"><span id="rk-res-r">4.84</span> <span style="font-size:12px; color:var(--rk-iso-muted)">m²K/W</span></span>
                    </div>
                    <div class="rk-iso-data-box highlight">
                        <span class="rk-iso-data-label">Współczynnik przenikania (U)</span>
                        <span class="rk-iso-data-val"><span id="rk-res-u">0.21</span> <span style="font-size:12px; color:#94a3b8">W/m²K</span></span>
                    </div>
                </div>

            </div>
        </div>

        <div class="rk-iso-content-grid">
            
            <div class="rk-iso-card">
                <h3>
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"></path><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"></path></svg>
                    Wzór inżynierski (Bezpośrednia odpowiedź)
                </h3>
                <p>Współczynnik przenikania ciepła pojedynczej warstwy materiału izolacyjnego oblicza się z bezwzględnego wzoru <strong>U = λ / d</strong>, gdzie <strong>λ</strong> to współczynnik przewodzenia ciepła, a <strong>d</strong> to grubość materiału wyrażona ściśle w metrach.</p>
                <div class="rk-iso-formula">
                    R = d / λ<br>
                    U = 1 / R = λ / d
                </div>
                <p>Pamiętaj, że całkowity opór cieplny przegrody wielowarstwowej definiuje zależność uwzględniająca opory przejmowania ciepła na powierzchniach (R<sub>si</sub>, R<sub>se</sub>).</p>
            </div>

            <div class="rk-iso-card">
                <h3>
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                    Przykład: 20 cm EPS 100 na gruncie
                </h3>
                <p>Wyliczmy rzeczywisty współczynnik U dla <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" class="rk-iso-link" style="display:inline; padding:0; margin:0; border:none; text-decoration:underline; font-weight:normal;">izolacji podłogówki</a> wykonanej z klasycznych płyt styropianowych EPS o grubości 20 cm (d = 0,20 m) i deklarowanej przez producenta przewodności λ = 0,036 W/mK.</p>
                <div class="rk-iso-formula">
                    R = 0,20 / 0,036 = <strong>5,55 m²K/W</strong><br>
                    U = 1 / 5,55 = <strong>0,18 W/m²·K</strong>
                </div>
                <p>Wartość 0,18 to precyzyjny parametr techniczny. To właśnie tę cyfrę musisz wprowadzić do kalkulatora strat ciepła w sekcji przegród poziomych.</p>
                <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/" class="rk-iso-link">
                    Czym dokładnie jest Opór Cieplny R? ➔
                </a>
            </div>

        </div>

    </div>
</div>

<script>
function rkSetIso(type) {
    const btnG = document.getElementById('btn-eps-graphite');
    const btnW = document.getElementById('btn-eps-white');
    const sliderLam = document.getElementById('rk-range-lam');

    if (type === 'graphite') {
        btnG.classList.add('active');
        btnW.classList.remove('active');
        sliderLam.value = 0.031;
    } else {
        btnW.classList.add('active');
        btnG.classList.remove('active');
        sliderLam.value = 0.042;
    }
    rkUpdateIso();
}

function rkUpdateIso() {
    const lam = parseFloat(document.getElementById('rk-range-lam').value);
    const thickCm = parseInt(document.getElementById('rk-range-thick').value);
    
    // Update labels
    document.getElementById('rk-val-lam').innerText = lam.toFixed(3);
    document.getElementById('rk-val-thick').innerText = thickCm;

    // Calc
    const thickM = thickCm / 100;
    const r = thickM / lam;
    const u = 1 / r;

    document.getElementById('rk-res-r').innerText = r.toFixed(2);
    document.getElementById('rk-res-u').innerText = u.toFixed(2);

    // SVG Animation logic
    // thickCm: 5 to 30. We map this to SVG height.
    // Base y=80. Max thick = 30cm -> height=60, y=20.
    const svgHeight = thickCm * 2; // 1cm = 2px
    const svgY = 80 - svgHeight;

    const isoLayer = document.getElementById('svg-iso-layer');
    const textThick = document.getElementById('svg-text-thick');
    const screedLayer = document.getElementById('svg-screed');
    const pipeLayer = document.getElementById('svg-pipe');

    isoLayer.setAttribute('height', svgHeight);
    isoLayer.setAttribute('y', svgY);
    
    // Ustawienie koloru (grafit vs biały)
    if(lam < 0.036) {
        isoLayer.setAttribute('fill', '#475569'); // Ciemniejszy grafit
    } else {
        isoLayer.setAttribute('fill', '#cbd5e1'); // Jasny biały
    }

    textThick.setAttribute('y', svgY + (svgHeight / 2) + 4);
    textThick.textContent = thickCm + " cm";

    screedLayer.setAttribute('y', svgY - 15);
    pipeLayer.setAttribute('cy', svgY - 7);

    // Heat Loss arrows (Redness &#038; Opacity based on U)
    // Good U < 0.20 (Low opacity, smaller). Bad U > 0.40 (High opacity, red)
    const heatGrp = document.getElementById('svg-heat-loss');
    let heatOpacity = u / 0.8; // Normalized roughly
    if(heatOpacity > 1) heatOpacity = 1;
    if(heatOpacity < 0.1) heatOpacity = 0.1;
    
    heatGrp.style.opacity = heatOpacity;
}

// Init
document.addEventListener('DOMContentLoaded', rkUpdateIso);
</script>



<style>
:root {
    --rk-vent-dark: #0f172a;
    --rk-vent-panel: #1e293b;
    --rk-vent-brand: #0284c7; /* Chłodny błękit - świeże powietrze */
    --rk-vent-brand-light: #e0f2fe;
    --rk-vent-accent: #f97316; /* Ciepło domowe */
    --rk-vent-success: #0d9488; /* Oszczędność (Teal) */
    --rk-vent-danger: #ef4444; /* Strata (Czerwień) */
    --rk-vent-bg: #ffffff;
    --rk-vent-border: #e2e8f0;
    --rk-vent-text: #334155;
    --rk-vent-muted: #64748b;
}

.rk-vent-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vent-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.2);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-vent-header {
    background: linear-gradient(135deg, var(--rk-vent-dark) 0%, #0c4a6e 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-vent-brand);
}

.rk-vent-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-vent-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-vent-title span { color: #38bdf8; }

.rk-vent-direct-answer {
    font-size: 16px;
    line-height: 1.7;
    color: #e0f2fe;
    margin: 0;
    padding-left: 20px;
    border-left: 3px solid var(--rk-vent-accent);
}

.rk-vent-direct-answer strong {
    color: #ffffff;
}

/* Moduł Interaktywny */
.rk-vent-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Przełącznik Systemów Wentylacji */
.rk-vent-switcher {
    display: flex;
    justify-content: center;
    margin-bottom: 30px;
}

.rk-vent-toggle-bg {
    background: #e2e8f0;
    padding: 6px;
    border-radius: 99px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-vent-toggle-btn {
    padding: 12px 24px;
    border-radius: 99px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-vent-muted);
    cursor: pointer;
    transition: all 0.3s;
    z-index: 1;
    border: none;
    background: transparent;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-vent-toggle-btn.active {
    color: #ffffff;
}

.rk-vent-toggle-slider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: 50%;
    background: var(--rk-vent-danger);
    border-radius: 99px;
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
}

.state-recup .rk-vent-toggle-slider {
    left: calc(50% - 6px);
    background: var(--rk-vent-success);
}

/* Siatka: SVG + Dane */
.rk-vent-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: stretch;
}

/* SVG Wizualizacja */
.rk-vent-visual {
    background: var(--rk-vent-dark);
    border-radius: 20px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
    min-height: 250px;
}

.rk-vent-svg { width: 100%; height: 100%; }

/* Tablica Wyników */
.rk-vent-dashboard {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-vent-stat-card {
    background: #ffffff;
    border: 1px solid var(--rk-vent-border);
    border-radius: 16px;
    padding: 20px 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    justify-content: center;
    transition: all 0.3s;
}

.rk-vent-stat-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-vent-muted);
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.rk-vent-stat-val {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-vent-dark);
    line-height: 1;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-vent-stat-val span {
    font-size: 14px;
    color: var(--rk-vent-muted);
}

.val-red { color: var(--rk-vent-danger); }
.val-green { color: var(--rk-vent-success); }

/* Detale Obliczeń (Karty z Wzorami) */
.rk-vent-details {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-vent-details h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vent-dark);
}

.rk-vent-calc-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-vent-calc-box {
    background: #ffffff;
    border: 1px solid var(--rk-vent-border);
    padding: 25px;
    border-radius: 16px;
}

.rk-vent-calc-box h4 {
    margin: 0 0 10px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-vent-brand);
}

.rk-vent-formula {
    background: #f1f5f9;
    padding: 12px 15px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-weight: 700;
    font-size: 13px;
    color: var(--rk-vent-dark);
    margin: 10px 0;
    border-left: 3px solid var(--rk-vent-brand);
}

.rk-vent-calc-box p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-vent-text);
}

.rk-vent-link {
    color: var(--rk-vent-brand);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-vent-link:hover { color: #0369a1; }

/* Animacje SVG */
.anim-air-flow { stroke-dasharray: 8 8; animation: flowDash 1.5s linear infinite; }
@keyframes flowDash { to { stroke-dashoffset: -16; } }

/* Stan: Grawitacja */
.state-grav .recup-element { opacity: 0; }
.state-grav .grav-element { opacity: 1; transition: opacity 0.3s; }
.state-grav .air-in { stroke: var(--rk-vent-brand); }
.state-grav .air-out { stroke: var(--rk-vent-danger); stroke-width: 6; }

/* Stan: Rekuperacja */
.state-recup .grav-element { opacity: 0; }
.state-recup .recup-element { opacity: 1; transition: opacity 0.5s; }
.state-recup .air-in { stroke: var(--rk-vent-brand); }
.state-recup .air-in-warmed { stroke: #fbbf24; }
.state-recup .air-out { stroke: var(--rk-vent-danger); stroke-width: 4; }
.state-recup .air-out-cooled { stroke: #94a3b8; }

.anim-wheel { transform-origin: 100px 50px; animation: spinWheel 3s linear infinite; }
@keyframes spinWheel { to { transform: rotate(360deg); } }

@media (max-width: 768px) {
    .rk-vent-header, .rk-vent-interactive, .rk-vent-details { padding: 30px 20px; }
    .rk-vent-grid, .rk-vent-calc-grid { grid-template-columns: 1fr; }
    .rk-vent-visual { height: 200px; min-height: auto; }
    .rk-vent-toggle-btn { padding: 10px 15px; font-size: 12px; }
    .rk-vent-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-wentylacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Ile kW mocy grzewczej ucieka przez wentylację grawitacyjną i jak rekuperacja zmienia ten wynik?",
    "description": "Porównanie strat ciepła dla wentylacji grawitacyjnej i mechanicznej z rekuperacją. Dowiedz się, jak odzysk ciepła wpływa na projektowanie pętli podłogowych i moc pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-wentylacja",
    "name": "Symulacja strat wentylacyjnych (Qv) z rekuperacją i bez",
    "description": "Zestawienie analityczne porównujące straty ciepła i przepływy powietrza (m3/h) dla budynku 150 m2 przy wentylacji naturalnej oraz mechanicznej z odzyskiem ciepła 85%.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty wentylacyjne w kalkulatorze",
      "rekuperacja a pompa ciepła",
      "wentylacja grawitacyjna straty ciepła",
      "rozstaw rur podłogówki a rekuperacja",
      "obliczanie strat ciepła wentylacja",
      "norma PN-EN 13141-7"
    ],
    "measurementTechnique": "Algorytm obliczeniowy Qv = 0,34 × V × ΔT redukowany o współczynnik sprawności odzysku ciepła zdefiniowany normą PN-EN 13141-7.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kubatura szacunkowa dla domu 150 m2: 375 m3.",
        "Strumień powietrza dla krotności wymian 0,5/h: 187,5 m3/h.",
        "Całkowita strata grawitacyjna (ΔT=40K): 2550 W.",
        "Zredukowana strata przy rekuperacji (85% sprawności): 382,5 W."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-wentylacja",
    "name": "Kalkulator Oszczędności Rekuperacji",
    "description": "Interaktywny symulator przepływu powietrza wizualizujący spadek zapotrzebowania na moc grzewczą w budynku wyposażonym w wymiennik krzyżowy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vent-container" id="rk-vent-app">
    
    <div class="rk-vent-header">
        <div class="rk-vent-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Bilans Powietrzny
        </div>
        <h2 class="rk-vent-title">Ile kW mocy grzewczej ucieka przez wentylację grawitacyjną i jak <span>rekuperacja zmienia ten wynik?</span></h2>
        <div class="rk-vent-direct-answer">
            <strong>Bezpośrednia odpowiedź:</strong> W tradycyjnym domu 150 m² z wentylacją grawitacyjną, straty z tytułu wymiany powietrza generują do <strong>40% całkowitego zapotrzebowania na ciepło</strong> (co odpowiada ucieczce ok. 2,5 - 3,5 kW ciągłej mocy). Zastosowanie centrali wentylacyjnej (rekuperacji) o sprawności temperaturowej rzędu 85% redukuje te straty do ułamkowych wartości rzędu <strong>0,4 - 0,6 kW</strong>.
        </div>
    </div>

    <div class="rk-vent-interactive state-grav" id="rk-vent-state-wrapper">
        
        <div class="rk-vent-switcher">
            <div class="rk-vent-toggle-bg">
                <div class="rk-vent-toggle-slider"></div>
                <button class="rk-vent-toggle-btn active" id="btn-grav" onclick="rkSwitchVent('grav')">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                    Grawitacja
                </button>
                <button class="rk-vent-toggle-btn" id="btn-recup" onclick="rkSwitchVent('recup')">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="8" width="18" height="8" rx="2"></rect><path d="M12 4v4"></path><path d="M12 16v4"></path><circle cx="12" cy="12" r="2"></circle></svg>
                    Rekuperacja 85%
                </button>
            </div>
        </div>

        <div class="rk-vent-grid">
            
            <div class="rk-vent-visual">
                <svg class="rk-vent-svg" viewBox="0 0 200 100">
                    <rect x="0" y="0" width="100" height="100" fill="#0f172a" /> <rect x="100" y="0" width="100" height="100" fill="#1e293b" /> <line x1="100" y1="0" x2="100" y2="100" stroke="#334155" stroke-width="2" />

                    <g class="grav-element">
                        <path class="anim-air-flow air-in" d="M 20 70 L 160 70" fill="none" stroke-width="4" stroke-linecap="round" />
                        <polygon points="150,65 165,70 150,75" fill="var(--rk-vent-brand)"/>
                        
                        <path class="anim-air-flow air-out" d="M 160 30 L 20 30" fill="none" stroke-width="6" stroke-linecap="round" />
                        <polygon points="35,23 20,30 35,37" fill="var(--rk-vent-danger)"/>
                    </g>

                    <g class="recup-element">
                        <rect x="80" y="30" width="40" height="40" fill="#0f172a" stroke="#cbd5e1" stroke-width="2" rx="4" />
                        <g class="anim-wheel">
                            <line x1="90" y1="40" x2="110" y2="60" stroke="#cbd5e1" stroke-width="2" />
                            <line x1="90" y1="60" x2="110" y2="40" stroke="#cbd5e1" stroke-width="2" />
                        </g>

                        <path class="anim-air-flow air-in" d="M 20 60 L 80 60" fill="none" stroke-width="3" stroke-linecap="round" />
                        <path class="anim-air-flow air-in-warmed" d="M 120 60 L 180 60" fill="none" stroke-width="3" stroke-linecap="round" />
                        <polygon points="170,56 182,60 170,64" fill="#fbbf24"/>

                        <path class="anim-air-flow air-out" d="M 180 40 L 120 40" fill="none" stroke-width="3" stroke-linecap="round" />
                        <path class="anim-air-flow air-out-cooled" d="M 80 40 L 20 40" fill="none" stroke-width="3" stroke-linecap="round" />
                        <polygon points="30,36 18,40 30,44" fill="#94a3b8"/>
                    </g>
                </svg>
            </div>

            <div class="rk-vent-dashboard">
                <div class="rk-vent-stat-card">
                    <span class="rk-vent-stat-label">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                        Moc bezpowrotnie tracona (Q<sub>v</sub>)
                    </span>
                    <span class="rk-vent-stat-val val-red" id="val-lost">2 550 <span>W</span></span>
                </div>
                
                <div class="rk-vent-stat-card">
                    <span class="rk-vent-stat-label">
                        <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        Odzyskana energia dla podłogówki
                    </span>
                    <span class="rk-vent-stat-val val-green" id="val-saved">0 <span>W (0.0 kW)</span></span>
                </div>

                <div class="rk-vent-stat-card" style="background: #f1f5f9; border-color: transparent;">
                    <span class="rk-vent-stat-label">Wpływ na projekt instalacji</span>
                    <span class="rk-vent-stat-val" id="val-impact" style="font-size: 16px; color: var(--rk-vent-text);">
                        Wymagany gęsty rozstaw rur (co 10 cm). Ryzyko zakupu przewymiarowanej pompy ciepła.
                    </span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-vent-details">
        <h3>Przykład obliczeniowy dla domu 150 m² (kubatura 375 m³)</h3>
        
        <div class="rk-vent-calc-grid">
            <div class="rk-vent-calc-box">
                <h4>Wariant 1: Wentylacja grawitacyjna</h4>
                <p>Przyjmujemy wymianę na poziomie 0,5/h, co daje strumień V = 187,5 m³/h. Różnica temperatur na zewnątrz i wewnątrz w mrozy to ΔT = 40 K.</p>
                <div class="rk-vent-formula">
                    Q<sub>v</sub> = 0,34 × 187,5 × 40 = <strong>2550 W</strong>
                </div>
                <p>Oznacza to, że z samego tytułu wietrzenia budynku w starym systemie, dom wymaga od <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-vent-link">pompy ciepła</a> ponad 2,5 kW ciągłej mocy.</p>
            </div>

            <div class="rk-vent-calc-box">
                <h4>Wariant 2: Mechaniczna z rekuperacją</h4>
                <p>Zastosowanie centrali (sprawność η = 85% zgodnie z <strong>PN-EN 13141-7</strong>). Strumień powietrza jest poddawany procesowi krzyżowej wymiany ciepła.</p>
                <div class="rk-vent-formula">
                    Q<sub>v_rek</sub> = 2550 W × (1 - 0,85) = <strong>382,5 W</strong>
                </div>
                <p>Ignorowanie <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-vent-link">wpływu rekuperacji</a> w kalkulatorach prowadzi do potężnego przewymiarowania. Instalator niepotrzebnie zacieśni <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-vent-link">rozstaw rur</a> i drastycznie podniesie koszty hydrauliki.</p>
            </div>
        </div>
    </div>

</div>

<script>
function rkSwitchVent(state) {
    const wrapper = document.getElementById('rk-vent-state-wrapper');
    const btnGrav = document.getElementById('btn-grav');
    const btnRecup = document.getElementById('btn-recup');
    
    const valLost = document.getElementById('val-lost');
    const valSaved = document.getElementById('val-saved');
    const valImpact = document.getElementById('val-impact');

    if(state === 'grav') {
        wrapper.className = 'rk-vent-interactive state-grav';
        btnGrav.classList.add('active');
        btnRecup.classList.remove('active');

        valLost.innerHTML = '2 550 <span>W</span>';
        valLost.className = 'rk-vent-stat-val val-red';
        
        valSaved.innerHTML = '0 <span>W (0.0 kW)</span>';
        valSaved.className = 'rk-vent-stat-val val-green';

        valImpact.innerHTML = 'Wymagany gęsty rozstaw rur (co 10 cm). Ryzyko zakupu przewymiarowanej pompy ciepła.';
    } else {
        wrapper.className = 'rk-vent-interactive state-recup';
        btnRecup.classList.add('active');
        btnGrav.classList.remove('active');

        valLost.innerHTML = '382 <span>W</span>';
        valLost.className = 'rk-vent-stat-val val-green';
        
        valSaved.innerHTML = '2 168 <span>W (~ 2.16 kW)</span>';
        valSaved.className = 'rk-vent-stat-val val-green';

        valImpact.innerHTML = 'Mniejsze straty = rzadszy rozstaw (co 20 cm), niższe koszty materiałowe i tańsza pompa ciepła.';
    }
}
</script>



<style>
:root {
    --rk-fl-dark: #0f172a;
    --rk-fl-panel: #1e293b;
    --rk-fl-brand: #2563eb;
    --rk-fl-brand-light: #eff6ff;
    --rk-fl-accent: #f97316;
    --rk-fl-success: #10b981;
    --rk-fl-danger: #ef4444;
    --rk-fl-border: #e2e8f0;
    --rk-fl-text: #334155;
    --rk-fl-muted: #64748b;
    --rk-fl-bg: #ffffff;
}

.rk-fl-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-fl-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.3);
    overflow: hidden;
    color: var(--rk-fl-dark);
}

/* Nagłówek */
.rk-fl-header {
    background: linear-gradient(135deg, var(--rk-fl-dark) 0%, #1e3a8a 100%);
    padding: 40px 45px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-fl-brand);
}

.rk-fl-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255,255,255,0.1);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(255,255,255,0.15);
}

.rk-fl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-fl-header p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.7;
}

/* Główny kontener treści */
.rk-fl-body {
    padding: 40px 45px;
    background: #f8fafc;
}

/* Moduł Interaktywny */
.rk-fl-interactive {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-top: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-fl-border);
    border-radius: 20px;
    padding: 25px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* Lewa Kolumna - SVG Wizualizacja */
.rk-fl-visual-box {
    background: var(--rk-fl-dark);
    border-radius: 16px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 280px;
    border: 3px solid #334155;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
}

.rk-fl-svg-layer {
    width: 100%;
    height: 100%;
}

/* Prawa Kolumna - Kontrolki i Dane */
.rk-fl-controls {
    display: flex;
    flex-direction: column;
}

.rk-fl-controls h3 {
    margin: 0 0 20px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-fl-dark);
    line-height: 1.3;
}

/* Switcher Okładzin */
.rk-fl-switch-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-bottom: 25px;
}

.rk-fl-switch-btn {
    background: #f1f5f9;
    border: 2px solid var(--rk-fl-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
    cursor: pointer;
    font-weight: 800;
    font-size: 14px;
    color: var(--rk-fl-muted);
    transition: all 0.3s;
}

.rk-fl-switch-btn.active {
    background: var(--rk-fl-brand-light);
    border-color: var(--rk-fl-brand);
    color: var(--rk-fl-brand);
    box-shadow: 0 5px 15px -5px rgba(37, 99, 235, 0.2);
}

/* Kafelki z danymi (Live Data) */
.rk-fl-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-fl-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-fl-border);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-fl-data-card.highlight {
    background: var(--rk-fl-dark);
    border-color: var(--rk-fl-dark);
}

.rk-fl-data-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-fl-muted);
    margin-bottom: 5px;
}

.rk-fl-data-card.highlight .rk-fl-data-label { color: #94a3b8; }

.rk-fl-data-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-fl-dark);
    transition: color 0.3s;
}

.rk-fl-data-card.highlight .rk-fl-data-val { color: #ffffff; }

.val-danger { color: var(--rk-fl-danger) !important; }
.val-success { color: var(--rk-fl-success) !important; }

/* Animacje SVG */
.rk-anim-heat { transition: all 0.6s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: bottom; }
.rk-anim-layer { transition: all 0.5s ease-in-out; }

/* Stan 1: Płytki (Dobre przewodzenie) */
.state-tiles .rk-layer-panel { opacity: 0; transform: translateY(-10px); }
.state-tiles .rk-layer-tile { opacity: 1; transform: translateY(0); }
.state-tiles .rk-anim-heat { stroke: var(--rk-fl-success); transform: scaleY(1); animation: heatFlowFast 1.5s linear infinite; stroke-dasharray: 10 10; }

/* Stan 2: Panele (Izolator) */
.state-panels .rk-layer-panel { opacity: 1; transform: translateY(0); }
.state-panels .rk-layer-tile { opacity: 0; transform: translateY(10px); }
.state-panels .rk-anim-heat { stroke: var(--rk-fl-danger); transform: scaleY(0.4); animation: heatFlowSlow 3s linear infinite; stroke-dasharray: 20 5; }

@keyframes heatFlowFast { to { stroke-dashoffset: -20; } }
@keyframes heatFlowSlow { to { stroke-dashoffset: -25; } }

/* CTA dolne */
.rk-fl-cta {
    margin-top: 30px;
    padding: 20px;
    background: var(--rk-fl-brand-light);
    border-left: 4px solid var(--rk-fl-brand);
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.rk-fl-cta p {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-fl-dark);
}

.rk-fl-cta a {
    white-space: nowrap;
    background: var(--rk-fl-brand);
    color: #ffffff;
    padding: 12px 20px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    transition: background 0.3s;
}

.rk-fl-cta a:hover { background: var(--rk-fl-brand-hover); }

@media (max-width: 768px) {
    .rk-fl-header { padding: 30px 25px; }
    .rk-fl-body { padding: 30px 25px; }
    .rk-fl-interactive { grid-template-columns: 1fr; padding: 20px; }
    .rk-fl-visual-box { height: 220px; min-height: auto; }
    .rk-fl-cta { flex-direction: column; text-align: center; }
    .rk-fl-cta a { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-okladziny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak rodzaj okładziny podłogowej (płytki vs panele) zmienia parametry instalacji?",
    "description": "Opór cieplny paneli zmusza pompę ciepła do pracy na wyższych temperaturach zasilania. Zobacz inżynieryjne porównanie wydajności gresu i laminatu.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-okladziny",
    "name": "Opór cieplny (R) okładzin podłogowych a COP pompy ciepła",
    "description": "Parametry hydrauliczne instalacji podłogowej zestawione dla stałego zapotrzebowania 50 W/m2 w zależności od zastosowanej posadzki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny paneli",
      "ogrzewanie podłogowe a panele",
      "wydajność pompy ciepła podłogówka",
      "temperatura zasilania podłogówki płytki vs panele",
      "COP pompy ciepła spadek"
    ],
    "measurementTechnique": "Symulacja spadku współczynnika COP pompy ciepła w zależności od oporu cieplnego materiału wykończeniowego zgodnie z normą PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Gres ceramiczny: Opór R = 0,01 m2K/W, Wymagane Tz = 33°C",
        "Panele laminowane: Opór R = 0,12 m2K/W, Wymagane Tz = 38°C",
        "Spadek COP pompy ciepła dla paneli względem płytek wynosi od 10 do 12% w skali roku."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-okladziny",
    "name": "Symulator Wpływu Okładziny na Ogrzewanie Podłogowe",
    "description": "Narzędzie pozwalające prześledzić zachowanie instalacji i spadki wydajności w przypadku zamiany płytek ceramicznych na panele laminowane.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fl-wrapper" id="rk-fl-app">
    
    <div class="rk-fl-header">
        <div class="rk-fl-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
            Analiza Materiałowa
        </div>
        <h2>Jak rodzaj okładziny podłogowej (płytki vs panele) zmienia parametry pracy instalacji w kalkulatorze?</h2>
        <p>Opór cieplny (R) materiału wykończeniowego ma kolosalny wpływ na to, jaką temperaturę musisz zadać na źródle ciepła, aby skutecznie ogrzać pomieszczenie. Ignorowanie tego faktu to gwarancja niedogrzanego domu.</p>
    </div>

    <div class="rk-fl-body">
        
        <p><strong>Bezpośrednia odpowiedź:</strong> Opór cieplny (R) płytek ceramicznych wynosi zaledwie <strong>0,01 m²K/W</strong>, podczas gdy paneli laminowanych wraz z podkładem dedykowanym osiąga graniczną wartość <strong>0,10 - 0,15 m²K/W</strong> dopuszczoną przez normę PN-EN 1264.</p>
        <p>Oznacza to, że panele stanowią potężny izolator, który wymusza podniesienie temperatury zasilania (Tz) średnio o 3 do 5 stopni Celsjusza w celu uzyskania tej samej mocy grzewczej.</p>
        <p>Zastosowanie grubych paneli lub parkietu drewnianego bez uwzględnienia tego faktu w obliczeniach kalkulatora powoduje drastyczne niedogrzanie pomieszczeń. Jeśli projektant założy wykończenie z płytek i dobierze temperaturę zasilania wody na 35°C, a Ty ostatecznie położysz panele, <strong>temperatura w pokoju spadnie z planowanych 20°C do zaledwie 17-18°C</strong> w mroźne dni.</p>

        <div class="rk-fl-interactive">
            
            <div class="rk-fl-visual-box state-tiles" id="rkFlVisual">
                <svg class="rk-fl-svg-layer" viewBox="0 0 200 100">
                    <rect x="20" y="70" width="160" height="30" fill="#334155" />
                    <circle cx="100" cy="85" r="8" fill="none" stroke="#f97316" stroke-width="3" />
                    
                    <path class="rk-anim-heat" d="M 100 70 L 100 20" fill="none" stroke-width="4" stroke-linecap="round" />
                    <path class="rk-anim-heat" d="M 85 70 L 60 20" fill="none" stroke-width="3" stroke-linecap="round" />
                    <path class="rk-anim-heat" d="M 115 70 L 140 20" fill="none" stroke-width="3" stroke-linecap="round" />

                    <g class="rk-anim-layer rk-layer-tile">
                        <rect x="20" y="60" width="160" height="10" fill="#94a3b8" />
                        <line x1="60" y1="60" x2="60" y2="70" stroke="#0f172a" stroke-width="2" />
                        <line x1="100" y1="60" x2="100" y2="70" stroke="#0f172a" stroke-width="2" />
                        <line x1="140" y1="60" x2="140" y2="70" stroke="#0f172a" stroke-width="2" />
                    </g>

                    <g class="rk-anim-layer rk-layer-panel">
                        <rect x="20" y="55" width="160" height="5" fill="#f59e0b" opacity="0.6" /> <rect x="20" y="45" width="160" height="10" fill="#854d0e" /> <line x1="80" y1="45" x2="80" y2="55" stroke="#0f172a" stroke-width="1" />
                        <line x1="120" y1="45" x2="120" y2="55" stroke="#0f172a" stroke-width="1" />
                    </g>
                </svg>
            </div>

            <div class="rk-fl-controls">
                <h3>Przykład danych hydraulicznych dla zmiany okładziny</h3>
                <p style="font-size: 13px; color: var(--rk-fl-muted); margin-top: -15px; margin-bottom: 20px;">
                    Przy stałym zapotrzebowaniu na moc: <strong>q = 50 W/m²</strong>
                </p>

                <div class="rk-fl-switch-group">
                    <div class="rk-fl-switch-btn active" id="btn-tiles" onclick="rkSwitchFloor('tiles')">
                        Gres ceramiczny
                    </div>
                    <div class="rk-fl-switch-btn" id="btn-panels" onclick="rkSwitchFloor('panels')">
                        Panele laminowane
                    </div>
                </div>

                <div class="rk-fl-data-grid">
                    <div class="rk-fl-data-card">
                        <span class="rk-fl-data-label">Opór cieplny (R)</span>
                        <span class="rk-fl-data-val" id="val-r">0,01 <span style="font-size:14px">m²K/W</span></span>
                    </div>
                    <div class="rk-fl-data-card">
                        <span class="rk-fl-data-label">Temp. podłogi</span>
                        <span class="rk-fl-data-val">24,5 <span style="font-size:14px">°C</span></span>
                    </div>
                    <div class="rk-fl-data-card highlight">
                        <span class="rk-fl-data-label">Wymagana Temp. Zasilania</span>
                        <span class="rk-fl-data-val val-success" id="val-tz">33 °C</span>
                    </div>
                    <div class="rk-fl-data-card highlight">
                        <span class="rk-fl-data-label">Skutek dla COP (Wydajność)</span>
                        <span class="rk-fl-data-val val-success" id="val-cop">MAX (100%)</span>
                    </div>
                </div>

            </div>

        </div>

        <div class="rk-fl-cta">
            <p><strong>Złota zasada instalatora:</strong> Podniesienie temperatury zasilania (Tz) zaledwie z 33°C na 38°C (wymuszone przez panele) obniża współczynnik efektywności COP pompy ciepła o około 10-12%. To bezpośrednio przekłada się na proporcjonalnie wyższe rachunki za prąd przez cały sezon grzewczy.</p>
            <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">
                Wybierz odpowiednią okładzinę ➔
            </a>
        </div>

    </div>
</div>

<script>
function rkSwitchFloor(type) {
    const visual = document.getElementById('rkFlVisual');
    const btnTiles = document.getElementById('btn-tiles');
    const btnPanels = document.getElementById('btn-panels');
    
    const valR = document.getElementById('val-r');
    const valTz = document.getElementById('val-tz');
    const valCop = document.getElementById('val-cop');

    if(type === 'tiles') {
        visual.className = 'rk-fl-visual-box state-tiles';
        btnTiles.classList.add('active');
        btnPanels.classList.remove('active');

        valR.innerHTML = '0,01 <span style="font-size:14px">m²K/W</span>';
        valTz.innerHTML = '33 °C';
        valTz.className = 'rk-fl-data-val val-success';
        
        valCop.innerHTML = 'MAX (100%)';
        valCop.className = 'rk-fl-data-val val-success';
    } else {
        visual.className = 'rk-fl-visual-box state-panels';
        btnPanels.classList.add('active');
        btnTiles.classList.remove('active');

        valR.innerHTML = '0,12 <span style="font-size:14px">m²K/W</span>';
        valTz.innerHTML = '38 °C';
        valTz.className = 'rk-fl-data-val val-danger';
        
        valCop.innerHTML = 'Spadek o -12%';
        valCop.className = 'rk-fl-data-val val-danger';
    }
}
</script>



<style>
:root {
    --rk-calc-bg: #f8fafc;
    --rk-calc-card: #ffffff;
    --rk-calc-dark: #0f172a;
    --rk-calc-brand: #2563eb; 
    --rk-calc-brand-hover: #1d4ed8;
    --rk-calc-brand-light: #eff6ff;
    --rk-calc-accent: #f97316; 
    --rk-calc-success: #10b981;
    --rk-calc-warning: #f59e0b;
    --rk-calc-danger: #ef4444;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
}

.rk-calc-wrapper {
    max-width: 1000px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.2);
    overflow: hidden;
    color: var(--rk-calc-dark);
}

/* Nagłówek Kalkulatora */
.rk-calc-head {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e3a8a 100%);
    padding: 40px 45px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-calc-head::after {
    content: '';
    position: absolute;
    right: -50px;
    top: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37,99,235,0.4) 0%, transparent 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-calc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #93c5fd;
    padding: 8px 16px;
    border-radius: 99px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    backdrop-filter: blur(4px);
}

.rk-calc-head h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.2;
}

.rk-calc-head p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    max-width: 650px;
    line-height: 1.6;
}

/* Grid Główny */
.rk-calc-body {
    display: grid;
    grid-template-columns: 1.3fr 1fr;
    background: var(--rk-calc-bg);
}

/* Sekcja Lewa - Konfigurator */
.rk-calc-controls {
    padding: 40px 45px;
    background: #ffffff;
    border-right: 1px solid var(--rk-calc-border);
}

.rk-calc-section-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 30px 0 20px 0;
}

.rk-calc-section-title:first-child {
    margin-top: 0;
}

.rk-calc-section-title svg {
    color: var(--rk-calc-brand);
}

/* Przyciski Wyboru (Kafelki z ikonami) */
.rk-calc-btn-group {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
}

.rk-calc-opt-btn {
    background: #ffffff;
    border: 2px solid var(--rk-calc-border);
    border-radius: 14px;
    padding: 15px 10px;
    text-align: center;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-calc-opt-btn:hover {
    border-color: #93c5fd;
    background: var(--rk-calc-brand-light);
}

.rk-calc-opt-btn.active {
    border-color: var(--rk-calc-brand);
    background: var(--rk-calc-brand-light);
    box-shadow: 0 8px 15px -5px rgba(37, 99, 235, 0.15);
}

.rk-calc-opt-icon {
    width: 28px;
    height: 28px;
    color: var(--rk-calc-muted);
    transition: color 0.3s;
}

.rk-calc-opt-btn.active .rk-calc-opt-icon {
    color: var(--rk-calc-brand);
}

.rk-calc-opt-text {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-text);
}

.rk-calc-opt-btn.active .rk-calc-opt-text {
    color: var(--rk-calc-brand);
}

/* Suwaki Modern */
.rk-slider-wrap {
    margin-bottom: 25px;
    background: #f8fafc;
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid #f1f5f9;
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 12px;
}

.rk-slider-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-dark);
}

.rk-slider-val {
    background: var(--rk-calc-brand);
    color: #ffffff;
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    box-shadow: 0 2px 5px rgba(37, 99, 235, 0.2);
}

.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: #cbd5e1;
    border-radius: 3px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-calc-brand);
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

.rk-range-input::-webkit-slider-thumb:active {
    transform: scale(1.15);
}

/* Sekcja Prawa - Wyniki */
.rk-calc-results {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* Główny Wynik z SVG */
.rk-res-main-card {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px 20px;
    text-align: center;
    border: 1px solid var(--rk-calc-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    position: relative;
    overflow: hidden;
}

.rk-res-gauge {
    width: 120px;
    height: 60px;
    margin: 0 auto 10px auto;
    position: relative;
}

.rk-gauge-path-bg { fill: none; stroke: #e2e8f0; stroke-width: 12; stroke-linecap: round; }
.rk-gauge-path-val { fill: none; stroke: var(--rk-calc-success); stroke-width: 12; stroke-linecap: round; transition: stroke-dashoffset 0.8s ease, stroke 0.3s; }

.rk-res-huge {
    font-size: 52px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    line-height: 1;
    margin-bottom: 5px;
    letter-spacing: -1px;
}

.rk-res-unit {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
}

.rk-res-alert {
    margin-top: 15px;
    padding: 10px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    display: none;
    background: var(--rk-calc-danger);
    color: #ffffff;
    animation: pulseAlert 2s infinite;
}

@keyframes pulseAlert {
    0% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
    70% { box-shadow: 0 0 0 10px rgba(239, 68, 68, 0); }
    100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
}

/* Tabela Parametrów */
.rk-res-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-res-box {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    padding: 15px;
    border-radius: 14px;
}

.rk-res-box.accent {
    background: var(--rk-calc-dark);
    border-color: var(--rk-calc-dark);
}

.rk-res-box-label {
    font-size: 11px;
    color: var(--rk-calc-muted);
    font-weight: 800;
    text-transform: uppercase;
    display: block;
    margin-bottom: 5px;
}

.rk-res-box.accent .rk-res-box-label { color: #94a3b8; }

.rk-res-box-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-calc-dark);
}

.rk-res-box.accent .rk-res-box-val { color: #ffffff; }

/* Pasek strat ciepła */
.rk-loss-bar-wrap {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
}

.rk-loss-bar-title {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-calc-muted);
    text-transform: uppercase;
    margin-bottom: 10px;
    display: block;
}

.rk-loss-bar {
    height: 12px;
    display: flex;
    border-radius: 6px;
    overflow: hidden;
    background: #e2e8f0;
}

.rk-lb-segment { height: 100%; transition: width 0.5s ease; }
.rk-lb-w { background: var(--rk-calc-brand); }
.rk-lb-r { background: #38bdf8; }
.rk-lb-f { background: var(--rk-calc-accent); }
.rk-lb-v { background: #94a3b8; }

.rk-loss-legend {
    display: flex;
    justify-content: space-between;
    margin-top: 10px;
    font-size: 10px;
    font-weight: 700;
    color: var(--rk-calc-muted);
}

.rk-leg-item { display: flex; align-items: center; gap: 4px; }
.rk-leg-dot { width: 8px; height: 8px; border-radius: 50%; }

/* Sekcja Info Tekstowego & CTA */
.rk-calc-footer {
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
    padding: 40px 45px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-calc-info-text {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    background: var(--rk-calc-brand-light);
    padding: 20px;
    border-left: 4px solid var(--rk-calc-brand);
    border-radius: 0 12px 12px 0;
    margin: 0;
}

.rk-calc-info-text a {
    color: var(--rk-calc-brand);
    font-weight: 700;
    text-decoration: underline;
}

.rk-calc-actions {
    display: flex;
    gap: 20px;
    align-items: center;
}

.rk-btn-primary {
    background: var(--rk-calc-accent);
    color: #ffffff;
    padding: 16px 30px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 900;
    text-decoration: none;
    text-transform: uppercase;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    transition: all 0.3s;
    border: none;
    cursor: pointer;
}

.rk-btn-primary:hover {
    transform: translateY(-3px);
    background: #ea580c;
    box-shadow: 0 15px 25px -5px rgba(249, 115, 22, 0.5);
}

@media (max-width: 900px) {
    .rk-calc-body { grid-template-columns: 1fr; }
    .rk-calc-head { padding: 35px 25px; }
    .rk-calc-controls { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-calc-border); }
    .rk-calc-results { padding: 30px 20px; }
    .rk-calc-footer { padding: 30px 20px; }
    .rk-calc-actions { flex-direction: column; }
    .rk-btn-primary { width: 100%; justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-calculator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Kalkulator strat ciepła budynku online – oblicz zapotrzebowanie na ogrzewanie",
    "description": "Profesjonalny symulator OZC. Oblicz zapotrzebowanie na moc (W/m2), długość pętli grzewczych i dobierz optymalną temperaturę zasilania dla pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-calculator",
    "name": "Szacunkowe Parametry Wykonawcze Ogrzewania Podłogowego",
    "description": "Zbiór obliczonych parametrów hydraulicznych i termicznych wygenerowanych na podstawie wprowadzonych wskaźników izolacyjności przegród budowlanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zapotrzebowanie cieplne W/m2",
      "dobór pompy obiegowej",
      "planowanie pętli grzewczych",
      "kosztorys ogrzewania podłogowego",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Szacowanie heurystyczne bazujące na uproszczonych wzorach normy PN-EN 12831, przeliczające sumę strat przez przenikanie i wentylację na metraż instalacji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wynik > 95 W/m2 wskazuje na wysokie ryzyko niedogrzania samym systemem podłogowym.",
        "Zapotrzebowanie określa średnią wymaganą ilość mb rury instalacyjnej.",
        "Moc całkowita determinuje dobór mocy źródła ciepła (pompy ciepła)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-calculator",
    "name": "Zaawansowany Symulator Zapotrzebowania Cieplnego",
    "description": "Interaktywna aplikacja inżynierska wizualizująca na żywo zmiany parametrów instalacyjnych (temperatura, rozstaw rur) w zależności od grubości ocieplenia i rodzaju posadzki.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript enabled browser.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-wrapper" id="rk-calc-app">
    <div class="rk-calc-head">
        <div class="rk-calc-badge">Narzędzie Inżynierskie</div>
        <h2>Kalkulator strat ciepła budynku online – oblicz zapotrzebowanie na ogrzewanie</h2>
        <p>Wprowadź gabaryty swojego budynku oraz parametry przegród, aby błyskawicznie oszacować moc grzewczą i optymalne parametry pracy pętli podłogowych. Pamiętaj, że uzyskane wyniki mają <strong>charakter wyłącznie poglądowy</strong> i nie zastępują profesjonalnego projektu (OZC).</p>
    </div>

    <div class="rk-calc-body">
        
        <div class="rk-calc-controls">
            
            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                1. Standard energetyczny
            </div>
            <div class="rk-calc-btn-group">
                <div class="rk-calc-opt-btn active" onclick="rkSetPreset('new', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2" ry="2"></rect><path d="M7 11V7a5 5 0 0 1 10 0v4"></path></svg>
                    <span class="rk-calc-opt-text">Nowy Dom<br>(WT 2021)</span>
                </div>
                <div class="rk-calc-opt-btn" onclick="rkSetPreset('mod', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    <span class="rk-calc-opt-text">Docieplony<br>(Modernizacja)</span>
                </div>
                <div class="rk-calc-opt-btn" onclick="rkSetPreset('old', this)">
                    <svg class="rk-calc-opt-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    <span class="rk-calc-opt-text">Stary Dom<br>(Bez izolacji)</span>
                </div>
            </div>

            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="4" y1="12" x2="20" y2="12"></line><line x1="12" y1="4" x2="12" y2="20"></line></svg>
                2. Geometria i Fizyka budowli
            </div>
            
            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Powierzchnia ogrzewana</span>
                    <span class="rk-slider-val"><span id="rk-v-area">140</span> m²</span>
                </div>
                <input type="range" id="rk-area" class="rk-range-input" min="40" max="300" value="140" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Strefa Klimatyczna</span>
                    <span class="rk-slider-val">Strefa <span id="rk-v-zone">III</span> (<span id="rk-v-temp">-20</span>°C)</span>
                </div>
                <input type="range" id="rk-zone" class="rk-range-input" min="1" max="5" step="1" value="3" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Ścian (U)</span>
                    <span class="rk-slider-val" id="rk-v-walls">0.18</span>
                </div>
                <input type="range" id="rk-walls" class="rk-range-input" min="0.1" max="1.5" step="0.01" value="0.18" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Dachu (U)</span>
                    <span class="rk-slider-val" id="rk-v-roof">0.15</span>
                </div>
                <input type="range" id="rk-roof" class="rk-range-input" min="0.1" max="1.0" step="0.01" value="0.15" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-slider-wrap">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wsp. przenikania Podłogi (U)</span>
                    <span class="rk-slider-val" id="rk-v-floor">0.25</span>
                </div>
                <input type="range" id="rk-floor" class="rk-range-input" min="0.1" max="1.5" step="0.01" value="0.25" oninput="rkUpdateCalc()">
            </div>

            <div class="rk-calc-section-title">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                3. Wykończenie posadzki
            </div>
            <div class="rk-calc-btn-group">
                <div class="rk-calc-opt-btn active" id="rk-f-tiles" onclick="rkSetFloor(0.02, 'tiles')">
                    <span class="rk-calc-opt-text">PŁYTKI/GRES</span>
                </div>
                <div class="rk-calc-opt-btn" id="rk-f-panels" onclick="rkSetFloor(0.08, 'panels')">
                    <span class="rk-calc-opt-text">PANELE</span>
                </div>
                <div class="rk-calc-opt-btn" id="rk-f-wood" onclick="rkSetFloor(0.12, 'wood')">
                    <span class="rk-calc-opt-text">DESKA</span>
                </div>
            </div>

        </div>

        <div class="rk-calc-results">
            
            <div class="rk-res-main-card">
                <div class="rk-res-gauge">
                    <svg viewBox="0 0 100 50" width="100%" height="100%">
                        <path class="rk-gauge-path-bg" d="M 10 50 A 40 40 0 0 1 90 50" />
                        <path class="rk-gauge-path-val" id="rk-gauge-val" d="M 10 50 A 40 40 0 0 1 90 50" stroke-dasharray="125.6" stroke-dashoffset="125.6" />
                    </svg>
                </div>
                <div class="rk-res-huge" id="rk-res-m2">--</div>
                <div class="rk-res-unit">Watów na m² (W/m²)</div>
                <div class="rk-res-alert" id="rk-alert-msg">
                    ⚠️ Krytyczne zapotrzebowanie. Sama instalacja podłogowa nie dogrzeje budynku w mrozy.
                </div>
            </div>

            <div class="rk-res-grid">
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Moc całkowita instalacji</span>
                    <span class="rk-res-box-val" id="rk-res-total">-- kW</span>
                </div>
                <div class="rk-res-box accent">
                    <span class="rk-res-box-label">Sugerowany rozstaw rur</span>
                    <span class="rk-res-box-val" id="rk-res-spacing">-- cm</span>
                </div>
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Temp. zasilania (Tz)</span>
                    <span class="rk-res-box-val" id="rk-res-tz" style="color:var(--rk-calc-accent)">-- °C</span>
                </div>
                <div class="rk-res-box">
                    <span class="rk-res-box-label">Ilość mb rury PEX (ok.)</span>
                    <span class="rk-res-box-val" id="rk-res-pipe">-- mb</span>
                </div>
            </div>

            <div class="rk-loss-bar-wrap">
                <span class="rk-loss-bar-title">Rozkład ucieczki ciepła</span>
                <div class="rk-loss-bar">
                    <div class="rk-lb-segment rk-lb-w" id="rk-bar-w" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-r" id="rk-bar-r" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-f" id="rk-bar-f" style="width: 0%"></div>
                    <div class="rk-lb-segment rk-lb-v" id="rk-bar-v" style="width: 0%"></div>
                </div>
                <div class="rk-loss-legend">
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-w"></div> Ściany</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-r"></div> Dach</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-f"></div> Podłoga</div>
                    <div class="rk-leg-item"><div class="rk-leg-dot rk-lb-v"></div> Wentylacja</div>
                </div>
            </div>

        </div>

    </div>

    <div class="rk-calc-footer">
        <h3>Jak czytać wyniki symulacji OZC?</h3>
        <p class="rk-calc-info-text">
            <strong>Zanim zamówisz materiały lub projekt, musisz oszacować zapotrzebowanie energetyczne!</strong> 
            Wyniki powyżej pokazują teoretyczne granice dla Twojego budynku i mają <strong>charakter poglądowy</strong>. Zbyt wysokie obciążenie (powyżej 80 W/m²) wymusi gęste układanie rur, a w efekcie zakup potężniejszego urządzenia grzewczego. Aby nie zgadywać w ciemno, bazuj na profesjonalnych wyliczeniach. Zastanów się zresztą sam: projekt "z głowy" czy pełny projekt inżynierski z obliczeniami strat? Różnica w kosztach późniejszej eksploatacji jest kolosalna.
        </p>
        <div class="rk-calc-actions">
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-primary">
                ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
            </a>
        </div>
    </div>

</div>

<script>
let rkActiveR = 0.02;
const rkZTemps = { 1: -16, 2: -18, 3: -20, 4: -22, 5: -24 };
const rkZNames = { 1: "I", 2: "II", 3: "III", 4: "IV", 5: "V" };

function rkSetPreset(type, el) {
    document.querySelectorAll('.rk-calc-btn-group')[0].querySelectorAll('.rk-calc-opt-btn').forEach(b => b.classList.remove('active'));
    el.classList.add('active');
    
    const p = {
        new: { w: 0.18, r: 0.15, f: 0.25 },
        mod: { w: 0.35, r: 0.25, f: 0.40 },
        old: { w: 1.10, r: 0.80, f: 1.00 }
    };
    
    document.getElementById('rk-walls').value = p[type].w;
    document.getElementById('rk-roof').value = p[type].r;
    document.getElementById('rk-floor').value = p[type].f;
    rkUpdateCalc();
}

function rkSetFloor(r, id) {
    rkActiveR = r;
    const btns = document.querySelectorAll('.rk-calc-btn-group')[1].querySelectorAll('.rk-calc-opt-btn');
    btns.forEach(b => b.classList.remove('active'));
    document.getElementById('rk-f-'+id).classList.add('active');
    rkUpdateCalc();
}

function rkUpdateCalc() {
    const area = parseFloat(document.getElementById('rk-area').value);
    const zone = document.getElementById('rk-zone').value;
    const uWalls = parseFloat(document.getElementById('rk-walls').value);
    const uRoof = parseFloat(document.getElementById('rk-roof').value);
    const uFloor = parseFloat(document.getElementById('rk-floor').value);
    
    const deltaT = 20 - rkZTemps[zone];
    
    // Update labels
    document.getElementById('rk-v-area').innerText = area;
    document.getElementById('rk-v-zone').innerText = rkZNames[zone];
    document.getElementById('rk-v-temp').innerText = rkZTemps[zone];
    document.getElementById('rk-v-walls').innerText = uWalls.toFixed(2);
    document.getElementById('rk-v-roof').innerText = uRoof.toFixed(2);
    document.getElementById('rk-v-floor').innerText = uFloor.toFixed(2);

    // Calc logic
    const qWalls = (area * 1.5) * uWalls * deltaT; // uśrednione ściany
    const qRoof = area * uRoof * deltaT;
    const qFloor = area * uFloor * 15; // stałe dt dla gruntu
    const qVent = 0.34 * (area * 2.6) * 0.5 * deltaT; // grawitacyjna went.
    
    const total = (qWalls + qRoof + qFloor + qVent) * 1.1; // +10% mostki
    const wm2 = total / area;

    // UI Updates
    document.getElementById('rk-res-m2').innerText = Math.round(wm2);
    document.getElementById('rk-res-total').innerText = (total / 1000).toFixed(2);

    // Gauge Update (Max 150 W/m2 for scale)
    const gaugeValPath = document.getElementById('rk-gauge-val');
    const circumference = 125.6; // pi * r (r=40) for semi-circle
    let pct = wm2 / 150;
    if(pct > 1) pct = 1;
    const offset = circumference - (pct * circumference);
    gaugeValPath.style.strokeDashoffset = offset;

    const alertMsg = document.getElementById('rk-alert-msg');
    if(wm2 > 95) {
        gaugeValPath.style.stroke = "var(--rk-calc-danger)";
        alertMsg.style.display = "block";
    } else if (wm2 > 65) {
        gaugeValPath.style.stroke = "var(--rk-calc-warning)";
        alertMsg.style.display = "none";
    } else {
        gaugeValPath.style.stroke = "var(--rk-calc-success)";
        alertMsg.style.display = "none";
    }

    // Parameters
    let spacing = (wm2 > 70 || rkActiveR > 0.08) ? 10 : 15;
    document.getElementById('rk-res-spacing').innerText = spacing;

    let tz = 20 + (wm2 * (0.12 + rkActiveR));
    tz = Math.min(55, Math.max(28, tz));
    document.getElementById('rk-res-tz').innerText = Math.round(tz) + " °C";

    const pipe = area * (100 / spacing) * 1.05;
    document.getElementById('rk-res-pipe').innerText = Math.round(pipe);

    // Bars
    document.getElementById('rk-bar-w').style.width = (qWalls/total*100) + "%";
    document.getElementById('rk-bar-r').style.width = (qRoof/total*100) + "%";
    document.getElementById('rk-bar-f').style.width = (qFloor/total*100) + "%";
    document.getElementById('rk-bar-v').style.width = (qVent/total*100) + "%";
}

// Init on load
document.addEventListener('DOMContentLoaded', rkUpdateCalc);
</script>



<style>
/* STYLE DLA SEKCJI HERO I WSTĘPU */
:root {
    --primary: #0f172a;
    --accent: #2563eb;
    --danger: #dc2626;
    --warning: #ea580c;
    --success: #16a34a;
    --bg-light: #f8fafc;
    --border-color: #e2e8f0;
}

.premium-intro-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
}

/* 1. HERO BOX */
.premium-hero-box {
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--border-color);
    overflow: hidden;
    position: relative;
    margin-bottom: 50px;
}

.premium-hero-box::before {
    content: '';
    position: absolute;
    top: 0;
    right: 0;
    width: 350px;
    height: 350px;
    background: radial-gradient(circle, rgba(37,99,235,0.06) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    transform: translate(30%, -30%);
    z-index: 0;
}

.hero-content {
    position: relative;
    z-index: 1;
    padding: 50px 55px;
    background: linear-gradient(to bottom, #ffffff, var(--bg-light));
}

.hero-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #eff6ff;
    color: var(--accent);
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid #bfdbfe;
}

.hero-title {
    margin-top: 0;
    margin-bottom: 25px;
    font-size: 36px;
    font-weight: 900;
    line-height: 1.2;
    color: var(--primary);
}

.hero-text {
    font-size: 17px;
    line-height: 1.8;
    color: #475569;
    margin-bottom: 20px;
}

.hero-text strong {
    color: var(--primary);
}

.hero-text:last-of-type {
    margin-bottom: 0;
}

/* 2. KARTY - 4 CZYNNIKI */
.factors-section {
    padding: 20px 0;
}

.factors-header {
    text-align: center;
    margin-bottom: 40px;
}

.factors-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--primary);
    margin-bottom: 15px;
}

.factors-header p {
    font-size: 16px;
    color: #64748b;
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

.factors-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.factor-card {
    background: #ffffff;
    border: 2px solid var(--border-color);
    border-radius: 20px;
    padding: 35px 30px;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.05);
    position: relative;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
}

.factor-card:hover {
    border-color: var(--accent);
    transform: translateY(-5px);
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.15);
}

.factor-icon {
    width: 56px;
    height: 56px;
    background: #eff6ff;
    color: var(--accent);
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    margin-bottom: 25px;
    transition: transform 0.4s;
}

.factor-card:hover .factor-icon {
    transform: scale(1.1) rotate(-5deg);
}

.factor-card h4 {
    margin: 0 0 15px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--primary);
    line-height: 1.3;
}

.factor-card p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.65;
    color: #475569;
}

.factor-example {
    background: #f8fafc;
    padding: 18px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--accent);
    font-size: 14px;
    color: #334155;
    line-height: 1.6;
    margin-top: auto;
}

.factor-example strong {
    color: var(--primary);
    display: block;
    margin-bottom: 5px;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.formula-box {
    background: #ffffff;
    border: 1px dashed #cbd5e1;
    padding: 10px;
    border-radius: 8px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    margin-top: 10px;
    text-align: center;
}

/* Wyróżnienia kolorystyczne dla konkretnych kart */
.card-iso .factor-example { border-left-color: var(--success); }
.card-iso .factor-icon { background: #dcfce7; color: var(--success); }

.card-flow .factor-example { border-left-color: var(--accent); }

.card-len .factor-example { border-left-color: var(--danger); }
.card-len .factor-icon { background: #fee2e2; color: var(--danger); }

.card-pump .factor-example { border-left-color: var(--warning); }
.card-pump .factor-icon { background: #ffedd5; color: var(--warning); }

/* KREATYWNE CTA */
.rk-prm-cta-box {
    margin-top: 50px;
    background: linear-gradient(135deg, #2563eb 0%, #1e3a8a 100%);
    border-radius: 20px;
    padding: 40px 50px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 30px;
    color: #ffffff;
    box-shadow: 0 15px 30px -10px rgba(37, 99, 235, 0.4);
}

.rk-prm-cta-text h3 {
    margin: 0 0 10px 0;
    font-size: 24px;
    font-weight: 900;
}

.rk-prm-cta-text p {
    margin: 0;
    font-size: 15px;
    opacity: 0.9;
    max-width: 500px;
    line-height: 1.6;
}

.rk-prm-btn-massive {
    background: #ffffff;
    color: var(--accent);
    padding: 18px 30px;
    border-radius: 14px;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
    box-shadow: 0 10px 20px rgba(0,0,0,0.1);
    transition: all 0.3s;
}

.rk-prm-btn-massive:hover {
    transform: translateY(-4px);
    box-shadow: 0 15px 25px rgba(0,0,0,0.2);
    background: #f8fafc;
}

@media (max-width: 900px) {
    .hero-content { padding: 40px 30px; }
    .hero-title { font-size: 28px; }
    .factors-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-prm-cta-box { flex-direction: column; text-align: center; padding: 35px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#projekt-hydrauliczny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Jak wyniki z kalkulatora strat ciepła wpływają na projekt ogrzewania podłogowego?",
    "description": "Przełożenie obciążenia cieplnego na parametry hydrauliczne: rozstaw rur PEX, rotametry, długość pętli oraz dobór pompy ciepła i bufora.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-hydraulika",
    "name": "Wytyczne Hydrauliczne Projektowania Ogrzewania Podłogowego",
    "description": "Techniczne korelacje pomiędzy zapotrzebowaniem energetycznym budynku a ustawieniami przepływów, długością pętli i doborem elementów maszynowni.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego parametry",
      "rozstaw rur w ogrzewaniu podłogowym",
      "maksymalna długość pętli ogrzewania podłogowego",
      "ustawienie przepływów na rotametrach",
      "dobór pompy ciepła i bufora"
    ],
    "measurementTechnique": "Konwersja obciążenia cieplnego (W/m2) na przepływy masowe przy zakładanym spadku temperatury dT=5K oraz wyznaczanie oporów hydraulicznych pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw rur: 20 cm dla <45 W/m2, 15 cm dla 50-80 W/m2, 10 cm dla stref brzegowych.",
        "Przepływ masowy (l/min) wyliczany z proporcji Mocy i delta T (ΔT).",
        "Maksymalna długość pojedynczej pętli rury 16x2.0 mm: 100-120 mb w celu ograniczenia oporów poniżej 20 kPa.",
        "Sumaryczna moc budynku warunkuje moc grzewczą pompy ciepła w punkcie biwalencyjnym."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-hydraulika",
    "name": "Przewodnik Parametrów Projektowych",
    "description": "Narzędzie tłumaczące inżynierskie przełożenie wyników audytu OZC na fizyczne elementy instalacji ogrzewania podłogowego (rury, rozdzielacze, bufory).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="premium-intro-module" id="intro-hero-app">
    
    <div class="premium-hero-box">
        <div class="hero-content">
            <div class="hero-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                Inżynieria w praktyce
            </div>
            
            <h2 class="hero-title">Jak wyniki z kalkulatora strat ciepła wpływają na projekt ogrzewania podłogowego?</h2>
            
            <p class="hero-text">Wprowadzenie dokładnych danych z kalkulatora strat ciepła budynku jest fundamentem do wykonania poprawnego, profesjonalnego projektu instalacji ogrzewania podłogowego.</p>
            
            <p class="hero-text">Wynik całkowitego obciążenia cieplnego (<strong>Q<sub>total</sub></strong>) oraz wskaźniki jednostkowe (<strong>W/m²</strong>) determinują kluczowe parametry hydrauliczne i montażowe układu wodnego, eliminując kosztowne błędy wykonawcze.</p>
        </div>
    </div>

    <div class="factors-section">
        <div class="factors-header">
            <h2>Przełożenie wyników na 4 parametry hydrauliczne projektu</h2>
            <p>Zobacz, jak wartości uzyskane z kalkulatora bezpośrednio determinują dobór komponentów i zasady montażu w Twoim domu.</p>
        </div>
        
        <div class="factors-grid">
            
            <div class="factor-card card-iso">
                <div class="factor-icon">📏</div>
                <h4>Dobór rozstawu rur (zagęszczenie wężownicy)</h4>
                <p>Wskaźniki jednostkowe zapotrzebowania z kalkulatora (ilość W/m²) bezpośrednio decydują o zagęszczeniu rur. Prawidłowy dobór gwarantuje, że podłoga odda dokładnie tyle ciepła, ile potrzebuje pomieszczenie w mroźne dni.</p>
                <div class="factor-example">
                    <strong>Zasady rozstawu:</strong>
                    • &lt; 45 W/m² → Rozstaw co <strong>20 cm</strong> (domy energooszczędne).<br>
                    • 50-80 W/m² → Rozstaw co <strong>15 cm</strong> (standard).<br>
                    • &gt; 80 W/m² lub duże okna → Zagęszczenie co <strong>10 cm</strong> (strefy brzegowe).
                </div>
            </div>

            <div class="factor-card card-flow">
                <div class="factor-icon">⚖️</div>
                <h4>Wyznaczenie przepływów masowych (rotametry)</h4>
                <p>Dokładna moc pętli z OZC pozwala wyliczyć wymagany przepływ wody na belce rozdzielacza. Tę wartość hydraulik musi precyzyjnie ustawić na rotametrze podczas procedury równoważenia instalacji.</p>
                <div class="factor-example">
                    <strong>Przykład z projektu:</strong>
                    Dla pętli o mocy Q = 1200 W i spadku temperatury ΔT = 5 K, wymagany przepływ wynosi:
                    <div class="formula-box">
                        ṁ = Q / (c · ΔT) = 1200 / (1,163 · 5) = 206,3 kg/h ≈ 3,43 l/min
                    </div>
                </div>
            </div>

            <div class="factor-card card-len">
                <div class="factor-icon">🛑</div>
                <h4>Maksymalna długość pętli grzewczej</h4>
                <p>Projektant, znając przepływy i wynikowe straty ciepła, dzieli powierzchnię posadzki na sekcje. Robi to tak, aby nie przekroczyć granicznych oporów hydraulicznych, z którymi nie poradzi sobie pompa obiegowa.</p>
                <div class="factor-example">
                    <strong>Limit inżynierski:</strong>
                    Pojedyncza pętla z popularnej rury o średnicy 16 mm <strong>nie może przekroczyć 100-120 metrów długości</strong>. Dłuższa rura wygeneruje opory powyżej 20 kPa, powodując efekt „zimnej podłogi” na końcu obiegu w salonie.
                </div>
            </div>

            <div class="factor-card card-pump">
                <div class="factor-icon">⚙️</div>
                <h4>Dobór pompy ciepła i bufora</h4>
                <p>Całkowita moc budynku uzyskana z kalkulatora (np. 7,5 kW dla skrajnej temperatury -20°C) wskazuje wprost inwestorowi i projektantowi, jakiej klasy mocowej model pompy ciepła należy zakupić.</p>
                <div class="factor-example">
                    <strong>Dlaczego to jest ważne?</strong>
                    Precyzyjny dobór mocy zapobiega instalacji urządzeń zbyt dużych (przewymiarowanych), które ulegają przyspieszonym awariom z powodu tzw. taktowania kompresora. Wyznacza też wymaganą minimalną pojemność bufora dla procesu defrostu.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-prm-cta-box">
        <div class="rk-prm-cta-text">
            <h3>Koniec z szacowaniem "na oko"!</h3>
            <p>Nie pozwól instalatorowi układać rur bez rzetelnego, matematycznego planu. Zainwestuj w pełny projekt inżynierski OZC, który zbilansuje każdy litr wody w Twoim domu. <strong>To jedyna gwarancja niskich rachunków.</strong></p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-prm-btn-massive">
            Zamów Kompletny Projekt
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // ZABEZPIECZENIE DOMENOWE
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const appContainer = document.getElementById('intro-hero-app');
        if (appContainer) {
            appContainer.innerHTML = `
                <div style="padding: 60px 20px; text-align: center; background: #fee2e2; color: #dc2626; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; border-radius: 24px; font-family: sans-serif;">
                    <span style="font-size: 48px; margin-bottom: 20px;">🔒</span>
                    <h3 style="margin-top:0; font-size: 24px; font-weight: 900;">Treść chroniona prawem autorskim</h3>
                    <p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5; margin-bottom: 25px;">Ten moduł jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został wdrożony na nieautoryzowanej domenie.</p>
                    <a href="https://projekt-ogrzewania.pl/" style="padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINAŁ</a>
                </div>
            `;
        }
    }
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-panel: #1e293b;
    --rk-err-danger: #ef4444; 
    --rk-err-danger-light: #fef2f2;
    --rk-err-warn: #f59e0b; 
    --rk-err-safe: #10b981; 
    --rk-err-blue: #3b82f6; 
    --rk-err-bg: #ffffff;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

.rk-err-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(239, 68, 68, 0.15);
    border: 1px solid rgba(239, 68, 68, 0.3);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-err-header {
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #450a0a 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-err-danger);
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(252, 165, 165, 0.2);
}

.rk-err-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 10px 0;
}

.rk-err-title span { color: #f87171; }

.rk-err-subtitle {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    max-width: 700px;
    line-height: 1.6;
}

/* Moduł Interaktywny */
.rk-err-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-err-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 30px;
}

/* Lista błędów (Lewa Kolumna) */
.rk-err-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-err-btn {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    padding: 18px 20px;
    border-radius: 16px;
    text-align: left;
    cursor: pointer;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-err-btn:hover {
    border-color: var(--rk-err-danger);
    transform: translateX(4px);
}

.rk-err-btn.active {
    background: var(--rk-err-danger-light);
    border-color: var(--rk-err-danger);
    box-shadow: inset 4px 0 0 var(--rk-err-danger), 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-err-icon {
    width: 32px;
    height: 32px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-err-muted);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-err-btn.active .rk-err-icon {
    background: var(--rk-err-danger);
    color: #ffffff;
}

.rk-err-btn-text h4 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-dark);
}

.rk-err-btn-text p {
    margin: 0;
    font-size: 12px;
    color: var(--rk-err-muted);
    line-height: 1.4;
}

/* Karty CTA (Długi Ogon - Wypełnienie Pustego Miejsca na lewym pasku) */
.rk-err-cta-card {
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    border-radius: 14px;
    padding: 18px 20px;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 1px solid #334155;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
    transition: transform 0.3s, box-shadow 0.3s, border-color 0.3s;
    margin-top: 5px;
}

.rk-err-cta-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(15, 23, 42, 0.4);
    border-color: var(--rk-err-danger);
}

.err-cta-badge {
    font-size: 10px;
    color: #cbd5e1;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.err-cta-badge::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--rk-err-danger);
    border-radius: 50%;
}

.err-cta-title {
    font-size: 14px;
    color: #ffffff;
    font-weight: 700;
    line-height: 1.5;
    padding-right: 25px;
}

.err-cta-arrow {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-err-danger);
    font-size: 18px;
    font-weight: bold;
    transition: right 0.3s;
}

.rk-err-cta-card:hover .err-cta-arrow {
    right: 15px;
}

/* Panel Detali (Prawa Kolumna - Zoptymalizowana pod Długi Ogon Tekstu) */
.rk-err-display {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

.rk-err-panel {
    display: none;
    flex-direction: column;
    height: 100%;
}

.rk-err-panel.active {
    display: flex;
    animation: fadeInScale 0.4s ease-out forwards;
}

@keyframes fadeInScale {
    from { opacity: 0; transform: scale(0.98); }
    to { opacity: 1; transform: scale(1); }
}

/* Treść Panelu Pełnotekstowego */
.rk-err-content {
    padding: 40px 45px;
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}

.rk-err-content h3 {
    margin: 0 0 20px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-err-dark);
    line-height: 1.3;
}

.rk-err-content p {
    margin: 0 0 18px 0;
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-err-text);
}

.rk-err-content strong {
    color: var(--rk-err-dark);
    font-weight: 800;
}

.rk-err-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--rk-err-danger);
    font-weight: 800;
    font-size: 15px;
    text-decoration: none;
    margin-top: 15px;
    padding-top: 25px;
    border-top: 1px dashed var(--rk-err-border);
    transition: color 0.3s;
}

.rk-err-link:hover { color: #991b1b; }
.rk-err-link svg { transition: transform 0.3s; }
.rk-err-link:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-err-header { padding: 35px 25px; }
    .rk-err-title { font-size: 24px; }
    .rk-err-interactive { padding: 25px; }
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-content { padding: 30px 25px; }
    .rk-err-content h3 { font-size: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-bledy-szacowania",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Najczęstsze błędy inwestorów przy samodzielnym szacowaniu zapotrzebowania na ciepło",
    "description": "Kluczowe pułapki podczas obliczania strat cieplnych: ignorowanie izolacji brzegowej, błędna kubatura do strat wentylacyjnych, zła strefa klimatyczna oraz wpływ wylewki na bezwładność.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-bledy",
    "name": "Rejestr Błędów Szacunkowych Zapotrzebowania Cieplnego",
    "description": "Wykaz najczęstszych odchyleń w samodzielnych audytach energetycznych wpływających na przewymiarowanie pomp ciepła i nieefektywność instalacji płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy obliczeniowe OZC",
      "grubość wylewki a straty ciepła",
      "izolacja brzegowa podłogówki",
      "strefa klimatyczna w Polsce",
      "straty wentylacyjne kubatura",
      "straty ciepła przez duże przeszklenia",
      "temperatura w łazience 24 stopnie"
    ],
    "measurementTechnique": "Weryfikacja parametrów audytowych poprzez porównanie wskaźników normatywnych z błędnymi założeniami inwestorskimi.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Fałszywy wskaźnik 50 W/m2 przy dużych przeszkleniach północnych.",
        "Generowanie masywnej bezwładności przez wylewki grubsze niż 6 cm.",
        "Zawyżanie kubatury wentylacyjnej przez przyjmowanie wysokości stanu surowego.",
        "Przemarzanie stref przez brak ciągłości izolacji brzegowej.",
        "Przyjmowanie uniwersalnej strefy klimatycznej zamiast lokalnej temperatury projektowej.",
        "Ignorowanie wyższej temperatury docelowej (+24°C) dla łazienek w bilansie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-error-scanner",
    "name": "Przegląd Błędów Obliczeniowych HVAC",
    "description": "Narzędzie nawigacyjne demaskujące wpływ niewłaściwych założeń architektonicznych i materiałowych na błędy w kalkulatorach zapotrzebowania cieplnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Skaner Ryzyka Inwestycyjnego
        </div>
        <h2 class="rk-err-title">Najczęstsze błędy inwestorów przy <span>samodzielnym szacowaniu zapotrzebowania</span> na ciepło</h2>
        <p class="rk-err-subtitle">Nawet najlepszy kalkulator poda fałszywy wynik, jeśli wprowadzisz do niego błędne dane wejściowe. Zobacz 6 grzechów głównych, które zrujnują bilans energetyczny Twojego domu.</p>
    </div>

    <div class="rk-err-interactive">
        <div class="rk-err-grid">
            
            <div class="rk-err-list">
                
                <button class="rk-err-btn active" data-err="err-1">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Ślepa wiara w internet</h4>
                        <p>Ignorowanie dużych okien</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-2">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20"></path><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Bezwładność wylewki</h4>
                        <p>Opór grubego betonu</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-3">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="12 2 2 7 12 12 22 7 12 2"></polygon><polyline points="2 17 12 22 22 17"></polyline><polyline points="2 12 12 17 22 12"></polyline></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Błędy kubaturowe</h4>
                        <p>Stan surowy vs gotowy</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-4">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M5 12.55a11 11 0 0 1 14.08 0"></path><path d="M1.42 9a16 16 0 0 1 21.16 0"></path><path d="M8.53 16.11a6 6 0 0 1 6.95 0"></path><line x1="12" y1="20" x2="12.01" y2="20"></line></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Mostki termiczne</h4>
                        <p>Brak izolacji brzegowej</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-5">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Zła strefa klimatyczna</h4>
                        <p>Błąd na ΔT i temperaturze</p>
                    </div>
                </button>

                <button class="rk-err-btn" data-err="err-6">
                    <div class="rk-err-icon">
                        <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5C6 11.1 5 13 5 15a7 7 0 0 0 7 7z"></path></svg>
                    </div>
                    <div class="rk-err-btn-text">
                        <h4>Niedogrzana łazienka</h4>
                        <p>Ignorowanie normy +24°C</p>
                    </div>
                </button>

                <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/" class="rk-err-cta-card">
                    <div class="err-cta-badge">Kalkulacje a okładzina</div>
                    <div class="err-cta-title">Panele czy Płytki? Poznaj wpływ na efektywność instalacji</div>
                    <div class="err-cta-arrow">➔</div>
                </a>

                <a href="https://projekt-ogrzewania.pl/samodzielny-montaz-ogrzewania-podlogowego-5-bledow-ktorych-nie-naprawisz-po-wylewce/" class="rk-err-cta-card">
                    <div class="err-cta-badge">Ostrzeżenie Inżyniera</div>
                    <div class="err-cta-title">5 Błędów montażu, których nie naprawisz po wylewce</div>
                    <div class="err-cta-arrow">➔</div>
                </a>

            </div>

            <div class="rk-err-display">
                
                <div class="rk-err-panel active" id="err-1">
                    <div class="rk-err-content">
                        <h3>Przyjmowanie uśrednionych wskaźników z internetu</h3>
                        <p>Projektowanie instalacji na bazie ogólnikowego hasła „każdy nowy dom potrzebuje 50 W/m²” to proszenie się o kłopoty. Ignorowanie wielkości okien to błąd kardynalny. Dom z dużymi przeszkleniami od strony północnej może potrzebować w strefie przyokiennej potężnego zastrzyku mocy – w najchłodniejsze dni nawet do 90 W/m².</p>
                        <p><strong>Dlaczego duże okna tarasowe (np. typu HS) generują problemy?</strong> Przeszklenia mają zazwyczaj 3-4 krotnie gorszy współczynnik przenikania ciepła (U) niż dobrze ocieplona ściana zewnętrzna. Oznacza to, że salon z oknem na całą ścianę wychładza się drastycznie szybciej. Aby skompensować te <strong>straty ciepła przez duże przeszklenia</strong>, konieczne jest wyznaczenie precyzyjnej <strong>strefy brzegowej obwodowej w ogrzewaniu podłogowym</strong> z gęstszym rozstawem rur (najczęściej co 10 cm, a czasem nawet co 5 cm). Profesjonalny kalkulator strat ciepła budynku zawsze oddziela przegrody przezroczyste od pełnych ścian, co pozwala bezbłędnie zoptymalizować późniejszy projekt inżynierski.</p>
                        <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/" class="rk-err-link">
                            Zarządzaj strefą brzegową przy oknach 
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-2">
                    <div class="rk-err-content">
                        <h3>Nieuwzględnianie grubości i rodzaju wylewki</h3>
                        <p>Zbyt gruba wylewka betonowa (np. wylanie 10 cm standardowego betonu z miksokreta zamiast optymalnych 5-6 cm specjalistycznego jastrychu) drastycznie zaburza parametry. Kalkulator musi koniecznie uwzględniać ten opór cieplny warstwy nad rurami, inaczej oszacowana temperatura zasilania z kotła okaże się niewystarczająca do efektywnego przebicia grubej warstwy budulca i nagrzania posadzki.</p>
                        <p><strong>Jaka wylewka na ogrzewanie podłogowe sprawdzi się najlepiej?</strong> Wybór materiału ma kluczowy wpływ na roczne rachunki. Jastrych anhydrytowy charakteryzuje się znacznie wyższym współczynnikiem przewodzenia ciepła (λ) i płynną konsystencją, która idealnie, bez pęcherzyków powietrza otula rury PEX lub PERT. Znacznie mniejsza <strong>bezwładność cieplna w ogrzewaniu podłogowym</strong> z wylewką anhydrytową pozwala systemowi szybciej reagować na nagłe zmiany pogody, zmniejszając zużycie prądu przez pompę ciepła.</p>
                        <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-err-link">
                            Optymalna grubość wylewki – parametry i normy
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-3">
                    <div class="rk-err-content">
                        <h3>Błędne obliczanie kubatury do strat wentylacyjnych</h3>
                        <p>To powszechny, klasyczny błąd przy samodzielnych wyliczeniach! Przyjmowanie wysokości pomieszczeń bezpośrednio z rzutów architektonicznych z fazy stanu surowego (np. wpisywanie w tabelę 2,80 m lub 3,00 m) zamiast wartości docelowej netto po wykonaniu grubych izolacji podłóg styropianem, wylaniu jastrychu oraz montażu sufitów podwieszanych (gdzie realna wysokość wynosi np. 2,55 m). Taki pozornie drobny błąd sztucznie podnosi wynik w kalkulatorze o kilkanaście procent.</p>
                        <p><strong>Jak oblicza się straty cieplne w budynkach z rekuperacją?</strong> Precyzyjna kubatura przestrzeni powietrznej jest fundamentalna przy wentylacji mechanicznej z odzyskiem ciepła. Markowy rekuperator potrafi odzyskać ponad 80% ciepła z wywiewanego powietrza z pomieszczeń. Błędnie zawyżona objętość zmusza do projektowania większych, niepotrzebnych przepływów powietrza oraz potężnie zakłamuje <strong>projektowe obciążenie cieplne (OZC)</strong>. Skutek? Kupujesz mocniejszą, dużo droższą pompę ciepła, która przez cały sezon będzie fatalnie taktować, pracując na zwolnionych obrotach.</p>
                        <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-err-link">
                            Poznaj wpływ rekuperacji na obciążenie OZC
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-4">
                    <div class="rk-err-content">
                        <h3>Ignorowanie izolacji brzegowej i fundamentowej</h3>
                        <p>Pomijanie mocy uciekającej niekontrolowanie przez boki i krawędzie nagrzanej płyty grzewczej do otoczenia to inżynierski koszmar. Brak grubej, elastycznej pianki dylatacyjnej umieszczonej na stykach wylewki ze ścianami zewnętrznymi generuje potężny obwodowy mostek termiczny. To tędy najczęściej i bezpowrotnie ucieka energia na zewnątrz budynku, co często wywołuje ekstremalne wychłodzenie cokołów i powstawanie pleśni.</p>
                        <p><strong>Ile styropianu pod ogrzewanie podłogowe na gruncie?</strong> Absolutną bazą jest doskonała izolacja termiczna kładziona bezpośrednio na folii przeciwwilgociowej (standard WT to obecnie około 15-20 cm twardego styropianu rzędu EPS 100). Jej głównym zadaniem jest zablokowanie przekazywania ciepła w dół do gruntu. Z kolei profesjonalna <strong>izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego</strong> pełnią podwójną misję: jako amortyzator mechaniczny przejmują naprężenia termiczne rozszerzającego się jastrychu (zapobiegając pękaniu posadzki), oraz stanowią kluczową fizyczną blokadę cieplną pomiędzy płytą a murowanymi, zimnymi ścianami.</p>
                        <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-err-link">
                            Sprawdź zasady dylatacji i izolacji brzegowej 
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-5">
                    <div class="rk-err-content">
                        <h3>Błędne przypisanie strefy klimatycznej</h3>
                        <p>Polska nie jest jednolita termicznie! Wpisanie do kalkulatora domyślnej wartości -20°C dla inwestycji w Szczecinie (Strefa I: -16°C) zafałszuje wynik w górę. Z kolei dla inwestycji w Suwałkach (Strefa V: -24°C) instalacja zostanie dramatycznie niedoszacowana, co doprowadzi do przemarzania budynku.</p>
                        <p><strong>Jak strefa klimatyczna w Polsce wpływa na wynik kalkulatora strat ciepła?</strong> Różnica temperatur (ΔT) między wnętrzem a otoczeniem jest głównym i najsilniejszym mnożnikiem we wzorze na przenikanie. Błędne określenie dokładnej <strong>projektowej temperatury zewnętrznej</strong> sprawi, że sztucznie wyliczone zapotrzebowanie wymusi na Tobie zakup pompy ciepła o niewłaściwej mocy – a przesterowane urządzenie szybciej ulegnie kosztownej awarii kompresora.</p>
                        <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-err-link">
                            Sprawdź podział na strefy klimatyczne i normę PN-EN 12831
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

                <div class="rk-err-panel" id="err-6">
                    <div class="rk-err-content">
                        <h3>Ignorowanie wyższej temperatury docelowej w łazience</h3>
                        <p>Inwestorzy często liczą całą powierzchnię domu ryczałtowo, przyjmując wszędzie standardowe +20°C. Tymczasem zgodnie ze sztuką inżynierską oraz prawem budowlanym, docelowa temperatura komfortu w łazience musi wynosić +24°C. Różnica zaledwie 4 stopni potężnie zmienia i zawyża bilans cieplny dla tego pomieszczenia.</p>
                        <p><strong>Dlaczego łazienka wymaga innych obliczeń strat ciepła w kalkulatorze budowlanym?</strong> Wyższa delta temperatur (ΔT) oznacza drastycznie szybszą ucieczkę energii przez ściany i wentylację. Co gorsza, w łazience użyteczna, fizyczna powierzchnia wylewki pod <strong>ogrzewanie podłogowe</strong> jest mocno ograniczona przez stałą zabudowę (wanna, brodzik bez progu, szafki, stelaże WC). Wymusza to na projektancie OZC skrajne zagęszczenie rur grzewczych (często co 5-10 cm) oraz w 90% przypadków dodanie dedykowanego ściennego grzejnika elektrycznego do suszenia ręczników.</p>
                        <a href="https://projekt-ogrzewania.pl/jak-gesto-rozkladac-podlogowke/" class="rk-err-link">
                            Zobacz jak gęsto układać rury podłogówki w łazience
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
                        </a>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-err-btn');
    const panels = document.querySelectorAll('.rk-err-panel');

    // Obsługa zakładek błędów
    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            btn.classList.add('active');
            const targetId = btn.getAttribute('data-err');
            const targetPanel = document.getElementById(targetId);
            
            if(targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-panel: #1e293b;
    --rk-case-brand: #0284c7; /* Sky blue - techniczny i górski */
    --rk-case-brand-light: #f0f9ff;
    --rk-case-accent: #f59e0b; /* Bursztyn - ogrzewanie */
    --rk-case-danger: #ef4444; 
    --rk-case-success: #10b981; 
    --rk-case-bg: #ffffff;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #334155;
    --rk-case-muted: #64748b;
}

.rk-case-wrapper {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    overflow: hidden;
    color: var(--rk-case-dark);
}

/* Nagłówek Sekcji */
.rk-case-header {
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #082f49 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-case-brand);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #7dd3fc;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(125, 211, 252, 0.2);
}

.rk-case-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 15px 0;
}

.rk-case-title span { color: #38bdf8; }

.rk-case-intro {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

/* Moduł Interaktywny */
.rk-case-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-case-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Kontrolki - Lewa strona */
.rk-case-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-case-ctrl-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-case-ctrl-title {
    font-size: 15px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Przełączniki Suwakowe */
.rk-case-slider-wrap {
    position: relative;
    padding-top: 10px;
}

.rk-case-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #e2e8f0;
    border-radius: 4px;
    outline: none;
}

.rk-case-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-case-brand);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.15);
}

.rk-case-labels {
    display: flex;
    justify-content: space-between;
    margin-top: 12px;
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-case-muted);
}

/* Przełączniki Kafelkowe (Okładzina) */
.rk-case-btn-group {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

.rk-case-opt-btn {
    background: #f1f5f9;
    border: 2px solid transparent;
    padding: 12px;
    border-radius: 10px;
    text-align: center;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-case-muted);
    cursor: pointer;
    transition: 0.3s;
}

.rk-case-opt-btn.active {
    background: var(--rk-case-brand-light);
    border-color: var(--rk-case-brand);
    color: var(--rk-case-brand);
}

/* Wyniki - Prawa strona */
.rk-case-results {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-case-visual {
    background: var(--rk-case-dark);
    border-radius: 16px;
    border: 3px solid #334155;
    height: 200px;
    position: relative;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
}

.rk-case-svg {
    width: 100%;
    height: 100%;
}

.rk-case-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-case-card {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    padding: 15px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-case-card.highlight {
    background: var(--rk-case-dark);
    border-color: var(--rk-case-dark);
}

.rk-case-card-label {
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-case-muted);
    margin-bottom: 5px;
}

.rk-case-card.highlight .rk-case-card-label { color: #94a3b8; }

.rk-case-card-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

.rk-case-card.highlight .rk-case-card-val { color: #ffffff; font-size: 22px; }

/* Informacja podsumowująca i CTA */
.rk-case-content {
    padding: 0 50px 40px 50px;
    background: #f8fafc;
}

.rk-case-text-box {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 20px;
}

.rk-case-text-box h3 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

.rk-case-text-box p {
    margin: 0 0 15px 0;
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-case-text);
}

.rk-case-text-box p:last-child { margin: 0; }

.rk-case-link {
    color: var(--rk-case-brand);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-case-link:hover { color: #0369a1; }

@media (max-width: 768px) {
    .rk-case-header, .rk-case-interactive, .rk-case-content { padding: 30px 20px; }
    .rk-case-title { font-size: 24px; }
    .rk-case-grid { grid-template-columns: 1fr; gap: 30px; }
    .rk-case-visual { height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#case-study-rabka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Praktyczne Case Study: Obliczenia strat ciepła dla domu 150 m² w Rabce-Zdroju",
    "description": "Zobacz, jak trudne warunki klimatyczne (Strefa V) w Rabce-Zdroju wpływają na kalkulator zapotrzebowania na ogrzewanie, dobór pompy ciepła i rozstaw rur u inwestora Pana Zbigniewa.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-rabka",
    "name": "Analiza OZC: Case Study 150 m² Rabka Zdrój",
    "description": "Dane z symulacji obciążenia cieplnego dla budynku o pow. 150 m2 zlokalizowanego w V strefie klimatycznej (-24°C). Porównanie izolacji WT2021 ze starym budownictwem.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła Rabka",
      "zapotrzebowanie na ogrzewanie 150m2",
      "dobór pompy ciepła strefa V",
      "rozstaw rur w ogrzewaniu podłogowym",
      "projektowe obciążenie cieplne OZC"
    ],
    "measurementTechnique": "Szacowanie heurystyczne dla V strefy klimatycznej (ΔT = 44K) pokazujące wpływ standardu termicznego na całkowitą moc instalacji hydraulicznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Nowy dom WT2021: ok. 50 W/m2, Moc PC: 7.5 kW, Rozstaw rur: 15 cm.",
        "Dom po termo: ok. 80 W/m2, Moc PC: 12.0 kW, Rozstaw rur: 10 cm.",
        "Stary dom: ok. 140 W/m2, Moc 21.0 kW. Ogrzewanie podłogowe niewystarczające bez docieplenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-rabka",
    "name": "Symulator Case Study - Pan Zbigniew (Rabka-Zdrój)",
    "description": "Interaktywny moduł edukacyjny wizualizujący wpływ wyboru izolacji i okładziny na temperaturę zasilania i kosztorys wykonawczy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="rk-case-app">
    
    <div class="rk-case-header">
        <div class="rk-case-badge">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"></path><circle cx="12" cy="10" r="3"></circle></svg>
            Case Study: Pan Zbigniew (150 m²)
        </div>
        <h2 class="rk-case-title">Praktyczne Case Study: Obliczenia strat ciepła <span>dla domu w Rabce-Zdroju</span></h2>
        <p class="rk-case-intro">Pan Zbigniew z Rabki-Zdroju (V strefa klimatyczna, projektowa temperatura -24°C) planuje montaż instalacji podłogowej dla 150 m². Zobacz, jak jego decyzje dotyczące izolacji i wyboru posadzki na etapie budowy wpływają na wyniki w kalkulatorze.</p>
    </div>

    <div class="rk-case-interactive">
        <div class="rk-case-grid">
            
            <div class="rk-case-controls">
                
                <div class="rk-case-ctrl-box">
                    <h3 class="rk-case-ctrl-title">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-brand)" stroke-width="2.5"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path></svg>
                        Standard izolacji budynku
                    </h3>
                    <div class="rk-case-slider-wrap">
                        <input type="range" class="rk-case-range" id="rk-case-iso" min="1" max="3" step="1" value="3" oninput="rkUpdateCase()">
                        <div class="rk-case-labels">
                            <span style="color:var(--rk-case-danger)">Stary (Brak)</span>
                            <span style="color:var(--rk-case-accent)">Po Termo</span>
                            <span style="color:var(--rk-case-success)">WT 2021 (Nowy)</span>
                        </div>
                    </div>
                </div>

                <div class="rk-case-ctrl-box">
                    <h3 class="rk-case-ctrl-title">
                        <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-brand)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect></svg>
                        Wybór okładziny posadzki
                    </h3>
                    <div class="rk-case-btn-group">
                        <div class="rk-case-opt-btn active" id="btn-case-tiles" onclick="rkSetCaseFloor('tiles')">Gres / Płytki</div>
                        <div class="rk-case-opt-btn" id="btn-case-panels" onclick="rkSetCaseFloor('panels')">Panele Laminowane</div>
                    </div>
                </div>

            </div>

            <div class="rk-case-results">
                
                <div class="rk-case-visual">
                    <svg class="rk-case-svg" viewBox="0 0 200 100">
                        <polygon points="0,100 40,30 80,100" fill="#1e293b"/>
                        <polygon points="60,100 120,20 180,100" fill="#334155"/>
                        <polygon points="140,100 180,50 220,100" fill="#1e293b"/>
                        <polygon points="40,30 25,55 55,55" fill="#f1f5f9"/>
                        <polygon points="120,20 95,50 145,50" fill="#e2e8f0"/>
                        
                        <rect x="75" y="60" width="50" height="40" fill="#ffffff" stroke="#cbd5e1" stroke-width="2"/>
                        <polygon points="70,60 100,40 130,60" fill="#ef4444" stroke="#dc2626" stroke-width="2"/>
                        <rect x="90" y="75" width="20" height="25" fill="#38bdf8" opacity="0.3" stroke="#0ea5e9" stroke-width="1"/>
                        
                        <rect x="20" y="20" width="10" height="40" rx="5" fill="#f8fafc" stroke="#cbd5e1" stroke-width="1"/>
                        <circle cx="25" cy="60" r="8" fill="#38bdf8"/>
                        <rect x="23" y="45" width="4" height="15" fill="#38bdf8"/>
                        <text x="38" y="64" fill="#f0f9ff" font-size="12" font-weight="bold">-24°C</text>
                    </svg>
                </div>

                <div class="rk-case-data-grid">
                    <div class="rk-case-card highlight">
                        <span class="rk-case-card-label">Zapotrzebowanie pokoju</span>
                        <span class="rk-case-card-val"><span id="val-case-wm2">50</span> <span style="font-size:14px">W/m²</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Rozstaw rur PEX</span>
                        <span class="rk-case-card-val"><span id="val-case-spacing" style="color:var(--rk-case-brand)">co 15 cm</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Moc Pompy Ciepła</span>
                        <span class="rk-case-card-val"><span id="val-case-kw">7.5</span> <span style="font-size:14px; color:var(--rk-case-muted)">kW</span></span>
                    </div>
                    <div class="rk-case-card">
                        <span class="rk-case-card-label">Temp. Zasilania (Tz)</span>
                        <span class="rk-case-card-val"><span id="val-case-tz" style="color:var(--rk-case-accent)">32°C</span></span>
                    </div>
                </div>

            </div>
        </div>
    </div>

    <div class="rk-case-content">
        
        <div class="rk-case-text-box">
            <h3>Wnioski z obliczeń strat ciepła dla lokalizacji górskiej</h3>
            <p>Rabka-Zdrój, z uwagi na przynależność do V strefy klimatycznej (projektowa temperatura -24°C), nakłada na inwestora znacznie surowsze wymogi fizyczne niż centralna Polska. Gdyby Pan Zbigniew użył taniego kalkulatora online ustawionego domyślnie na strefę III (-20°C), jego <strong>projektowe obciążenie cieplne (OZC)</strong> zostałoby niedoszacowane o ponad 10-15%. W praktyce oznaczałoby to wybór zbyt słabej pompy ciepła, która nie dałaby rady ogrzać domu 150 m² podczas siarczystych, styczniowych mrozów.</p>
        </div>

        <div class="rk-case-text-box" style="margin-bottom:0; border-color:var(--rk-case-brand);">
            <h3>Wpływ posadzki i rozstawu na portfel</h3>
            <p>Zwróć uwagę, co się dzieje, gdy Pan Zbigniew (przy bardzo dobrej izolacji WT2021) postanawia zmienić gres na panele laminowane. Ze względu na opór cieplny paneli, woda wychodząca z kotłowni musi być podgrzana o kilka stopni wyżej (Tz rośnie), aby przebić się przez warstwę izolatora. To wymusza gęstszy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-case-link">rozstaw rur w ogrzewaniu podłogowym</a> (z 15 cm robi się 10 cm), co podnosi koszty zakupu materiału hydraulicznego na całe 150 m².</p>
            <p>Jeżeli dom byłby stary, bez termomodernizacji, instalacja podłogowa w tym chłodnym regionie w ogóle by sobie nie poradziła – podłoga musiałaby zostać rozgrzana do niekomfortowych 35°C, a i tak potrzebne byłoby wsparcie przez <strong>kocioł gazowy</strong> lub dodatkowe grzejniki ścienne.</p>
        </div>

    </div>
</div>

<script>
let caseFloorType = 'tiles';

function rkSetCaseFloor(type) {
    caseFloorType = type;
    document.getElementById('btn-case-tiles').classList.remove('active');
    document.getElementById('btn-case-panels').classList.remove('active');
    document.getElementById('btn-case-' + type).classList.add('active');
    rkUpdateCase();
}

function rkUpdateCase() {
    const isoLevel = parseInt(document.getElementById('rk-case-iso').value);
    
    // Dane dla 150m2 w Rabce (-24st)
    let wm2, totalKw, spacing, baseTz;

    if(isoLevel === 1) {
        // Stary dom
        wm2 = 140;
        totalKw = 21.0;
        spacing = "Brak moliwości";
        baseTz = 55;
    } else if(isoLevel === 2) {
        // Po termo
        wm2 = 80;
        totalKw = 12.0;
        spacing = "co 10 cm";
        baseTz = 38;
    } else {
        // Nowy dom WT2021
        wm2 = 50;
        totalKw = 7.5;
        spacing = "co 15 cm";
        baseTz = 32;
    }

    // Korekta dla paneli
    if(caseFloorType === 'panels') {
        baseTz += 4;
        if(isoLevel === 3) spacing = "co 10 cm"; // panele wymuszają gęstszy rurę
    }

    // Zabezpieczenie wizualne przy braku możliwości
    if(isoLevel === 1) {
        document.getElementById('val-case-wm2').innerHTML = wm2 + " <span style='font-size:14px; color:#ef4444'>(Krytyczne)</span>";
        document.getElementById('val-case-spacing').innerText = "Wymagane grzejniki";
        document.getElementById('val-case-spacing').style.color = "#ef4444";
        document.getElementById('val-case-tz').innerText = ">50°C";
    } else {
        document.getElementById('val-case-wm2').innerText = wm2;
        document.getElementById('val-case-spacing').innerText = spacing;
        document.getElementById('val-case-spacing').style.color = "var(--rk-case-brand)";
        document.getElementById('val-case-tz').innerText = baseTz + "°C";
    }
    
    document.getElementById('val-case-kw').innerText = totalKw;
}

// Inicjalizacja
document.addEventListener('DOMContentLoaded', rkUpdateCase);
</script>



<style>
:root {
    --rk-hl-dark: #0f172a;
    --rk-hl-panel: #1e293b;
    --rk-hl-brand: #f97316; /* Energetyczny pomarańcz (Ciepło) */
    --rk-hl-brand-light: #ffedd5;
    --rk-hl-blue: #0ea5e9;  /* Chłodny niebieski (Zimno/Wentylacja) */
    --rk-hl-green: #10b981; /* Zielony (Optymalizacja/Sukces) */
    --rk-hl-bg: #ffffff;
    --rk-hl-border: #e2e8f0;
    --rk-hl-text: #334155;
    --rk-hl-muted: #64748b;
}

.rk-hl-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-hl-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(249, 115, 22, 0.15);
    border: 1px solid rgba(249, 115, 22, 0.3);
    overflow: hidden;
}

/* Sekcja Cytatu Eksperckiego - Zoptymalizowana */
.rk-hl-quote-section {
    background: linear-gradient(145deg, var(--rk-hl-dark) 0%, #020617 100%);
    padding: 50px;
    position: relative;
    color: #ffffff;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    border-bottom: 5px solid var(--rk-hl-brand);
    overflow: hidden;
}

.rk-hl-quote-section::before {
    content: '"';
    position: absolute;
    top: -20px;
    left: 40px;
    font-size: 180px;
    font-family: serif;
    color: rgba(249, 115, 22, 0.1);
    line-height: 1;
    z-index: 0;
}

.rk-hl-quote-text {
    font-size: 24px;
    font-weight: 900;
    line-height: 1.5;
    margin: 0 0 25px 0;
    position: relative;
    z-index: 1;
    max-width: 850px;
}

.rk-hl-quote-text span {
    color: var(--rk-hl-brand);
}

.rk-hl-author-bar {
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    z-index: 1;
    background: rgba(255,255,255,0.05);
    padding: 10px 25px;
    border-radius: 99px;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-hl-avatar {
    width: 50px;
    height: 50px;
    border-radius: 50%;
    border: 2px solid var(--rk-hl-brand);
    object-fit: cover;
}

.rk-hl-author-info h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 800;
    color: #ffffff;
}

.rk-hl-author-info p {
    margin: 0;
    font-size: 12px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
}

/* Interaktywny Moduł */
.rk-hl-interactive {
    padding: 40px;
    background: #f8fafc;
}

.rk-hl-interactive-title {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-hl-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-hl-grid {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-hl-border);
    border-radius: 20px;
    padding: 15px;
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* Przyciski (Tabs) + Karta Długiego Ogona */
.rk-hl-tabs {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-hl-tab-btn {
    background: #f8fafc;
    border: 1px solid var(--rk-hl-border);
    padding: 18px 20px;
    border-radius: 14px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    overflow: hidden;
}

.rk-hl-tab-btn:hover {
    border-color: var(--rk-hl-brand);
    background: var(--rk-hl-brand-light);
}

.rk-hl-tab-btn.active {
    background: var(--rk-hl-brand);
    border-color: var(--rk-hl-brand);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(249, 115, 22, 0.4);
    transform: scale(1.02);
}

.rk-hl-tab-icon {
    width: 38px;
    height: 38px;
    background: #ffffff;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-hl-brand);
    flex-shrink: 0;
    transition: 0.3s;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

.rk-hl-tab-btn.active .rk-hl-tab-icon {
    color: var(--rk-hl-brand);
}

.rk-hl-tab-text {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-hl-dark);
    transition: color 0.3s;
}

.rk-hl-tab-btn.active .rk-hl-tab-text {
    color: #ffffff;
}

/* Karta CTA (Długi Ogon - Wypełnienie Pustego Miejsca) */
.rk-hl-cta-card {
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    border-radius: 14px;
    padding: 16px 20px;
    text-decoration: none;
    display: flex;
    flex-direction: column;
    justify-content: center;
    margin-top: 10px;
    position: relative;
    overflow: hidden;
    transition: transform 0.3s, box-shadow 0.3s;
    border: 1px solid #334155;
    box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
}

.rk-hl-cta-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 8px 25px rgba(15, 23, 42, 0.4);
    border-color: var(--rk-hl-brand);
}

.cta-badge {
    font-size: 10px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    margin-bottom: 5px;
    display: flex;
    align-items: center;
    gap: 5px;
}

.cta-badge::before {
    content: '';
    display: inline-block;
    width: 6px;
    height: 6px;
    background: var(--rk-hl-brand);
    border-radius: 50%;
}

.cta-title {
    font-size: 14px;
    color: #ffffff;
    font-weight: 700;
    line-height: 1.4;
    padding-right: 25px;
}

.cta-arrow {
    position: absolute;
    right: 20px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--rk-hl-brand);
    font-size: 18px;
    font-weight: bold;
    transition: right 0.3s;
}

.rk-hl-cta-card:hover .cta-arrow {
    right: 15px;
}

/* Panele z Treścią */
.rk-hl-panels-container {
    position: relative;
    border-radius: 16px;
    background: #f8fafc;
    border: 1px solid var(--rk-hl-border);
    overflow: hidden;
}

.rk-hl-panel {
    display: none;
    padding: 35px;
    animation: slideFadeIn 0.4s ease-out forwards;
}

.rk-hl-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes slideFadeIn {
    from { opacity: 0; transform: translateY(15px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-hl-panel h4 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-hl-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-hl-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-hl-text);
}

.rk-hl-link {
    color: var(--rk-hl-brand);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 2px dashed rgba(249, 115, 22, 0.4);
    transition: 0.3s;
}

.rk-hl-link:hover {
    color: #c2410c;
    border-bottom-style: solid;
}

/* Kontenery SVG */
.rk-hl-svg-box {
    width: 100%;
    height: 180px;
    background: var(--rk-hl-dark);
    border-radius: 12px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.6);
    border: 3px solid #334155;
    overflow: hidden;
}

.rk-svg-content {
    width: 100%;
    height: 100%;
}

/* SEKACJA AUTORSKA - PODPIS EKSPERTA (Przywrócona) */
.rk-hl-author-footer {
    background: #f1f5f9;
    padding: 30px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-hl-border);
}

.rk-hl-author-photo {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-hl-brand);
    box-shadow: 0 4px 15px rgba(249, 115, 22, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-hl-author-desc {
    flex-grow: 1;
}

.rk-hl-author-desc h4 {
    margin: 0 0 6px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-hl-dark);
}

.rk-hl-author-desc p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-hl-text);
    line-height: 1.6;
}

.rk-hl-social-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-hl-social-links a {
    color: var(--rk-hl-blue);
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-hl-social-links a:hover {
    color: #0284c7;
    text-decoration: underline;
}

/* Animacje SVG */

/* Tab 1: Przenikanie */
.anim-heat-escape { opacity: 0; }
.rk-hl-panel.active .anim-heat-escape { animation: heatEscape 2s ease-out infinite; }
.rk-hl-panel.active .d-1 { animation-delay: 0s; }
.rk-hl-panel.active .d-2 { animation-delay: 0.5s; }
.rk-hl-panel.active .d-3 { animation-delay: 1s; }

@keyframes heatEscape {
    0% { transform: translate(0, 0); opacity: 1; stroke: #f97316; }
    100% { transform: translate(var(--tx), var(--ty)); opacity: 0; stroke: #ef4444; }
}

/* Tab 2: Wentylacja */
.anim-fan-spin { transform-origin: center; }
.rk-hl-panel.active .anim-fan-spin { animation: fanSpin 3s linear infinite; }
@keyframes fanSpin { to { transform: rotate(360deg); } }

.anim-air-flow { stroke-dasharray: 10 10; animation: dashFlow 1s linear infinite; }
@keyframes dashFlow { to { stroke-dashoffset: -20; } }

/* Tab 3: Mostki termiczne */
.anim-thermal-bridge { fill: transparent; transition: fill 0.5s; }
.rk-hl-panel.active .anim-thermal-bridge { animation: pulseRed 1.5s infinite alternate; }
@keyframes pulseRed {
    0% { fill: rgba(239, 68, 68, 0.2); stroke: rgba(239, 68, 68, 0.5); }
    100% { fill: rgba(239, 68, 68, 0.8); stroke: rgba(239, 68, 68, 1); box-shadow: 0 0 10px red; }
}

/* Tab 4: Wynik */
.anim-power-bar { transform: scaleY(0); transform-origin: bottom; transition: transform 1.2s cubic-bezier(0.34, 1.56, 0.64, 1) 0.3s; }
.rk-hl-panel.active .anim-power-bar { transform: scaleY(1); }

@media (max-width: 768px) {
    .rk-hl-quote-section { padding: 40px 20px; }
    .rk-hl-quote-text { font-size: 20px; }
    .rk-hl-interactive { padding: 30px 20px; }
    .rk-hl-grid { grid-template-columns: 1fr; gap: 20px; padding: 10px; }
    .rk-hl-tabs { flex-direction: row; flex-wrap: wrap; }
    .rk-hl-tab-btn { flex: 1 1 calc(50% - 5px); padding: 12px; flex-direction: column; text-align: center; gap: 8px; }
    .rk-hl-cta-card { flex: 1 1 100%; margin-top: 5px; }
    .rk-hl-tab-text { font-size: 13px; }
    .rk-hl-panel { padding: 25px 20px; }
    .rk-hl-svg-box { height: 150px; }
    
    /* Responsive dla stopki z autorem */
    .rk-hl-author-footer { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-hl-social-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-quote-summary",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Eksperckie Podsumowanie - Składowe Bilansu Cieplnego Budynku",
    "description": "Brak rzetelnych obliczeń strat ciepła to najdroższy błąd inwestora. Poznaj 4 główne składowe zapotrzebowania energetycznego warunkujące dobór pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Inżynier HVAC & Audytor OZE",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-heat-loss",
    "name": "Parametry Bilansu Cieplnego Budynku (PN-EN 12831)",
    "description": "Analiza składowych strat ciepła: przenikanie przez przegrody (U), straty wentylacyjne, wpływ mostków cieplnych oraz optymalizacja mocy grzewczej podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty ciepła przez przenikanie",
      "straty wentylacyjne z rekuperacją",
      "obliczenia mostków termicznych",
      "zapotrzebowanie mocy pompy ciepła",
      "wylewka i panele a moc podłogówki"
    ],
    "measurementTechnique": "Algorytm zgodny z normą PN-EN 12831 wyliczający sumaryczne obciążenie cieplne na podstawie izolacyjności przegród, krotności wymiany powietrza oraz oporu cieplnego posadzki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przenikanie (Qtr): Główna ucieczka energii przez ściany i okna. Decyduje o nim współczynnik U.",
        "Wentylacja (Qv): Straty powietrzne. Wentylacja grawitacyjna to nawet 40% strat, rekuperacja obniża je diametralnie.",
        "Mostki cieplne: Nieszczelności izolacji, standardowo dolicza się 10-15% nawiązki do zapotrzebowania bazowego.",
        "Moc końcowa: Wyznacza precyzyjny dobór mocy nominalnej pompy ciepła, zapobiegając taktowaniu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-heat-loss-guide",
    "name": "Interaktywny Przewodnik: Składowe Strat Ciepła",
    "description": "Narzędzie nawigacyjne rozbijające trudne wzory matematyczne OZC na 4 zrozumiałe czynniki decyzyjne z wykorzystaniem dynamicznych schematów SVG oraz linkowań optymalizacyjnych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hl-container" id="rk-hl-app">
    
    <div class="rk-hl-quote-section">
        <h2 class="rk-hl-quote-text">
            Brak rzetelnych obliczeń OZC to <span>najdroższy błąd</span> inwestora. Zgadywanie rozstawu rur, bagatelizowanie izolacji czy oporu paneli podłogowych zmusza pompę ciepła do pracy na nieefektywnych parametrach. <span>Matematyka budynku nigdy nie wybacza szacowania „na oko”.</span>
        </h2>
        <div class="rk-hl-author-bar">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-hl-avatar" loading="lazy">
            <div class="rk-hl-author-info">
                <h3>Robert Kucharski</h3>
                <p>Inżynier HVAC & Audytor OZE</p>
            </div>
        </div>
    </div>

    <div class="rk-hl-interactive">
        <h3 class="rk-hl-interactive-title">Anatomia Bilansu Cieplnego (4 Składowe)</h3>
        
        <div class="rk-hl-grid">
            
            <div class="rk-hl-tabs">
                
                <button class="rk-hl-tab-btn active" data-tab="hl-1">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path><polyline points="9 22 9 12 15 12 15 22"></polyline></svg>
                    </div>
                    <span class="rk-hl-tab-text">1. Przenikanie (Ściany/Okna)</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-2">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2"></path></svg>
                    </div>
                    <span class="rk-hl-tab-text">2. Straty Wentylacyjne</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-3">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><circle cx="12" cy="13" r="2"></circle><line x1="12" y1="15" x2="12" y2="18"></line></svg>
                    </div>
                    <span class="rk-hl-tab-text">3. Mostki Cieplne (+10%)</span>
                </button>

                <button class="rk-hl-tab-btn" data-tab="hl-4">
                    <div class="rk-hl-tab-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    </div>
                    <span class="rk-hl-tab-text">4. Wynik i Dobór Mocy</span>
                </button>

                <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/" class="rk-hl-cta-card">
                    <div class="cta-badge">Analiza OZC a okładzina</div>
                    <div class="cta-title">Panele czy Płytki? Opór cieplny a efektywność podłogówki</div>
                    <div class="cta-arrow">➔</div>
                </a>

            </div>

            <div class="rk-hl-panels-container">
                
                <div class="rk-hl-panel active" id="hl-1">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-brand)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                        Straty przez przenikanie (U)
                    </h4>
                    <p>Wartość bazowa wyliczana ze wzoru (A × U × ΔT). Kluczowe znaczenie ma jakość izolacji (<a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-hl-link">zgodnie z PN-EN 12831</a>) oraz prawidłowe przyjęcie strefy klimatycznej. Błąd w grubości styropianu drastycznie podnosi ucieczkę energii w zimowe noce.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <path d="M80 70 V 40 L100 25 L120 40 V 70 Z" fill="none" stroke="#64748b" stroke-width="3" stroke-linejoin="round"/>
                            <rect x="92" y="55" width="16" height="15" fill="none" stroke="#64748b" stroke-width="2"/>
                            <g style="--tx: -30px; --ty: -10px;" class="anim-heat-escape d-1">
                                <path d="M70 45 L50 40" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="55 35 50 40 55 45" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                            <g style="--tx: 30px; --ty: -10px;" class="anim-heat-escape d-2">
                                <path d="M130 45 L150 40" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="145 35 150 40 145 45" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                            <g style="--tx: 0px; --ty: -30px;" class="anim-heat-escape d-3">
                                <path d="M100 20 L100 0" stroke-width="3" stroke-linecap="round"/>
                                <polyline points="95 5 100 0 105 5" stroke-width="3" fill="none" stroke-linejoin="round"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-2">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-blue)" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        Grawitacja vs Rekuperacja
                    </h4>
                    <p>W tradycyjnym domu wentylacja grawitacyjna wyrzuca w powietrze aż 40% wyprodukowanego ciepła! Zastosowanie odzysku ciepła (<a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-hl-link">rekuperacji</a>) redukuje to zapotrzebowanie drastycznie, pozwalając na montaż mniejszej pompy obiegowej.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <rect x="75" y="30" width="50" height="40" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                            <line x1="75" y1="50" x2="125" y2="50" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4 4"/>
                            <line x1="100" y1="30" x2="100" y2="70" stroke="#94a3b8" stroke-width="2" stroke-dasharray="4 4"/>
                            <path class="anim-air-flow" d="M 30 40 L 70 40" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                            <polyline points="65 35 70 40 65 45" fill="none" stroke="#0ea5e9" stroke-width="4" stroke-linejoin="round"/>
                            <path class="anim-air-flow" d="M 125 40 L 165 40" stroke="#f97316" stroke-width="4" stroke-linecap="round"/>
                            <polyline points="160 35 165 40 160 45" fill="none" stroke="#f97316" stroke-width="4" stroke-linejoin="round"/>
                            <g class="anim-fan-spin" style="transform-origin: 100px 50px;">
                                <circle cx="100" cy="50" r="12" fill="none" stroke="#64748b" stroke-width="2"/>
                                <line x1="100" y1="38" x2="100" y2="62" stroke="#64748b" stroke-width="2"/>
                                <line x1="88" y1="50" x2="112" y2="50" stroke="#64748b" stroke-width="2"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-3">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                        Pułapka Mostków Termicznych
                    </h4>
                    <p>Żaden dom nie jest idealnym termosem. Brak izolacji na wieńcach, niedokładne ocieplenie podłogi na gruncie i nadproża okienne wymagają doliczenia od 10% do 15% narzutu w obliczeniach inżynierskich. Ich ignorowanie kończy się niedogrzaniem pokoi.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <path d="M 50 80 L 150 80 L 150 20" fill="none" stroke="#64748b" stroke-width="15" stroke-linecap="square"/>
                            <path d="M 50 65 L 135 65 L 135 20" fill="none" stroke="#334155" stroke-width="15" stroke-linecap="square"/>
                            <circle class="anim-thermal-bridge" cx="142" cy="72" r="15" stroke-width="3"/>
                            <path d="M 120 90 L 140 75" fill="none" stroke="#ef4444" stroke-width="2" stroke-dasharray="3 3"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-hl-panel" id="hl-4">
                    <h4>
                        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="var(--rk-hl-green)" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                        Wynik: Niska Temperatura Zasilania
                    </h4>
                    <p>Zsumowanie wszystkich wartości daje ostateczny wskaźnik mocy (np. 6,5 kW). Prawidłowy bilans budynku jest <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-hl-link">fundamentem komfortu termicznego</a> i pozwala obniżyć <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/" class="rk-hl-link">temperaturę zasilania na kotłowni do optymalnych 35°C</a>.</p>
                    <div class="rk-hl-svg-box">
                        <svg class="rk-svg-content" viewBox="0 0 200 100">
                            <line x1="40" y1="80" x2="160" y2="80" stroke="#94a3b8" stroke-width="2"/>
                            <line x1="40" y1="80" x2="40" y2="20" stroke="#94a3b8" stroke-width="2"/>
                            <line x1="35" y1="40" x2="160" y2="40" stroke="#10b981" stroke-width="2" stroke-dasharray="5 5"/>
                            <text x="165" y="44" fill="#10b981" font-size="12" font-weight="bold">MAX 35°C</text>
                            <rect class="anim-power-bar" x="60" y="50" width="20" height="30" fill="#3b82f6" rx="2" style="transition-delay: 0.1s;"/>
                            <rect class="anim-power-bar" x="90" y="45" width="20" height="35" fill="#f59e0b" rx="2" style="transition-delay: 0.3s;"/>
                            <rect class="anim-power-bar" x="120" y="40" width="20" height="40" fill="#10b981" rx="2" style="transition-delay: 0.5s;"/>
                        </svg>
                    </div>
                </div>

            </div>
        </div>
    </div>
    
    <div class="rk-hl-author-footer">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-hl-author-photo" loading="lazy">
        <div class="rk-hl-author-desc">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Główny projektant i audytor instalacji HVAC. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu zdobytym bezpośrednio na placach budowy. Moją misją jest dostarczanie twardej, inżynierskiej wiedzy, która na co dzień kształtuje decyzje tysięcy inwestorów i wykonawców w Polsce.</p>
            <div class="rk-hl-social-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-hl-tab-btn');
    const panels = document.querySelectorAll('.rk-hl-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Czyszczenie klas aktywnych
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Ustawienie aktualnego elementu
            tab.classList.add('active');
            const targetId = tab.getAttribute('data-tab');
            const targetPanel = document.getElementById(targetId);
            
            if(targetPanel) {
                // Restart animacji CSS dla wykresów SVG
                void targetPanel.offsetWidth;
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-qa-dark: #0f172a;
    --rk-qa-card: #ffffff;
    --rk-qa-emerald: #059669; /* Ekspercki Szmaragd */
    --rk-qa-emerald-light: #d1fae5;
    --rk-qa-accent: #0284c7; /* Cyjan dla przełamania */
    --rk-qa-bg: #f8fafc;
    --rk-qa-border: #cbd5e1;
    --rk-qa-text: #334155;
}

.rk-qa-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-qa-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(5, 150, 105, 0.1);
    border: 1px solid rgba(5, 150, 105, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-qa-header {
    background: linear-gradient(135deg, var(--rk-qa-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-qa-emerald);
}

.rk-qa-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(5, 150, 105, 0.2);
    color: #6ee7b7;
    padding: 8px 16px;
    border-radius: 12px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(110, 231, 183, 0.2);
}

.rk-qa-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-qa-title span { color: #34d399; }

/* Akordeon */
.rk-qa-interactive {
    padding: 40px 50px;
}

.rk-qa-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-qa-item {
    background: var(--rk-qa-card);
    border: 1px solid var(--rk-qa-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s ease;
}

.rk-qa-item.active {
    border-color: var(--rk-qa-emerald);
    box-shadow: 0 10px 20px -5px rgba(5, 150, 105, 0.1);
}

.rk-qa-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 22px 30px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-qa-dark);
    transition: background 0.3s;
}

.rk-qa-question:hover {
    background: #f1f5f9;
}

.rk-qa-item.active .rk-qa-question {
    background: var(--rk-qa-emerald-light);
    color: #064e3b;
}

.rk-qa-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: #e2e8f0;
    color: var(--rk-qa-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s, color 0.3s;
}

.rk-qa-item.active .rk-qa-icon {
    background: var(--rk-qa-emerald);
    color: #ffffff;
    transform: rotate(135deg);
}

/* Kontener Odpowiedzi */
.rk-qa-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-qa-item.active .rk-qa-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-qa-answer-inner {
    overflow: hidden;
}

.rk-qa-content {
    padding: 30px;
    border-top: 1px solid var(--rk-qa-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 35px;
    align-items: center;
}

.rk-qa-text {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-qa-text);
}

.rk-qa-text strong {
    font-weight: 800;
    color: var(--rk-qa-dark);
}

.rk-link {
    color: var(--rk-qa-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: all 0.3s;
}

.rk-link:hover {
    border-bottom-color: var(--rk-qa-accent);
}

/* Wizualizacje SVG */
.rk-qa-visual {
    background: #f8fafc;
    border-radius: 16px;
    padding: 15px;
    height: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px dashed var(--rk-qa-border);
    position: relative;
}

.rk-qa-item.active .rk-qa-visual {
    border-color: var(--rk-qa-emerald);
    background: #ffffff;
}

.rk-svg-box {
    width: 100%;
    height: 100%;
}

/* Animacje SVG */
/* 1. OZC vs Kalkulator */
.anim-scan { stroke-dasharray: 150; stroke-dashoffset: 150; transition: stroke-dashoffset 1s ease-in-out; }
.rk-qa-item.active .anim-scan { stroke-dashoffset: 0; stroke: var(--rk-qa-emerald); }

/* 2. PEX Length */
.anim-grid-line { stroke-dasharray: 50; stroke-dashoffset: 50; }
.rk-qa-item.active .anim-grid-line { animation: drawGrid 1.5s forwards; stroke: var(--rk-qa-accent); }
@keyframes drawGrid { to { stroke-dashoffset: 0; } }

/* 3. Thermometer */
.anim-mercury { transform: scaleY(0.4); transform-origin: bottom; transition: transform 1s cubic-bezier(0.34, 1.56, 0.64, 1); fill: #ef4444; }
.rk-qa-item.active .anim-mercury { transform: scaleY(0.7); }

/* 4. Density */
.anim-dense-pipe { transition: transform 0.5s ease-out; }
.rk-qa-item.active .pipe-l { transform: translateX(5px); }
.rk-qa-item.active .pipe-r { transform: translateX(-5px); stroke: #ef4444; }

/* 5. Screed */
.anim-screed-layer { opacity: 0.3; transition: opacity 1s, fill 1s; }
.rk-qa-item.active .anim-screed-layer { opacity: 1; fill: #d1fae5; }

@media (max-width: 768px) {
    .rk-qa-header, .rk-qa-interactive { padding: 25px 20px; }
    .rk-qa-title { font-size: 24px; }
    .rk-qa-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-qa-visual { height: 130px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-qa-question { font-size: 15px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "FAQ – Eksperckie odpowiedzi o straty ciepła i parametry podłogówki",
    "description": "Najczęstsze pytania inwestorów dotyczące OZC, rozstawu rur PEX, temperatur zasilania oraz wpływu wylewki na działanie kalkulatora strat ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-faq",
    "name": "Zestawienie normatywne: Zapotrzebowanie cieplne a parametry podłogówki",
    "description": "Techniczne dane referencyjne wiążące zapotrzebowanie budynku na moc (W/m2) z ilością rury, temperaturą maksymalną zasilania oraz wymaganiami OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator strat ciepła online",
      "zapotrzebowanie W/m2",
      "zużycie rury PEX na m2",
      "maksymalna temperatura podłogówki",
      "wylewka anhydrytowa a moc"
    ],
    "measurementTechnique": "Obliczenia analityczne i heurystyczne oparte na wytycznych normy PN-EN 12831 oraz PN-EN 1264, porównujące wyniki z kalkulatorów internetowych z profesjonalnym OZC.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 15 cm wymaga 6,7 mb rury PEX na 1 m2.",
        "Rozstaw 10 cm wymaga 10 mb rury PEX na 1 m2.",
        "Maksymalna temperatura zasilania podłogówki wg normy to 50 stopni Celsjusza.",
        "Graniczne zapotrzebowanie cieplne dla samej podłogówki to ok. 100 W/m2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-faq",
    "name": "Interaktywne FAQ - Parametry Projektowe Ogrzewania",
    "description": "Interaktywny moduł edukacyjny prezentujący zagadnienia hydrauliczne i cieplne przy użyciu animacji wektorowych i technicznych zestawień danych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy darmowy kalkulator strat ciepła online może zastąpić oficjalne OZC?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, darmowy kalkulator służy wyłącznie do wstępnej weryfikacji koncepcji i oszacowania kosztów. Oficjalne Obliczeniowe Zapotrzebowanie na Ciepło (OZC) wykonane przez inżyniera jest dokumentem prawnym wymaganym przy wnioskach o dotacje z programu „Czyste Powietrze” oraz przy precyzyjnym doborze pompy ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Ile rury PEX potrzeba na 1 m² ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Ilość rury zależy ściśle od jej rozstawu wynikającego z obliczeń strat ciepła. Przy rozstawie co 15 cm zużycie wynosi średnio 6,7 metra bieżącego na m², natomiast przy zagęszczeniu co 10 cm (np. w łazienkach lub strefach brzegowych) wzrasta do 10 metrów bieżących na m²."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest maksymalna temperatura zasilania dla ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Maksymalna dopuszczalna temperatura zasilania wodą grzewczą wynosi 50°C według normy PN-EN 1264. W optymalnie zaprojektowanych systemach dla domów energooszczędnych temperatura ta nie przekracza jednak 35°C w najzimniejszy dzień roku."
        }
      },
      {
        "@type": "Question",
        "name": "Czy przy wysokim zapotrzebowaniu na ciepło (>100 W/m²) można w nieskończoność zagęszczać rury?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Zagęszczanie rur ma swoje fizyczne i hydrauliczne granice. Zejście poniżej rozstawu 10 cm na całej powierzchni generuje ogromne opory, których nie pokona standardowa pompa obiegowa. Przy stratach rzędu 100 W/m² konieczna jest termomodernizacja lub wsparcie instalacji tradycyjnymi grzejnikami ściennymi."
        }
      },
      {
        "@type": "Question",
        "name": "Jak rodzaj wylewki wpływa na skuteczność wyników z kalkulatora?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wybór wylewki drastycznie zmienia parametry pracy. Wylewka anhydrytowa ma niemal dwukrotnie wyższy współczynnik przewodzenia ciepła niż beton z miksokreta. Pozwala to na znacznie szybsze przekazywanie energii do pomieszczenia i utrzymanie niższej, bardziej oszczędnej temperatury zasilania na źródle ciepła."
        }
      }
    ]
  }
]
</script>

<div class="rk-qa-container" id="rk-qa-app">
    <div class="rk-qa-header">
        <div class="rk-qa-badge">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Inżynierskie Q&A
        </div>
        <h2 class="rk-qa-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-qa-interactive">
        <div class="rk-qa-list">
            
            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>1. Czy darmowy kalkulator strat ciepła online może zastąpić oficjalne OZC?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Nie, darmowy kalkulator służy wyłącznie do <strong>wstępnej weryfikacji koncepcji</strong> i oszacowania kosztów. Oficjalne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">Obliczeniowe Zapotrzebowanie na Ciepło (OZC)</a> wykonane przez wykwalifikowanego inżyniera jest szczegółowym dokumentem prawnym. Jest on bezwzględnie wymagany przy wnioskach o dotacje z programu „Czyste Powietrze” oraz stanowi jedyną bezpieczną podstawę przy precyzyjnym doborze mocy pompy ciepła.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="10" width="60" height="50" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <path d="M30 25 h30 M30 35 h40 M30 45 h20" stroke="#cbd5e1" stroke-width="3" stroke-linecap="round"/>
                                    <path class="anim-scan" d="M10 35 h80" stroke-width="4" stroke-linecap="round"/>
                                    <circle cx="70" cy="45" r="8" fill="#10b981"/>
                                    <path d="M66 45 l3 3 l5 -5" fill="none" stroke="#fff" stroke-width="2" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>2. Ile rury PEX potrzeba na 1 m² ogrzewania podłogowego?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Ilość rury zależy ściśle od jej rozstawu wynikającego z obliczeń strat ciepła. Przy najpopularniejszym rozstawie <strong>co 15 cm</strong> zużycie wynosi średnio <strong>6,7 metra bieżącego na m²</strong>. Z kolei przy zagęszczeniu <strong>co 10 cm</strong> (stosowanym np. w łazienkach, strefach brzegowych lub pod pompy ciepła) wzrasta do <strong>10 mb na m²</strong>. W precyzyjnym wyliczeniu materiału na cały dom pomoże Ci dedykowany <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/" class="rk-link">kalkulator długości rur</a>.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path class="anim-grid-line" d="M20 20 h60 M20 35 h60 M20 50 h60" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.1s;"/>
                                    <path class="anim-grid-line" d="M30 10 v50 M50 10 v50 M70 10 v50" fill="none" stroke-width="3" stroke-linecap="round" style="animation-delay: 0.4s;"/>
                                    <circle cx="50" cy="35" r="15" fill="none" stroke="var(--rk-qa-emerald)" stroke-width="4" stroke-dasharray="10 5"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>3. Jaka jest maksymalna temperatura zasilania dla ogrzewania podłogowego?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Maksymalna, bezpieczna dla jastrychu i instalacji temperatura zasilania wodą grzewczą wynosi <strong>50°C</strong> – wartość tę ściśle reguluje norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-link">PN-EN 1264</a>. Warto jednak pamiętać, że w nowym budownictwie o dobrym standardzie izolacji, optymalnie zaprojektowany system rzadko przekracza <strong>32–35°C</strong> w najzimniejsze dni w roku, co gwarantuje najwyższy komfort i energooszczędność.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="40" y="10" width="20" height="40" rx="10" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <circle cx="50" cy="50" r="12" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <rect class="anim-mercury" x="44" y="20" width="12" height="30" rx="6"/>
                                    <circle cx="50" cy="50" r="8" fill="#ef4444"/>
                                    <line x1="65" y1="20" x2="75" y2="20" stroke="#ef4444" stroke-width="2"/>
                                    <text x="80" y="24" font-size="12" fill="#ef4444" font-weight="bold">50°</text>
                                    <line x1="65" y1="35" x2="70" y2="35" stroke="#10b981" stroke-width="2"/>
                                    <text x="75" y="39" font-size="12" fill="#10b981" font-weight="bold">35°</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>4. Czy przy wysokim zapotrzebowaniu na ciepło (>100 W/m²) można w nieskończoność zagęszczać rury?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Zdecydowanie <strong>nie</strong>. <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">Rozstaw rur w ogrzewaniu podłogowym</a> ma swoje fizyczne i hydrauliczne ograniczenia. Zejście poniżej rozstawu 10 cm na dużej powierzchni generuje tak potężne opory tłoczenia wody, z którymi nie poradzi sobie standardowa pompa obiegowa, a ponadto powierzchnia posadzki przekroczy dopuszczalne 29°C. Jeśli zapotrzebowanie budynku przebija 100 W/m², system płaszczyznowy musi być wspomagany grzejnikami lub dom wymaga bezwzględnej termomodernizacji.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <circle class="pipe-l" cx="30" cy="35" r="10" fill="none" stroke="#64748b" stroke-width="4"/>
                                    <circle class="pipe-r" cx="70" cy="35" r="10" fill="none" stroke="#64748b" stroke-width="4"/>
                                    <path d="M 45 35 l 10 0 M 45 30 l 5 5 l -5 5" fill="none" stroke="#cbd5e1" stroke-width="2" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-qa-item">
                <button class="rk-qa-question">
                    <span>5. Jak rodzaj wylewki wpływa na skuteczność wyników z kalkulatora?</span>
                    <div class="rk-qa-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg></div>
                </button>
                <div class="rk-qa-answer-wrapper">
                    <div class="rk-qa-answer-inner">
                        <div class="rk-qa-content">
                            <div class="rk-qa-text">
                                Wybór odpowiedniego jastrychu drastycznie zmienia parametry pracy. <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/" class="rk-link">Wylewka anhydrytowa</a> wykazuje niemal dwukrotnie wyższy współczynnik przewodzenia ciepła w porównaniu do standardowego betonu z miksokreta. Dzięki płynnej konsystencji idealnie i szczelnie otula rury grzewcze. Przekłada się to na błyskawiczne oddawanie ciepła do pomieszczenia i możliwość pracy pompy ciepła na niższym, oszczędniejszym parametrze temperaturowym.
                            </div>
                            <div class="rk-qa-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="15" y="15" width="70" height="40" rx="4" fill="none" stroke="#94a3b8" stroke-width="3"/>
                                    <rect class="anim-screed-layer" x="17" y="30" width="66" height="23" rx="2" fill="#cbd5e1"/>
                                    <circle cx="35" cy="40" r="5" fill="#ef4444"/>
                                    <circle cx="50" cy="40" r="5" fill="#ef4444"/>
                                    <circle cx="65" cy="40" r="5" fill="#ef4444"/>
                                    <path d="M20 30 Q35 25 50 30 T80 30" fill="none" stroke="var(--rk-qa-emerald)" stroke-width="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-qa-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-qa-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zwijanie wszystkich
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Rozwijanie klikniętego (jeśli nie był aktywny)
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwarcie pierwszego elementu na start
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-fin-dark: #0f172a;
    --rk-fin-blue: #0ea5e9;
    --rk-fin-light-blue: #e0f2fe;
    --rk-fin-green: #10b981;
    --rk-fin-green-light: #dcfce7;
    --rk-fin-red: #ef4444;
    --rk-fin-red-light: #fee2e2;
    --rk-fin-orange: #f59e0b;
    --rk-fin-orange-light: #fef3c7;
    --rk-fin-gray: #64748b;
    --rk-fin-border: #cbd5e1;
    --rk-fin-bg: #ffffff;
}

.rk-fin-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-fin-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.1);
    border: 1px solid var(--rk-fin-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-fin-header {
    padding: 40px 40px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
    border-bottom: 1px solid var(--rk-fin-border);
}

.rk-fin-header h2 {
    margin: 0 0 15px 0;
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    letter-spacing: -0.5px;
}

.rk-fin-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-fin-gray);
    margin: 0;
}

.rk-fin-highlight {
    font-weight: 800;
    color: var(--rk-fin-blue);
}

/* Sekcja Interaktywna - Symulator */
.rk-fin-interactive {
    padding: 40px;
    background: #ffffff;
}

.rk-fin-interactive h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-fin-dark);
    text-align: center;
}

.rk-fin-dashboard {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 30px;
    align-items: center;
}

.rk-fin-slider-box {
    background: #f8fafc;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-fin-border);
    text-align: center;
}

.rk-fin-slider-label {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-fin-gray);
    text-transform: uppercase;
    margin-bottom: 15px;
}

.rk-fin-value-display {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-fin-dark);
    margin-bottom: 20px;
    display: flex;
    justify-content: center;
    align-items: baseline;
    gap: 5px;
}

.rk-fin-value-display span {
    font-size: 18px;
    color: var(--rk-fin-gray);
}

/* Stylizacja suwaka (Slider) */
.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
    transition: background 0.3s;
}

.rk-range-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-fin-blue);
    cursor: pointer;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    border: 3px solid #ffffff;
    transition: transform 0.2s, background 0.3s;
}

.rk-range-slider::-webkit-slider-thumb:hover {
    transform: scale(1.1);
}

/* Wynik symulacji */
.rk-fin-result-box {
    padding: 30px;
    border-radius: 16px;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    gap: 15px;
    border: 2px solid transparent;
}

.rk-fin-result-box.state-green {
    background: var(--rk-fin-green-light);
    border-color: var(--rk-fin-green);
}
.rk-fin-result-box.state-orange {
    background: var(--rk-fin-orange-light);
    border-color: var(--rk-fin-orange);
}
.rk-fin-result-box.state-red {
    background: var(--rk-fin-red-light);
    border-color: var(--rk-fin-red);
}

.rk-fin-result-header {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-anim-house {
    width: 60px;
    height: 60px;
}

.house-path {
    transition: all 0.4s ease;
    stroke-width: 2;
    fill: none;
}

.state-green .house-path { stroke: var(--rk-fin-green); fill: rgba(16, 185, 129, 0.2); }
.state-orange .house-path { stroke: var(--rk-fin-orange); fill: rgba(245, 158, 11, 0.2); }
.state-red .house-path { stroke: var(--rk-fin-red); fill: rgba(239, 68, 68, 0.2); }

.state-red .heat-wave {
    animation: heatRise 1.5s infinite alternate;
    stroke: var(--rk-fin-red);
}

@keyframes heatRise {
    0% { transform: translateY(0) scale(1); opacity: 0.5; }
    100% { transform: translateY(-5px) scale(1.1); opacity: 1; }
}

.rk-fin-result-title {
    font-size: 20px;
    font-weight: 800;
    margin: 0;
}
.state-green .rk-fin-result-title { color: #065f46; }
.state-orange .rk-fin-result-title { color: #92400e; }
.state-red .rk-fin-result-title { color: #991b1b; }

.rk-fin-result-text {
    font-size: 15px;
    line-height: 1.6;
    margin: 0;
    color: #334155;
}

/* Sekcja Wzorów i Linków */
.rk-fin-content-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 0 40px 40px;
}

.rk-fin-card {
    background: #f8fafc;
    border: 1px solid var(--rk-fin-border);
    padding: 25px;
    border-radius: 12px;
}

.rk-fin-card h4 {
    margin: 0 0 15px 0;
    font-size: 16px;
    color: var(--rk-fin-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-fin-card ul {
    margin: 0;
    padding: 0 0 0 20px;
    font-size: 14px;
    color: var(--rk-fin-gray);
    line-height: 1.6;
}

.rk-fin-card ul li { margin-bottom: 8px; }
.rk-fin-card a {
    color: var(--rk-fin-blue);
    text-decoration: none;
    font-weight: 700;
    transition: color 0.2s;
}
.rk-fin-card a:hover { text-decoration: underline; }

/* Massive CTA */
.rk-fin-cta {
    background: var(--rk-fin-dark);
    padding: 40px;
    text-align: center;
}

.rk-fin-cta h3 {
    color: #ffffff;
    font-size: 24px;
    margin: 0 0 10px 0;
}

.rk-fin-cta p {
    color: #94a3b8;
    margin: 0 auto 30px auto;
    max-width: 600px;
    font-size: 15px;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-fin-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 12px;
    text-decoration: none;
    text-transform: uppercase;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-massive:hover {
    transform: translateY(-4px);
    background: #0284c7;
    box-shadow: 0 15px 25px -5px rgba(14, 165, 233, 0.6);
}

@media (max-width: 768px) {
    .rk-fin-header, .rk-fin-interactive, .rk-fin-content-grid, .rk-fin-cta { padding: 25px; }
    .rk-fin-dashboard, .rk-fin-content-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-fin-value-display { font-size: 36px; }
    .rk-btn-massive { width: 100%; padding: 16px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/"
    },
    "headline": "Podsumowanie – Zabezpiecz Swój Budżet i Komfort Termiczny",
    "description": "Sprawdź samodzielnie zapotrzebowanie budynku na ciepło (W/m2) z wykorzystaniem interaktywnego symulatora normy PN-EN 12831. Optymalizuj parametry przed wyborem pompy ciepła.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-30",
    "dateModified": "2026-05-30"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#dataset-zapotrzebowanie",
    "name": "Bilans Cieplny i Wskaźniki W/m2 dla Ogrzewania Podłogowego",
    "description": "Zestawienie analityczne określające limity i optymalne zakresy mocy grzewczej dla instalacji płaszczyznowych w odniesieniu do izolacji oraz typu okładziny podłogowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia strat ciepła",
      "norma PN-EN 12831",
      "zapotrzebowanie W/m2",
      "projekt wykonawczy ogrzewania",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Analiza zapotrzebowania na ciepło (Q = A × U × ΔT) w zależności od stopnia izolacji budynku i wymagań hydraulicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zakres 40-50 W/m2: Optymalny (Nowe budownictwo, idealne dla pomp ciepła).",
        "Zakres 51-80 W/m2: Umiarkowany (Wymaga zagęszczenia rur i projektowania OZC).",
        "Zakres >80 W/m2: Krytyczny (Ryzyko niedogrzania, wymaga grzejników lub termomodernizacji)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/#webapp-symulator",
    "name": "Symulator Zapotrzebowania Cieplnego W/m2",
    "description": "Interaktywne narzędzie obliczeniowe obrazujące wpływ jednostkowego zapotrzebowania na ciepło budynku na efektywność wodnego ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-container">
    <div class="rk-fin-header">
        <h2>Podsumowanie – Zabezpiecz Swój Budżet i Komfort Termiczny</h2>
        <p>
            Samodzielne obliczenie strat ciepła budynku za pomocą uproszczonej metody normy <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" style="color:var(--rk-fin-blue); font-weight:700;">PN-EN 12831</a> to kluczowy krok techniczny, który chroni inwestora przed przewymiarowaniem źródła ciepła i wadliwym działaniem ogrzewania podłogowego.
        </p>
    </div>

    <div class="rk-fin-interactive">
        <h3>Symulator Obciążenia Instalacji</h3>
        <div class="rk-fin-dashboard">
            <div class="rk-fin-slider-box">
                <span class="rk-fin-slider-label">Zapotrzebowanie na ciepło budynku</span>
                <div class="rk-fin-value-display">
                    <span id="sliderValue">45</span> <span>W/m²</span>
                </div>
                <input type="range" min="30" max="120" value="45" step="5" class="rk-range-slider" id="heatSlider">
            </div>

            <div class="rk-fin-result-box state-green" id="resultCard">
                <div class="rk-fin-result-header">
                    <svg class="rk-anim-house" viewBox="0 0 24 24" fill="none" stroke="currentColor">
                        <path class="house-path" d="M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"></path>
                        <polyline class="house-path" points="9 22 9 12 15 12 15 22"></polyline>
                        <path class="heat-wave" d="M12 2v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                        <path class="heat-wave" d="M8 4v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                        <path class="heat-wave" d="M16 4v3" style="display:none;" stroke-width="2" stroke-linecap="round"/>
                    </svg>
                    <h4 class="rk-fin-result-title" id="resultTitle">Strefa Optymalna</h4>
                </div>
                <p class="rk-fin-result-text" id="resultText">
                    Idealne warunki dla podłogówki i pompy ciepła. Niska temperatura zasilania (ok. 30-32°C). Układ działa energooszczędnie, można bezpiecznie planować <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele podłogowe</a>.
                </p>
            </div>
        </div>
    </div>

    <div class="rk-fin-content-grid">
        <div class="rk-fin-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-blue)" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg>
                Fizyka Budynku
            </h4>
            <ul>
                <li>Znając wzory na straty przez przenikanie (<strong>Q = A × U × ΔT</strong>) oraz wentylację (<strong>Qv = 0,34 × V × ΔT</strong>), weryfikujesz, czy mieścisz się w zakresie 40-80 W/m².</li>
                <li>Zignorowanie parametrów łazienki (wymagane <strong>+24°C</strong>) zepsuje komfort termiczny w newralgicznym punkcie domu.</li>
            </ul>
        </div>
        <div class="rk-fin-card">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-blue)" stroke-width="2"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Zlecaj OZC Inżynierom
            </h4>
            <ul>
                <li>Każdy litr wody przepływający przez rozdzielacz musi być poprawnie zbilansowany matematycznie.</li>
                <li>Traktuj samodzielne wyliczenia jako wstęp do zlecenia <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">profesjonalnego projektu OZC</a>, zwłaszcza przy pompach ciepła.</li>
            </ul>
        </div>
    </div>

    <div class="rk-fin-cta">
        <h3>Zaprojektuj System Bez Błędów</h3>
        <p>Nie zostawiaj kluczowych parametrów hydraulicznych przypadkowi. Odkryj inżynierskie metody projektowania, normy prawne i kalkulatory, które zagwarantują 100% efektywności Twojej inwestycji.</p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            SPRAWDŹ BAZĘ WIEDZY EKSKLUZYWNEJ
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('heatSlider');
    const display = document.getElementById('sliderValue');
    const resultCard = document.getElementById('resultCard');
    const resultTitle = document.getElementById('resultTitle');
    const resultText = document.getElementById('resultText');
    const heatWaves = document.querySelectorAll('.heat-wave');

    function updateDashboard(value) {
        display.textContent = value;
        
        if (value <= 50) {
            resultCard.className = 'rk-fin-result-box state-green';
            resultTitle.textContent = 'Strefa Optymalna';
            resultText.innerHTML = 'Idealne warunki dla podłogówki i pompy ciepła. Niska temperatura zasilania (ok. 30-32°C). Układ działa energooszczędnie, można bezpiecznie planować <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele podłogowe</a>.';
            heatWaves.forEach(w => w.style.display = 'none');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-green) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        } 
        else if (value > 50 && value <= 80) {
            resultCard.className = 'rk-fin-result-box state-orange';
            resultTitle.textContent = 'Strefa Umiarkowana (Uwaga!)';
            resultText.innerHTML = 'Osiągasz granice wydajności. Konieczne zagęszczenie rur (rozstaw co 10 cm). Ryzyko przy stosowaniu paneli. Wymagany precyzyjny <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projekt OZC</a>, aby uniknąć niedogrzania łazienek.';
            heatWaves.forEach(w => w.style.display = 'none');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-orange) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        } 
        else {
            resultCard.className = 'rk-fin-result-box state-red';
            resultTitle.textContent = 'Strefa Krytyczna';
            resultText.innerHTML = 'Sama podłogówka <strong>nie ogrzeje tego budynku</strong>. Próba wymuszenia mocy doprowadzi do przegrzania posadzki (dyskomfort). Konieczna <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">termomodernizacja</a> lub dodanie obiegów grzejnikowych.';
            heatWaves.forEach(w => w.style.display = 'block');
            slider.style.background = `linear-gradient(to right, var(--rk-fin-red) ${(value-30)/(120-30)*100}%, #cbd5e1 ${(value-30)/(120-30)*100}%)`;
        }
    }

    slider.addEventListener('input', (e) => {
        updateDashboard(e.target.value);
    });

    // Inicjalizacja
    updateDashboard(slider.value);
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">Kalkulator strat ciepła budynku – jak samodzielnie obliczyć zapotrzebowanie na ogrzewanie.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Zwrot z inwestycji w ogrzewanie podłogowe – realne wyliczenia na 2026 rok.</title>
		<link>https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 07 Mar 2026 14:43:41 +0000</pubDate>
				<category><![CDATA[Domy energooszczędne]]></category>
		<category><![CDATA[Energooszczędne budownictwo]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Koszty energii]]></category>
		<category><![CDATA[Koszty instalacji grzewczych]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Koszty ogrzewania podłogowego]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[efektywność ogrzewania]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[koszty ogrzewania domu]]></category>
		<category><![CDATA[ogrzewanie domu 2026]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka czy grzejniki]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<category><![CDATA[zwrot z inwestycji ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3718</guid>

					<description><![CDATA[<p>Rosnące ceny energii sprawiają, że inwestorzy coraz częściej analizują nie tylko koszt budowy instalacji grzewczej, ale także jej opłacalność w długiej perspektywie. Właśnie dlatego temat zwrot z inwestycji w ogrzewanie podłogowe budzi dziś ogromne zainteresowanie wśród właścicieli domów i osób planujących budowę. Nowoczesne systemy niskotemperaturowe, współpracujące z pompami ciepła, pozwalają znacząco obniżyć rachunki za ogrzewanie. Sprawdzamy realne wyliczenia na 2026 rok, porównujemy koszty z grzejnikami i pokazujemy, kiedy podłogówka zaczyna przynosić realny zysk.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">Zwrot z inwestycji w ogrzewanie podłogowe – realne wyliczenia na 2026 rok.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Inwestycja w ogrzewanie podłogowe to jedna z tych decyzji, które dzielą inwestorów na dwa obozy: tych, którzy liczą każdą złotówkę wydaną „na starcie”, oraz tych, którzy patrzą na całkowity koszt posiadania domu przez dekady. W 2026 roku, w obliczu uwolnionych cen energii, taryf dynamicznych i rygorystycznych norm unijnych wynikających z dyrektywy EPBD, odpowiedź na pytanie o&nbsp;<strong>zwrot z inwestycji w ogrzewanie podłogowe</strong>&nbsp;nie jest już tylko kwestią komfortu, ale twardej matematyki, którą można precyzyjnie wyliczyć.</p>



<p class="wp-block-paragraph">Czy „podłogówka” to nadal luksus, czy może jedyna droga do przetrwania w dobie drogiego prądu? Sprawdzamy, ile realnie zaoszczędzisz po 10 latach i dlaczego tradycyjne grzejniki stają się dla pomp ciepła „kulą u nogi”. Wstępne koszty instalacji ogrzewania podłogowego są wyższe o około 30-40% w porównaniu do klasycznych grzejników, ale w 2026 roku kluczowym pojęciem jest&nbsp;<strong>COP (Coefficient of Performance)</strong>&nbsp;pompy ciepła.</p>



<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl/" type="link" id="https://projekt-ogrzewania.pl/">Ogrzewanie podłogowe</a> to system niskotemperaturowy (zasilanie ok. 30–35°C), podczas gdy grzejniki wymagają 50–55°C, by pracować efektywnie. Każdy stopień obniżenia temperatury zasilania to około 2-3% oszczędności na rachunku za prąd. W skali dekady, przy uwzględnieniu inflacji i rosnących opłat dystrybucyjnych, różnica ta staje się Twoim czystym zyskiem. <strong>Inwestycja w ogrzewanie podłogowe zwrot</strong> następuje zazwyczaj między 7. a 11. rokiem użytkowania, ale jeśli weźmiemy pod uwagę taryfy dynamiczne (ładowanie „bufora ciepła” w wylewce, gdy prąd jest tani), okres ten może skrócić się nawet do 5-6 lat.</p>



<h2 class="wp-block-heading">Jakie czynniki decydują o opłacalności podłogówki w 2026 roku?</h2>



<p class="wp-block-paragraph">Zanim przejdziemy do szczegółowych wyliczeń, musimy zrozumieć, dlaczego w ogóle ogrzewanie podłogowe może być bardziej ekonomiczne od tradycyjnych grzejników. Odpowiedź kryje się w dwóch słowach:&nbsp;<strong>temperatura zasilania</strong>.</p>



<h3 class="wp-block-heading">Niska temperatura to wyższa efektywność źródła ciepła.</h3>



<ul class="wp-block-list">
<li><strong><a href="https://projekt-ogrzewania.pl/pompa-ciepla/" type="link" id="https://projekt-ogrzewania.pl/pompa-ciepla/">Pompy ciepła</a></strong> osiągają tym wyższą efektywność (współczynnik COP), im niższa jest temperatura wody w instalacji. Dla podłogówki COP może wynosić nawet 4,2–4,5, podczas gdy przy grzejnikach spada do 2,8–3,2.</li>



<li><strong><a href="https://projekt-ogrzewania.pl/kociol-gazowy/" type="link" id="https://projekt-ogrzewania.pl/kociol-gazowy/">Kotły kondensacyjne</a></strong> w pełni wykorzystują zjawisko kondensacji pary wodnej właśnie przy niskich temperaturach powrotu. Im chłodniejsza woda wraca do kotła, tym więcej ciepła odzyskujemy ze spalin.</li>
</ul>



<h3 class="wp-block-heading">Taryfy dynamiczne i magazynowanie ciepła – nowość 2026 roku.</h3>



<p class="wp-block-paragraph">W 2026 roku taryfy dynamiczne pozwalają pompie pracować głównie w godzinach taniego prądu (np. między 11:00 a 15:00, gdy fotowoltaika sąsiadów generuje nadwyżki do sieci).&nbsp;<strong>Wylewka anhydrytowa o grubości 6-7 cm magazynuje to ciepło na wieczór</strong>, działając jak tani akumulator. Grzejniki takiej możliwości nie dają – muszą pracować wtedy, gdy jest zimno, czyli często w godzinach szczytu wieczornego, gdy prąd jest najdroższy.</p>



<h3 class="wp-block-heading">Koszt instalacji w 2026 roku – ile trzeba wydać na starcie?</h3>



<p class="wp-block-paragraph">Dla potrzeb naszych wyliczeń przyjmujemy następujące koszty instalacji wewnętrznej (bez źródła ciepła):</p>



<ul class="wp-block-list">
<li><strong>Dom 120 m²</strong>: podłogówka około 27 600 zł, grzejniki około 19 200 zł</li>



<li><strong>Dom 150 m²</strong>: podłogówka około 34 500 zł, grzejniki około 24 000 zł</li>



<li><strong>Dom 200 m²</strong>: podłogówka około 46 000 zł, grzejniki około 32 000 zł</li>
</ul>



<h2 class="wp-block-heading">Realne wyliczenia dla czterech scenariuszy inwestycyjnych (dane na 2026 rok).</h2>



<p class="wp-block-paragraph">Przyjmujemy średnią cenę prądu w 2026 roku na poziomie&nbsp;<strong>1,10 zł/kWh</strong>&nbsp;(z dystrybucją) oraz gazu na poziomie&nbsp;<strong>0,42 zł/kWh</strong>. Standard energetyczny domów: WT 2021 (około&nbsp;<strong>70 kWh/m²/rok</strong>).</p>



<h3 class="wp-block-heading">Scenariusz A: Mały dom (120 m²) + Pompa ciepła powietrzna.</h3>



<p class="wp-block-paragraph"><strong>Parametry</strong>: powierzchnia 120 m², zapotrzebowanie = 8 400 kWh/rok</p>



<p class="wp-block-paragraph"><strong>Koszty instalacji</strong>:</p>



<ul class="wp-block-list">
<li>Grzejniki + pompa ciepła: 19 200 zł + 35 000 zł = 54 200 zł</li>



<li>Podłogówka + pompa ciepła: 27 600 zł + 35 000 zł = 62 600 zł</li>



<li><strong>Różnica (dopłata do podłogówki)</strong>: 8 400 zł</li>
</ul>



<p class="wp-block-paragraph"><strong>Roczne koszty ogrzewania</strong>:</p>



<ul class="wp-block-list">
<li>Grzejniki (COP przy 55°C = 3,0): 8 400 / 3,0 = 2 800 kWh × 1,10 zł =&nbsp;<strong>3 080 zł</strong></li>



<li>Podłogówka (COP przy 35°C = 4,2): 8 400 / 4,2 = 2 000 kWh × 1,10 zł =&nbsp;<strong>2 200 zł</strong></li>



<li><strong>Roczna oszczędność</strong>: 3 080 – 2 200 =&nbsp;<strong>880 zł</strong></li>
</ul>



<p class="wp-block-paragraph"><strong>Prosty okres zwrotu</strong>: 8 400 zł / 880 zł ≈&nbsp;<strong>9,5 roku</strong></p>



<h3 class="wp-block-heading">Scenariusz B: Średni dom (150 m²) + Pompa ciepła + Taryfy dynamiczne.</h3>



<p class="wp-block-paragraph"><strong>Parametry</strong>: powierzchnia 150 m², zapotrzebowanie = 10 500 kWh/rok</p>



<p class="wp-block-paragraph"><strong>Koszty instalacji</strong>:</p>



<ul class="wp-block-list">
<li>Grzejniki + pompa ciepła: 24 000 zł + 35 000 zł = 59 000 zł</li>



<li>Podłogówka + pompa ciepła: 34 500 zł + 35 000 zł = 69 500 zł</li>



<li><strong>Różnica</strong>: 10 500 zł</li>
</ul>



<p class="wp-block-paragraph"><strong>Roczne koszty ogrzewania</strong>&nbsp;(z optymalizacją taryf dynamicznych):</p>



<ul class="wp-block-list">
<li>Grzejniki (COP 3,0, brak akumulacji): 10 500 / 3,0 = 3 500 kWh × 1,10 zł =&nbsp;<strong>3 850 zł</strong></li>



<li>Podłogówka (COP 4,2 + magazynowanie w wylewce pozwala wykorzystać 70% energii w tańszej taryfie 0,80 zł/kWh): 10 500 / 4,2 = 2 500 kWh, z czego 1 750 kWh po 0,80 zł i 750 kWh po 1,10 zł = 1 400 + 825 =&nbsp;<strong>2 225 zł</strong></li>



<li><strong>Roczna oszczędność</strong>: 3 850 – 2 225 =&nbsp;<strong>1 625 zł</strong>&nbsp;(dla uśrednienia przyjmijmy 1 450 zł, uwzględniając lata mniej słoneczne)</li>
</ul>



<p class="wp-block-paragraph"><strong>Okres zwrotu</strong>: 10 500 zł / 1 450 zł ≈&nbsp;<strong>7,2 roku</strong></p>



<h3 class="wp-block-heading">Scenariusz C: Duży dom (200 m²) + Pompa ciepła gruntowa.</h3>



<p class="wp-block-paragraph"><strong>Parametry</strong>: powierzchnia 200 m², zapotrzebowanie = 14 000 kWh/rok</p>



<p class="wp-block-paragraph"><strong>Koszty instalacji</strong>:</p>



<ul class="wp-block-list">
<li>Grzejniki + pompa gruntowa: 32 000 zł + 65 000 zł = 97 000 zł</li>



<li>Podłogówka + pompa gruntowa: 46 000 zł + 65 000 zł = 111 000 zł</li>



<li><strong>Różnica</strong>: 14 000 zł</li>
</ul>



<p class="wp-block-paragraph"><strong>Roczne koszty ogrzewania</strong>:</p>



<ul class="wp-block-list">
<li>Grzejniki (COP 4,0 dla gruntówki przy 55°C): 14 000 / 4,0 = 3 500 kWh × 1,10 zł =&nbsp;<strong>3 850 zł</strong></li>



<li>Podłogówka (COP 5,0 przy 35°C): 14 000 / 5,0 = 2 800 kWh × 1,10 zł =&nbsp;<strong>3 080 zł</strong></li>



<li><strong>Roczna oszczędność</strong>: 3 850 – 3 080 =&nbsp;<strong>770 zł</strong>&nbsp;(Uwaga: to mniej niż w scenariuszu B, bo gruntówka jest już bardzo efektywna nawet z grzejnikami)</li>
</ul>



<p class="wp-block-paragraph"><strong>Okres zwrotu</strong>: 14 000 zł / 770 zł ≈&nbsp;<strong>18 lat</strong>&nbsp;– to pokazuje, że przy gruntowej pompie głównym zyskiem jest komfort, a nie ekonomia.</p>



<h3 class="wp-block-heading">Scenariusz D: Dom 150 m² + Kocioł gazowy kondensacyjny (modernizacja).</h3>



<p class="wp-block-paragraph"><strong>Parametry</strong>: jak w scenariuszu B, 150 m², 10 500 kWh/rok</p>



<p class="wp-block-paragraph"><strong>Koszty instalacji</strong>:</p>



<ul class="wp-block-list">
<li>Grzejniki + kocioł: 24 000 zł + 18 000 zł = 42 000 zł</li>



<li>Podłogówka + kocioł: 34 500 zł + 18 000 zł = 52 500 zł</li>



<li><strong>Różnica</strong>: 10 500 zł</li>
</ul>



<p class="wp-block-paragraph"><strong>Roczne koszty ogrzewania</strong>:</p>



<ul class="wp-block-list">
<li>Grzejniki (sprawność 95%): 10 500 / 0,95 = 11 053 kWh gazu × 0,42 zł =&nbsp;<strong>4 642 zł</strong></li>



<li>Podłogówka (sprawność 105%): 10 500 / 1,05 = 10 000 kWh gazu × 0,42 zł =&nbsp;<strong>4 200 zł</strong></li>



<li><strong>Roczna oszczędność</strong>: 4 642 – 4 200 =&nbsp;<strong>442 zł</strong>&nbsp;(w zaokrągleniu 450 zł)</li>
</ul>



<p class="wp-block-paragraph"><strong>Okres zwrotu</strong>: 10 500 zł / 450 zł ≈&nbsp;<strong>23 lata</strong></p>



<p class="wp-block-paragraph"><strong>Wniosek</strong>: Przy gazie podłogówkę wybieramy głównie dla komfortu, a nie czystego zysku. To potwierdza, że prawdziwym beneficjentem niskotemperaturowej podłogówki jest pompa ciepła.</p>



<h2 class="wp-block-heading">Tabela rzeczywistego zwrotu w latach (z inflacją i taryfami dynamicznymi).</h2>



<p class="wp-block-paragraph">Poniższa tabela przedstawia skumulowane oszczędności z wyboru ogrzewania podłogowego nad grzejnikowym dla&nbsp;<strong>domu 150 m² z pompą ciepła i taryfami dynamicznymi</strong>&nbsp;(Scenariusz B). Założono średni wzrost cen energii o 4% rocznie oraz coroczną optymalizację taryfową.</p>



<style>
.roi-table-wrapper {
    width: 100%;
    overflow-x: auto;
    margin: 40px 0;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}

.roi-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 720px;
    background: #ffffff;
    border-radius: 14px;
    overflow: hidden;
    box-shadow: 0 15px 40px rgba(0,0,0,0.06);
}

.roi-table thead {
    background: #1c7c54;
    color: #fff;
    position: sticky;
    top: 0;
    z-index: 2;
}

.roi-table th {
    padding: 18px;
    font-size: 14px;
    text-align: left;
    font-weight: 600;
}

.roi-table td {
    padding: 16px 18px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 15px;
    vertical-align: middle;
}

.roi-table tr:nth-child(even) {
    background: #fafafa;
}

/* POPRAWKA: Selektor ograniczony tylko do ciała tabeli */
.roi-table tbody tr:hover:not(.roi-break) {
    background: #f2f7f5;
}

.roi-bold {
    font-weight: 700;
}

.roi-profit {
    color: #157a5b;
    font-weight: 700;
}

.roi-loss {
    color: #c0392b;
    font-weight: 600;
}

.roi-break {
    background: #fff3dc !important;
    font-weight: 700;
    box-shadow: inset 4px 0 0 #e0a94f;
}

.roi-progress {
    height: 8px;
    background: #e9f3ef;
    border-radius: 6px;
    margin-top: 6px;
    overflow: hidden;
}

.roi-bar {
    height: 100%;
    background: #1c7c54;
    border-radius: 6px;
}

@media(max-width:768px) {
    .roi-table th {
        font-size: 13px;
        padding: 14px;
    }
    .roi-table td {
        font-size: 14px;
        padding: 14px;
    }
}
</style>

<div class="roi-table-wrapper">
    <table class="roi-table">
        <thead>
            <tr>
                <th>Rok</th>
                <th>Koszt eksploatacji<br>(Grzejniki)</th>
                <th>Koszt eksploatacji<br>(Podłogówka)</th>
                <th>Skumulowana oszczędność</th>
                <th>Bilans inwestycji<br>(Nadwyżka / Strata)</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td class="roi-bold">Rok 0</td>
                <td>–</td>
                <td>–</td>
                <td>–</td>
                <td class="roi-loss">-10 500 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 1</td>
                <td>3 850 zł</td>
                <td>2 225 zł</td>
                <td>1 625 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:8%"></div></div>
                </td>
                <td class="roi-loss">-8 875 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 2</td>
                <td>4 004 zł</td>
                <td>2 314 zł</td>
                <td>3 315 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:17%"></div></div>
                </td>
                <td class="roi-loss">-7 185 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 3</td>
                <td>4 164 zł</td>
                <td>2 407 zł</td>
                <td>5 072 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:26%"></div></div>
                </td>
                <td class="roi-loss">-5 428 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 4</td>
                <td>4 331 zł</td>
                <td>2 503 zł</td>
                <td>6 900 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:35%"></div></div>
                </td>
                <td class="roi-loss">-3 600 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 5</td>
                <td>4 504 zł</td>
                <td>2 603 zł</td>
                <td>8 801 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:45%"></div></div>
                </td>
                <td class="roi-loss">-1 699 zł</td>
            </tr>
            <tr class="roi-break">
                <td class="roi-bold">Rok 6</td>
                <td>4 684 zł</td>
                <td>2 707 zł</td>
                <td>10 778 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:55%"></div></div>
                </td>
                <td class="roi-profit">+278 zł (Próg rentowności)</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 7</td>
                <td>4 872 zł</td>
                <td>2 815 zł</td>
                <td>12 835 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:66%"></div></div>
                </td>
                <td class="roi-profit">+2 335 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 8</td>
                <td>5 067 zł</td>
                <td>2 928 zł</td>
                <td>14 974 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:77%"></div></div>
                </td>
                <td class="roi-profit">+4 474 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 9</td>
                <td>5 270 zł</td>
                <td>3 045 zł</td>
                <td>17 199 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:88%"></div></div>
                </td>
                <td class="roi-profit">+6 699 zł</td>
            </tr>
            <tr>
                <td class="roi-bold">Rok 10</td>
                <td>5 481 zł</td>
                <td>3 167 zł</td>
                <td class="roi-bold">19 513 zł
                    <div class="roi-progress"><div class="roi-bar" style="width:100%"></div></div>
                </td>
                <td class="roi-profit roi-bold">+9 013 zł</td>
            </tr>
        </tbody>
    </table>
</div>



<p class="wp-block-paragraph"><strong>Interpretacja</strong>: W 6. roku użytkowania system podłogowy nie tylko „spłacił” różnicę w cenie zakupu (10 500 zł), ale zaczyna przynosić czysty zysk. Po 10 latach na koncie zostaje dodatkowe&nbsp;<strong>9 013 zł</strong>&nbsp;w porównaniu do sytuacji, w której pozostalibyśmy przy grzejnikach. Po 15 latach zysk przekracza 20 000 zł.</p>



<h2 class="wp-block-heading">Porównanie systemów grzewczych: podłogówka vs grzejniki vs ogrzewanie powietrzne.</h2>



<p class="wp-block-paragraph">Dlaczego ogrzewanie powietrzne (klimatyzacja z funkcją grzania) przegrywa w bilansie 10-letnim? Choć jest tanie w montażu, w 2026 roku traci na&nbsp;<strong>braku bezwładności cieplnej</strong>. Poniższa tabela zestawia kluczowe cechy:</p>



<style>
.system-table-wrapper {
    width: 100%;
    overflow-x: auto;
    margin: 30px 0;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
}

.system-table {
    width: 100%;
    border-collapse: collapse;
    min-width: 720px;
    background: #ffffff;
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 10px 35px rgba(0,0,0,0.05);
}

.system-table thead {
    background: #1c7c54;
    color: #ffffff;
}

.system-table th {
    padding: 16px;
    font-size: 15px;
    text-align: left;
    font-weight: 600;
}

.system-table td {
    padding: 14px 16px;
    border-bottom: 1px solid #f0f0f0;
    font-size: 15px;
    vertical-align: top;
}

.system-table tr:nth-child(even) {
    background: #fafafa;
}

/* POPRAWKA: Selektor ograniczony do tbody */
.system-table tbody tr:hover {
    background: #f3f7f5;
}

.system-feature {
    font-weight: 600;
    white-space: nowrap;
}

.system-best {
    color: #1c7c54;
    font-weight: 700;
}

.system-warning {
    color: #c0392b;
    font-weight: 600;
}

@media(max-width:768px) {
    .system-table th {
        font-size: 13px;
    }
    .system-table td {
        font-size: 14px;
    }
}
</style>

<div class="system-table-wrapper">
    <table class="system-table">
        <thead>
            <tr>
                <th>Cecha</th>
                <th>Ogrzewanie podłogowe</th>
                <th>Grzejniki (konwekcyjne)</th>
                <th>Klimatyzacja (powietrze-powietrze)</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td class="system-feature">Efektywność z PC</td>
                <td class="system-best">Najwyższa (COP 4.0–4.5)</td>
                <td>Średnia (COP 2.8–3.2)</td>
                <td>Wysoka (COP 3.5–4.0), ale brak akumulacji</td>
            </tr>
            <tr>
                <td class="system-feature">Komfort cieplny</td>
                <td class="system-best">Idealny (ciepłe stopy, brak przeciągów)</td>
                <td>Punktowy (zimne strefy przy podłodze)</td>
                <td class="system-warning">Nawiew (ryzyko przeciągów i przesuszenia)</td>
            </tr>
            <tr>
                <td class="system-feature">Akumulacja ciepła</td>
                <td class="system-best">Bardzo wysoka (6–12 godzin w wylewce)</td>
                <td>Bardzo niska (minuty)</td>
                <td>Brak</td>
            </tr>
            <tr>
                <td class="system-feature">Możliwość optymalizacji taryfowej</td>
                <td class="system-best">Pełna – ładujemy tani prąd w południe</td>
                <td>Ograniczona</td>
                <td class="system-warning">Żadna – grzeje gdy jest zimno, czyli drogo</td>
            </tr>
            <tr>
                <td class="system-feature">Estetyka</td>
                <td class="system-best">Niewidoczne</td>
                <td>Zajmują ściany</td>
                <td>Widoczne jednostki wewnętrzne</td>
            </tr>
            <tr>
                <td class="system-feature">Koszt instalacji</td>
                <td>Wysoki</td>
                <td>Niski / Średni</td>
                <td>Średni</td>
            </tr>
        </tbody>
    </table>
</div>



<p class="wp-block-paragraph">Kluczowa różnica: ogrzewanie podłogowe pozwala „kupić” tanią energię w południe i oddawać ją do północy. Klimatyzacja musi pracować wtedy, kiedy jest zimno – czyli często w godzinach szczytu wieczornego, gdy prąd jest najdroższy. W perspektywie 10 lat to setki, a nawet tysiące złotych różnicy.</p>



<h2 class="wp-block-heading"><strong>Kalkulator zwrotu: Podłogówka vs Grzejniki</strong>.</h2>



<style>
.roi-kalkulator {
    max-width: 1100px;
    margin: 20px auto;
    padding: 20px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
    color: #333;
    background: #fdfdfd;
    border: 1px solid #eee;
    border-radius: 12px;
}

.roi-box {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

@media(max-width: 900px) {
    .roi-box { grid-template-columns: 1fr; }
}

.roi-panel {
    background: #ffffff;
    border-radius: 12px;
    padding: 30px;
    box-shadow: 0 10px 35px rgba(0,0,0,0.05);
}

.roi-title {
    font-size: 24px;
    font-weight: 700;
    margin-bottom: 25px;
    text-align: center;
    color: #1c7c54;
}

.roi-input {
    margin-bottom: 20px;
}

.roi-input label {
    display: block;
    font-weight: 600;
    margin-bottom: 6px;
    font-size: 14px;
}

.roi-input .helper-text {
    font-size: 12px;
    color: #666;
    margin-bottom: 8px;
    display: block;
    line-height: 1.3;
}

.roi-input input,
.roi-input select {
    width: 100%;
    padding: 12px;
    border-radius: 8px;
    border: 1px solid #ccc;
    font-size: 16px;
    box-sizing: border-box;
    transition: all 0.2s ease;
}

.roi-input input:focus {
    border-color: #1c7c54;
    outline: none;
    box-shadow: 0 0 0 3px rgba(28, 124, 84, 0.1);
}

.roi-result {
    font-size: 16px;
    margin-bottom: 18px;
    padding-bottom: 8px;
    border-bottom: 1px solid #f0f0f0;
}

.roi-big {
    font-size: 26px;
    font-weight: 700;
    color: #1c7c54;
    margin-top: 4px;
}

.roi-cta {
    margin-top: 25px;
}

.roi-cta a {
    display: block;
    background: #1c7c54;
    color: white;
    padding: 16px;
    border-radius: 8px;
    text-decoration: none;
    font-weight: 600;
    text-align: center;
    transition: background 0.3s ease;
    line-height: 1.4;
}

.roi-cta a:hover {
    background: #155f41;
}

#roi-res-zwrot {
    color: #e67e22;
}
</style>

<div class="roi-kalkulator">
    <div class="roi-title">Kalkulator zwrotu: Podłogówka vs Grzejniki</div>
    
    <div class="roi-box">
        <div class="roi-panel">
            <div class="roi-input">
                <label>Powierzchnia domu (m²)</label>
                <input type="number" id="roi-metraz" value="150" min="1">
            </div>

            <div class="roi-input">
                <label>Standard energetyczny</label>
                <select id="roi-standard">
                    <option value="70">Nowy dom (WT 2021) &#8211; 70 kWh/m²</option>
                    <option value="50">Dom energooszczędny &#8211; 50 kWh/m²</option>
                    <option value="100">Dom starszy / modernizowany &#8211; 100 kWh/m²</option>
                </select>
            </div>

            <div class="roi-input">
                <label>Źródło ciepła</label>
                <select id="roi-zrodlo">
                    <option value="pc_powietrze">Pompa ciepła powietrzna</option>
                    <option value="pc_grunt">Pompa ciepła gruntowa</option>
                    <option value="gaz">Kocioł gazowy kondensacyjny</option>
                </select>
            </div>

            <div class="roi-input">
                <label>Cena energii (zł/kWh)</label>
                <input type="number" id="roi-energia" value="1.10" step="0.01">
            </div>

            <div class="roi-input">
                <label>Różnica w koszcie inwestycji (zł)</label>
                <span class="helper-text">Wpisz o ile droższy jest montaż podłogówki od instalacji z grzejnikami (np. 12 000 zł).</span>
                <input type="number" id="roi-roznica" placeholder="Pozostaw puste, by zobaczyć same oszczędności" min="0">
            </div>
        </div>

        <div class="roi-panel">
            <div class="roi-result">
                Roczny koszt – grzejniki
                <div class="roi-big" id="roi-res-grzejniki">0 zł</div>
            </div>

            <div class="roi-result">
                Roczny koszt – podłogówka
                <div class="roi-big" id="roi-res-podlogowka">0 zł</div>
            </div>

            <div class="roi-result">
                Roczna oszczędność na paliwie
                <div class="roi-big" id="roi-res-oszczednosc">0 zł</div>
            </div>

            <div class="roi-result">
                Czas zwrotu różnicy kosztów
                <div class="roi-big" id="roi-res-zwrot">0 lat</div>
            </div>

            <div class="roi-result">
                Bilans po 10 latach użytkowania
                <div class="roi-big" id="roi-res-zysk">0 zł</div>
            </div>

            <div class="roi-cta">
                <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">
                    Zamów profesjonalny projekt, aby realnie obniżyć koszty ogrzewania
                </a>
            </div>
        </div>
    </div>
</div>

<script>
(function() {
    // Funkcja formatująca walutę
    function format(val) {
        return Math.round(val).toLocaleString('pl-PL') + " zł";
    }

    function oblicz() {
        const metraz = parseFloat(document.getElementById("roi-metraz").value) || 0;
        const standard = parseFloat(document.getElementById("roi-standard").value) || 0;
        const cenaEnergii = parseFloat(document.getElementById("roi-energia").value) || 0;
        const roznicaInwestycji = parseFloat(document.getElementById("roi-roznica").value) || 0;
        const zrodlo = document.getElementById("roi-zrodlo").value;

        // Roczne zapotrzebowanie na ciepło (kWh)
        const zapotrzebowanie = metraz * standard;

        // Ustawienie sprawności (COP / Sprawność kotła)
        let copGrzejnik = 3.0, copPodloga = 4.2;

        if (zrodlo === "pc_grunt") { copGrzejnik = 4.0; copPodloga = 5.0; }
        if (zrodlo === "gaz") { copGrzejnik = 0.95; copPodloga = 1.05; }

        // Koszty eksploatacji
        const kosztG = (zapotrzebowanie / copGrzejnik) * cenaEnergii;
        const kosztP = (zapotrzebowanie / copPodloga) * cenaEnergii;
        const oszczednoscRoczna = kosztG - kosztP;
        
        // Logika wyświetlania zwrotu
        let zwrotWynik = "0.0 lat";
        if (oszczednoscRoczna > 0) {
            if (roznicaInwestycji > 0) {
                zwrotWynik = (roznicaInwestycji / oszczednoscRoczna).toFixed(1) + " lat";
            } else {
                zwrotWynik = "0.0 lat";
            }
        } else {
            zwrotWynik = "Brak zwrotu";
        }

        // Zysk po 10 latach (Oszczędności * 10 - koszt początkowy różnicy)
        const bilans10 = (oszczednoscRoczna * 10) - roznicaInwestycji;

        // Renderowanie wyników
        document.getElementById("roi-res-grzejniki").innerText = format(kosztG);
        document.getElementById("roi-res-podlogowka").innerText = format(kosztP);
        document.getElementById("roi-res-oszczednosc").innerText = format(oszczednoscRoczna);
        document.getElementById("roi-res-zwrot").innerText = zwrotWynik;
        document.getElementById("roi-res-zysk").innerText = format(bilans10);
    }

    // Nasłuchiwanie zmian
    const inputs = ["roi-metraz", "roi-standard", "roi-zrodlo", "roi-energia", "roi-roznica"];
    inputs.forEach(id => {
        document.getElementById(id).addEventListener("input", oblicz);
    });

    // Startowe wywołanie
    oblicz();
})();
</script>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego – klucz do realnych oszczędności</h2>



<p class="wp-block-paragraph">Wszystkie powyższe wyliczenia opierają się na założeniu, że instalacja została prawidłowo zaprojektowana i wykonana. W kontekście <strong>zwrotu z inwestycji w ogrzewanie podłogowe</strong> należy podkreślić, że <strong>profesjonalny <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" type="link" id="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">projekt</a> to nie koszt, ale inwestycja, która bezpośrednio przekłada się na oszczędności</strong>.</p>



<p class="wp-block-paragraph">Dlaczego projekt jest tak ważny w 2026 roku? Po pierwsze, określa on optymalny rozstaw rur w zależności od stref obciążenia cieplnego – w pomieszczeniach narażonych na duże straty (przy oknach, drzwiach balkonowych) rury układa się gęściej, co zapobiega wychładzaniu podłogi. Po drugie, projekt uwzględnia opory przepływu i dobiera odpowiednią średnicę rur, aby pompa ciepła pracowała w optymalnym zakresie wydajności. Po trzecie, zawiera wytyczne dotyczące grubości i rodzaju wylewki –&nbsp;<strong>wylewka anhydrytowa o grubości 6-7 cm</strong>&nbsp;to dziś standard, bo najlepiej przewodzi ciepło i magazynuje je na potrzeby taryf dynamicznych.</p>



<p class="wp-block-paragraph">Dla inwestorów modernizujących stare budynki, którzy nie mogą zerwać podłóg, projektanci proponują <strong><a href="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/" type="link" id="https://projekt-ogrzewania.pl/czym-jest-system-suchy-w-wodnym-ogrzewaniu-podlogowym/">systemy suche</a> (cienkowarstwowe)</strong> – ich zwrot jest nieco dłuższy, ale wciąż lepszy niż pozostanie przy wysokotemperaturowych grzejnikach. Koszt projektu (1 500–3 000 zł) zwraca się już w pierwszym sezonie grzewczym dzięki niższym rachunkom i bezawaryjnej pracy systemu.</p>



<h2 class="wp-block-heading">Dodatkowe korzyści: wartość domu przy sprzedaży i prestiż.</h2>



<p class="wp-block-paragraph">W 2026 roku kupujący domy są znacznie bardziej świadomi energetycznie niż jeszcze 5 lat temu.&nbsp;<strong>Certyfikat Energetyczny (Świadectwo Charakterystyki Energetycznej)</strong>&nbsp;jest dokumentem krytycznym przy transakcji.</p>



<ul class="wp-block-list">
<li><strong>Wyższa klasa energetyczna</strong>: Dom z podłogówką i pompą ciepła łatwiej wpada w klasę „A” lub „A+”. To realnie podnosi cenę ofertową nieruchomości o&nbsp;<strong>5–8%</strong>&nbsp;. Dla domu wartego 1 000 000 zł to dodatkowe 50 000 – 80 000 zł.</li>



<li><strong>Uniwersalność wykończenia</strong>: Brak grzejników pod oknami do samej ziemi (portfenetrami) to standard nowoczesnej architektury. Domy z grzejnikami w 2026 roku zaczynają być postrzegane jako „technologicznie przestarzałe”.</li>



<li><strong>Zdrowie i higiena</strong>: Ograniczenie konwekcji (unoszenia się kurzu) to argument, który dla alergików jest wart dopłaty przy zakupie domu.</li>
</ul>



<h2 class="wp-block-heading">FAQ;</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1772881304440"><strong class="schema-faq-question"><strong>Czy ogrzewanie podłogowe naprawdę się opłaca?</strong></strong> <p class="schema-faq-answer">Tak, szczególnie w połączeniu z pompą ciepła. Niska temperatura zasilania zwiększa efektywność systemu, dzięki czemu rachunki za energię mogą być nawet o kilkadziesiąt procent niższe niż przy grzejnikach.</p> </div> <div class="schema-faq-section" id="faq-question-1772881366554"><strong class="schema-faq-question"><strong>Po ilu latach następuje zwrot z inwestycji w ogrzewanie podłogowe?</strong></strong> <p class="schema-faq-answer">W większości nowych domów z pompą ciepła <strong>zwrot z inwestycji w ogrzewanie podłogowe</strong> następuje zazwyczaj po około 6–9 latach użytkowania, w zależności od cen energii i standardu izolacji budynku.</p> </div> <div class="schema-faq-section" id="faq-question-1772881379861"><strong class="schema-faq-question"><strong>Czy podłogówka działa lepiej z pompą ciepła niż z grzejnikami?</strong></strong> <p class="schema-faq-answer">Tak. Ogrzewanie podłogowe jest systemem niskotemperaturowym, dlatego pompa ciepła pracuje z wyższym współczynnikiem COP, co bezpośrednio przekłada się na niższe koszty eksploatacji.</p> </div> <div class="schema-faq-section" id="faq-question-1772881405330"><strong class="schema-faq-question"><strong>Czy ogrzewanie podłogowe można zastosować w modernizowanym domu?</strong></strong> <p class="schema-faq-answer">Tak, istnieją systemy cienkowarstwowe i suche, które pozwalają zamontować podłogówkę bez znacznego podnoszenia poziomu podłogi. W takich przypadkach kluczowy jest dobrze wykonany projekt instalacji.</p> </div> <div class="schema-faq-section" id="faq-question-1772881413673"><strong class="schema-faq-question"><strong>Czy podłogówka zwiększa wartość domu?</strong></strong> <p class="schema-faq-answer">Tak. Domy wyposażone w nowoczesne systemy niskotemperaturowe, takie jak ogrzewanie podłogowe i pompy ciepła, uzyskują często wyższą klasę energetyczną, co może zwiększyć wartość nieruchomości nawet o kilka procent.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie: czy to się opłaca?</h2>



<p class="wp-block-paragraph">Jeśli budujesz dom w 2026 roku i planujesz w nim mieszkać dłużej niż 7 lat,&nbsp;<strong>inwestycja w ogrzewanie podłogowe zwrot</strong>&nbsp;jest gwarantowany przez samą fizykę i zmiany w systemie rozliczeń energii. Nasze wyliczenia pokazują, że:</p>



<ol start="1" class="wp-block-list">
<li><strong>Przy pompie ciepła i taryfach dynamicznych</strong>&nbsp;okres zwrotu wynosi&nbsp;<strong>6–9 lat</strong>&nbsp;(w zależności od metrażu i izolacji). Po 10 latach zysk sięga kilku-kilkunastu tysięcy złotych.</li>



<li><strong>Przy kotle gazowym</strong>&nbsp;okres zwrotu wydłuża się do 20–25 lat – w tym przypadku podłogówkę wybieramy dla komfortu, a nie dla oszczędności.</li>



<li><strong>Kluczową rolę odgrywa możliwość magazynowania ciepła w wylewce</strong>&nbsp;i wykorzystania tanich taryf – to wyróżnik podłogówki, którego nie ma żaden inny system.</li>



<li><strong>Wartość domu przy sprzedaży rośnie o 5–8%</strong>&nbsp;, co wielokrotnie przewyższa początkową dopłatę do instalacji.</li>
</ol>



<h3 class="wp-block-heading">Rekomendacje na 2026 rok:</h3>



<ul class="wp-block-list">
<li><strong>Dla oszczędnych</strong>: Wybierz system wodny z grubszą wylewką anhydrytową (minimum 6 cm) i sterownikiem obsługującym taryfy dynamiczne. To połączenie daje najszybszy zwrot.</li>



<li><strong>Dla modernizujących</strong>: Jeśli nie możesz zerwać podłóg, rozważ systemy suche (cienkowarstwowe) – ich zwrot jest nieco dłuższy, ale wciąż opłacalny w perspektywie 10-12 lat.</li>
</ul>



<p class="wp-block-paragraph">Inwestycja w ogrzewanie podłogowe to w 2026 roku nie tylko zakup <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/" type="link" id="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rurek</a> i <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-ogrzewania-podlogowego-mosiezny-czy-ze-stali-nierdzewnej/" type="link" id="https://projekt-ogrzewania.pl/rozdzielacz-do-ogrzewania-podlogowego-mosiezny-czy-ze-stali-nierdzewnej/">rozdzielaczy</a>. To zakup <strong>„akumulatora ciepła”</strong>, który jako jedyny pozwala skutecznie walczyć z niestabilnymi cenami energii na wolnym rynku. Decydując się na podłogówkę, zyskujesz nie tylko niższe rachunki, ale przede wszystkim wyższą wartość swojego domu i bezkonkurencyjny komfort przez najbliższe dekady.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">Zwrot z inwestycji w ogrzewanie podłogowe – realne wyliczenia na 2026 rok.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kocioł na pellet.</title>
		<link>https://projekt-ogrzewania.pl/kociol-na-pellet/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 14 Jan 2026 10:09:49 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Hydraulika budowlana]]></category>
		<category><![CDATA[Instalacje domowe]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty instalacji grzewczych]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Kotły na pellet]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[bufor ciepła]]></category>
		<category><![CDATA[ekologia]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[kocioł na pellet]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie domu]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pellet drzewny]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3170</guid>

					<description><![CDATA[<p>Planując nowoczesny i ekonomiczny system grzewczy, coraz więcej inwestorów zwraca uwagę na kocioł na pellet jako stabilne, ekologiczne i przewidywalne źródło ciepła. W połączeniu z wodnym ogrzewaniem podłogowym tworzy on układ, który doskonale wykorzystuje niskotemperaturowy charakter instalacji i pozwala osiągnąć bardzo dobre parametry eksploatacyjne. W artykule szczegółowo omawiamy, dlaczego kocioł na pellet idealnie współpracuje z podłogówką, jakie komponenty są kluczowe, jak wygląda projektowanie takiego systemu oraz jakie realne koszty inwestycyjne i eksploatacyjne należy wziąć pod uwagę.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/">Kocioł na pellet.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-card: #ffffff;
    --rk-intro-pellet: #d97706; /* Bursztyn/Pellet */
    --rk-intro-pellet-light: #fef3c7;
    --rk-intro-eco: #059669; /* Eko zieleń */
    --rk-intro-eco-light: #d1fae5;
    --rk-intro-alert: #dc2626;
    --rk-intro-bg: #f8fafc;
    --rk-intro-border: #cbd5e1;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
}

.rk-intro-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-intro-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(217, 119, 6, 0.15);
    border: 1px solid rgba(217, 119, 6, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-intro-header {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-intro-pellet);
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(217, 119, 6, 0.2);
    color: #fcd34d;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(217, 119, 6, 0.3);
}

.rk-intro-h2 {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-intro-h2 span { color: var(--rk-intro-pellet); }

.rk-intro-paragraph {
    font-size: 18px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Moduł Synergii */
.rk-intro-interactive {
    padding: 40px 50px;
    background: var(--rk-intro-bg);
}

.rk-intro-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-intro-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Przełącznik */
.rk-intro-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
}

.rk-intro-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-intro-muted);
    cursor: pointer;
    transition: color 0.3s;
}

.rk-intro-label.active-eco { color: var(--rk-intro-eco); }
.rk-intro-label.active-alert { color: var(--rk-intro-alert); }

.rk-intro-switch {
    position: relative;
    display: inline-block;
    width: 64px;
    height: 32px;
}

.rk-intro-switch input { opacity: 0; width: 0; height: 0; }

.rk-intro-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-intro-eco);
    transition: .4s;
    border-radius: 32px;
}

.rk-intro-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-intro-slider { background-color: var(--rk-intro-alert); }
input:checked + .rk-intro-slider:before { transform: translateX(32px); }

/* Grid Zawartości */
.rk-intro-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: var(--rk-intro-card);
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-intro-border);
    transition: all 0.4s ease;
}

/* Stan Synergia (Zaznaczone) */
.state-synergy .rk-intro-grid {
    border-color: var(--rk-intro-eco);
    box-shadow: 0 10px 30px -10px rgba(5, 150, 105, 0.2);
}

/* Stan Brak Synergii */
.state-error .rk-intro-grid {
    border-color: var(--rk-intro-alert);
    box-shadow: 0 10px 30px -10px rgba(220, 38, 38, 0.2);
}

/* Animacje SVG */
.rk-intro-svg-box {
    background: #1e293b;
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-svg-main { width: 100%; max-width: 280px; height: auto; }

/* Obiekty SVG i animacje */
.anim-pellet-drop { opacity: 0; transform: translateY(-10px); }
.state-synergy .anim-pellet-drop { animation: dropPellet 1.5s infinite linear; }
.state-error .anim-pellet-drop { animation: jamPellet 0.5s infinite alternate; }

.anim-heat-flow { stroke-dasharray: 10 15; stroke-dashoffset: 0; transition: stroke 0.3s; }
.state-synergy .anim-heat-flow { stroke: var(--rk-intro-eco); animation: flowSmooth 2s linear infinite; }
.state-error .anim-heat-flow { stroke: var(--rk-intro-alert); animation: flowStutter 1s linear infinite; stroke-dasharray: 5 25; }

.anim-fire { transform-origin: bottom center; transition: fill 0.3s; }
.state-synergy .anim-fire { fill: var(--rk-intro-pellet); animation: steadyBurn 2s infinite alternate; }
.state-error .anim-fire { fill: var(--rk-intro-alert); animation: wildBurn 0.3s infinite alternate; }

@keyframes dropPellet { 0% { opacity: 0; transform: translateY(-10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(30px); } }
@keyframes jamPellet { 0% { transform: translateY(0) rotate(-10deg); fill: #ef4444; } 100% { transform: translateY(2px) rotate(10deg); fill: #fca5a5; } }
@keyframes flowSmooth { to { stroke-dashoffset: -50; } }
@keyframes flowStutter { 0%, 100% { opacity: 1; } 50% { opacity: 0.2; } to { stroke-dashoffset: -10; } }
@keyframes steadyBurn { from { transform: scaleY(0.9); } to { transform: scaleY(1.1); } }
@keyframes wildBurn { from { transform: scaleY(0.5) scaleX(1.2); } to { transform: scaleY(1.5) scaleX(0.8); } }

/* Panel Danych */
.rk-intro-data-panel {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
}

.rk-intro-data-row {
    background: var(--rk-intro-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-intro-border);
    transition: all 0.3s;
}

.state-synergy .rk-intro-data-row { border-left-color: var(--rk-intro-eco); }
.state-error .rk-intro-data-row { border-left-color: var(--rk-intro-alert); }

.rk-intro-data-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-intro-muted);
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-intro-data-val {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-link {
    color: var(--rk-intro-pellet);
    text-decoration: none;
    border-bottom: 2px dashed rgba(217, 119, 6, 0.4);
    font-weight: 700;
    transition: all 0.3s;
}

.rk-link:hover {
    color: #b45309;
    border-bottom-style: solid;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-interactive { padding: 30px 20px; }
    .rk-intro-h2 { font-size: 26px; }
    .rk-intro-grid { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-intro-svg-box { padding: 30px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Kocioł na pellet – Zautomatyzowane serce nowoczesnego systemu grzewczego",
    "description": "Analiza synergii między zautomatyzowanym kotłem na pellet a niskotemperaturową instalacją płaszczyznową. Jak wyeliminować błędy wykonawcze i obniżyć koszty eksploatacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-wstep",
    "name": "Wskaźniki efektywności energetycznej dla biomasy (2026)",
    "description": "Zestawienie inżynierskie obrazujące parametry zautomatyzowanego kotła na pellet pracującego w synergii z instalacją płaszczyznową.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zautomatyzowany kocioł na pellet",
      "koszty eksploatacji podłogówki",
      "system grzewczy z podajnikiem",
      "sprawność normatywna pieca",
      "niskotemperaturowa instalacja płaszczyznowa"
    ],
    "measurementTechnique": "Porównanie parametrów pracy ciągłej (zbuforowanej) z układem obarczonym błędami wykonawczymi (taktowanie).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalna sprawność normatywna: >92% przy prawidłowej integracji.",
        "Kluczowy element: Automatyczny podajnik sprasowanych granulatów drzewnych.",
        "Kompatybilność: Wymaga rozprzężenia hydraulicznego z niskotemperaturowym jastrychem."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-wstep",
    "name": "Symulator Synergii Grzewczej",
    "description": "Interaktywna aplikacja wizualizująca na żywo przepływ energii między zautomatyzowanym kotłem stałopalnym a układem płaszczyznowym, uwidaczniająca wpływ błędów montażowych.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Inwestycja w przyszłość
        </div>
        <h2 class="rk-intro-h2">Kocioł na pellet – <span>Zautomatyzowane serce systemu</span></h2>
        <p class="rk-intro-paragraph">
            Planując system grzewczy dla nowoczesnego lub modernizowanego budynku, inwestorzy szukają synergii między niskimi kosztami eksploatacji a bezobsługowością. Kocioł na pellet z automatycznym podajnikiem paliwa zyskuje miano jednego z najbardziej stabilnych źródeł biomasowych. Ten zaawansowany technologicznie generator ciepła, spalający sprasowane pod wysokim ciśnieniem granulaty drzewne, doskonale wpisuje się w wymagania współczesnego budownictwa. Kluczem do sukcesu jest jego prawidłowa integracja z <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/" style="color:#fcd34d; font-weight:700;">niskotemperaturową instalacją płaszczyznową</a>, co pozwala uzyskać maksymalną sprawność normatywną i pełną kontrolę nad mikroklimatem w pomieszczeniach, eliminując jednocześnie <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color:#fcd34d; font-weight:700;">typowe błędy wykonawcze</a> spotykane na polskich budowach.
        </p>
    </div>

    <div class="rk-intro-interactive">
        <h3 class="rk-intro-h3">Synergia technologii: Od granulatu po komfort cieplny</h3>
        
        <div class="rk-intro-toggle-box">
            <span class="rk-intro-label active-eco" id="rk-lbl-synergy" onclick="document.getElementById('rk-intro-toggle').click()">Prawidłowa Integracja (Synergia)</span>
            <label class="rk-intro-switch">
                <input type="checkbox" id="rk-intro-toggle">
                <span class="rk-intro-slider"></span>
            </label>
            <span class="rk-intro-label" id="rk-lbl-error" onclick="document.getElementById('rk-intro-toggle').click()">Błędy Wykonawcze</span>
        </div>

        <div class="rk-intro-grid state-synergy" id="rk-dynamic-grid">
            
            <div class="rk-intro-svg-box">
                <svg class="rk-svg-main" viewBox="0 0 200 150">
                    <polygon points="20,20 60,20 50,70 30,70" fill="#475569" stroke="#94a3b8" stroke-width="2"/>
                    <circle class="anim-pellet-drop" cx="40" cy="40" r="3" fill="#f59e0b"/>
                    <circle class="anim-pellet-drop" cx="35" cy="50" r="3" fill="#f59e0b" style="animation-delay: 0.3s;"/>
                    <circle class="anim-pellet-drop" cx="45" cy="45" r="3" fill="#f59e0b" style="animation-delay: 0.6s;"/>
                    
                    <rect x="25" y="70" width="80" height="60" fill="#334155" rx="4"/>
                    <path class="anim-fire" d="M65 120 C50 120, 50 90, 65 80 C80 90, 80 120, 65 120 Z"/>
                    
                    <path class="anim-heat-flow" d="M105 100 L140 100 L140 130 L180 130" fill="none" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
                    
                    <rect x="130" y="120" width="60" height="20" fill="#cbd5e1" rx="2" opacity="0.5"/>
                    <circle cx="150" cy="130" r="4" fill="#ef4444"/>
                    <circle cx="170" cy="130" r="4" fill="#ef4444"/>
                </svg>
            </div>

            <div class="rk-intro-data-panel">
                <div class="rk-intro-data-row">
                    <div class="rk-intro-data-title">Zasilanie paliwem</div>
                    <div class="rk-intro-data-val" id="rk-val-fuel">Płynne dawkowanie automatyczne</div>
                </div>
                <div class="rk-intro-data-row">
                    <div class="rk-intro-data-title">Sprawność normatywna</div>
                    <div class="rk-intro-data-val" id="rk-val-eff">> 92% (Praca stabilna)</div>
                </div>
                <div class="rk-intro-data-row">
                    <div class="rk-intro-data-title">Koszty eksploatacji</div>
                    <div class="rk-intro-data-val" id="rk-val-cost">Niskie i przewidywalne</div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Strict no H2/H3 for fallback)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">⚠️</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Licencji Algorytmicznej</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Ten komponent inżynieryjny (w tym symulacje SVG i warstwa danych Schema.org) jest chroniony. Wykryto nieautoryzowane uruchomienie poza domeną docelową.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Przełącznika Synergii
    const toggle = document.getElementById('rk-intro-toggle');
    const grid = document.getElementById('rk-dynamic-grid');
    const lblSyn = document.getElementById('rk-lbl-synergy');
    const lblErr = document.getElementById('rk-lbl-error');
    
    // Pola tekstowe
    const valFuel = document.getElementById('rk-val-fuel');
    const valEff = document.getElementById('rk-val-eff');
    const valCost = document.getElementById('rk-val-cost');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // Stan Błędu
            grid.className = 'rk-intro-grid state-error';
            lblSyn.classList.remove('active-eco');
            lblErr.classList.add('active-alert');
            
            valFuel.innerHTML = 'Zablokowany / Zsyp nienormatywny';
            valEff.innerHTML = '< 70% (Taktowanie i straty)';
            valCost.innerHTML = 'Wysokie (Marnotrawstwo paliwa)';
        } else {
            // Stan Synergii
            grid.className = 'rk-intro-grid state-synergy';
            lblErr.classList.remove('active-alert');
            lblSyn.classList.add('active-eco');
            
            valFuel.innerHTML = 'Płynne dawkowanie automatyczne';
            valEff.innerHTML = '> 92% (Praca stabilna)';
            valCost.innerHTML = 'Niskie i przewidywalne';
        }
    });
});
</script>



<style>
:root {
    --rk-sync-dark: #111827;
    --rk-sync-card: #ffffff;
    --rk-sync-fire: #ea580c; /* Ogień / Pellet */
    --rk-sync-fire-light: #ffedd5;
    --rk-sync-water: #0ea5e9; /* Woda / Bufor */
    --rk-sync-water-light: #e0f2fe;
    --rk-sync-error: #dc2626; /* Błąd / Przegrzanie */
    --rk-sync-bg: #f8fafc;
    --rk-sync-border: #cbd5e1;
    --rk-sync-text: #334155;
    --rk-sync-muted: #64748b;
}

.rk-sync-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-sync-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.15);
    border: 1px solid rgba(234, 88, 12, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-sync-header {
    background: linear-gradient(135deg, var(--rk-sync-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-sync-fire);
}

.rk-sync-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 88, 12, 0.2);
    color: #fdba74;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(234, 88, 12, 0.3);
}

.rk-sync-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-sync-h2 span { color: var(--rk-sync-fire); }

.rk-sync-paragraph {
    font-size: 17px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Sekcja Symulatora */
.rk-sync-interactive {
    padding: 40px 50px;
    background: var(--rk-sync-bg);
}

.rk-sync-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-sync-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Switcher / Toggle */
.rk-sync-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 15px;
    border-radius: 100px;
    border: 1px solid var(--rk-sync-border);
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

.rk-sync-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-sync-muted);
    cursor: pointer;
    transition: color 0.3s;
    user-select: none;
}

.rk-sync-label.active-safe { color: var(--rk-sync-water); }
.rk-sync-label.active-error { color: var(--rk-sync-error); }

.rk-sync-switch {
    position: relative;
    display: inline-block;
    width: 64px;
    height: 32px;
    flex-shrink: 0;
}

.rk-sync-switch input { opacity: 0; width: 0; height: 0; }

.rk-sync-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-sync-water);
    transition: .4s;
    border-radius: 32px;
}

.rk-sync-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-sync-slider { background-color: var(--rk-sync-error); }
input:checked + .rk-sync-slider:before { transform: translateX(32px); }

/* Layout Danych */
.rk-sync-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-sync-panel {
    background: var(--rk-sync-card);
    border: 1px solid var(--rk-sync-border);
    border-radius: 16px;
    padding: 30px;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* Stany Wizualne */
.state-safe .rk-sync-panel { border-color: var(--rk-sync-water); box-shadow: 0 10px 30px -10px rgba(14, 165, 233, 0.2); }
.state-error .rk-sync-panel { border-color: var(--rk-sync-error); box-shadow: 0 10px 30px -10px rgba(220, 38, 38, 0.2); }

/* SVG Canvas przeniesiony na pełną szerokość pod spód */
.rk-sync-svg-wrapper {
    grid-column: 1 / -1;
    background: #0f172a;
    border-radius: 12px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    border: 1px solid var(--rk-sync-border);
    transition: border-color 0.4s ease;
}

.state-safe .rk-sync-svg-wrapper { border-color: var(--rk-sync-water); }
.state-error .rk-sync-svg-wrapper { border-color: var(--rk-sync-error); }

.rk-svg-main {
    width: 100%;
    max-width: 450px;
    height: auto;
}

/* Animacje SVG: Kocioł i Ogień */
.anim-flame { transform-origin: bottom center; transition: fill 0.3s; }
.state-safe .anim-flame { fill: #f59e0b; animation: burnSteady 2s infinite alternate; }
.state-error .anim-flame { fill: #ef4444; animation: burnStutter 0.3s infinite alternate; }

@keyframes burnSteady { from { transform: scaleY(0.9); } to { transform: scaleY(1.1); } }
@keyframes burnStutter { from { transform: scaleY(0.4) scaleX(1.2); opacity: 0.5; } to { transform: scaleY(1.3) scaleX(0.8); opacity: 1; } }

/* Animacje SVG: Rury i Woda */
.anim-flow-hot { stroke-dasharray: 6 12; stroke-dashoffset: 0; }
.state-safe .anim-flow-hot { stroke: #f97316; animation: flowSmooth 1.5s linear infinite; }
.state-error .anim-flow-hot { stroke: #dc2626; animation: flowFast 0.5s linear infinite; }

.anim-flow-mix { stroke-dasharray: 6 12; stroke-dashoffset: 0; transition: opacity 0.3s; }
.state-safe .anim-flow-mix { stroke: #0ea5e9; animation: flowSmooth 2s linear infinite; opacity: 1; }
.state-error .anim-flow-mix { opacity: 0; }

@keyframes flowSmooth { to { stroke-dashoffset: -36; } }
@keyframes flowFast { to { stroke-dashoffset: -36; } }

/* Animacje SVG: Bufor i Mieszacz */
.anim-buffer { transition: opacity 0.4s, transform 0.4s; transform-origin: bottom; }
.state-safe .anim-buffer { opacity: 1; transform: scaleY(1); }
.state-error .anim-buffer { opacity: 0.2; transform: scaleY(0); }

/* Animacje SVG: Wylewka i Pęknięcia */
.anim-floor { transition: fill 1s; }
.state-safe .anim-floor { fill: #94a3b8; }
.state-error .anim-floor { fill: #fca5a5; animation: throbRed 1.5s infinite alternate; }

.anim-crack { stroke-dasharray: 50; stroke-dashoffset: 50; transition: stroke-dashoffset 0.1s; opacity: 0; }
.state-error .anim-crack { stroke-dashoffset: 0; opacity: 1; transition: stroke-dashoffset 1s 0.5s ease-out, opacity 0.1s 0.5s; }

@keyframes throbRed { from { fill: #fca5a5; } to { fill: #ef4444; } }

/* Typografia Danych */
.rk-data-block {
    height: 100%; /* Wyrównanie wysokości kafelków na desktopie */
}

.rk-data-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-sync-muted);
    margin-bottom: 10px;
}

.rk-data-val {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-sync-text);
}

.rk-data-val strong {
    font-weight: 800;
    color: var(--rk-sync-dark);
}

.rk-link {
    color: var(--rk-sync-water);
    text-decoration: none;
    border-bottom: 2px dashed rgba(14, 165, 233, 0.4);
    font-weight: 700;
    transition: all 0.3s;
}
.state-error .rk-link { color: var(--rk-sync-error); border-bottom-color: rgba(220, 38, 38, 0.4); }
.rk-link:hover { border-bottom-style: solid; }

@media (max-width: 768px) {
    .rk-sync-header, .rk-sync-interactive { padding: 30px 20px; }
    .rk-sync-h2 { font-size: 26px; }
    .rk-sync-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-sync-toggle-box { flex-direction: column; text-align: center; gap: 15px; border-radius: 20px; }
    .rk-sync-svg-wrapper { grid-column: auto; padding: 20px 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-podlogowka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Czy kocioł na pellet nadaje się do ogrzewania podłogowego?",
    "description": "Szczegółowa analiza synchronizacji hydraulicznej: sprawność kotła pelletowego, bezwładność cieplna wylewki oraz konsekwencje braku bufora ciepła wg normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-podlogowka",
    "name": "Parametry synchronizacji hydraulicznej: Pellet i Ogrzewanie Podłogowe",
    "description": "Baza danych termodynamicznych i normatywnych opisujących współpracę wysokotemperaturowego kotła na biomasę z niskotemperaturową płytą grzewczą.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kocioł na pellet a podłogówka",
      "bufor ciepła",
      "temperatura zasilania podłogówki",
      "pękanie wylewki betonowej",
      "taktowanie kotła",
      "norma PN-EN 1264"
    ],
    "measurementTechnique": "Analiza termodynamiczna zgodna z normami PN-EN 303-5:2021-10 oraz PN-EN 1264-4, badająca akumulację cieplną jastrychu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg normatywny: Minimalna pojemność bufora 50 l/kW.",
        "Parametr bezpieczeństwa: Max temp. zasilania 55°C, optymalnie 35-40°C.",
        "Bezwładność cieplna: Wylewka betonowa 6,5 cm waży 130-150 kg/m²."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-podlogowka",
    "name": "Symulator Synchronizacji Hydraulicznej",
    "description": "Interaktywne narzędzie inżynierskie wizualizujące przepływy cieplne. Symuluje procesy taktowania palnika oraz pękania jastrychu przy braku grupy pompowej z mieszaczem.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and inline SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sync-container" id="rk-sync-app">
    <div class="rk-sync-header">
        <div class="rk-sync-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Analiza Kompatybilności
        </div>
        <h2 class="rk-sync-h2">Czy kocioł na pellet nadaje się do <span>ogrzewania podłogowego?</span></h2>
        <p class="rk-sync-paragraph">
            Tak, <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/" style="color:#fdba74; font-weight:700;">kocioł na pellet</a> doskonale nadaje się do zasilania wodnego ogrzewania podłogowego, pod warunkiem zastosowania układu mieszającego oraz bufora ciepła o minimalnej pojemności <strong>50 l/kW mocy kotła</strong>, zgodnie z wytycznymi normy <strong>PN-EN 303-5:2021-10</strong>. Ogrzewanie podłogowe wymaga niskich temperatur zasilania (maksymalnie 55°C w stanach awaryjnych, typowo 35-40°C), natomiast kocioł pelletowy musi pracować w temperaturze powrotu powyżej 55°C, aby uniknąć korozji niskotemperaturowej. Ta różnica potencjałów termicznych sprawia, że bezpośrednie połączenie tych dwóch systemów bez hydraulicznego rozprzężenia to <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color:#fdba74; font-weight:700;">krytyczny błąd sztuki budowlanej</a>.
        </p>
    </div>

    <div class="rk-sync-interactive">
        <h3 class="rk-sync-h3">Symulacja Przepływów: Konsekwencje Błędów Instalacyjnych</h3>
        
        <div class="rk-sync-toggle-box">
            <span class="rk-sync-label active-safe" id="rk-lbl-safe" onclick="document.getElementById('rk-sync-toggle').click()">Standard (Bufor + Mieszacz)</span>
            <label class="rk-sync-switch">
                <input type="checkbox" id="rk-sync-toggle">
                <span class="rk-sync-slider"></span>
            </label>
            <span class="rk-sync-label" id="rk-lbl-error" onclick="document.getElementById('rk-sync-toggle').click()">Błąd (Bezpośrednie spięcie)</span>
        </div>

        <div class="rk-sync-grid state-safe" id="rk-main-grid">
            
            <div class="rk-sync-panel">
                <div class="rk-data-block">
                    <div class="rk-data-label">Praca źródła ciepła (Sprawność)</div>
                    <div class="rk-data-val" id="rk-text-boiler">
                        <strong>Stabilny cykl ciągły (>92%).</strong> Nowoczesny palnik wrzutkowy pracuje z mocą nominalną. Ciepło ładuje <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">zbiornik buforowy</a>, eliminując problem zjawiska taktowania. Emisja CO i pyłów jest minimalna.
                    </div>
                </div>
            </div>

            <div class="rk-sync-panel">
                <div class="rk-data-block">
                    <div class="rk-data-label">Parametry jastrychu i bezpieczeństwo</div>
                    <div class="rk-data-val" id="rk-text-floor">
                        <strong>Łagodne ładowanie (35-40°C).</strong> <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">Zawór mieszający</a> obniża temperaturę do bezpiecznego poziomu. Ogromna masa <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-link">wylewki betonowej</a> (grub. 6,5 cm, 150 kg/m²) działa jak powolny, pasywny akumulator, powoli oddając ciepło do pomieszczenia.
                    </div>
                </div>
            </div>

            <div class="rk-sync-svg-wrapper">
                <svg class="rk-svg-main" viewBox="0 0 250 180">
                    <rect x="10" y="70" width="60" height="90" fill="#334155" rx="4"></rect>
                    <path class="anim-flame" d="M40 140 C25 140, 20 100, 40 80 C60 100, 55 140, 40 140 Z"></path>
                    
                    <path class="anim-flow-hot" d="M70 90 L100 90" fill="none" stroke-width="6" stroke-linecap="round"></path>
                    
                    <g class="anim-buffer">
                        <rect x="100" y="40" width="40" height="120" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="8"></rect>
                        <path class="anim-flow-mix" d="M140 140 L160 140" fill="none" stroke-width="6" stroke-linecap="round"></path>
                        <polygon points="160,130 160,150 180,140" fill="#cbd5e1"></polygon>
                        <polygon points="170,120 190,120 180,140" fill="#cbd5e1"></polygon>
                    </g>

                    <path class="anim-flow-hot" id="rk-bypass-pipe" d="M70 90 L180 90 L180 140" fill="none" stroke-width="6" stroke-linecap="round" style="opacity:0;"></path>

                    <path class="anim-flow-mix" id="rk-floor-pipe" d="M180 140 L210 140" fill="none" stroke-width="6" stroke-linecap="round"></path>
                    
                    <rect class="anim-floor" x="180" y="130" width="60" height="30" rx="2"></rect>
                    <circle cx="200" cy="140" r="5" fill="#1e293b"></circle>
                    <circle cx="220" cy="140" r="5" fill="#1e293b"></circle>
                    
                    <path class="anim-crack" d="M190 130 L195 145 L185 160" fill="none" stroke="#000" stroke-width="2"></path>
                    <path class="anim-crack" d="M220 130 L215 140 L225 155" fill="none" stroke="#000" stroke-width="2"></path>
                </svg>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-sync-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🚧</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano kod autorski</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Próba osadzenia interaktywnego symulatora inżynierskiego poza autoryzowaną domeną. Kontener oraz struktura JSON-LD zostały zdeztywowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    const toggle = document.getElementById('rk-sync-toggle');
    const grid = document.getElementById('rk-main-grid');
    const lblSafe = document.getElementById('rk-lbl-safe');
    const lblError = document.getElementById('rk-lbl-error');
    
    const bypassPipe = document.getElementById('rk-bypass-pipe');
    const floorPipe = document.getElementById('rk-floor-pipe');
    
    const txtBoiler = document.getElementById('rk-text-boiler');
    const txtFloor = document.getElementById('rk-text-floor');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            grid.className = 'rk-sync-grid state-error';
            lblSafe.classList.remove('active-safe');
            lblError.classList.add('active-error');
            
            bypassPipe.style.opacity = '1';
            floorPipe.classList.remove('anim-flow-mix');
            floorPipe.classList.add('anim-flow-hot');
            
            txtBoiler.innerHTML = '<strong>Taktowanie (Spadek o 15-20%).</strong> Kocioł ciągle się rozpala i wygasza, próbując dopasować moc do małego zładu wody. Powstaje smoła, zapalarka ulega uszkodzeniu po jednym sezonie.';
            txtFloor.innerHTML = '<strong>Destrukcja termiczna (70°C).</strong> Wpuszczenie wrzątku bezpośrenio w rury powoduje natychmiastowe przekroczenie dopuszczalnej normą PN-EN 1264 temperatury (max 29°C). Wylewka pęka, płytki odpadają od podłoża.';
            
        } else {
            grid.className = 'rk-sync-grid state-safe';
            lblError.classList.remove('active-error');
            lblSafe.classList.add('active-safe');
            
            bypassPipe.style.opacity = '0';
            floorPipe.classList.remove('anim-flow-hot');
            floorPipe.classList.add('anim-flow-mix');
            
            txtBoiler.innerHTML = '<strong>Stabilny cykl ciągły (>92%).</strong> Nowoczesny palnik wrzutkowy pracuje z mocą nominalną. Ciepło ładuje <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">zbiornik buforowy</a>, eliminując problem zjawiska taktowania. Emisja CO i pyłów jest minimalna.';
            txtFloor.innerHTML = '<strong>Łagodne ładowanie (35-40°C).</strong> <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">Zawór mieszający</a> obniża temperaturę do bezpiecznego poziomu. Ogromna masa <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-link">wylewki betonowej</a> (grub. 6,5 cm) działa jak pasywny akumulator.';
        }
    });
});
</script>



<style>
:root {
    --rk-temp-dark: #0f172a;
    --rk-temp-card: #ffffff;
    --rk-temp-hot: #ef4444; /* Wrzątek / Kocioł */
    --rk-temp-mix: #f59e0b; /* Optymalna podłoga */
    --rk-temp-cold: #3b82f6; /* Powrót / Zima */
    --rk-temp-evoh: #10b981; /* Ochrona EVOH */
    --rk-temp-bg: #f8fafc;
    --rk-temp-border: #e2e8f0;
    --rk-temp-text: #334155;
    --rk-temp-muted: #64748b;
}

.rk-temp-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-temp-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.15);
    border: 1px solid var(--rk-temp-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-temp-header {
    background: linear-gradient(135deg, var(--rk-temp-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-temp-hot);
}

.rk-temp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.rk-temp-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-temp-h2 span { color: var(--rk-temp-hot); }

.rk-temp-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-temp-paragraph strong { color: #ffffff; }

/* Sekcja Symulatora Krzywej */
.rk-temp-interactive {
    padding: 40px 50px;
    background: var(--rk-temp-bg);
    border-bottom: 1px solid var(--rk-temp-border);
}

.rk-temp-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-temp-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Dashboard Controls */
.rk-temp-dashboard {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
}

/* Suwak (Slider) */
.rk-slider-group {
    margin-bottom: 30px;
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-temp-muted);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-temp-cold);
    background: #f0f9ff;
    padding: 5px 15px;
    border-radius: 8px;
    border: 1px solid #bae6fd;
}

.rk-range-input {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #3b82f6 0%, #cbd5e1 50%, #f59e0b 100%);
    border-radius: 4px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-temp-dark);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Switcher / Toggle dla zaworu */
.rk-toggle-group {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 15px;
    padding-top: 20px;
    border-top: 1px dashed var(--rk-temp-border);
}

.rk-valve-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-temp-muted);
    transition: color 0.3s;
}

.rk-valve-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 32px;
}
.rk-valve-switch input { opacity: 0; width: 0; height: 0; }
.rk-valve-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-temp-mix);
    border-radius: 32px;
    transition: .4s;
}
.rk-valve-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    border-radius: 50%;
    transition: .4s;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
input:checked + .rk-valve-slider { background-color: var(--rk-temp-hot); }
input:checked + .rk-valve-slider:before { transform: translateX(28px); }

/* Grid Wyników i SVG */
.rk-temp-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

/* SVG Panel */
.rk-temp-svg-panel {
    background: #0f172a;
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
}

.rk-svg-main {
    width: 100%;
    max-width: 320px;
}

/* Data Panel */
.rk-temp-data-panel {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all 0.3s;
}

.rk-data-card.card-boiler { border-left: 4px solid var(--rk-temp-hot); }
.rk-data-card.card-floor { border-left: 4px solid var(--rk-temp-mix); }
.rk-data-card.card-status { border-left: 4px solid var(--rk-temp-cold); background: #f8fafc; }

.rk-card-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-temp-muted);
    text-transform: uppercase;
}

.rk-card-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-temp-dark);
}

.val-hot { color: var(--rk-temp-hot); }
.val-mix { color: var(--rk-temp-mix); }

/* Sekcja EVOH */
.rk-temp-evoh-sec {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-evoh-box {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-evoh-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-temp-evoh);
    color: #ffffff;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-evoh-text h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 800;
    color: #166534;
}

.rk-evoh-text p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: #15803d;
}

/* SVG Animations & Dynamic Classes */
.anim-flow { stroke-dasharray: 6 12; animation: flow 1s linear infinite; }
@keyframes flow { to { stroke-dashoffset: -18; } }

.crack-path { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease-out; opacity: 0; }
.show-crack .crack-path { stroke-dashoffset: 0; opacity: 1; }

.rk-link {
    color: var(--rk-temp-mix);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(245, 158, 11, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: var(--rk-temp-hot); }

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-interactive, .rk-temp-evoh-sec { padding: 30px 20px; }
    .rk-temp-grid { grid-template-columns: 1fr; }
    .rk-evoh-box { flex-direction: column; }
    .rk-temp-h2 { font-size: 26px; }
    .rk-data-card { flex-direction: column; align-items: flex-start; gap: 5px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/"
    },
    "headline": "Maksymalna temperatura zasilania podłogówki z kotła i rola zaworu trójdrogowego",
    "description": "Zrozumienie normy PN-EN 1264-2: dlaczego woda w rurach podłogówki nie może przekraczać 50°C. Interaktywny symulator krzywej grzewczej 0.4.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#dataset",
    "name": "Krzywa grzewcza 0.4 i parametry zasilania (2026)",
    "description": "Zestawienie inżynierskie mapujące optymalną temperaturę zasilania jastrychu w zależności od temperatury zewnętrznej przy zachowaniu granicy 50°C.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "temperatura zasilania podłogówki",
      "krzywa grzewcza 0.4",
      "zawór trójdrogowy mieszający",
      "bariera antydyfuzyjna EVOH",
      "norma PN-EN 1264-2"
    ],
    "measurementTechnique": "Obliczenia termodynamiczne automatyki pogodowej (slope 0.4) w relacji do ograniczeń fizycznych wytrzymałości jastrychu (klasa F4 wg PN-EN 13813).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kocioł pelletowy: Generuje stałe 65-80°C.",
        "Krzywa 0.4 przy +10°C: Zasilanie podłogi = 26°C.",
        "Krzywa 0.4 przy -15°C: Zasilanie podłogi = 38°C.",
        "Ograniczenie jastrychu: Max 50°C (skrajnie 55°C w łazience)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#webapp",
    "name": "Symulator Zaworu Mieszającego i Krzywej Grzewczej",
    "description": "Interaktywna aplikacja obliczeniowa na żywo korelująca odczyty z czujnika pogodowego z pracą zaworu trójdrogowego, symulująca pękanie posadzki przy awarii mieszacza.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Range Input, and SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-temp-container" id="rk-temp-app">
    <div class="rk-temp-header">
        <div class="rk-temp-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9a4 4 0 0 0-2 7.5"></path><path d="M12 3v2"></path><path d="m6.6 18.4-1.4 1.4"></path><path d="m20 4-1.4 1.4"></path><path d="M4 22l1.4-1.4"></path><path d="M21 13h-2"></path><path d="m17.4 18.4 1.4 1.4"></path></svg>
            Parametry Krytyczne wg Normy
        </div>
        <h2 class="rk-temp-h2">Jaka jest maksymalna temperatura zasilania <span>podłogówki z kotła?</span></h2>
        <p class="rk-temp-paragraph">
            Maksymalna temperatura zasilania instalacji ogrzewania podłogowego wynosi <strong>50°C</strong> (w skrajnych przypadkach dla łazienek 55°C), co precyzyjnie definiuje <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" style="color:#fca5a5; font-weight:700;">norma PN-EN 1264-2</a>. Przekroczenie tej wartości granicznej generuje naprężenia wewnętrzne w jastrychu przekraczające jego wytrzymałość na rozciąganie przy zginaniu (klasa jastrychu minimum F4 wg PN-EN 13813). W normalnych warunkach eksploatacyjnych, przy temperaturze projektowej zewnętrznej dla III strefy klimatycznej Polski (-20°C), <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/" style="color:#fca5a5; font-weight:700;">optymalna temperatura zasilania wynosi 35°C do 40°C</a>.
        </p>
    </div>

    <div class="rk-temp-interactive">
        <h3 class="rk-temp-h3">Rola zaworu trójdrogowego i krzywej grzewczej</h3>
        <p style="text-align:center; color:#64748b; margin-bottom:30px; font-size:15px; max-width:700px; margin-left:auto; margin-right:auto;">
            Aby obniżyć parametry wysokiej temperatury z kotła (65-80°C) do bezpiecznego poziomu, stosuje się <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">zawór mieszający z siłownikiem</a>. Regulator dobiera temperaturę według <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/" class="rk-link">krzywej grzewczej</a>. Sprawdź, jak to działa na żywo (krzywa 0.4):
        </p>

        <div class="rk-temp-dashboard">
            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <div class="rk-slider-label">Temperatura Zewnętrzna (Czujnik)</div>
                    <div class="rk-slider-value" id="rk-out-temp">+10°C</div>
                </div>
                <input type="range" id="rk-out-slider" class="rk-range-input" min="-20" max="15" value="10">
            </div>

            <div class="rk-toggle-group">
                <span class="rk-valve-label" id="rk-lbl-on" style="color:#f59e0b;">Zawór Działa (Mieszanie)</span>
                <label class="rk-valve-switch">
                    <input type="checkbox" id="rk-valve-toggle">
                    <span class="rk-valve-slider"></span>
                </label>
                <span class="rk-valve-label" id="rk-lbl-off">Awaria / Brak Zaworu</span>
            </div>
        </div>

        <div class="rk-temp-grid">
            <div class="rk-temp-svg-panel" id="rk-svg-container">
                <svg class="rk-svg-main" viewBox="0 0 250 150">
                    <rect x="10" y="20" width="50" height="100" fill="#334155" rx="4"/>
                    <text x="35" y="75" fill="#ef4444" font-size="16" font-weight="bold" text-anchor="middle">75°</text>
                    
                    <path class="anim-flow" d="M60 40 L100 40" fill="none" stroke="#ef4444" stroke-width="8" stroke-linecap="round"/>
                    
                    <g id="rk-svg-valve">
                        <polygon points="100,30 100,50 120,40" fill="#cbd5e1"/>
                        <polygon points="120,40 140,30 140,50" fill="#cbd5e1"/>
                        <polygon points="110,60 130,60 120,40" fill="#cbd5e1"/>
                        <circle cx="120" cy="40" r="4" fill="#1e293b"/>
                    </g>

                    <path class="anim-flow" id="rk-svg-return" d="M120 110 L120 60" fill="none" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"/>
                    <path class="anim-flow" d="M220 110 L120 110" fill="none" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"/>

                    <path class="anim-flow" id="rk-svg-mixpipe" d="M140 40 L220 40 L220 70" fill="none" stroke="#f59e0b" stroke-width="8" stroke-linecap="round" transition="stroke 0.3s"/>
                    
                    <rect id="rk-svg-floor" x="160" y="70" width="80" height="30" fill="#94a3b8" rx="2" style="transition: fill 0.5s;"/>
                    <text id="rk-svg-floortext" x="200" y="90" fill="#ffffff" font-size="14" font-weight="bold" text-anchor="middle">26°C</text>

                    <path class="crack-path" d="M170 70 L180 85 L175 100" fill="none" stroke="#000000" stroke-width="2"/>
                    <path class="crack-path" d="M210 70 L205 85 L215 100" fill="none" stroke="#000000" stroke-width="2"/>
                </svg>
            </div>

            <div class="rk-temp-data-panel">
                <div class="rk-data-card card-boiler">
                    <div class="rk-card-title">Zasilanie Kotła (Stałe)</div>
                    <div class="rk-card-value val-hot">75.0 °C</div>
                </div>
                <div class="rk-data-card card-floor" id="rk-card-mix">
                    <div class="rk-card-title">Woda na posadzkę (Zredukowana)</div>
                    <div class="rk-card-value val-mix" id="rk-val-mix">26.0 °C</div>
                </div>
                <div class="rk-data-card card-status" id="rk-card-status">
                    <div class="rk-card-title">Status Jastrychu</div>
                    <div class="rk-card-value" style="color:#10b981;" id="rk-val-status">Bezpieczny (Norma)</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-temp-evoh-sec">
        <h3 class="rk-temp-h3" style="text-align:left;">Znaczenie bariery antydyfuzyjnej EVOH w rurach</h3>
        <div class="rk-evoh-box">
            <div class="rk-evoh-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            </div>
            <div class="rk-evoh-text">
                <h4>Ochrona instalacji wg normy DIN 4726</h4>
                <p>
                    Zgodnie z normą DIN 4726, <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/" style="color:#166534; font-weight:700; text-decoration:underline; text-underline-offset:2px;">rury grzewcze (PEX, PERT)</a> stosowane w instalacjach płaszczyznowych muszą posiadać warstwę antydyfuzyjną EVOH (alkohol etylowinylowy). Zapobiega ona przenikaniu tlenu z powietrza do wnętrza układu. Przy kotłach stałopalnych, natleniona woda błyskawicznie powoduje korozję wżerową wymienników i zapowietrzanie się pętli grzewczych.
                </p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Ochrona Algorytmiczna (Brak znaczników H w fallbacku)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-temp-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zabezpieczenie Licencyjne</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Moduł kalkulatora krzywej grzewczej i pliki JSON-LD zostały zablokowane z powodu nieautoryzowanego użycia na obcej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora Krzywej Grzewczej 0.4
    const slider = document.getElementById('rk-out-slider');
    const outTempDisplay = document.getElementById('rk-out-temp');
    const toggleValve = document.getElementById('rk-valve-toggle');
    
    // UI Elements
    const lblOn = document.getElementById('rk-lbl-on');
    const lblOff = document.getElementById('rk-lbl-off');
    const valMix = document.getElementById('rk-val-mix');
    const valStatus = document.getElementById('rk-val-status');
    const cardMix = document.getElementById('rk-card-mix');
    
    // SVG Elements
    const svgMixPipe = document.getElementById('rk-svg-mixpipe');
    const svgFloor = document.getElementById('rk-svg-floor');
    const svgFloorText = document.getElementById('rk-svg-floortext');
    const svgContainer = document.getElementById('rk-svg-container');
    const svgReturn = document.getElementById('rk-svg-return');

    // Algorytm wyliczający T_zasilania na podstawie krzywej 0.4
    // Uproszczona matematyka dająca dokładnie: +10C -> 26C, -15C -> 38C
    // T_floor = 30.8 - (0.48 * T_out)
    function calculateFloorTemp(tOut) {
        let tFloor = 30.8 - (0.48 * tOut);
        return Math.round(tFloor * 10) / 10;
    }

    function updateSimulation() {
        let tOut = parseInt(slider.value);
        let prefix = tOut > 0 ? "+" : "";
        outTempDisplay.innerText = prefix + tOut + "°C";

        let isBroken = toggleValve.checked;

        if (isBroken) {
            // AWARIA ZAWORU - Płynie wrzątek z kotła
            lblOn.style.color = 'var(--rk-temp-muted)';
            lblOff.style.color = 'var(--rk-temp-hot)';
            
            valMix.innerText = "75.0 °C";
            valMix.className = "rk-card-value val-hot";
            cardMix.style.borderLeftColor = "var(--rk-temp-hot)";
            
            valStatus.innerText = "KRYTYCZNE: Pękanie jastrychu!";
            valStatus.style.color = "var(--rk-temp-hot)";
            
            // Wizualizacja SVG
            svgMixPipe.setAttribute("stroke", "#ef4444"); // czerwona rura
            svgReturn.style.opacity = "0.2"; // brak powrotu zimnej
            svgFloor.setAttribute("fill", "#fca5a5"); // podłoga się przegrzewa
            svgFloorText.textContent = "75°C";
            svgContainer.classList.add("show-crack");

        } else {
            // ZAWÓR DZIAŁA - Mieszanie pogodowe
            lblOff.style.color = 'var(--rk-temp-muted)';
            lblOn.style.color = 'var(--rk-temp-mix)';
            
            let tFloor = calculateFloorTemp(tOut);
            valMix.innerText = tFloor.toFixed(1) + " °C";
            valMix.className = "rk-card-value val-mix";
            cardMix.style.borderLeftColor = "var(--rk-temp-mix)";
            
            if (tFloor <= 50) {
                valStatus.innerText = "Bezpieczny (Zgodnie z normą)";
                valStatus.style.color = "var(--rk-temp-evoh)";
                svgFloor.setAttribute("fill", "#94a3b8");
                svgContainer.classList.remove("show-crack");
            } else {
                valStatus.innerText = "Ostrzeżenie: Granica normy";
                valStatus.style.color = "var(--rk-temp-mix)";
            }

            // Wizualizacja SVG - zmiana koloru rury w zależności od temp
            svgReturn.style.opacity = "1";
            svgFloorText.textContent = tFloor.toFixed(0) + "°C";
            
            if(tFloor < 30) svgMixPipe.setAttribute("stroke", "#fbbf24"); // żółty
            else if (tFloor < 40) svgMixPipe.setAttribute("stroke", "#f59e0b"); // pomarańcz
            else svgMixPipe.setAttribute("stroke", "#d97706"); // ciemny pomarańcz
        }
    }

    slider.addEventListener('input', updateSimulation);
    toggleValve.addEventListener('change', updateSimulation);

    // Init
    updateSimulation();
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-card: #ffffff;
    --rk-flow-cyan: #06b6d4; /* Precyzja Inżynierska */
    --rk-flow-cyan-light: #cffafe;
    --rk-flow-blue: #3b82f6; /* Woda / Przepływ */
    --rk-flow-blue-light: #dbeafe;
    --rk-flow-alert: #ef4444; /* Ostrzeżenie / Brak zładu */
    --rk-flow-bg: #f8fafc;
    --rk-flow-border: #e2e8f0;
    --rk-flow-text: #334155;
    --rk-flow-muted: #64748b;
}

.rk-flow-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-flow-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(6, 182, 212, 0.15);
    border: 1px solid var(--rk-flow-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-flow-header {
    background: linear-gradient(135deg, var(--rk-flow-dark) 0%, #164e63 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-flow-cyan);
}

.rk-flow-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.2);
    color: #67e8f9;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(6, 182, 212, 0.3);
}

.rk-flow-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-flow-h2 span { color: var(--rk-flow-cyan); }

.rk-flow-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-flow-formula {
    background: rgba(0,0,0,0.3);
    padding: 15px 20px;
    border-radius: 12px;
    font-family: 'Courier New', monospace;
    font-size: 18px;
    color: #22d3ee;
    text-align: center;
    margin: 20px 0;
    border: 1px dashed rgba(34, 211, 238, 0.4);
}

/* Interaktywny Kalkulator */
.rk-flow-interactive {
    padding: 40px 50px;
    background: var(--rk-flow-bg);
}

.rk-flow-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-flow-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

.rk-flow-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 30px;
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-flow-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* Suwaki / Controls */
.rk-flow-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-slider-group {
    background: var(--rk-flow-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-flow-border);
}

.rk-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-slider-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-flow-muted);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-flow-cyan);
}

.rk-range-input {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #bae6fd 0%, #06b6d4 100%);
    border-radius: 4px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-flow-cyan);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Wyniki & Wizualizacja */
.rk-flow-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-result-card {
    background: var(--rk-flow-bg);
    border: 1px solid var(--rk-flow-border);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-result-card.highlight {
    background: var(--rk-flow-cyan-light);
    border-color: var(--rk-flow-cyan);
}

.rk-result-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-flow-text);
}

.rk-result-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-flow-dark);
}

.rk-result-card.highlight .rk-result-val { color: var(--rk-flow-cyan); }

/* Zład Wody Info */
.rk-volume-info {
    margin-top: 40px;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border-left: 5px solid var(--rk-flow-alert);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-volume-info h4 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-volume-info p {
    margin: 0 0 10px 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-flow-text);
}

.rk-link {
    color: var(--rk-flow-cyan);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(6, 182, 212, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #0891b2; }

@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-interactive { padding: 30px 20px; }
    .rk-flow-grid { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-flow-h2 { font-size: 26px; }
    .rk-volume-info { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Ile m³ wody na godzinę musi przepłynąć przez instalację? Algorytmy i zład wody",
    "description": "Zrozumienie fundamentalnego wzoru termodynamiki m = Q / (cw · ΔT). Obliczanie nastaw rotametrów na rozdzielaczu i analiza ryzyka małego zładu wody przy kotłach na pellet.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-przeplyw",
    "name": "Kalkulator Przepływu Masowego i Zładu Wody (2026)",
    "description": "Zestawienie inżynierskie łączące ciepło właściwe wody (1,163 Wh/kg·K) z zapotrzebowaniem na moc i projektową deltą temperatur w celu wyznaczenia przepływu w rotametrach.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "przepływ w ogrzewaniu podłogowym",
      "wzór na przepływ wody",
      "nastawy rotametrów podłogówka",
      "zład wody rura 16x2",
      "taktowanie kotła pelletowego"
    ],
    "measurementTechnique": "Termodynamiczne równanie bilansu cieplnego z uwzględnieniem ciepła właściwego wody oraz pojemności wodnej rur PEX/PERT 16x2 (0,113 l/mb).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przykład 10 kW, ΔT = 5 K: Przepływ = 1,72 m³/h (28,6 l/min).",
        "Przykład pętla 1200 W, ΔT = 5 K: Przepływ pętli = 3,44 l/min.",
        "Zład wody dla 100 m² (rozstaw 10 cm): ok. 113 litrów (Zbyt mało dla kotła stałopalnego bez bufora)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-przeplyw",
    "name": "Interaktywny Kalkulator Rotametrów i Algorytmów Przepływu",
    "description": "Dynamiczne narzędzie inżynierskie obliczające na żywo przepływ objętościowy [l/min] na bazie zmian mocy OZC i spadku temperatury ΔT.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Range Inputs.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-container" id="rk-flow-app">
    <div class="rk-flow-header">
        <div class="rk-flow-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Termodynamika w Praktyce
        </div>
        <h2 class="rk-flow-h2">Ile m³ wody na godzinę musi <span>przepłynąć przez instalację?</span></h2>
        <p class="rk-flow-paragraph">
            Dla budynku o zapotrzebowaniu na moc cieplną <strong>Q = 10 kW</strong> i projektowej różnicy temperatur <strong>ΔT = 5 K</strong> (typowy spadek dla podłogówki), wymagany masowy przepływ nominalny wynosi dokładnie <strong>1,72 m³/h</strong> (28,6 l/min). Wartość tę wylicza się bezpośrednio z fundamentalnego wzoru termodynamiki:
        </p>
        <div class="rk-flow-formula">
            m = Q / (cw · ΔT)
        </div>
        <p class="rk-flow-paragraph" style="font-size: 14px; opacity: 0.9;">
            Gdzie <strong>cw</strong> to ciepło właściwe wody wynoszące <strong>1,163 Wh/(kg·K)</strong>. Każde drastyczne zdławienie przepływu poniżej wartości obliczeniowej przez źle dobraną <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" style="color:#67e8f9; font-weight:700;">pompę obiegową</a> skutkuje niedogrzaniem stref oddalonych od rozdzielacza i zaburzeniem równowagi hydraulicznej obiegu.
        </p>
    </div>

    <div class="rk-flow-interactive">
        <h3 class="rk-flow-h3">Algorytm obliczania przepływu dla pętli grzewczych</h3>
        
        <div class="rk-flow-grid">
            <div class="rk-flow-controls">
                <div class="rk-slider-group">
                    <div class="rk-slider-header">
                        <div class="rk-slider-label">Zapotrzebowanie z OZC (Q)</div>
                        <div class="rk-slider-value" id="rk-val-q">1200 W</div>
                    </div>
                    <input type="range" id="rk-slider-q" class="rk-range-input" min="500" max="2500" step="100" value="1200">
                </div>

                <div class="rk-slider-group">
                    <div class="rk-slider-header">
                        <div class="rk-slider-label">Spadek temperatury (ΔT)</div>
                        <div class="rk-slider-value" id="rk-val-dt">5 K</div>
                    </div>
                    <input type="range" id="rk-slider-dt" class="rk-range-input" min="3" max="10" step="1" value="5">
                </div>
            </div>

            <div class="rk-flow-results">
                <div class="rk-result-card">
                    <div class="rk-result-label">Strumień masowy</div>
                    <div class="rk-result-val" id="rk-out-mass">206.4 kg/h</div>
                </div>
                <div class="rk-result-card highlight">
                    <div class="rk-result-label">Nastawa Rotametru <br><span style="font-size:11px; color:#64748b; font-weight:400;">(Złożenie dla 2 pętli w salonie)</span></div>
                    <div class="rk-result-val" id="rk-out-rota">1.72 l/min</div>
                </div>
            </div>
        </div>

        <div class="rk-volume-info">
            <h4>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Zjawisko zbyt małego zładu wody
            </h4>
            <p>
                Ogrzewanie podłogowe oparte na <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/" class="rk-link">rurze PEX/PERT 16x2 mm</a> mieści w sobie zaledwie <strong>0,113 litra wody</strong> na każdy metr bieżący. Przy rozstawie co 10 cm, na powierzchni 100 m² mamy około 1000 m rury, co daje zład wodny rzędu zaledwie <strong>113 litrów</strong>.
            </p>
            <p>
                Dla nowoczesnego kotła na pellet o modulacji mocy od 3 kW do 10 kW to <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/" class="rk-link">zdecydowanie za mało</a>. Kocioł nie ma gdzie zrzucić wyprodukowanej energii cieplnej, gdy automatyka pokojowa zamknie większość obwodów. Bez dodatkowego magazynu energii (zbiornika buforowego) układ błyskawicznie wejdzie w tryb niszczącego, <strong>ciągłego taktowania</strong>.
            </p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Ochrona Algorytmiczna (Brak znaczników H w fallbacku)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-flow-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowany Moduł Algorytmiczny</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Kalkulator rotametrów oraz pliki JSON-LD zostały zablokowane z powodu nieautoryzowanego użycia na obcej domenie. Własność Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Kalkulatora Przepływu
    const sliderQ = document.getElementById('rk-slider-q');
    const sliderDT = document.getElementById('rk-slider-dt');
    const valQ = document.getElementById('rk-val-q');
    const valDT = document.getElementById('rk-val-dt');
    
    const outMass = document.getElementById('rk-out-mass');
    const outRota = document.getElementById('rk-out-rota');

    // Stała fizyczna: ciepło właściwe wody w Wh/(kg*K)
    const cw = 1.163; 
    
    // Obliczanie
    function updateFlowCalc() {
        let Q = parseFloat(sliderQ.value);
        let dT = parseFloat(sliderDT.value);
        
        // Update Labels
        valQ.innerText = Q + " W";
        valDT.innerText = dT + " K";
        
        // 1. Strumień masowy: m = Q / (cw * dT) [kg/h]
        let massFlow = Q / (cw * dT);
        outMass.innerText = massFlow.toFixed(1) + " kg/h";
        
        // 2. Przepływ objętościowy [l/min] = kg/h / 60 (zakładając gęstość wody 1kg/l)
        let volFlowMin = massFlow / 60;
        
        // 3. Rozbicie na pętle (zakładamy 2 pętle w jednym dużym pokoju)
        let loopFlow = volFlowMin / 2;
        outRota.innerText = loopFlow.toFixed(2) + " l/min";
    }

    sliderQ.addEventListener('input', updateFlowCalc);
    sliderDT.addEventListener('input', updateFlowCalc);

    // Init
    updateFlowCalc();
});
</script>



<style>
:root {
    --rk-buf2-dark: #0f172a;
    --rk-buf2-blue: #2563eb; /* Głęboki niebieski dla bufora */
    --rk-buf2-blue-light: #eff6ff;
    --rk-buf2-orange: #ea580c; /* Ciepło kotła */
    --rk-buf2-orange-light: #fff7ed;
    --rk-buf2-green: #16a34a; /* Sukces / Oszczędność */
    --rk-buf2-green-light: #f0fdf4;
    --rk-buf2-bg: #f8fafc;
    --rk-buf2-border: #cbd5e1;
    --rk-buf2-text: #334155;
    --rk-buf2-muted: #64748b;
}

.rk-buf2-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.3);
    overflow: hidden;
}

/* Sekcja Górna */
.rk-buf2-header {
    background: linear-gradient(135deg, var(--rk-buf2-dark) 0%, #1e3a8a 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-buf2-blue);
}

.rk-buf2-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #93c5fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-buf2-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-buf2-h2 span { color: #60a5fa; }

.rk-buf2-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-buf2-paragraph strong { color: #ffffff; }

/* Moduł Interaktywny */
.rk-buf2-interactive {
    padding: 40px 50px;
    background: var(--rk-buf2-bg);
}

.rk-buf2-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-buf2-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Przełącznik Widoku */
.rk-buf2-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 15px 30px;
    border-radius: 100px;
    border: 1px solid var(--rk-buf2-border);
    max-width: 620px;
    margin-left: auto;
    margin-right: auto;
}

.rk-buf2-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-buf2-muted);
    cursor: pointer;
    transition: color 0.3s;
    user-select: none;
}

.rk-buf2-label.active-pro { color: var(--rk-buf2-blue); }
.rk-buf2-label.active-warn { color: var(--rk-buf2-orange); }

.rk-buf2-switch {
    position: relative;
    display: inline-block;
    width: 64px;
    height: 32px;
    flex-shrink: 0;
}

.rk-buf2-switch input { opacity: 0; width: 0; height: 0; }

.rk-buf2-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-buf2-blue);
    transition: .4s;
    border-radius: 32px;
}

.rk-buf2-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-buf2-slider { background-color: var(--rk-buf2-orange); }
input:checked + .rk-buf2-slider:before { transform: translateX(32px); }

/* Wizualizacja SVG */
.rk-buf2-svg-wrapper {
    background: #0f172a;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 35px;
    box-shadow: inset 0 0 25px rgba(0,0,0,0.4);
}

.rk-buf2-svg { width: 100%; max-width: 450px; height: auto; }

/* Dynamiczne klasy i animacje dla SVG */
.anim-flow-boiler { stroke-dasharray: 6 12; stroke: var(--rk-buf2-orange); }
.anim-flow-floor { stroke-dasharray: 4 8; stroke: #60a5fa; }

.state-pro .anim-flow-boiler { animation: flowLeft 2s linear infinite; }
.state-pro .anim-flow-floor { animation: flowRight 1.5s linear infinite; }

.state-warn .anim-flow-boiler { animation: flowLeft 0.4s linear infinite; stroke: #ef4444; }
.state-warn .anim-flow-floor { animation: flowStutter 1s ease infinite; stroke: #f97316; stroke-dasharray: 2 20; }

.svg-buffer-tank { transition: opacity 0.4s, transform 0.4s; }
.state-warn .svg-buffer-tank { opacity: 0.1; transform: scaleY(0.8); }

@keyframes flowLeft { to { stroke-dashoffset: -36; } }
@keyframes flowRight { to { stroke-dashoffset: 36; } }
@keyframes flowStutter { 0%, 100% { opacity: 1; stroke-dashoffset: 0; } 50% { opacity: 0.3; stroke-dashoffset: -10; } }

/* Responsywny Matrix Zastępujący Tabelę */
.rk-matrix-grid {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 35px;
}

/* Wiersz nagłówkowy (ukrywany na mobile) */
.rk-matrix-header {
    display: grid;
    grid-template-columns: 2fr 1.5fr 1.5fr;
    gap: 15px;
    padding: 10px 20px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-buf2-muted);
    letter-spacing: 0.5px;
}

/* Wiersz danych */
.rk-matrix-row {
    display: grid;
    grid-template-columns: 2fr 1.5fr 1.5fr;
    gap: 15px;
    background: #ffffff;
    padding: 18px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-buf2-border);
    align-items: center;
    transition: all 0.3s;
}

.rk-matrix-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-buf2-dark);
}

.rk-matrix-val {
    font-size: 15px;
    line-height: 1.4;
}

.rk-matrix-val strong { font-weight: 800; }

/* Kolorowanie kolumn aktywnego stanu */
.state-pro .row-pro { background: var(--rk-buf2-green-light); border-color: #bbf7d0; color: #166534; }
.state-warn .row-warn { background: var(--rk-buf2-orange-light); border-color: #fed7aa; color: #9a3412; }

/* Dolna Sekcja Zagrożeń H4 */
.rk-buf2-threats {
    background: #ffffff;
    border: 1px solid var(--rk-buf2-border);
    border-radius: 16px;
    padding: 30px;
}

.rk-buf2-h4 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-buf2-dark);
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-buf2-threats-p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-buf2-text);
    margin: 0;
}

.rk-link {
    color: var(--rk-buf2-blue);
    text-decoration: none;
    border-bottom: 2px dashed rgba(37, 99, 235, 0.4);
    font-weight: 700;
    transition: all 0.3s;
}
.state-warn .rk-link { color: var(--rk-buf2-orange); border-bottom-color: rgba(234, 88, 12, 0.4); }
.rk-link:hover { border-bottom-style: solid; }

/* RESPONSYWNOŚĆ (Mobile w kafelki) */
@media (max-width: 768px) {
    .rk-buf2-header, .rk-buf2-interactive, .rk-buf2-threats { padding: 30px 20px; }
    .rk-buf2-h2 { font-size: 24px; }
    .rk-buf2-toggle-box { flex-direction: column; text-align: center; gap: 15px; border-radius: 20px; }
    
    /* Zamiana tabeli/gridu na kafelki jeden pod drugim */
    .rk-matrix-header { display: none; } /* Ukrywamy nagłówek płaski */
    
    .rk-matrix-row {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 20px;
    }
    
    .rk-matrix-val {
        padding-left: 15px;
        position: relative;
    }
    
    /* Wstrzykiwanie etykiet kontekstowych na mobile */
    .rk-matrix-val::before {
        content: attr(data-label);
        display: block;
        font-size: 11px;
        text-transform: uppercase;
        font-weight: 800;
        color: var(--rk-buf2-muted);
        margin-bottom: 2px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-bufor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Dlaczego bufor ciepła jest absolutnie konieczny w instalacjach pelletowych?",
    "description": "Porównanie techniczne sprawności układu z buforem i bez. Analiza rozprzężenia strumieni masowych oraz zagrożeń braku zbiornika akumulacyjnego w programie Czyste Powietrze 2026.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-bufor",
    "name": "Porównanie sprawności i parametrów eksploatacyjnych układu pellet-podłogówka (2026)",
    "description": "Zbiór danych inżynierskich określających średnią sprawność kotła, taktowanie palnika oraz zużycie paliwa w zależności od obecności zbiornika buforowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "bufor ciepła w ogrzewaniu podłogowym",
      "taktowanie kotła pelletowego",
      "zużycie pelletu dom 150m2",
      "korozja niskotemperaturowa",
      "zwrotnica hydrauliczna strumieni"
    ],
    "measurementTechnique": "Bilansowanie energetyczne i monitorowanie zużycia paliwa na bazie normy PN-EN 303-5:2021-10 dla instalacji niskotemperaturowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Z buforem: Sprawność 91-94%, 2-4 odpaleń/dobę, zużycie 3.9 tony/rok, żywotność grzałki 5-7 lat.",
        "Bez bufora: Sprawność 74-79%, 12-18 odpaleń/dobę, zużycie 4.8 tony/rok, żywotność grzałki 12-18 miesięcy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-bufor",
    "name": "Symulator Rozprzężenia Strumieni Masowych",
    "description": "Interaktywny panel inżynierski (Toggle Switch) mapujący zmiany przepływów hydraulicznych (0,7 m3/h kocioł vs 1,8 m3/h podłoga) i obrazujący skutki usunięcia bufora ciepła.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG rendering.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-buf2-container" id="rk-buf2-app">
    <div class="rk-buf2-header">
        <div class="rk-buf2-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"></rect><line x1="12" y1="2" x2="12" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line></svg>
            Rozprzężenie Hydrauliczne Strumieni
        </div>
        <h2 class="rk-buf2-h2">Dlaczego bufor ciepła jest <span>absolutnie konieczny?</span></h2>
        <p class="rk-buf2-paragraph">
            Zastosowanie zbiornika buforowego (akumulacyjnego) przy połączeniu kotła na pellet z podłogówką jest bezwzględnym wymogiem technicznym (potwierdzonym w procedurach dotacyjnych programu <strong>"Czyste Powietrze" w 2026 roku</strong>), ponieważ rozprzęga on hydraulicznie i termicznie niezależne strumienie masowe obu układów. Kocioł pracuje z optymalnym przepływem rzędu 0,6-0,8 m³/h przy różnicy temperatur ΔT = 20 K (75/55°C), podczas gdy instalacja podłogowa wymaga przepływu na poziomie 1,5-2,0 m³/h przy ΔT = 5 K. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" style="color:#60a5fa; font-weight:700;">Bufor działa jak hydrauliczna zwrotnica</a> o wielkiej pojemności termicznej.
        </p>
    </div>

    <div class="rk-buf2-interactive">
        <h3 class="rk-buf2-h3">Porównanie parametrów pracy układu z buforem i bez bufora</h3>
        
        <div class="rk-buf2-toggle-box">
            <span class="rk-buf2-label active-pro" id="rk-buf-lbl-pro" onclick="document.getElementById('rk-buf-toggle').click()">Układ Z buforem (Standard Inż.)</span>
            <label class="rk-buf2-switch">
                <input type="checkbox" id="rk-buf-toggle">
                <span class="rk-buf2-slider"></span>
            </label>
            <span class="rk-buf2-label" id="rk-buf-lbl-warn" onclick="document.getElementById('rk-buf-toggle').click()">Układ BEZ bufora (Zagrożenie)</span>
        </div>

        <div class="rk-buf2-svg-wrapper state-pro" id="rk-buf-svg-container">
            <svg class="rk-buf2-svg" viewBox="0 0 300 120">
                <rect x="10" y="30" width="40" height="60" fill="#334155" rx="4"/>
                <circle cx="30" cy="60" r="8" fill="#ea580c"/>
                
                <path class="anim-flow-boiler" d="M50 45 L100 45" fill="none" stroke-width="4"/>
                <path class="anim-flow-boiler" d="M100 75 L50 75" fill="none" stroke-width="4" style="stroke: #3b82f6;"/>
                <text x="75" y="38" fill="#ea580c" font-size="8" font-family="sans-serif" text-anchor="middle" id="rk-svg-t1">0.7 m³/h</text>

                <g class="svg-buffer-tank" id="rk-svg-tank">
                    <rect x="100" y="15" width="30" height="90" fill="#1e293b" stroke="#2563eb" stroke-width="2" rx="6"/>
                    <rect x="105" y="20" width="20" height="80" fill="#2563eb" opacity="0.3" rx="4"/>
                </g>

                <path class="anim-flow-floor" d="M130 45 L240 45" fill="none" stroke-width="4" style="stroke: #ef4444;"/>
                <path class="anim-flow-floor" d="M240 75 L130 75" fill="none" stroke-width="4" style="stroke: #3b82f6;"/>
                <text x="185" y="38" fill="#60a5fa" font-size="8" font-family="sans-serif" text-anchor="middle" id="rk-svg-t2">1.8 m³/h</text>

                <rect x="240" y="35" width="10" height="50" fill="#475569"/>
                <path d="M250 45 C260 45, 260 55, 250 55 M250 65 C260 65, 260 75, 250 75" fill="none" stroke="#ef4444" stroke-width="3"/>
            </svg>
        </div>

        <div class="rk-matrix-grid state-pro" id="rk-matrix-container">
            
            <div class="rk-matrix-header">
                <div>Parametr eksploatacyjny</div>
                <div>Układ BEZ bufora ciepła</div>
                <div>Układ Z buforem ciepła (600 L)</div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Średnia sprawność kotła</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>74 - 79%</strong> (straty rozruchowe)</div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>91 - 94%</strong> (praca nominalna)</div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Częstotliwość załączeń palnika</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>12 - 18 razy / dobę</strong></div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>2 - 4 razy / dobę</strong></div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Zużycie pelletu (dom 150 m²)</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>4,8 tony / rok</strong></div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>3,9 tony / rok</strong></div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Żywotność grzałki ceramicznej</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>12 - 18 miesięcy</strong></div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>5 - 7 lat</strong></div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Emisja pyłów i sadzy w komorze</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora">Wysoka (częste czyszczenie)</div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem">Minimalna (suchy, szary popiół)</div>
            </div>

        </div>

        <div class="rk-buf2-threats">
            <h4 class="rk-buf2-h4">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#ea580c" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Zagrożenia związane z rezygnacją ze zbiornika akumulacyjnego
            </h4>
            <p class="rk-buf2-threats-p">
                Brak bufora wymusza na kotle pelletowym bezpośrednią reakcję na zamknięcie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/" class="rk-link">siłowników termoelektrycznych</a> na rozdzielaczach. Gdy pokoje zostaną dogrzane i zamknie się 8 z 10 pętli, przepływ po stronie instalacji drastycznie spada. Kocioł, nie mogąc oddać wygenerowanej mocy 10 kW do zredukowanego zładu, natychmiast przekracza temperaturę zadaną i awaryjnie się wygasza. Po 15 minutach woda w rurach stygnie, a automatyka ponownie uruchamia procedurę rozpalania. Taki cykl niszczy zapalarkę, powoduje osadzanie się szklistej smoły (kondensacja spalin) na wymienniku kotła i drastycznie zwiększa koszty ogrzewania.
            </p>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domenowe (Brak znaczników H2/H3 w fallback)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-buf2-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; box-sizing: border-box;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Kontrola Autorska Aktywowana</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Wykryto nieautoryzowaną próbę klonowania interaktywnego matrixa danych technicznych. Skrypty i warstwa danych strukturalnych zostały zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika interaktywnego przełącznika widoków
    const toggle = document.getElementById('rk-buf-toggle');
    const svgContainer = document.getElementById('rk-buf-svg-container');
    const matrixContainer = document.getElementById('rk-matrix-container');
    const lblPro = document.getElementById('rk-buf-lbl-pro');
    const lblWarn = document.getElementById('rk-buf-lbl-warn');
    
    // Teksty na SVG
    const svgT1 = document.getElementById('rk-svg-t1');
    const svgT2 = document.getElementById('rk-svg-t2');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // STAN: AMATEUR (Brak bufora / Awaria)
            svgContainer.className = 'rk-buf2-svg-wrapper state-warn';
            matrixContainer.className = 'rk-matrix-grid state-warn';
            lblPro.classList.remove('active-pro');
            lblWarn.classList.add('active-warn');
            
            svgT1.textContent = "Taktowanie! (Niestabilny)";
            svgT1.setAttribute("fill", "#ef4444");
            svgT2.textContent = "Dławienie przepływu";
            svgT2.setAttribute("fill", "#f97316");
        } else {
            // STAN: PRO (Z buforem / Norma)
            svgContainer.className = 'rk-buf2-svg-wrapper state-pro';
            matrixContainer.className = 'rk-matrix-grid state-pro';
            lblWarn.classList.remove('active-warn');
            lblPro.classList.add('active-pro');
            
            svgT1.textContent = "0.7 m³/h";
            svgT1.setAttribute("fill", "#ea580c");
            svgT2.textContent = "1.8 m³/h";
            svgT2.setAttribute("fill", "#60a5fa");
        }
    });
});
</script>



<style>
:root {
    --rk-calc2-dark: #0f172a;
    --rk-calc2-card: #ffffff;
    --rk-calc2-primary: #8b5cf6; /* Techniczny fiolet/indygo */
    --rk-calc2-primary-light: #e0e7ff;
    --rk-calc2-pellet: #ea580c; /* Kolor pelletu/ognia */
    --rk-calc2-water: #0ea5e9; /* Kolor bufora/wody */
    --rk-calc2-bg: #f8fafc;
    --rk-calc2-border: #cbd5e1;
    --rk-calc2-text: #334155;
    --rk-calc2-muted: #64748b;
}

.rk-calc2-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-calc2-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(139, 92, 246, 0.15);
    border: 1px solid rgba(139, 92, 246, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-calc2-header {
    background: linear-gradient(135deg, var(--rk-calc2-dark) 0%, #2e1065 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-calc2-primary);
}

.rk-calc2-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.2);
    color: #c4b5fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.3);
}

.rk-calc2-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-calc2-h2 span { color: #a78bfa; }

.rk-calc2-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Kalkulator */
.rk-calc2-interactive {
    padding: 40px 50px;
    background: var(--rk-calc2-bg);
}

.rk-calc2-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-calc2-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

.rk-calc2-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 30px;
}

/* Sekcja Suwaków (Inputs) */
.rk-calc2-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-calc2-slider-group {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc2-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-calc2-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-calc2-slider-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc2-muted);
    text-transform: uppercase;
}

.rk-calc2-slider-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc2-primary);
    background: var(--rk-calc2-primary-light);
    padding: 4px 12px;
    border-radius: 8px;
}

.rk-range-input {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #ddd6fe 0%, #8b5cf6 100%);
    border-radius: 4px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-calc2-primary);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Sekcja Wyników (Outputs) */
.rk-calc2-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc2-border);
    border-radius: 16px;
    padding: 18px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    overflow: hidden;
}

.rk-res-card::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
}

.rk-res-card.c-ozc::before { background: var(--rk-calc2-muted); }
.rk-res-card.c-boiler::before { background: var(--rk-calc2-pellet); }
.rk-res-card.c-buffer::before { background: var(--rk-calc2-water); }
.rk-res-card.c-floor::before { background: var(--rk-calc2-primary); }

.rk-res-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc2-text);
}

.rk-res-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-calc2-dark);
}

.c-boiler .rk-res-val { color: var(--rk-calc2-pellet); }
.c-buffer .rk-res-val { color: var(--rk-calc2-water); }

/* Schemat SVG */
.rk-calc2-svg-box {
    grid-column: 1 / -1;
    background: #0f172a;
    border-radius: 16px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 15px;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 1px solid #334155;
}

.rk-svg-main {
    width: 100%;
    max-width: 600px;
    height: auto;
}

.anim-power-flow { stroke-dasharray: 6 12; animation: flowData 1s linear infinite; }
@keyframes flowData { to { stroke-dashoffset: -18; } }

/* Procedura Tekstowa */
.rk-calc2-procedure {
    margin-top: 40px;
    background: #ffffff;
    border: 1px solid var(--rk-calc2-border);
    border-radius: 16px;
    padding: 30px;
}

.rk-proc-step {
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 1px dashed var(--rk-calc2-border);
}
.rk-proc-step:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }

.rk-proc-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-calc2-dark);
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-proc-badge {
    background: var(--rk-calc2-dark);
    color: #fff;
    width: 24px; height: 24px;
    display: inline-flex; justify-content: center; align-items: center;
    border-radius: 6px;
    font-size: 12px;
}

.rk-proc-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-calc2-text);
    margin: 0 0 10px 0;
}

.rk-proc-math {
    background: var(--rk-calc2-bg);
    padding: 12px 20px;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-weight: 700;
    color: var(--rk-calc2-primary);
    border: 1px solid var(--rk-calc2-primary-light);
    display: inline-block;
}

.rk-link {
    color: var(--rk-calc2-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(139, 92, 246, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #6d28d9; }

@media (max-width: 768px) {
    .rk-calc2-header, .rk-calc2-interactive, .rk-calc2-procedure { padding: 30px 20px; }
    .rk-calc2-grid { grid-template-columns: 1fr; }
    .rk-calc2-h2 { font-size: 26px; }
    .rk-calc2-svg-box { padding: 20px 10px; }
    .rk-res-card { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-proc-math { font-size: 13px; word-break: break-all; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-dobor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Jak dobrać moc kotła na pellet i pojemność instalacji podłogowej?",
    "description": "Inżynierski algorytm krok po kroku: obliczanie projektowego obciążenia cieplnego (OZC), mocy kotła, pojemności bufora i zładu wody. Zgodnie z normą PN-EN 303-5.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-dobor",
    "name": "Algorytm doboru mocy kotła pelletowego i pojemności bufora (2026)",
    "description": "Matematyczny model doboru komponentów maszynowni na podstawie zapotrzebowania cieplnego budynku, z uwzględnieniem strat przesyłowych i podgrzewu CWU.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór mocy kotła na pellet",
      "obliczenia OZC",
      "pojemność bufora ciepła",
      "zład wody podłogówki",
      "norma PN-EN 303-5"
    ],
    "measurementTechnique": "Kalkulacja wg normy PN-EN 12831 (OZC) oraz PN-EN 303-5 (dobór bufora dla biomasy, min. 50-70 l/kW). Zład wody dla rury 16x2 przyjęto jako 0,113 l/mb.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Moc kotła: Q_kotła = Q_p × 1,15 + 0,4 kW (dla 4 osób).",
        "Bufor: V_b = Q_kotła × 60 litrów/kW.",
        "Pojemność podłogówki: Powierzchnia × 6,6 m/m² × 0,113 l/m."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-dobor",
    "name": "Kalkulator Inżynierski: Dobór Kotła i Bufora",
    "description": "Interaktywny algorytm wyliczający na żywo OZC, moc katalogową kotła stałopalnego, wymagany zład bufora oraz pojemność jastrychu na podstawie powierzchni domu i izolacji.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Range Inputs, and SVG animation support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc2-container" id="rk-calc2-app">
    <div class="rk-calc2-header">
        <div class="rk-calc2-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Algorytm Projektowy
        </div>
        <h2 class="rk-calc2-h2">Jak dobrać moc kotła na pellet i <span>pojemność instalacji?</span></h2>
        <p class="rk-calc2-paragraph">
            Poniższy algorytm inżynierski pozwala krok po kroku obliczyć optymalną moc źródła ciepła oraz minimalną kubaturę zbiornika buforowego dla domu jednorodzinnego w oparciu o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" style="color:#c4b5fd; font-weight:700;">normatywne wskaźniki projektowe OZC</a>. Wykorzystaj suwaki poniżej, aby przeprowadzić symulację dla własnego budynku.
        </p>
    </div>

    <div class="rk-calc2-interactive">
        <h3 class="rk-calc2-h3">Kalkulator: Ścieżka Doboru Komponentów</h3>
        
        <div class="rk-calc2-grid">
            <div class="rk-calc2-controls">
                <div class="rk-calc2-slider-group">
                    <div class="rk-calc2-slider-header">
                        <div class="rk-calc2-slider-label">Powierzchnia domu</div>
                        <div class="rk-calc2-slider-value" id="rk-val-area">150 m²</div>
                    </div>
                    <input type="range" id="rk-slider-area" class="rk-range-input" min="80" max="300" step="10" value="150">
                </div>

                <div class="rk-calc2-slider-group">
                    <div class="rk-calc2-slider-header">
                        <div class="rk-calc2-slider-label">Standard izolacji (EA)</div>
                        <div class="rk-calc2-slider-value" id="rk-val-iso">50 W/m²</div>
                    </div>
                    <input type="range" id="rk-slider-iso" class="rk-range-input" min="30" max="100" step="5" value="50">
                </div>
                
                <div class="rk-calc2-slider-group">
                    <div class="rk-calc2-slider-header">
                        <div class="rk-calc2-slider-label">Liczba osób (CWU)</div>
                        <div class="rk-calc2-slider-value" id="rk-val-ppl">4</div>
                    </div>
                    <input type="range" id="rk-slider-ppl" class="rk-range-input" min="1" max="8" step="1" value="4">
                </div>
            </div>

            <div class="rk-calc2-results">
                <div class="rk-res-card c-ozc">
                    <div class="rk-res-label">Obciążenie Cieplne (OZC)</div>
                    <div class="rk-res-val" id="rk-out-ozc">7.5 kW</div>
                </div>
                <div class="rk-res-card c-boiler">
                    <div class="rk-res-label">Wymagana Moc Kotła</div>
                    <div class="rk-res-val" id="rk-out-boiler">9.0 kW</div>
                </div>
                <div class="rk-res-card c-buffer">
                    <div class="rk-res-label">Pojemność Bufora (Min.)</div>
                    <div class="rk-res-val" id="rk-out-buffer">540 L</div>
                </div>
                <div class="rk-res-card c-floor">
                    <div class="rk-res-label">Zład Wody (Podłogówka)</div>
                    <div class="rk-res-val" id="rk-out-floor">112 L</div>
                </div>
            </div>

            <div class="rk-calc2-svg-box">
                <svg class="rk-svg-main" viewBox="0 0 600 120">
                    <rect x="10" y="30" width="100" height="60" fill="#334155" rx="8"/>
                    <text x="60" y="55" fill="#94a3b8" font-size="12" text-anchor="middle" font-weight="bold">KROK 1</text>
                    <text x="60" y="75" fill="#ffffff" font-size="16" text-anchor="middle" font-weight="bold" id="rk-svg-ozc">7.5 kW</text>
                    
                    <path class="anim-power-flow" d="M110 60 L160 60" fill="none" stroke="#64748b" stroke-width="4" stroke-linecap="round"/>
                    <polygon points="155,55 165,60 155,65" fill="#64748b"/>

                    <rect x="170" y="20" width="100" height="80" fill="#1e293b" stroke="#ea580c" stroke-width="2" rx="8"/>
                    <text x="220" y="45" fill="#ea580c" font-size="12" text-anchor="middle" font-weight="bold">KROK 2 (Kocioł)</text>
                    <text x="220" y="75" fill="#ffffff" font-size="20" text-anchor="middle" font-weight="bold" id="rk-svg-boiler">9.0 kW</text>

                    <path class="anim-power-flow" d="M270 60 L320 60" fill="none" stroke="#ea580c" stroke-width="4" stroke-linecap="round"/>
                    <polygon points="315,55 325,60 315,65" fill="#ea580c"/>

                    <rect x="330" y="10" width="100" height="100" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="16"/>
                    <text x="380" y="45" fill="#0ea5e9" font-size="12" text-anchor="middle" font-weight="bold">KROK 3 (Bufor)</text>
                    <text x="380" y="75" fill="#ffffff" font-size="20" text-anchor="middle" font-weight="bold" id="rk-svg-buffer">540 L</text>

                    <path class="anim-power-flow" d="M430 60 L480 60" fill="none" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                    <polygon points="475,55 485,60 475,65" fill="#0ea5e9"/>

                    <rect x="490" y="40" width="100" height="40" fill="#334155" stroke="#8b5cf6" stroke-width="2" rx="4"/>
                    <text x="540" y="55" fill="#a78bfa" font-size="10" text-anchor="middle" font-weight="bold">KROK 4 (Zład)</text>
                    <text x="540" y="72" fill="#ffffff" font-size="14" text-anchor="middle" font-weight="bold" id="rk-svg-floor">112 L</text>
                </svg>
            </div>
        </div>

        <div class="rk-calc2-procedure">
            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">1</span> Wyznaczenie obciążenia cieplnego z OZC</h4>
                <p class="rk-proc-text">
                    Odczytujemy z projektu OZC (<a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-link">PN-EN 12831</a>) projektowe obciążenie cieplne budynku dla skrajnych temperatur zewnętrznych. Dla nowoczesnego domu 150 m² o współczynniku przenikania 50 W/m², wartość ta wynosi średnio 7,5 kW.
                </p>
                <div class="rk-proc-math">Q_p = Powierzchnia × Izolacja / 1000</div>
            </div>

            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">2</span> Kalkulacja mocy nominalnej kotła z zapasem na CWU</h4>
                <p class="rk-proc-text">
                    Wyznaczamy moc znamionową kotła, uwzględniając sprawność przesyłu (mnożnik 1.15) oraz zapas na przygotowanie ciepłej wody użytkowej (przyjmuje się ok. 0.1 kW na osobę, wg normy 0.4 kW dla 4 osób). Dobieramy najbliższy katalogowo model kotła.
                </p>
                <div class="rk-proc-math">Q_kotła = Q_p × 1.15 + (Liczba_osób × 0.1) kW</div>
            </div>

            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">3</span> Obliczenie minimalnej objętości bufora</h4>
                <p class="rk-proc-text">
                    Obliczamy minimalną pojemność wodną bufora zgodnie z załącznikiem do normy <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">PN-EN 303-5</a>, stosując uproszczony przelicznik dla biomasy, który wynosi minimum 60 litrów na każdy kW mocy znamionowej kotła.
                </p>
                <div class="rk-proc-math">V_b = Q_kotła × 60 l/kW</div>
            </div>

            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">4</span> Objętość wodna instalacji podłogowej</h4>
                <p class="rk-proc-text">
                    Wyznaczamy całkowitą pojemność wodną wylewki, bazując na średniej długości <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/" class="rk-link">rury 16x2 mm</a>. Przy rozstawie co 15 cm zużywamy ok. 6,6 metra rury na m². Każdy metr bieżący tej rury mieści dokładnie 0,113 litra wody.
                </p>
                <div class="rk-proc-math">V_podł = Powierzchnia × 6.6 m/m² × 0.113 l/m</div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-calc2-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowany Algorytm Inżynierski</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Moduł obliczeniowy doboru maszynowni oraz struktura JSON-LD stanowią własność Projekt-Ogrzewania.pl. Uruchomienie zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Kalkulatora
    const sliderArea = document.getElementById('rk-slider-area');
    const sliderIso = document.getElementById('rk-slider-iso');
    const sliderPpl = document.getElementById('rk-slider-ppl');
    
    const valArea = document.getElementById('rk-val-area');
    const valIso = document.getElementById('rk-val-iso');
    const valPpl = document.getElementById('rk-val-ppl');

    // Outputs
    const outOzc = document.getElementById('rk-out-ozc');
    const outBoiler = document.getElementById('rk-out-boiler');
    const outBuffer = document.getElementById('rk-out-buffer');
    const outFloor = document.getElementById('rk-out-floor');
    
    // SVG Outputs
    const svgOzc = document.getElementById('rk-svg-ozc');
    const svgBoiler = document.getElementById('rk-svg-boiler');
    const svgBuffer = document.getElementById('rk-svg-buffer');
    const svgFloor = document.getElementById('rk-svg-floor');

    function updateCalculations() {
        let area = parseFloat(sliderArea.value);
        let iso = parseFloat(sliderIso.value);
        let ppl = parseFloat(sliderPpl.value);

        // Update Labels
        valArea.innerText = area + " m²";
        valIso.innerText = iso + " W/m²";
        valPpl.innerText = ppl;

        // Krok 1: OZC (kW)
        let q_p = (area * iso) / 1000;
        let q_p_str = q_p.toFixed(1) + " kW";
        outOzc.innerText = q_p_str;
        svgOzc.textContent = q_p_str;

        // Krok 2: Kocioł (kW)
        let q_kotla = (q_p * 1.15) + (ppl * 0.1);
        let q_kotla_str = q_kotla.toFixed(1) + " kW";
        outBoiler.innerText = q_kotla_str;
        svgBoiler.textContent = q_kotla_str;

        // Krok 3: Bufor (L) -> 60 litrów na każdy kW
        let v_b = Math.round(q_kotla * 60);
        let v_b_str = v_b + " L";
        outBuffer.innerText = v_b_str;
        svgBuffer.textContent = v_b_str;

        // Krok 4: Podłoga (L) -> Zakładamy rozstaw 15cm (6.6m/m2), rura 16x2 (0.113 l/m)
        let v_floor = Math.round(area * 6.6 * 0.113);
        let v_floor_str = v_floor + " L";
        outFloor.innerText = v_floor_str;
        svgFloor.textContent = v_floor_str;
    }

    sliderArea.addEventListener('input', updateCalculations);
    sliderIso.addEventListener('input', updateCalculations);
    sliderPpl.addEventListener('input', updateCalculations);

    // Init
    updateCalculations();
});
</script>



<style>
:root {
    --rk-dsgn-dark: #0f172a;
    --rk-dsgn-card: #ffffff;
    --rk-dsgn-brand: #2563eb; /* Inżynierski Niebieski */
    --rk-dsgn-brand-light: #eff6ff;
    --rk-dsgn-accent: #f59e0b; /* Akcent Pelletu */
    --rk-dsgn-edge: #8b5cf6; /* Strefa brzegowa */
    --rk-dsgn-danger: #ef4444; /* Alert hydrauliczny */
    --rk-dsgn-danger-light: #fef2f2;
    --rk-dsgn-bg: #f8fafc;
    --rk-dsgn-border: #cbd5e1;
    --rk-dsgn-text: #334155;
    --rk-dsgn-muted: #64748b;
}

.rk-dsgn-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-dsgn-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-dsgn-header {
    background: linear-gradient(135deg, var(--rk-dsgn-dark) 0%, #1e3a8a 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dsgn-brand);
}

.rk-dsgn-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #93c5fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-dsgn-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-dsgn-h2 span { color: #60a5fa; }

.rk-dsgn-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-dsgn-paragraph strong { color: #ffffff; }

/* Moduł Interaktywny */
.rk-dsgn-interactive {
    padding: 40px 50px;
    background: var(--rk-dsgn-bg);
}

.rk-dsgn-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-dsgn-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

.rk-dsgn-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 30px;
}

/* Kontrolki (Lewa kolumna) */
.rk-dsgn-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-ctrl-box {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-dsgn-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-ctrl-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-ctrl-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-dsgn-muted);
    text-transform: uppercase;
}

.rk-ctrl-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-dsgn-brand);
    background: var(--rk-dsgn-brand-light);
    padding: 4px 12px;
    border-radius: 8px;
}

.rk-dsgn-range {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #93c5fd 0%, #2563eb 100%);
    border-radius: 4px;
    outline: none;
    transition: background 0.3s;
}

.rk-dsgn-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-dsgn-brand);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
.rk-dsgn-range:active::-webkit-slider-thumb { transform: scale(1.1); }

.rk-dsgn-range.danger-mode { background: linear-gradient(to right, #2563eb 66%, #ef4444 100%); }
.rk-dsgn-range.danger-mode::-webkit-slider-thumb { border-color: var(--rk-dsgn-danger); }

/* Przełącznik Stref */
.rk-zone-toggle {
    display: flex;
    background: #f1f5f9;
    border-radius: 12px;
    padding: 4px;
    position: relative;
}

.rk-zone-btn {
    flex: 1;
    padding: 10px;
    text-align: center;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-dsgn-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 1;
}

.rk-zone-btn.active {
    color: #ffffff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.rk-zone-btn[data-zone="std"].active { background: var(--rk-dsgn-brand); }
.rk-zone-btn[data-zone="edge"].active { background: var(--rk-dsgn-edge); }

/* Wyniki (Prawa Kolumna) */
.rk-dsgn-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-dsgn-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all 0.3s;
}

.rk-res-card.warn-card {
    background: var(--rk-dsgn-danger-light);
    border-color: #fca5a5;
}

.rk-res-label { font-size: 14px; font-weight: 700; color: var(--rk-dsgn-text); }
.rk-res-val { font-size: 20px; font-weight: 900; color: var(--rk-dsgn-dark); }
.warn-card .rk-res-val { color: var(--rk-dsgn-danger); }

/* Zastępczy Panel Danych Technicznych (Dark Mode) */
.rk-dsgn-data-box {
    background: #0f172a;
    border-radius: 16px;
    padding: 25px;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 1px solid #334155;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 15px;
    transition: border-color 0.3s;
}

.rk-data-box-title {
    color: #93c5fd;
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    margin: 0 0 5px 0;
    letter-spacing: 1px;
    transition: color 0.3s;
}

.rk-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px dashed #334155;
    padding-bottom: 10px;
}
.rk-data-row:last-child { border-bottom: none; padding-bottom: 0; }

.rk-data-row span {
    color: #cbd5e1;
    font-size: 14px;
}

.rk-data-row strong {
    color: #ffffff;
    font-size: 15px;
    font-weight: 700;
}

/* Stany Awaryjne dla Panelu Danych */
.state-jam.rk-dsgn-data-box { border-color: #ef4444; }
.state-jam .rk-data-box-title { color: #ef4444; }
.state-jam .rk-data-row strong { color: #fca5a5; }

/* CTA Section */
.rk-dsgn-cta {
    background: #ffffff;
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-dsgn-border);
}

.rk-cta-h3 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-dsgn-dark);
    margin: 0 0 15px 0;
}

.rk-cta-p {
    font-size: 16px;
    color: var(--rk-dsgn-muted);
    max-width: 600px;
    margin: 0 auto 30px auto;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dsgn-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #1d4ed8;
    box-shadow: 0 20px 35px -5px rgba(37, 99, 235, 0.5);
}

.rk-btn-massive svg { transition: transform 0.3s; }
.rk-btn-massive:hover svg { transform: translateX(5px); }

.rk-link {
    color: var(--rk-dsgn-brand);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 2px dashed rgba(37, 99, 235, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #1e3a8a; }

@media (max-width: 768px) {
    .rk-dsgn-header, .rk-dsgn-interactive, .rk-dsgn-cta { padding: 30px 20px; }
    .rk-dsgn-grid { grid-template-columns: 1fr; }
    .rk-dsgn-h2 { font-size: 26px; }
    .rk-btn-massive { width: 100%; padding: 18px 20px; font-size: 16px; }
    .rk-res-card { flex-direction: column; align-items: flex-start; gap: 5px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/"
    },
    "headline": "Jak kocioł na pellet wpływa na projekt ogrzewania podłogowego?",
    "description": "Zasady projektowania instalacji płaszczyznowych. Wpływ długości pętli na opory hydrauliczne i dobór pompy obiegowej z regulacją Δp-v lub Δp-c.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#dataset",
    "name": "Parametry projektowe instalacji płaszczyznowych (2026)",
    "description": "Zestawienie inżynierskie opisujące korelacje między rozstawem rur, długością pętli a oporami hydraulicznymi pompy obiegowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne ozc",
      "rozstaw rur w ogrzewaniu podłogowym",
      "strefa brzegowa podłogówki",
      "maksymalna długość pętli",
      "pompa obiegowa Δp-v"
    ],
    "measurementTechnique": "Algorytm oparty na normie PN-EN 12831 (OZC), wyznaczający straty ciśnienia (kPa) w rurach wielowarstwowych 16x2 mm.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa mieszkalna: Rozstaw 10 - 15 cm.",
        "Strefa brzegowa: Zagęszczenie 7.5 - 10 cm na szer. 1m.",
        "Maksymalna długość pętli: 100m. Przekroczenie generuje opór >20 kPa (martwe strefy)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#webapp",
    "name": "Symulator Pętli i Oporów Hydraulicznych",
    "description": "Interaktywne narzędzie dla instalatorów i inwestorów symulujące narastanie oporów hydraulicznych pompy wraz ze wzrostem długości pętli grzewczej i zagęszczenia rur.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Range Inputs, and CSS transitions.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dsgn-container" id="rk-dsgn-app">
    <div class="rk-dsgn-header">
        <div class="rk-dsgn-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"></path><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"></path></svg>
            Wytyczne Projektowe
        </div>
        <h2 class="rk-dsgn-h2">Jak to wpływa na projekt <span>ogrzewania podłogowego?</span></h2>
        <p class="rk-dsgn-paragraph">
            Integracja kotła na pellet z systemem podłogowym wymusza restrykcyjne podejście do fazy projektowej, gdzie fundamentalnym dokumentem wyjściowym jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link" style="color:#93c5fd;">Projektowe Obciążenie Cieplne (OZC)</a> sporządzone wg normy PN-EN 12831. Charakterystyka źródła stałopalnego wyklucza projektowanie instalacji "na oko".
        </p>
    </div>

    <div class="rk-dsgn-interactive">
        <h3 class="rk-dsgn-h3">Limity Hydrauliczne: Sprawdź swój projekt</h3>
        
        <div class="rk-dsgn-grid">
            
            <div class="rk-dsgn-controls">
                
                <div class="rk-ctrl-box">
                    <div class="rk-ctrl-header">
                        <div class="rk-ctrl-label">Rodzaj Strefy Projektowej</div>
                    </div>
                    <div class="rk-zone-toggle">
                        <div class="rk-zone-btn active" data-zone="std" id="btn-zone-std">Mieszkalna (15cm)</div>
                        <div class="rk-zone-btn" data-zone="edge" id="btn-zone-edge">Brzegowa (10cm)</div>
                    </div>
                    <p style="font-size:12px; color:#64748b; margin-top:10px; line-height:1.5;">
                        Ze względu na obniżenie zasilania, <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">rozstaw rur</a> w strefach mieszkalnych projektuje się co 10-15 cm, a w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-link">strefach brzegowych</a> zagęszcza do 7,5-10 cm.
                    </p>
                </div>

                <div class="rk-ctrl-box">
                    <div class="rk-ctrl-header">
                        <div class="rk-ctrl-label">Długość pojedynczej pętli</div>
                        <div class="rk-ctrl-val" id="rk-val-len">80 m</div>
                    </div>
                    <input type="range" id="rk-slider-len" class="rk-dsgn-range" min="30" max="150" step="5" value="80">
                    <p style="font-size:12px; color:#64748b; margin-top:10px; line-height:1.5;">
                        <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" class="rk-link">Maksymalna długość pętli</a> dla rury 16 mm to bezwzględnie 100m. Przekroczenie niszczy przepływ.
                    </p>
                </div>

            </div>

            <div class="rk-dsgn-results">
                
                <div class="rk-dsgn-data-box" id="rk-data-wrap">
                    <h4 class="rk-data-box-title">Parametry Hydrauliczne Pętli</h4>
                    <div class="rk-data-row">
                        <span>Zalecany tryb pompy:</span>
                        <strong id="rk-val-pump">Δp-c (Stałociśnieniowy)</strong>
                    </div>
                    <div class="rk-data-row">
                        <span>Szacowana prędkość wody:</span>
                        <strong id="rk-val-vel">0.25 m/s</strong>
                    </div>
                    <div class="rk-data-row">
                        <span>Wydajność cieplna pętli:</span>
                        <strong id="rk-val-power">~720 W</strong>
                    </div>
                </div>

                <div class="rk-res-card" id="rk-card-press">
                    <div class="rk-res-label">Opór hydrauliczny pompy</div>
                    <div class="rk-res-val" id="rk-val-press">16.0 kPa</div>
                </div>

                <div class="rk-res-card" id="rk-card-status">
                    <div class="rk-res-label">Status Przepływu (Δp-v / Δp-c)</div>
                    <div class="rk-res-val" id="rk-val-status" style="color:#10b981; font-size:16px;">Norma. Pompa radzi sobie.</div>
                </div>

            </div>
        </div>
    </div>

    <div class="rk-dsgn-cta">
        <h3 class="rk-cta-h3">Nie ryzykuj "martwych stref" w swoim domu</h3>
        <p class="rk-cta-p">
            Błędy w obliczeniach oporów lub rozstawie rur mszczą się przez dekady. <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-link">Źle dobrana pompa obiegowa</a> lub zbyt długa pętla oznacza zimną podłogę, której nie da się naprawić po wylaniu betonu.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-dsgn-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano Kod Inżynierski</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Próba osadzenia kalkulatora oporów hydraulicznych poza domeną docelową. Warstwa JSON-LD i skrypty zostały wyłączone.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora
    const sliderLen = document.getElementById('rk-slider-len');
    const valLen = document.getElementById('rk-val-len');
    
    const btnZoneStd = document.getElementById('btn-zone-std');
    const btnZoneEdge = document.getElementById('btn-zone-edge');
    let currentZone = 'std';

    const cardPress = document.getElementById('rk-card-press');
    const valPress = document.getElementById('rk-val-press');
    const cardStatus = document.getElementById('rk-card-status');
    const valStatus = document.getElementById('rk-val-status');

    // Dynamiczne parametry panelu zastępczego
    const dataWrap = document.getElementById('rk-data-wrap');
    const valPump = document.getElementById('rk-val-pump');
    const valVel = document.getElementById('rk-val-vel');
    const valPower = document.getElementById('rk-val-power');

    // Obsługa przycisków strefy
    btnZoneStd.addEventListener('click', function() {
        currentZone = 'std';
        btnZoneStd.classList.add('active');
        btnZoneEdge.classList.remove('active');
        updateCalc();
    });

    btnZoneEdge.addEventListener('click', function() {
        currentZone = 'edge';
        btnZoneEdge.classList.add('active');
        btnZoneStd.classList.remove('active');
        updateCalc();
    });

    // Kalkulacja i update UI
    function updateCalc() {
        let length = parseInt(sliderLen.value);
        valLen.innerText = length + " m";

        // Uproszczony model oporu: 1m rury = 0.2 kPa oporu.
        // Jeśli strefa brzegowa (gęściej), opór lekko rośnie (mnożnik 1.15) z uwagi na ostrzejsze zagięcia
        let multiplier = (currentZone === 'edge') ? 1.15 : 1.0;
        let pressure = length * 0.2 * multiplier;
        valPress.innerText = pressure.toFixed(1) + " kPa";

        if (length > 100) {
            // AWARIA (Przekroczenie 100m)
            sliderLen.classList.add('danger-mode');
            cardPress.classList.add('warn-card');
            cardStatus.classList.add('warn-card');
            
            valStatus.innerText = "BŁĄD: Zbyt duży opór (>20kPa). Martwe strefy!";
            valStatus.style.color = "var(--rk-dsgn-danger)";
            
            // Aktualizacja panelu danych dla awarii
            dataWrap.classList.add('state-jam');
            valPump.innerText = "AWARIA ZASILANIA";
            valVel.innerText = "< 0.1 m/s (Zadławienie)";
            valPower.innerText = "Spadek mocy grzewczej";
            
        } else {
            // NORMA
            sliderLen.classList.remove('danger-mode');
            cardPress.classList.remove('warn-card');
            cardStatus.classList.remove('warn-card');
            
            valStatus.innerText = "Norma. Pompa obiegowa radzi sobie.";
            valStatus.style.color = "#10b981"; // Sukces
            
            // Aktualizacja panelu danych dla normy
            dataWrap.classList.remove('state-jam');
            
            let power = (currentZone === 'std') ? (length / 6.6) * 60 : (length / 10) * 85;
            let velocity = 0.15 + (length / 500);
            
            valPump.innerText = "Δp-c (Stałociśnieniowy)";
            valVel.innerText = velocity.toFixed(2) + " m/s";
            valPower.innerText = "~" + Math.round(power) + " W";
        }
    }

    sliderLen.addEventListener('input', updateCalc);

    // Inicjalizacja
    updateCalc();
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-card: #ffffff;
    --rk-cs-brand: #d97706; /* Pellet Gold/Amber */
    --rk-cs-brand-light: #fef3c7;
    --rk-cs-blue: #3b82f6; /* Inżynierski błękit */
    --rk-cs-green: #10b981; /* Oszczędności / Eko */
    --rk-cs-bg: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #334155;
    --rk-cs-muted: #64748b;
}

.rk-cs-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-cs-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(217, 119, 6, 0.15);
    border: 1px solid rgba(217, 119, 6, 0.3);
    overflow: hidden;
}

/* Nagłówek i Wstęp */
.rk-cs-header {
    background: linear-gradient(135deg, var(--rk-cs-dark) 0%, #291502 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-cs-brand);
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(217, 119, 6, 0.2);
    color: #fcd34d;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(217, 119, 6, 0.3);
}

.rk-cs-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-cs-h2 span { color: var(--rk-cs-brand); }

.rk-cs-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-cs-paragraph:last-child { margin-bottom: 0; }

.rk-cs-quote {
    border-left: 4px solid var(--rk-cs-brand);
    padding-left: 20px;
    margin: 25px 0;
    font-style: italic;
    color: #e2e8f0;
    background: rgba(255,255,255,0.05);
    padding: 20px;
    border-radius: 0 12px 12px 0;
}

/* Interaktywny Dashboard */
.rk-cs-interactive {
    padding: 40px 50px;
    background: var(--rk-cs-bg);
}

.rk-cs-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-cs-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Nawigacja Tabs */
.rk-cs-tabs {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-bottom: 35px;
    background: #ffffff;
    padding: 8px;
    border-radius: 100px;
    border: 1px solid var(--rk-cs-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-cs-tab-btn {
    flex: 1;
    padding: 12px 20px;
    text-align: center;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-cs-muted);
    cursor: pointer;
    border-radius: 99px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: none;
    background: transparent;
}

.rk-cs-tab-btn:hover { color: var(--rk-cs-dark); background: #f1f5f9; }
.rk-cs-tab-btn.active { color: #ffffff; background: var(--rk-cs-brand); box-shadow: 0 4px 12px rgba(217, 119, 6, 0.3); }

/* Grid Zawartości */
.rk-cs-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 30px;
}

/* Panele Danych */
.rk-cs-panel {
    display: none;
    animation: fadeIn 0.5s ease;
}

.rk-cs-panel.active { display: block; }

@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

.rk-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-cs-border);
    padding: 18px;
    border-radius: 16px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    transition: transform 0.3s, border-color 0.3s;
}

.rk-data-card:hover { transform: translateY(-2px); border-color: var(--rk-cs-brand); }

.rk-data-card.full-width { grid-column: 1 / -1; }

.rk-data-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-cs-muted);
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

.rk-data-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-cs-dark);
}

.rk-data-val span { font-size: 14px; font-weight: 700; color: var(--rk-cs-muted); }
.val-highlight { color: var(--rk-cs-brand); font-size: 24px; }
.val-success { color: var(--rk-cs-green); font-size: 24px; }

/* SVG Box */
.rk-cs-svg-box {
    background: #0f172a;
    border-radius: 20px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-shadow: inset 0 0 25px rgba(0,0,0,0.5);
    border: 1px solid #334155;
    position: relative;
    overflow: hidden;
}

.rk-svg-layer {
    width: 100%;
    height: auto;
    max-width: 300px;
    display: none;
    animation: scaleIn 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.rk-svg-layer.active { display: block; }

@keyframes scaleIn { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } }

/* Animacje SVG wewnątrz warstw */
.anim-heat-wave { stroke-dasharray: 5 10; animation: flowUp 2s linear infinite; stroke: #fcd34d; }
.anim-pellet-drop { animation: dropPellet 1.5s infinite linear; fill: #d97706; }
.anim-coin-spin { transform-origin: center; animation: spinY 3s infinite linear; }
.anim-chart-bar { transform-origin: bottom; animation: growBar 1s ease-out forwards; }

@keyframes flowUp { to { stroke-dashoffset: -30; } }
@keyframes dropPellet { 0% { opacity: 0; transform: translateY(-10px); } 20% { opacity: 1; } 100% { transform: translateY(40px); opacity: 0; } }
@keyframes spinY { 0% { transform: rotateY(0deg); } 100% { transform: rotateY(360deg); } }
@keyframes growBar { from { transform: scaleY(0); } to { transform: scaleY(1); } }

.rk-link {
    color: var(--rk-cs-brand);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 2px dashed rgba(217, 119, 6, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #b45309; }

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-interactive { padding: 30px 20px; }
    .rk-cs-grid { grid-template-columns: 1fr; }
    .rk-cs-h2 { font-size: 26px; }
    .rk-cs-tabs { flex-direction: column; border-radius: 16px; padding: 10px; }
    .rk-cs-tab-btn { border-radius: 8px; padding: 15px; }
    .rk-data-grid { grid-template-columns: 1fr; }
    .rk-cs-svg-box { min-height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Case Study: Analiza techniczna rzeczywistej inwestycji z kotłem na pellet",
    "description": "Realne wyniki zużycia pelletu i kosztów ogrzewania dla domu 164 m2. Analiza zrównoważenia hydraulicznego, pracy bufora 600L i systemu podłogowego w sezonie 2025/2026.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-casestudy",
    "name": "Bilans energetyczny domu 164 m2 z kotłem na pellet (Sezon 2025/2026)",
    "description": "Zestawienie wskaźników operacyjnych maszynowni pelletowej: zużycie biomasy, czas cyklu palnika, koszty ogrzewania PLN oraz obciążenie OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zużycie pelletu dom 160m2",
      "koszt ogrzewania pelletem 2026",
      "kocioł na pellet z buforem opinie",
      "sprawność kotła kondensacyjnego na pellet",
      "temperatura zasilania podłogówki przy mrozach"
    ],
    "measurementTechnique": "Odczyty z ciepłomierza oraz weryfikacja bilansu zakupowego paliwa (faktury) po pełnym sezonie grzewczym w III strefie klimatycznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC budynku: 7,8 kW (164,2 m², EPS 20cm lambda 0.031).",
        "Maszynownia: Kocioł kondensacyjny 10 kW, Bufor 600L.",
        "Zużycie roczne: 3840 kg pelletu ENplus A1.",
        "Koszt roczny (CO + CWU): 4416 PLN (1150 PLN/t).",
        "Cykl palnika: średnio 5,2 godziny (brak taktowania)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-casestudy",
    "name": "Interaktywny Audyt Inwestycji",
    "description": "Eksplorator danych technicznych prezentujący za pomocą grafiki SVG parametry budynku, konfigurację maszynowni oraz realne koszty eksploatacyjne ogrzewania pelletem.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG animation support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-container" id="rk-cs-app">
    <div class="rk-cs-header">
        <div class="rk-cs-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Case Study (Sezon 2025/2026)
        </div>
        <h2 class="rk-cs-h2">Analiza techniczna <span>rzeczywistej inwestycji</span></h2>
        
        <div class="rk-cs-quote">
            <strong>Realny przypadek inżynierski z mojej praktyki projektowej:</strong> W październiku 2025 roku sfinalizowałem nadzór nad realizacją systemu grzewczego u inwestora pana Janusza w miejscowości Skała koło Krakowa. Przedmiotem opracowania był wolnostojący, piętrowy dom jednorodzinny o powierzchni użytkowej 164,2 m², wybudowany w technologii tradycyjnej (pustak ceramiczny + 20 cm grafitowego <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" style="color:#fcd34d;">styropianu o współczynniku 0,031 W/(m·K)</a>), bez podpiwniczenia.
        </div>
        
        <p class="rk-cs-paragraph">
            W obiekcie zaprojektowano 100% ogrzewania podłogowego w systemie mokrym (<a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" style="color:#93c5fd;">jastrych cementowy</a> z plastyfikatorem, grubość 6,5 cm). <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" style="color:#93c5fd;">Obliczeniowe zapotrzebowanie na moc cieplną (OZC)</a> wg PN-EN 12831 wyniosło dokładnie <strong>Q = 7,8 kW</strong> przy temperaturze projektowej -20°C.
        </p>
    </div>

    <div class="rk-cs-interactive">
        <h3 class="rk-cs-h3">Podsumowanie pełnego sezonu grzewczego</h3>
        
        <div class="rk-cs-tabs">
            <button class="rk-cs-tab-btn active" data-target="panel-bldg">1. Maszynownia</button>
            <button class="rk-cs-tab-btn" data-target="panel-ctrl">2. Zrównoważenie</button>
            <button class="rk-cs-tab-btn" data-target="panel-cost">3. Wyniki i Koszty</button>
        </div>

        <div class="rk-cs-grid">
            
            <div class="rk-cs-data-wrapper">
                
                <div class="rk-cs-panel active" id="panel-bldg">
                    <div class="rk-data-grid">
                        <div class="rk-data-card full-width">
                            <div class="rk-data-label">Źródło ciepła</div>
                            <div class="rk-data-val">Kocioł na pellet 10 kW</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Kompaktowy, kondensacyjny ze sprawnością 103,4% (w odniesieniu do wartości opałowej).</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Bufor ciepła</div>
                            <div class="rk-data-val"><a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link" style="color:inherit;">600 Litrów</a></div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Z wbudowaną wężownicą INOX do CWU.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Cykl palnika</div>
                            <div class="rk-data-val">5,2 godziny</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Brak śladów niszczącego taktowania.</p>
                        </div>
                    </div>
                </div>

                <div class="rk-cs-panel" id="panel-ctrl">
                    <div class="rk-data-grid">
                        <div class="rk-data-card full-width">
                            <div class="rk-data-label">Rozdzielacz i Regulacja</div>
                            <div class="rk-data-val">12-sekcyjny (Algorytm TPI)</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Wyposażony w <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-link">rotametry</a> (0,5-5,0 l/min) i siłowniki termoelektryczne. System w 100% zrównoważony hydraulicznie.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Temp. zasilania max</div>
                            <div class="rk-data-val">36,5 °C</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Zanotowana przy mrozach dochodzących do -12°C.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Akumulacja wylewki</div>
                            <div class="rk-data-val">Wysoka</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Brak odczuwalnych wahań temperatury w pokojach.</p>
                        </div>
                    </div>
                </div>

                <div class="rk-cs-panel" id="panel-cost">
                    <div class="rk-data-grid">
                        <div class="rk-data-card full-width">
                            <div class="rk-data-label">Roczny koszt (CO + CWU)</div>
                            <div class="rk-data-val val-success">4 416 PLN</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Potwierdzone odczytami z ciepłomierza i fakturami na koniec kwietnia 2026 r.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Zużycie Paliwa</div>
                            <div class="rk-data-val val-highlight">3 840 kg</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Pellet drzewny certyfikowany w klasie ENplus A1.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Cena zakupu</div>
                            <div class="rk-data-val">1 150 <span>PLN/t</span></div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Średnia cena zakupu w sezonie 2025/2026.</p>
                        </div>
                    </div>
                </div>

            </div>

            <div class="rk-cs-svg-box">
                
                <svg class="rk-svg-layer active" id="svg-bldg" viewBox="0 0 200 200">
                    <rect x="20" y="80" width="50" height="90" fill="#334155" rx="4"/>
                    <circle class="anim-pellet-drop" cx="40" cy="50" r="4"/>
                    <circle class="anim-pellet-drop" cx="50" cy="40" r="4" style="animation-delay:0.5s;"/>
                    <circle class="anim-pellet-drop" cx="45" cy="60" r="4" style="animation-delay:1s;"/>
                    <path d="M45 150 C30 150, 25 120, 45 100 C65 120, 60 150, 45 150 Z" fill="#ea580c"/>
                    <rect x="110" y="40" width="60" height="130" fill="#1e293b" stroke="#3b82f6" stroke-width="3" rx="12"/>
                    <path d="M70 120 L110 120 M70 140 L110 140" fill="none" stroke="#ef4444" stroke-width="4"/>
                    <text x="140" y="110" fill="#60a5fa" font-size="20" font-weight="bold" text-anchor="middle">600 L</text>
                </svg>

                <svg class="rk-svg-layer" id="svg-ctrl" viewBox="0 0 200 200">
                    <path d="M20 100 L100 30 L180 100 L180 180 L20 180 Z" fill="none" stroke="#64748b" stroke-width="4" stroke-linejoin="round"/>
                    <path class="anim-heat-wave" d="M40 160 L160 160 M40 140 L160 140 M40 120 L160 120" fill="none" stroke-width="6" stroke-linecap="round"/>
                    <rect x="80" y="60" width="40" height="30" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="4"/>
                    <text x="100" y="80" fill="#0ea5e9" font-size="14" font-weight="bold" text-anchor="middle">36.5°</text>
                </svg>

                <svg class="rk-svg-layer" id="svg-cost" viewBox="0 0 200 200">
                    <rect x="30" y="160" width="140" height="4" fill="#64748b"/>
                    <rect class="anim-chart-bar" x="50" y="100" width="30" height="60" fill="#3b82f6"/>
                    <rect class="anim-chart-bar" x="120" y="60" width="30" height="100" fill="#10b981" style="animation-delay:0.3s;"/>
                    <g class="anim-coin-spin" style="transform-origin: 135px 35px;">
                        <circle cx="135" cy="35" r="20" fill="#fcd34d" stroke="#d97706" stroke-width="3"/>
                        <text x="135" y="41" fill="#d97706" font-size="16" font-weight="bold" text-anchor="middle">PLN</text>
                    </g>
                    <text x="65" y="90" fill="#94a3b8" font-size="14" font-weight="bold" text-anchor="middle">3.8t</text>
                </svg>

            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-cs-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano Kod Audytowy</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Case Study inwestycji i dedykowana struktura JSON-LD podlegają ochronie prawnej Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Zakładek (Tabs) i SVG
    const tabBtns = document.querySelectorAll('.rk-cs-tab-btn');
    const panels = document.querySelectorAll('.rk-cs-panel');
    const svgs = document.querySelectorAll('.rk-svg-layer');

    tabBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            // Reset active states
            tabBtns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            svgs.forEach(s => s.classList.remove('active'));
            
            // Set new active
            btn.classList.add('active');
            const targetId = btn.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
            
            // Map panel to SVG
            if(targetId === 'panel-bldg') document.getElementById('svg-bldg').classList.add('active');
            if(targetId === 'panel-ctrl') document.getElementById('svg-ctrl').classList.add('active');
            if(targetId === 'panel-cost') document.getElementById('svg-cost').classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-card: #ffffff;
    --rk-err-danger: #ef4444; /* Błąd / Amator */
    --rk-err-danger-bg: #fef2f2;
    --rk-err-success: #10b981; /* Norma / Ekspert */
    --rk-err-success-bg: #ecfdf5;
    --rk-err-bg: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

.rk-err-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-err-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-err-header {
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #334155 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-err-danger);
    transition: border-color 0.4s ease;
}

.state-pro .rk-err-header { border-bottom-color: var(--rk-err-success); }

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #cbd5e1;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.rk-err-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-err-h2 span { color: var(--rk-err-danger); transition: color 0.4s ease; }
.state-pro .rk-err-h2 span { color: var(--rk-err-success); }

.rk-err-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Symulator */
.rk-err-interactive {
    padding: 40px 50px;
    background: var(--rk-err-bg);
}

.rk-err-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-err-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Switcher / Toggle */
.rk-err-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 15px 30px;
    border-radius: 100px;
    border: 1px solid var(--rk-err-border);
    max-width: 650px;
    margin-left: auto;
    margin-right: auto;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

.rk-err-label {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-muted);
    cursor: pointer;
    transition: color 0.3s;
    user-select: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-err-label.active-warn { color: var(--rk-err-danger); }
.rk-err-label.active-pro { color: var(--rk-err-success); }

.rk-err-switch {
    position: relative;
    display: inline-block;
    width: 70px;
    height: 36px;
    flex-shrink: 0;
}

.rk-err-switch input { opacity: 0; width: 0; height: 0; }

.rk-err-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-err-danger);
    transition: .4s;
    border-radius: 36px;
}

.rk-err-slider:before {
    position: absolute;
    content: "";
    height: 28px;
    width: 28px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s cubic-bezier(0.34, 1.56, 0.64, 1);
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-err-slider { background-color: var(--rk-err-success); }
input:checked + .rk-err-slider:before { transform: translateX(34px); }

/* Karty Błędów (Grid) */
.rk-err-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
}

.rk-err-card {
    background: #ffffff;
    border: 2px solid var(--rk-err-border);
    border-radius: 16px;
    padding: 25px 20px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.state-warn .rk-err-card { border-color: #fca5a5; box-shadow: 0 10px 25px -5px rgba(239, 68, 68, 0.15); }
.state-pro .rk-err-card { border-color: #6ee7b7; box-shadow: 0 10px 25px -5px rgba(16, 185, 129, 0.15); }

/* SVG Canvas w Kartach */
.rk-err-svg-box {
    background: #0f172a;
    border-radius: 12px;
    height: 140px;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    border: 1px solid #334155;
    overflow: hidden;
}

.rk-svg-item { width: 100%; height: 100%; }

/* Treść Karty */
.rk-err-card-title {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0;
    line-height: 1.4;
    text-align: center;
}

.rk-err-card-text {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-err-text);
    margin: 0;
    text-align: center;
}

.rk-link {
    color: var(--rk-err-dark);
    text-decoration: none;
    font-weight: 800;
    border-bottom: 2px dashed var(--rk-err-muted);
    transition: all 0.3s;
}

.state-warn .rk-link { color: var(--rk-err-danger); border-bottom-color: rgba(239, 68, 68, 0.4); }
.state-pro .rk-link { color: var(--rk-err-success); border-bottom-color: rgba(16, 185, 129, 0.4); }
.rk-link:hover { border-bottom-style: solid; }

/* ================= ANIMACJE SVG ================= */

/* Karta 1: Próba szczelności */
.anim-gauge-needle { transform-origin: 50px 80px; transition: transform 1s cubic-bezier(0.34, 1.56, 0.64, 1); }
.state-warn .anim-gauge-needle { transform: rotate(-45deg); fill: #ef4444; }
.state-pro .anim-gauge-needle { transform: rotate(45deg); fill: #10b981; }

.anim-drop { opacity: 0; }
.state-warn .anim-drop { animation: dropFall 1.5s infinite; fill: #3b82f6; }
.state-pro .anim-drop { display: none; }

@keyframes dropFall { 0% { transform: translateY(0); opacity: 1; } 100% { transform: translateY(30px); opacity: 0; } }

/* Karta 2: Dylatacje */
.anim-crack { stroke-dasharray: 40; stroke-dashoffset: 40; transition: stroke-dashoffset 0.1s; }
.state-warn .anim-crack { stroke-dashoffset: 0; transition: stroke-dashoffset 0.8s 0.2s ease-out; stroke: #ef4444; }

.anim-foam { transform-origin: left; transition: transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1); }
.state-warn .anim-foam { transform: scaleX(0.2); fill: #ef4444; }
.state-pro .anim-foam { transform: scaleX(1); fill: #3b82f6; } /* Pianka brzegowa */

/* Karta 3: Woda (Kamień vs Demineralizowana) */
.anim-scale { transform-origin: center; transition: transform 0.5s; }
.state-warn .anim-scale { transform: scale(1); fill: #d97706; } /* Kamień kotłowy */
.state-pro .anim-scale { transform: scale(0); }

.anim-water-flow { stroke-dasharray: 10 15; stroke-dashoffset: 0; transition: stroke 0.5s; }
.state-warn .anim-water-flow { stroke: #fbbf24; animation: flowSlow 3s linear infinite; }
.state-pro .anim-water-flow { stroke: #3b82f6; animation: flowFast 1s linear infinite; }

@keyframes flowSlow { to { stroke-dashoffset: -25; } }
@keyframes flowFast { to { stroke-dashoffset: -25; } }

/* Responsywność */
@media (max-width: 850px) {
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-header, .rk-err-interactive { padding: 30px 20px; }
    .rk-err-h2 { font-size: 26px; }
    .rk-err-toggle-box { flex-direction: column; gap: 15px; border-radius: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/"
    },
    "headline": "Katalog Krytycznych Błędów Instalacyjnych Ogrzewania Podłogowego",
    "description": "Analiza ekspercka najczęstszych błędów: brak próby ciśnieniowej 6 bar, pominięcie taśm dylatacyjnych oraz użycie twardej wody kranowej zamiast demineralizowanej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/#dataset",
    "name": "Klasyfikacja błędów wykonawczych i parametrów krytycznych podłogówki (2026)",
    "description": "Zbiór danych weryfikacyjnych i tolerancji materiałowych dla systemów płaszczyznowych w odniesieniu do normy PN-EN 1264-4.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "próba szczelności podłogówki 6 bar",
      "dylatacja brzegowa ogrzewania",
      "woda demineralizowana w instalacji",
      "pękanie wylewki betonowej",
      "zarastanie rotametrów kamieniem"
    ],
    "measurementTechnique": "Badania organoleptyczne i manometryczne wg norm technicznych, weryfikacja konduktometrem (przewodność <10 µS/cm).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Zalanie na sucho. Wymóg: Ciśnienie 0.6 MPa przez 24h (PN-EN 1264-4).",
        "Błąd 2: Brak izolacji. Wymóg: Taśma polietylenowa 8 mm, współczynnik rozszerzalności betonu ~0.012 mm/(m*K).",
        "Błąd 3: Woda kranowa. Wymóg: Woda demineralizowana z inhibitorem korozji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/#webapp",
    "name": "Symulator Skutków Błędów Instalacyjnych",
    "description": "Interaktywny audytor instalacji prezentujący za pomocą grafiki wektorowej skutki fizykochemiczne nieprawidłowego montażu (pęknięcia betonu, osadzanie kamienia, wycieki).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and inline SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg>
            Audyt Wykonawczy
        </div>
        <h2 class="rk-err-h2">Najczęstsze błędy instalatorów przy <span>montażu tego układu</span></h2>
        <p class="rk-err-paragraph">
            Oto katalog krytycznych błędów wykonawczych, które najczęściej eliminuję podczas ekspertyz technicznych na inwestycjach w całej Polsce. Te zaniedbania potrafią zniszczyć nawet najlepszy projekt maszynowni.
        </p>
    </div>

    <div class="rk-err-interactive">
        <h3 class="rk-err-h3">Symulacja Odbioru: Jak wykonano instalację?</h3>
        
        <div class="rk-err-toggle-box">
            <span class="rk-err-label active-warn" id="rk-lbl-warn" onclick="document.getElementById('rk-err-toggle').click()">Praktyka "Na Oko" (Amator)</span>
            <label class="rk-err-switch">
                <input type="checkbox" id="rk-err-toggle">
                <span class="rk-err-slider"></span>
            </label>
            <span class="rk-err-label" id="rk-lbl-pro" onclick="document.getElementById('rk-err-toggle').click()">Standard PN-EN (Inżynier)</span>
        </div>

        <div class="rk-err-grid state-warn" id="rk-main-grid">
            
            <div class="rk-err-card">
                <div class="rk-err-svg-box">
                    <svg class="rk-svg-item" viewBox="0 0 100 120">
                        <rect x="30" y="50" width="40" height="20" fill="none" stroke="#475569" stroke-width="4" rx="2"/>
                        <circle cx="50" cy="30" r="18" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
                        <circle cx="50" cy="30" r="2" fill="#fff"/>
                        <path class="anim-gauge-needle" d="M48 30 L50 15 L52 30 Z" fill="#ef4444"/>
                        <path class="anim-drop" d="M45 75 Q50 85 50 85 Q50 85 55 75 Z" fill="#3b82f6"/>
                        <path class="anim-drop" d="M35 70 Q40 80 40 80 Q40 80 45 70 Z" fill="#3b82f6" style="animation-delay:0.5s;"/>
                    </svg>
                </div>
                <h4 class="rk-err-card-title">Zaniechanie próby szczelności</h4>
                <p class="rk-err-card-text" id="rk-txt-1">
                    Zalanie rur "na sucho" grozi ukryciem uszkodzeń mechanicznych. Zgodnie z normą PN-EN 1264-4, <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-link">próbę szczelności</a> wykonuje się pod ciśnieniem 0,6 MPa (6 bar) przez 24h, a betonuje przy minimum 0,3 MPa.
                </p>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-svg-box">
                    <svg class="rk-svg-item" viewBox="0 0 100 120">
                        <rect x="10" y="20" width="15" height="80" fill="#334155"/>
                        <rect class="anim-foam" x="25" y="20" width="10" height="80" fill="#ef4444"/>
                        <rect x="35" y="70" width="60" height="30" fill="#94a3b8" rx="2"/>
                        <path class="anim-crack" d="M45 70 L55 85 L50 100" fill="none" stroke="#ef4444" stroke-width="2"/>
                        <path class="anim-crack" d="M75 70 L70 80 L80 100" fill="none" stroke="#ef4444" stroke-width="2"/>
                    </svg>
                </div>
                <h4 class="rk-err-card-title">Brak izolacji brzegowej</h4>
                <p class="rk-err-card-text" id="rk-txt-2">
                    Brak <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link">taśmy dylatacyjnej</a> (min. 8 mm) lub dylatacji pośrednich (>40 m²) powoduje niekontrolowane pęknięcia. Beton rozszerza się liniowo (współczynnik około 0,012 mm/(m·K)), niszcząc posadzki.
                </p>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-svg-box">
                    <svg class="rk-svg-item" viewBox="0 0 100 120">
                        <rect x="10" y="40" width="80" height="40" fill="none" stroke="#64748b" stroke-width="4"/>
                        <path class="anim-water-flow" d="M10 50 L90 50 M10 60 L90 60 M10 70 L90 70" fill="none" stroke-width="4"/>
                        <circle class="anim-scale" cx="30" cy="45" r="4"/>
                        <circle class="anim-scale" cx="50" cy="75" r="5"/>
                        <circle class="anim-scale" cx="70" cy="45" r="3"/>
                        <circle class="anim-scale" cx="80" cy="75" r="4"/>
                    </svg>
                </div>
                <h4 class="rk-err-card-title">Zwykła woda wodociągowa</h4>
                <p class="rk-err-card-text" id="rk-txt-3">
                    Twarda woda kranowa zrzuca węglan wapnia (kamień kotłowy). Przy zładzie 710 litrów osad trwale blokuje rotametry i odcina wymienniki. Wymagana jest <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-link">woda demineralizowana z inhibitorem</a> (przewodność <10 µS/cm).
                </p>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-err-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowany Skrypt Audytowy</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny symulator błędów instalacyjnych i baza wiedzy JSON-LD chronione są prawami Projekt-Ogrzewania.pl. Uruchomienie zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle Switch
    const toggle = document.getElementById('rk-err-toggle');
    const grid = document.getElementById('rk-main-grid');
    const hdr = document.querySelector('.rk-err-container');
    const lblWarn = document.getElementById('rk-lbl-warn');
    const lblPro = document.getElementById('rk-lbl-pro');

    const t1 = document.getElementById('rk-txt-1');
    const t2 = document.getElementById('rk-txt-2');
    const t3 = document.getElementById('rk-txt-3');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // STAN: PRO (Zgodne z normą)
            grid.className = 'rk-err-grid state-pro';
            hdr.classList.add('state-pro');
            lblWarn.classList.remove('active-warn');
            lblPro.classList.add('active-pro');
            
            t1.innerHTML = '<strong>Standard:</strong> <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-link">Próba szczelności</a> wykonana manometrem kalibrowanym (6 bar przez 24h). Jastrych zalewany na rurach usztywnionych ciśnieniem min. 3 bary. Pełne bezpieczeństwo.';
            t2.innerHTML = '<strong>Standard:</strong> Gruba na 8 mm pianka polietylenowa oraz poprawne <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link">podziały dylatacyjne</a> (<40 m²) płynnie absorbują naprężenia termiczne pracującej płyty betonu.';
            t3.innerHTML = '<strong>Standard:</strong> Zład napełniony czystą <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-link">wodą demineralizowaną z inhibitorem korozji</a>. Przewodność poniżej 10 µS/cm gwarantuje krystalicznie czyste rotametry i brak osadów.';
            
        } else {
            // STAN: WARN (Błędy)
            grid.className = 'rk-err-grid state-warn';
            hdr.classList.remove('state-pro');
            lblPro.classList.remove('active-pro');
            lblWarn.classList.add('active-warn');
            
            t1.innerHTML = 'Zalanie rur "na sucho" grozi ukryciem uszkodzeń mechanicznych. Zgodnie z normą PN-EN 1264-4, <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-link">próbę szczelności</a> wykonuje się pod ciśnieniem 0,6 MPa (6 bar) przez 24h, a betonuje przy minimum 0,3 MPa.';
            t2.innerHTML = 'Brak <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link">taśmy dylatacyjnej</a> (min. 8 mm) lub dylatacji pośrednich (>40 m²) powoduje niekontrolowane pęknięcia. Beton rozszerza się liniowo (współczynnik około 0,012 mm/(m·K)), niszcząc posadzki.';
            t3.innerHTML = 'Twarda woda kranowa zrzuca węglan wapnia (kamień kotłowy). Przy zładzie 710 litrów osad trwale blokuje rotametry i odcina wymienniki. Wymagana jest <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-link">woda demineralizowana z inhibitorem</a> (przewodność <10 µS/cm).';
        }
    });
});
</script>



<style>
:root {
    --rk-fin-dark: #0f172a;
    --rk-fin-panel: #1e293b;
    --rk-fin-primary: #d97706; /* Bursztyn/Pellet */
    --rk-fin-primary-light: #fef3c7;
    --rk-fin-accent: #0ea5e9; /* Woda/Podłogówka */
    --rk-fin-bg: #f8fafc;
    --rk-fin-border: #e2e8f0;
    --rk-fin-text: #334155;
    --rk-fin-text-dim: #64748b;
}

.rk-fin-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(217, 119, 6, 0.15);
    border: 1px solid rgba(217, 119, 6, 0.3);
    overflow: hidden;
}

/* Header z ekspertem */
.rk-fin-header {
    background: linear-gradient(135deg, var(--rk-fin-dark) 0%, #291502 100%);
    padding: 40px 50px;
    display: flex;
    align-items: center;
    gap: 30px;
    border-bottom: 4px solid var(--rk-fin-primary);
    position: relative;
    overflow: hidden;
}

.rk-fin-header::after {
    content: ''; position: absolute; right: 0; top: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, rgba(217, 119, 6, 0.15) 0%, transparent 70%);
}

.rk-expert-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 3px solid var(--rk-fin-primary);
    box-shadow: 0 0 20px rgba(217, 119, 6, 0.4);
    object-fit: cover;
    position: relative;
    z-index: 2;
}

.rk-header-content { position: relative; z-index: 2; }

.rk-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(217, 119, 6, 0.2);
    color: #fcd34d;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border: 1px solid rgba(252, 211, 77, 0.3);
}

.rk-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 8px 0;
    line-height: 1.2;
}

.rk-header-content p {
    color: #cbd5e1;
    font-size: 14px;
    margin: 0;
    font-weight: 500;
}

/* Sekcja z zakładkami i wiedzą */
.rk-fin-body {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-fin-border);
    display: flex;
    flex-direction: column;
    gap: 12px;
    background: #f8fafc;
}

.rk-rule-btn {
    background: #ffffff;
    border: 1px solid var(--rk-fin-border);
    padding: 16px 20px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-rule-btn:hover {
    border-color: var(--rk-fin-primary);
    transform: translateX(4px);
}

.rk-rule-btn.active {
    background: var(--rk-fin-primary-light);
    border-color: var(--rk-fin-primary);
    box-shadow: inset 4px 0 0 var(--rk-fin-primary);
}

.rk-rule-icon {
    width: 36px; height: 36px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-fin-text-dim);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-fin-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-fin-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-fin-text-dim);
    line-height: 1.5;
}

/* Panel Detali (Prawy) */
.rk-rule-details {
    padding: 40px 35px;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-detail-panel {
    display: none;
    animation: fadeScale 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-detail-panel h4 {
    margin: 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-fin-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-fin-text);
}

.rk-fin-link {
    color: var(--rk-fin-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(14, 165, 233, 0.4);
    transition: 0.3s;
}
.rk-fin-link:hover { border-bottom-style: solid; color: #0284c7; }

/* SVG Canvas */
.rk-detail-svg {
    width: 100%;
    height: 180px;
    background: var(--rk-fin-dark);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
    border: 1px solid #334155;
}

/* Animacje SVG zależne od zakładki */
.anim-flame-fin { transform-origin: bottom center; animation: burnFin 2s infinite alternate; fill: #f59e0b; }
.anim-flow-hot { stroke-dasharray: 6 12; animation: dashFin 1s linear infinite; stroke: #ef4444; }
.anim-flow-mix { stroke-dasharray: 6 12; animation: dashFin 2s linear infinite; stroke: #0ea5e9; }
.anim-gear-spin { transform-origin: center; animation: spinFin 4s linear infinite; fill: #64748b; }
.anim-pellet-drop { animation: dropPellet 1.5s infinite linear; fill: #fcd34d; }
.anim-heat-wave { stroke-dasharray: 6 12; animation: floatUp 2s linear infinite; stroke: #f59e0b; }

@keyframes burnFin { from { transform: scaleY(0.9); } to { transform: scaleY(1.1); } }
@keyframes dashFin { to { stroke-dashoffset: -18; } }
@keyframes spinFin { to { transform: rotate(360deg); } }
@keyframes dropPellet { 0% { transform: translateY(-20px); opacity: 0; } 50% { opacity: 1; } 100% { transform: translateY(30px); opacity: 0; } }
@keyframes floatUp { to { stroke-dashoffset: -18; transform: translateY(-5px); } }

/* Narzędzie Szybkiego Szacowania (Kalkulator) */
.rk-quick-calc {
    background: var(--rk-fin-panel);
    padding: 40px 50px;
    border-top: 1px solid #0f172a;
    color: #ffffff;
}

.rk-calc-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 25px;
}

.rk-calc-header h4 {
    margin: 0; font-size: 18px; font-weight: 900; color: #ffffff;
    display: flex; align-items: center; gap: 10px;
}

.rk-calc-grid {
    display: grid;
    grid-template-columns: 1fr 2.5fr;
    gap: 40px;
    align-items: center;
}

.rk-calc-input-area {
    display: flex;
    flex-direction: column;
    gap: 15px;
    background: rgba(255,255,255,0.03);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-calc-label { font-size: 13px; font-weight: 700; color: #94a3b8; display: flex; justify-content: space-between; }
.rk-calc-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-fin-range {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-fin-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
    background: var(--rk-fin-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-fin-range::-webkit-slider-thumb:active { transform: scale(1.15); }

.rk-calc-results {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-result-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 18px 15px;
    border-radius: 12px;
    text-align: center;
    transition: all 0.3s;
}

.rk-result-box.highlight { border-color: var(--rk-fin-primary); background: rgba(217, 119, 6, 0.1); }
.rk-result-box.water { border-color: var(--rk-fin-accent); background: rgba(14, 165, 233, 0.1); }

.rk-res-val { display: block; font-size: 22px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-result-box.highlight .rk-res-val { color: var(--rk-fin-primary); }
.rk-result-box.water .rk-res-val { color: var(--rk-fin-accent); }
.rk-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.4; }

/* SEKACJA AUTORSKA - PODPIS EKSPERTA */
.rk-fin-author {
    background: #f1f5f9;
    padding: 35px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-fin-border);
}

.rk-author-photo-small {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-fin-primary);
    box-shadow: 0 4px 15px rgba(217, 119, 6, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-author-info { flex-grow: 1; }

.rk-author-info h4 {
    margin: 0 0 6px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-fin-dark);
}

.rk-author-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-fin-text);
    line-height: 1.6;
}

.rk-author-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-author-links a {
    color: var(--rk-fin-accent);
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-author-links a:hover { color: #0284c7; text-decoration: underline; }

@media (max-width: 768px) {
    .rk-fin-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-expert-avatar { width: 70px; height: 70px; }
    .rk-fin-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-fin-border); padding: 20px; }
    .rk-rule-details { padding: 30px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-quick-calc { padding: 30px 20px; }
    .rk-calc-results { grid-template-columns: 1fr; }
    .rk-fin-author { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-podsumowanie-eksperta",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Inżynierskie podsumowanie: Kocioł na pellet i podłogówka",
    "description": "Synteza wiedzy o połączeniu kotła stałopalnego z ogrzewaniem płaszczyznowym. Zasady stosowania buforów, zaworów mieszających, obliczania zładu wodnego i doboru wylewki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-podsumowanie-eksperta",
    "name": "Wskaźniki doboru i rentowności: Kocioł na pellet z buforem (2026)",
    "description": "Zestawienie relacji pomiędzy powierzchnią budynku a szacunkową mocą kotła, wymaganą objętością zbiornika buforowego, doborem wylewki oraz prognozowanym zużyciem certyfikowanej biomasy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie kotła na pellet",
      "szybki kalkulator maszynowni",
      "zużycie pelletu w 2026",
      "wymagany bufor ciepła",
      "zawór mieszający podłogówka",
      "certyfikowany pellet ENplus A1",
      "wylewka anhydrytowa pod kocioł na pellet"
    ],
    "measurementTechnique": "Szacowanie oparte na współczynniku zapotrzebowania 50 W/m2, przeliczniku bufora 60 l/kW oraz empirycznym zużyciu pelletu na poziomie ok. 26 kg/m2 rocznie z uwzględnieniem przewodnictwa cieplnego posadzek.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szacunkowa moc kotła = (Powierzchnia * 0.05) + 20% zapasu.",
        "Minimalna pojemność bufora = Moc kotła * 60 litrów.",
        "Szacunkowe zużycie roczne (dom dobrze ocieplony) = Powierzchnia * ~26 kg.",
        "Zalecane paliwo = Certyfikowany pellet ENplus A1 (minimalizacja popiołu i szlaki).",
        "Optymalny odbiór ciepła = Wylewka anhydrytowa (wyższy współczynnik przewodzenia)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-podsumowanie-eksperta",
    "name": "Estymator Maszynowni Pelletowej",
    "description": "Interaktywny kalkulator podsumowujący. Przelicza powierzchnię domu na orientacyjną moc kotła, wymagany zład bufora ciepła oraz prognozowane roczne zużycie paliwa stałego.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Range Inputs",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-container" id="rk-fin-app">
    
    <div class="rk-fin-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: Kocioł na pellet i podłogówka</h2>
            <p>Ten system to inwestycja w wygodę, ale nie wybacza amatorskich błędów. Poznaj 5 złotych zasad, które uratują Twoją maszynownię przed przedwczesnym zniszczeniem i przepalaniem budżetu.</p>
        </div>
    </div>

    <div class="rk-fin-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="fin-det-1">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>1. Serce to Bufor</h3>
                    <p>Rozprzężenie hydrauliczne</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="fin-det-2">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>2. Niska Temperatura</h3>
                    <p>Granica wytrzymałości jastrychu</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="fin-det-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>3. Profesjonalny OZC</h3>
                    <p>Klucz do przepływów</p>
                </div>
            </button>
            
            <button class="rk-rule-btn" data-panel="fin-det-4">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2c0 0-5 6-5 11a5 5 0 0 0 10 0c0-5-5-11-5-11Z"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>4. Jakość Paliwa</h3>
                    <p>Certyfikat ENplus A1</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="fin-det-5">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="2" y="14" width="20" height="6" rx="1"></rect><path d="M2 10h20M2 6h20"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>5. Dobór Wylewki</h3>
                    <p>Anhydryt vs beton</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="fin-det-1">
                <h4>Bufor ciepła jest obowiązkowy</h4>
                <p>Bez niego zapalarka w kotle podda się po jednym sezonie. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-fin-link">Zbiornik buforowy</a> (minimum 50 litrów na każdy kW mocy) absorbuje nadmiar energii, pozwala palnikowi pracować na najwyższej sprawności i zapobiega kondensacji smoły w wymienniku.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="20" y="30" width="30" height="50" fill="#334155" rx="4"/>
                        <path class="anim-flame-fin" d="M35 80 C25 80, 20 50, 35 40 C50 50, 45 80, 35 80 Z"/>
                        <path class="anim-flow-hot" d="M50 50 L90 50" fill="none" stroke-width="4"/>
                        <rect x="90" y="20" width="40" height="70" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="6"/>
                        <path class="anim-flow-mix" d="M130 50 L170 50" fill="none" stroke-width="4"/>
                        <rect x="170" y="45" width="20" height="10" fill="#94a3b8" rx="2"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="fin-det-2">
                <h4>Chroń posadzkę mieszaczem</h4>
                <p>Ogień w kotle to 80°C, ale podłogówka potrzebuje tylko 35°C. Przepuszczenie wrzątku bez <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-fin-link">zaworu trójdrogowego</a> to wyrok śmierci dla betonowej wylewki (max. norma to 50°C). Sterowanie pogodowe wymiesza wodę powrotną do idealnego poziomu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <path class="anim-flow-hot" d="M40 50 L90 50" fill="none" stroke-width="6"/>
                        <path class="anim-flow-mix" d="M90 50 L160 50" fill="none" stroke-width="6"/>
                        <polygon points="90,40 90,60 110,50" fill="#cbd5e1"/>
                        <polygon points="110,40 130,30 130,50" fill="#cbd5e1"/>
                        <polygon points="100,70 120,70 110,50" fill="#cbd5e1"/>
                        <circle cx="110" cy="50" r="5" fill="#1e293b"/>
                        <text x="65" y="40" fill="#ef4444" font-size="12" font-weight="bold">80°C</text>
                        <text x="145" y="40" fill="#0ea5e9" font-size="12" font-weight="bold">35°C</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="fin-det-3">
                <h4>OZC to Twój drogowskaz</h4>
                <p>Nigdy nie zgaduj długości pętli ani mocy pompy. <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-fin-link">Projektowe Obciążenie Cieplne (OZC)</a> pozwala wyliczyć masowy przepływ (np. 1,72 m³/h) i precyzyjnie wyregulować rotametry. Pętle powyżej 100 metrów stworzą niepokonywalny opór hydrauliczny.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="60" y="20" width="80" height="60" fill="#1e293b" stroke="#64748b" stroke-width="2" rx="4"/>
                        <path class="anim-flow-mix" d="M40 40 L60 40 M140 40 L160 40" fill="none" stroke-width="4"/>
                        <path class="anim-flow-hot" d="M40 60 L60 60 M140 60 L160 60" fill="none" stroke-width="4"/>
                        <g class="anim-gear-spin" style="transform-origin: 100px 50px;">
                            <circle cx="100" cy="50" r="15" fill="#64748b"/>
                            <circle cx="100" cy="50" r="5" fill="#1e293b"/>
                            <rect x="98" y="30" width="4" height="40" fill="#64748b"/>
                            <rect x="80" y="48" width="40" height="4" fill="#64748b"/>
                        </g>
                    </svg>
                </div>
            </div>
            
            <div class="rk-detail-panel" id="fin-det-4">
                <h4>Jakość paliwa to podstawa</h4>
                <p>Tani materiał opałowy zanieczyszczony piaskiem i korą to najkrótsza droga do awarii. Używaj wyłącznie <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/" class="rk-fin-link">certyfikowanego pelletu ENplus A1</a>. Gwarantuje on wyższą wartość opałową, nie zapycha podajnika i ogranicza uciążliwe czyszczenie wymiennika kotła do minimum.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <polygon points="70,10 130,10 110,60 90,60" fill="#334155"/>
                        <circle class="anim-pellet-drop" cx="95" cy="40" r="4"/>
                        <circle class="anim-pellet-drop" cx="105" cy="30" r="4" style="animation-delay:0.5s;"/>
                        <circle class="anim-pellet-drop" cx="100" cy="50" r="4" style="animation-delay:1s;"/>
                        <rect x="80" y="65" width="40" height="25" fill="#1e293b" rx="2"/>
                        <circle cx="150" cy="40" r="18" fill="none" stroke="#10b981" stroke-width="3"/>
                        <text x="150" y="45" fill="#10b981" font-size="14" font-weight="bold" text-anchor="middle">A1</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="fin-det-5">
                <h4>Anhydryt maksymalizuje wydajność</h4>
                <p>Na optymalną pracę układu wpływa czas oddawania ciepła. <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-fin-link">Wylewka anhydrytowa pod kocioł na pellet</a> sprawdza się idealnie – jej płynna konsystencja pozbywa się pustek powietrznych wokół rur. Zwiększa to przewodność cieplną w stosunku do zwykłego betonu, dając odczuwalne oszczędności.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="40" y="50" width="120" height="30" fill="#fcd34d" rx="4" opacity="0.8"/>
                        <circle cx="60" cy="65" r="8" fill="#ef4444"/>
                        <circle cx="100" cy="65" r="8" fill="#ef4444"/>
                        <circle cx="140" cy="65" r="8" fill="#ef4444"/>
                        <path class="anim-heat-wave" d="M60 40 L60 10 M100 40 L100 10 M140 40 L140 10" fill="none" stroke-width="4" stroke-linecap="round"/>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-primary)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                Estymator Maszynowni Pelletowej
            </h4>
            <span style="font-size:12px; color:#64748b;">(Domy nowo budowane / dobrze izolowane)</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Powierzchnia ogrzewana:
                    <span id="finAreaOut">150 m²</span>
                </div>
                <input type="range" class="rk-fin-range" id="finAreaSlider" min="80" max="300" step="10" value="150">
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resBoiler">9 <span style="font-size:14px;color:var(--rk-fin-primary);">kW</span></span>
                    <span class="rk-res-lab">Szacunkowa Moc Kotła</span>
                </div>
                <div class="rk-result-box water">
                    <span class="rk-res-val" id="resBuffer">540 <span style="font-size:14px;color:var(--rk-fin-accent);">L</span></span>
                    <span class="rk-res-lab">Wymagany Bufor Ciepła</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resPellet">3.9 <span style="font-size:14px;color:#94a3b8;">t</span></span>
                    <span class="rk-res-lab">Roczne zużycie (Prognoza)</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-fin-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-author-photo-small" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Główny projektant i audytor instalacji HVAC. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu zdobytym bezpośrednio na placach budowy. Moją misją jest dostarczanie twardej, inżynierskiej wiedzy, która chroni inwestorów przed "fachowcami".</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 2. Logika Zakładek (Złote Zasady)
    const btns = document.querySelectorAll('.rk-rule-btn');
    const panels = document.querySelectorAll('.rk-detail-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                void target.offsetWidth; // Restart animacji
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Estymatora
    const slider = document.getElementById('finAreaSlider');
    const areaOut = document.getElementById('finAreaOut');
    const resBoiler = document.getElementById('resBoiler');
    const resBuffer = document.getElementById('resBuffer');
    const resPellet = document.getElementById('resPellet');

    function updateEstimator() {
        const area = parseInt(slider.value);
        areaOut.textContent = area + ' m²';

        // Obliczenia:
        // Moc kotła: Zapotrzebowanie ~50W/m2 + zapas ok. 20% -> (Area * 0.05) * 1.2
        let boilerPower = (area * 0.05) * 1.2;
        // Zaokrąglenie do równych kW lub połówek
        boilerPower = Math.ceil(boilerPower);
        
        // Bufor: 60 L / kW
        let bufferVol = boilerPower * 60;

        // Roczne zużycie: około 26 kg na 1 m2 (dla bardzo dobrej izolacji)
        let pelletTons = (area * 26) / 1000;

        resBoiler.innerHTML = boilerPower + ' <span style="font-size:14px;color:var(--rk-fin-primary);">kW</span>';
        resBuffer.innerHTML = bufferVol + ' <span style="font-size:14px;color:var(--rk-fin-accent);">L</span>';
        resPellet.innerHTML = pelletTons.toFixed(1) + ' <span style="font-size:14px;color:#94a3b8;">t</span>';
    }

    if(slider) {
        slider.addEventListener('input', updateEstimator);
        updateEstimator(); // Init
    }
});
</script>



<style>
:root {
    --rk-pellet-faq-dark: #1e1b4b; /* Bardzo ciemny fiolet/granat */
    --rk-pellet-faq-card: #ffffff;
    --rk-pellet-faq-brand: #f59e0b; /* Bursztynowy/Pellet */
    --rk-pellet-faq-brand-light: #fef3c7;
    --rk-pellet-faq-accent: #ef4444; /* Czerwony/Ogień */
    --rk-pellet-faq-success: #10b981; /* Zielony/Eco */
    --rk-pellet-faq-bg: #f8fafc;
    --rk-pellet-faq-border: #e2e8f0;
    --rk-pellet-faq-text: #334155;
    --rk-pellet-faq-muted: #64748b;
}

.rk-pellet-faq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.3);
    overflow: hidden;
}

/* Nagłówek */
.rk-pellet-faq-header {
    background: linear-gradient(135deg, var(--rk-pellet-faq-dark) 0%, #312e81 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-pellet-faq-brand);
}

.rk-pellet-faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    color: #fcd34d;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(245, 158, 11, 0.3);
}

.rk-pellet-faq-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-pellet-faq-title span { color: var(--rk-pellet-faq-brand); }

/* Sekcja Akordeonu */
.rk-pellet-faq-interactive {
    padding: 40px 50px;
    background: var(--rk-pellet-faq-bg);
}

.rk-pellet-faq-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-pellet-faq-item {
    background: var(--rk-pellet-faq-card);
    border: 1px solid var(--rk-pellet-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-pellet-faq-item.active {
    border-color: var(--rk-pellet-faq-brand);
    box-shadow: 0 10px 25px -5px rgba(245, 158, 11, 0.15);
}

/* Przycisk Pytania */
.rk-pellet-faq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-pellet-faq-dark);
    transition: background 0.3s, color 0.3s;
}

.rk-pellet-faq-question:hover {
    background: var(--rk-pellet-faq-brand-light);
}

.rk-pellet-faq-item.active .rk-pellet-faq-question {
    background: var(--rk-pellet-faq-brand);
    color: #ffffff;
}

.rk-pellet-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-pellet-faq-brand-light);
    color: #d97706;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-pellet-faq-item.active .rk-pellet-faq-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Kontener Odpowiedzi */
.rk-pellet-faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-pellet-faq-item.active .rk-pellet-faq-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-pellet-faq-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi (Grid: Tekst + SVG) */
.rk-pellet-faq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-pellet-faq-border);
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 30px;
    align-items: center;
}

.rk-pellet-faq-text {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-pellet-faq-text);
}

.rk-pellet-faq-text strong {
    font-weight: 800;
    color: var(--rk-pellet-faq-dark);
}

.rk-link {
    color: #d97706;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(245, 158, 11, 0.4);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #b45309;
    border-bottom-style: solid;
}

/* Wizualizacje SVG */
.rk-pellet-faq-visual {
    background: #0f172a;
    border-radius: 12px;
    padding: 15px;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
}

.rk-svg-box {
    width: 100%;
    height: 100%;
}

/* Animacje SVG zależne od .active w rodzicu */

/* 1. Bufor / Taktowanie */
.anim-flame-bad { transform-origin: bottom; opacity: 0.2; transition: opacity 0.5s; }
.rk-pellet-faq-item.active .anim-flame-bad { animation: flickerStrobe 0.2s infinite; opacity: 1; }
@keyframes flickerStrobe { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.4); fill: #64748b; } 100% { transform: scaleY(1); } }

/* 2. Czyszczenie */
.anim-ash { transform: translateY(-20px); opacity: 0; }
.rk-pellet-faq-item.active .anim-ash { animation: fallAsh 3s infinite; }
@keyframes fallAsh { 0% { transform: translateY(-20px); opacity: 1; } 80% { transform: translateY(20px); opacity: 1; } 100% { transform: translateY(25px); opacity: 0; } }

/* 3. Rozstaw Rur */
.anim-pipe-heat { stroke-dasharray: 4 8; stroke-dashoffset: 0; }
.rk-pellet-faq-item.active .anim-pipe-heat { animation: flowHeat 1.5s linear infinite; stroke: #ef4444; }
@keyframes flowHeat { to { stroke-dashoffset: -24; } }

/* 4. Anhydryt vs Cement */
.anim-anhydrite { transform: scaleX(0); transform-origin: left; transition: transform 1.2s 0.3s cubic-bezier(0.22, 1, 0.36, 1); }
.rk-pellet-faq-item.active .anim-anhydrite { transform: scaleX(1); }

/* 5. Koszty (Monety) */
.anim-coin { transform: translateY(-30px); opacity: 0; }
.rk-pellet-faq-item.active .anim-coin:nth-child(1) { animation: dropCoin 0.5s 0.3s forwards; }
.rk-pellet-faq-item.active .anim-coin:nth-child(2) { animation: dropCoin 0.5s 0.6s forwards; }
.rk-pellet-faq-item.active .anim-coin:nth-child(3) { animation: dropCoin 0.5s 0.9s forwards; }
@keyframes dropCoin { to { transform: translateY(0); opacity: 1; } }

@media (max-width: 768px) {
    .rk-pellet-faq-header, .rk-pellet-faq-interactive { padding: 30px 20px; }
    .rk-pellet-faq-title { font-size: 24px; }
    .rk-pellet-faq-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-pellet-faq-visual { height: 120px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-pellet-faq-question { font-size: 14px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "FAQ — Najczęściej zadawane pytania: Kocioł na pellet i podłogówka",
    "description": "Baza wiedzy dla inwestorów: czy podłogówka potrzebuje bufora przy pellecie, jak często czyścić piec i ile kosztuje ogrzewanie domu 150m2 w 2026 roku.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy kocioł na pellet może współpracować z podłogówką bez bufora ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "W praktyce jest to rozwiązanie wysoce niezalecane, które prowadzi do permanentnego taktowania palnika i drastycznego spadku jego sprawności o około 15-20%. Bez bufora kocioł nie ma możliwości zmagazynowania nadwyżki energii przy niskim zapotrzebowaniu instalacji płaszczyznowej, co skutkuje przyspieszonym zużyciem podzespołów i zarastaniem wymiennika sadzą."
        }
      },
      {
        "@type": "Question",
        "name": "Jak często trzeba czyścić kocioł pelletowy przy ogrzewaniu płaszczyznowym?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nowoczesne konstrukcje wyposażone w automatyczne systemy czyszczenia palnika i wymiennika wymagają opróżniania popielnika raz na 3-5 tygodni w sezonie grzewczym. Pełne, ręczne czyszczenie komory spalania oraz kontrolę stanu technicznego wymiennika należy przeprowadzać co około 1,5-2 tony spalonego paliwa certyfikowanego klasy ENplus A1."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki rozstaw rur podłogówki zastosować przy kotle na pellet?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Standardowy i najbardziej optymalny projektowo rozstaw rur wynosi 15 cm w strefach stałego przebywania oraz 10 cm w łazienkach oraz strefach brzegowych przy oknach tarasowych. Pozwala to na zasilanie instalacji niskim parametrem termicznym (35-38°C), co przekłada się na dłuższą autonomię zgromadzonego w zbiorniku buforowym ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wylewka anhydrytowa jest lepsza od cementowej pod kocioł na pellet?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, jastrych anhydrytowy wykazuje znacznie wyższy współczynnik przewodzenia ciepła (około 1,6-1,8 W/mK) w porównaniu do jastrychu cementowego (około 1,0-1,2 W/mK). Dzięki mniejszej grubości strukturalnej i płynnej konsystencji idealnie otula rurę grzewczą, co skraca czas reakcji systemu na zmianę temperatury o ponad 50%."
        }
      },
      {
        "@type": "Question",
        "name": "Ile wynosi realny koszt ogrzewania pelletem domu 150 m² z podłogówką?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Roczny koszt eksploatacyjny w realiach cenowych 2026 roku kształtuje się na poziomie około 3900 - 4500 PLN, przy założeniu zużycia około 3,8 - 4,2 tony certyfikowanego pelletu drzewnego. Wartość ta dotyczy budynków nowo wybudowanych, posiadających skuteczną izolację przegród pionowych (styropian minimum 20 cm) oraz system rekuperacji z odzyskiem ciepła."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-faq",
    "name": "Parametry eksploatacyjne układu: Kocioł na pellet + Podłogówka 2026",
    "description": "Zestawienie inżynierskie uwzględniające parametry temperaturowe, koszty paliwa oraz częstotliwość serwisu nowoczesnych systemów na biomasę.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "taktowanie palnika pelletowego",
      "częstotliwość czyszczenia pieca",
      "współczynnik przewodzenia wylewki",
      "koszt ogrzewania domu 150m2",
      "zapotrzebowanie na bufor ciepła"
    ],
    "measurementTechnique": "Analiza termodynamiczna i kosztorysowa oparta na danych operacyjnych dla budynków jednorodzinnych w III strefie klimatycznej Polski (2026).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Koszt roczny: 3900 - 4500 PLN (dom 150m2, dobre ocieplenie).",
        "Czyszczenie palnika: Co 3-5 tygodni (automatyka).",
        "Rozstaw rur: 15 cm w pokojach, 10 cm przy oknach i w łazienkach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-faq",
    "name": "Symulator Procesów Płaszczyznowych i Spalania",
    "description": "Edukacyjna, interaktywna nakładka (Akordeon) wizualizująca za pomocą skryptów SVG zjawiska taktowania, opadania popiołu i dystrybucji ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<div class="rk-pellet-faq-container" id="rk-pellet-faq-app">
    <div class="rk-pellet-faq-header">
        <div class="rk-pellet-faq-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z"></path></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-pellet-faq-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-pellet-faq-interactive">
        <div class="rk-pellet-faq-list">
            
            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>1. Czy kocioł na pellet może współpracować z podłogówką bez bufora ciepła?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                W praktyce jest to rozwiązanie <strong>wysoce niezalecane</strong>, które prowadzi do permanentnego taktowania palnika i drastycznego spadku jego sprawności o około <strong>15-20%</strong>. Bez <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">bufora ciepła</a> kocioł nie ma możliwości zmagazynowania nadwyżki energii przy niskim zapotrzebowaniu instalacji płaszczyznowej. Skutkuje to zjawiskiem ciągłego odpalania, co prowadzi do przyspieszonego zużycia podzespołów (np. zapalarki) i błyskawicznego zarastania wymiennika twardą sadzą.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="20" width="30" height="40" fill="#334155" rx="4"/>
                                    <path class="anim-flame-bad" d="M35 50 C25 50, 20 30, 35 10 C50 30, 45 50, 35 50 Z" fill="#ef4444"/>
                                    <path d="M50 40 L80 40" fill="none" stroke="#ef4444" stroke-width="4" stroke-dasharray="2 4"/>
                                    <circle cx="80" cy="40" r="10" fill="#94a3b8"/>
                                    <path d="M75 35 L85 45 M75 45 L85 35" stroke="#ef4444" stroke-width="3"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>2. Jak często trzeba czyścić kocioł pelletowy przy ogrzewaniu płaszczyznowym?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Nowoczesne konstrukcje wyposażone w automatyczne systemy czyszczenia palnika i wymiennika wymagają opróżniania popielnika <strong>raz na 3-5 tygodni</strong> w sezonie grzewczym. Pełne, ręczne czyszczenie komory spalania oraz kontrolę stanu technicznego wymiennika należy przeprowadzać co około <strong>1,5-2 tony</strong> spalonego paliwa certyfikowanego klasy ENplus A1.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="30" y="20" width="40" height="30" fill="#475569" rx="2"/>
                                    <circle class="anim-ash" cx="40" cy="30" r="3" fill="#cbd5e1"/>
                                    <circle class="anim-ash" cx="50" cy="35" r="2" fill="#cbd5e1" style="animation-delay: 0.5s;"/>
                                    <circle class="anim-ash" cx="60" cy="25" r="4" fill="#cbd5e1" style="animation-delay: 1s;"/>
                                    <rect x="30" y="55" width="40" height="10" fill="#1e293b" rx="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>3. Jaki rozstaw rur podłogówki zastosować przy kotle na pellet?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Standardowy i najbardziej optymalny projektowo <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">rozstaw rur</a> wynosi <strong>15 cm w strefach stałego przebywania</strong> oraz <strong>10 cm</strong> w łazienkach oraz strefach brzegowych przy oknach tarasowych. Pozwala to na zasilanie instalacji niskim parametrem termicznym (35-38°C), co po wymieszaniu na zaworze przekłada się na znacznie dłuższą autonomię zgromadzonego w zbiorniku buforowym ciepła.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path class="anim-pipe-heat" d="M10 20 L90 20" fill="none" stroke="#64748b" stroke-width="6" stroke-linecap="round"/>
                                    <path class="anim-pipe-heat" d="M10 40 L90 40" fill="none" stroke="#64748b" stroke-width="6" stroke-linecap="round"/>
                                    <path class="anim-pipe-heat" d="M10 60 L90 60" fill="none" stroke="#64748b" stroke-width="6" stroke-linecap="round"/>
                                    <line x1="20" y1="20" x2="20" y2="40" stroke="#fcd34d" stroke-width="2" stroke-dasharray="2 2"/>
                                    <text x="25" y="34" fill="#fcd34d" font-size="10" font-family="sans-serif">15 cm</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>4. Czy wylewka anhydrytowa jest lepsza od cementowej pod kocioł na pellet?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Tak, jastrych anhydrytowy wykazuje znacznie wyższy współczynnik przewodzenia ciepła (<strong>około 1,6-1,8 W/(mK)</strong>) w porównaniu do jastrychu cementowego (około 1,0-1,2 W/(mK)). Dzięki mniejszej grubości strukturalnej i płynnej konsystencji idealnie otula rurę grzewczą, nie zostawiając izolujących pęcherzy powietrza. To <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-link">skraca czas reakcji systemu</a> na zmianę temperatury o ponad <strong>50%</strong>.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="10" y="25" width="80" height="30" fill="#334155" rx="4"/>
                                    <circle cx="30" cy="40" r="6" fill="#ef4444"/>
                                    <circle cx="50" cy="40" r="6" fill="#ef4444"/>
                                    <circle cx="70" cy="40" r="6" fill="#ef4444"/>
                                    <rect class="anim-anhydrite" x="10" y="25" width="80" height="30" fill="#f59e0b" opacity="0.8" rx="4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>5. Ile wynosi realny koszt ogrzewania pelletem domu 150 m² z podłogówką?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Roczny <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-link">koszt eksploatacyjny</a> w realiach cenowych <strong>2026 roku</strong> kształtuje się na poziomie około <strong>3900 - 4500 PLN</strong>, przy założeniu zużycia około 3,8 - 4,2 tony certyfikowanego pelletu drzewnego. Wartość ta dotyczy budynków nowo wybudowanych, posiadających skuteczną izolację przegród pionowych (styropian minimum 20 cm) oraz <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link">system rekuperacji z odzyskiem ciepła</a>.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="45" width="60" height="15" fill="#475569" rx="2"/>
                                    <circle class="anim-coin" cx="35" cy="35" r="8" fill="#fcd34d" stroke="#d97706" stroke-width="2"/>
                                    <circle class="anim-coin" cx="50" cy="25" r="8" fill="#fcd34d" stroke="#d97706" stroke-width="2"/>
                                    <circle class="anim-coin" cx="65" cy="35" r="8" fill="#fcd34d" stroke="#d97706" stroke-width="2"/>
                                    <path d="M48 22 L48 28 M52 22 L52 28" stroke="#d97706" stroke-width="1.5"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe - Blokada (Strictly no H2/H3 in block as requested)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-pellet-faq-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano komponent interaktywny</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Kontener techniczny FAQ, animacje SVG oraz struktura algorytmiczna Schema.org stanowią wyłączną własność serwisu Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-pellet-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-pellet-faq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamknij wszystkie
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Otwórz kliknięty jeśli był zamknięty
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwórz pierwszy element na start
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-pellet-dark: #0f172a;
    --rk-pellet-primary: #059669; /* Eco green for pellet */
    --rk-pellet-light: #ecfdf5;
    --rk-pellet-warn: #ea580c; /* Fire/Orange */
    --rk-pellet-warn-light: #fff7ed;
    --rk-pellet-gray: #64748b;
    --rk-pellet-border: #cbd5e1;
    --rk-pellet-bg: #ffffff;
}

.rk-pellet-box {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pellet-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(5, 150, 105, 0.15);
    border: 1px solid var(--rk-pellet-primary);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-pellet-header {
    padding: 40px 50px;
    background: linear-gradient(145deg, var(--rk-pellet-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-pellet-primary);
}

.rk-pellet-h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-pellet-quote {
    font-size: 19px;
    line-height: 1.6;
    color: #cbd5e1;
    font-style: italic;
    max-width: 750px;
    margin: 0 auto 15px auto;
}

.rk-pellet-author {
    font-size: 14px;
    color: var(--rk-pellet-primary);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
}

/* Interaktywny Symulator - Suwak */
.rk-pellet-sim {
    padding: 45px 50px;
    background: #f8fafc;
}

.rk-pellet-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-pellet-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

.rk-toggle-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    margin-bottom: 40px;
}

.rk-toggle-label {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-pellet-gray);
    transition: color 0.3s;
    cursor: pointer;
}

.rk-toggle-label.active-pro { color: var(--rk-pellet-primary); }
.rk-toggle-label.active-amateur { color: var(--rk-pellet-warn); }

/* Switch CSS */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 70px;
    height: 36px;
}

.rk-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-pellet-primary);
    transition: .4s;
    border-radius: 36px;
}

.rk-slider:before {
    position: absolute;
    content: "";
    height: 28px;
    width: 28px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-slider {
    background-color: var(--rk-pellet-warn);
}

input:checked + .rk-slider:before {
    transform: translateX(34px);
}

/* Sekcja Wynikowa */
.rk-sim-data-grid {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 30px;
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-pellet-border);
    transition: all 0.4s ease;
}

.rk-svg-container {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rk-pellet-light);
    border-radius: 12px;
    padding: 20px;
    transition: background 0.4s ease;
}

.anim-flame { transform-origin: bottom center; }
.anim-pipe { transition: stroke 0.4s ease, stroke-dashoffset 1s ease; }

/* Animacje PRO */
.state-pro .rk-sim-data-grid { border-color: var(--rk-pellet-primary); box-shadow: 0 10px 30px -10px rgba(5, 150, 105, 0.2); }
.state-pro .rk-svg-container { background: var(--rk-pellet-light); }
.state-pro .anim-flame { fill: #10b981; animation: steadyBurn 3s infinite alternate; }
.state-pro .anim-pipe { stroke: #10b981; stroke-dasharray: 100; stroke-dashoffset: 0; animation: flowSmooth 2s linear infinite; }

/* Animacje AMATEUR */
.state-amateur .rk-sim-data-grid { border-color: var(--rk-pellet-warn); box-shadow: 0 10px 30px -10px rgba(234, 88, 12, 0.2); }
.state-amateur .rk-svg-container { background: var(--rk-pellet-warn-light); }
.state-amateur .anim-flame { fill: #ea580c; animation: flickerStutter 0.5s infinite; }
.state-amateur .anim-pipe { stroke: #ea580c; stroke-dasharray: 10 10; animation: pulseError 1s infinite; }

@keyframes steadyBurn { 0% { transform: scaleY(0.95); } 100% { transform: scaleY(1.05); } }
@keyframes flowSmooth { to { stroke-dashoffset: -200; } }
@keyframes flickerStutter { 0%, 100% { opacity: 1; transform: scaleY(1); } 50% { opacity: 0.4; transform: scaleY(0.6); } }
@keyframes pulseError { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }

/* Dane tekstowe */
.rk-data-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-data-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 10px;
    border-bottom: 1px dashed var(--rk-pellet-border);
}

.rk-data-item:last-child { border: none; padding-bottom: 0; }

.rk-data-label {
    font-size: 15px;
    color: var(--rk-pellet-gray);
    font-weight: 600;
}

.rk-data-value {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-pellet-dark);
}

.rk-data-highlight {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 14px;
}

.state-pro .rk-data-highlight { background: var(--rk-pellet-primary); color: white; }
.state-amateur .rk-data-highlight { background: var(--rk-pellet-warn); color: white; }

/* Linki w tekście boxa */
.rk-sim-desc {
    margin-top: 20px;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}
.rk-sim-desc a {
    color: var(--rk-pellet-primary);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.state-amateur .rk-sim-desc a { color: var(--rk-pellet-warn); }

/* CTA */
.rk-pellet-cta {
    text-align: center;
    padding: 35px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-pellet-border);
}

.rk-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 16px 32px;
    background: var(--rk-pellet-dark);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    border-radius: 12px;
    text-decoration: none;
    transition: all 0.3s;
}

.rk-cta-btn:hover {
    background: var(--rk-pellet-primary);
    transform: translateY(-3px);
    box-shadow: 0 10px 20px -5px rgba(5, 150, 105, 0.4);
}

@media (max-width: 768px) {
    .rk-pellet-header, .rk-pellet-sim, .rk-pellet-cta { padding: 30px 20px; }
    .rk-sim-data-grid { grid-template-columns: 1fr; }
    .rk-svg-container { padding: 30px; }
    .rk-data-item { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-pellet-h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Podsumowanie – Zyskaj 15 lat spokoju z kotłem na pellet",
    "description": "Porównanie parametrów technicznych i kosztów układu ogrzewania podłogowego z kotłem na pellet. Interaktywna analiza wpływu bufora ciepła na stabilność instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-podsumowanie",
    "name": "Bilans energetyczny i eksploatacyjny: Kocioł na pellet z buforem i bez bufora (2026)",
    "description": "Zestawienie inżynierskie obrazujące różnice w zużyciu paliwa, taktowaniu i żywotności kotła stałopalnego w zależności od zastosowania sprzęgła hydraulicznego o dużej pojemności.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sprawność kotła na pellet",
      "taktowanie kotła stałopalnego",
      "zużycie pelletu dom 150m2",
      "żywotność zapalarki ceramicznej",
      "koszty eksploatacyjne ogrzewania podłogowego"
    ],
    "measurementTechnique": "Kalkulacja termodynamiczna oparta na normie PN-EN 303-5 oraz PN-EN 1264, porównująca pracę ciągłą z pracą przerywaną (taktowaniem).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Układ z buforem: Sprawność 94%, zużycie 3.9 t/rok, żywotność zapalarki >5 lat.",
        "Układ bez bufora: Sprawność 74%, zużycie 4.8 t/rok, uszkodzenia grzałki <2 lata."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-podsumowanie",
    "name": "Symulator Przepływów: Pellet i Podłogówka",
    "description": "Interaktywny interfejs (Toggle Switch) demonstrujący zachowanie płaszczyznowego układu grzewczego zasilanego kotłem na biomasę, wskazujący na konsekwencje braku rozprzężenia hydraulicznego.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5, and inline SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pellet-box" id="rk-pellet-summary">
    <div class="rk-pellet-header">
        <h2 class="rk-pellet-h2">Podsumowanie – Zyskaj 15 lat spokoju z kotłem na pellet</h2>
        <p class="rk-pellet-quote">
            "Połączenie kotła pelletowego z wylewką anhydrytową czy betonową to mariaż dwóch żywiołów. Bez inżynierskiego bufora ciepła tworzysz toksyczny związek. Z buforem – budujesz idealny system, który ogrzeje Twój dom za ułamek ceny prądu."
        </p>
        <div class="rk-pellet-author">Robert Kucharski</div>
    </div>

    <div class="rk-pellet-sim">
        <h3 class="rk-pellet-h3">Symulator Instalacji: Wpływ hydrauliki na koszty</h3>
        
        <div class="rk-toggle-wrapper">
            <span class="rk-toggle-label active-pro" id="rk-lbl-pro" onclick="document.getElementById('rk-sim-toggle').click()">Z buforem (Standard Inż.)</span>
            <label class="rk-switch">
                <input type="checkbox" id="rk-sim-toggle">
                <span class="rk-slider"></span>
            </label>
            <span class="rk-toggle-label" id="rk-lbl-amateur" onclick="document.getElementById('rk-sim-toggle').click()">Bez bufora (Gra w ruletkę)</span>
        </div>

        <div class="rk-sim-data-grid state-pro" id="rk-data-container">
            <div class="rk-svg-container">
                <svg width="100%" height="100%" viewBox="0 0 200 200" style="max-width: 150px;">
                    <rect x="20" y="50" width="70" height="100" rx="8" fill="#334155"></rect>
                    <path class="anim-flame" d="M55 130 C45 130, 40 110, 55 90 C70 110, 65 130, 55 130 Z"></path>
                    <path class="anim-pipe" d="M90 70 L130 70 L130 150 L180 150" fill="none" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"></path>
                    <path class="anim-pipe" d="M180 150 C190 150, 190 130, 180 130 L140 130 C130 130, 130 110, 140 110 L180 110" fill="none" stroke-width="6" stroke-linecap="round"></path>
                </svg>
            </div>
            
            <div>
                <ul class="rk-data-list" id="rk-dynamic-list">
                    <li class="rk-data-item">
                        <span class="rk-data-label">Sprawność roczna systemu</span>
                        <span class="rk-data-value">&gt; 92% <span class="rk-data-highlight">Optymalnie</span></span>
                    </li>
                    <li class="rk-data-item">
                        <span class="rk-data-label">Średnie załączenia palnika</span>
                        <span class="rk-data-value">2 - 4 razy / dobę</span>
                    </li>
                    <li class="rk-data-item">
                        <span class="rk-data-label">Żywotność grzałki ceramicznej</span>
                        <span class="rk-data-value">5 - 7 lat</span>
                    </li>
                    <li class="rk-data-item">
                        <span class="rk-data-label">Prognoza zużycia paliwa (150 m²)</span>
                        <span class="rk-data-value">~ 3.9 tony / sezon</span>
                    </li>
                </ul>
                <div class="rk-sim-desc" id="rk-dynamic-desc">
                    <strong>Werdykt inżynierski:</strong> Zastosowanie minimalnej pojemności 50 l/kW wymuszonej przez <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> rozprzęga obiegi. Palnik pracuje w optymalnej temperaturze, a ciepło jest płynnie dawkowane przez <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> i krzywą grzewczą.
                </div>
            </div>
        </div>
    </div>

    <div class="rk-pellet-cta">
        <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-cta-btn">
            SPRAWDŹ REALNE KOSZTY OGRZEWANIA W 2026 ROKU
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków H w blokadzie)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-pellet-summary');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; box-sizing: border-box;">
                    <div style="font-size: 40px; margin-bottom: 15px;">⚠️</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zablokowano komponent algorytmiczny</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Kontener techniczny i struktura Schema.org stanowią własność intelektualną Projekt-Ogrzewania.pl. Uruchomienie skryptów na tej domenie zostało wstrzymane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle Switch
    const toggle = document.getElementById('rk-sim-toggle');
    const container = document.getElementById('rk-data-container');
    const lblPro = document.getElementById('rk-lbl-pro');
    const lblAmateur = document.getElementById('rk-lbl-amateur');
    const list = document.getElementById('rk-dynamic-list');
    const desc = document.getElementById('rk-dynamic-desc');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // State: Amateur (Bez bufora)
            container.className = 'rk-sim-data-grid state-amateur';
            lblPro.classList.remove('active-pro');
            lblAmateur.classList.add('active-amateur');
            
            list.innerHTML = `
                <li class="rk-data-item">
                    <span class="rk-data-label">Sprawność roczna systemu</span>
                    <span class="rk-data-value">< 75% <span class="rk-data-highlight">Straty</span></span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Średnie załączenia palnika</span>
                    <span class="rk-data-value">Nawet 15-20 razy / dobę</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Żywotność grzałki ceramicznej</span>
                    <span class="rk-data-value">Często < 12 miesięcy</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Prognoza zużycia paliwa (150 m²)</span>
                    <span class="rk-data-value">~ 4.8 tony / sezon</span>
                </li>
            `;
            
            desc.innerHTML = `
                <strong>Skutek awaryjny:</strong> Brak odbioru mocy rzędu 10 kW przez rury zamknięte siłownikami powoduje natychmiastowe przegrzanie i wygaszenie kotła. Kondensacja spalin zasmołuje wymiennik, a instalacja staje się tykającą bombą pochłaniającą paliwo.
            `;
        } else {
            // State: Pro (Z buforem)
            container.className = 'rk-sim-data-grid state-pro';
            lblAmateur.classList.remove('active-amateur');
            lblPro.classList.add('active-pro');
            
            list.innerHTML = `
                <li class="rk-data-item">
                    <span class="rk-data-label">Sprawność roczna systemu</span>
                    <span class="rk-data-value">> 92% <span class="rk-data-highlight">Optymalnie</span></span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Średnie załączenia palnika</span>
                    <span class="rk-data-value">2 - 4 razy / dobę</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Żywotność grzałki ceramicznej</span>
                    <span class="rk-data-value">5 - 7 lat</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Prognoza zużycia paliwa (150 m²)</span>
                    <span class="rk-data-value">~ 3.9 tony / sezon</span>
                </li>
            `;
            
            desc.innerHTML = `
                <strong>Werdykt inżynierski:</strong> Zastosowanie minimalnej pojemności 50 l/kW wymuszonej przez <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> rozprzęga obiegi. Palnik pracuje w optymalnej temperaturze, a ciepło jest płynnie dawkowane przez <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> i krzywą grzewczą.
            `;
        }
    });
});
</script>



<style>
:root {
    --rk-dl-primary: #0f172a;
    --rk-dl-accent: #ea580c; /* Ogień / Pellet */
    --rk-dl-accent-dark: #c2410c;
    --rk-dl-bg: #f8fafc;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #334155;
    --rk-dl-white: #ffffff;
}

.rk-dl-hub-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-white);
    border-radius: 24px;
    border: 1px solid var(--rk-dl-border);
    box-shadow: 0 20px 40px -10px rgba(234, 88, 12, 0.1);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCJI */
.rk-dl-header {
    background: linear-gradient(135deg, var(--rk-dl-primary) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: var(--rk-dl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    border-bottom: 4px solid var(--rk-dl-accent);
}

.rk-dl-header-content { position: relative; z-index: 2; max-width: 65%; }

.rk-dl-badge {
    display: inline-block;
    background: rgba(234, 88, 12, 0.2);
    border: 1px solid rgba(234, 88, 12, 0.3);
    color: #fdba74;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-dl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    letter-spacing: -0.5px;
    line-height: 1.2;
}

.rk-dl-header h2 span { color: var(--rk-dl-accent); }

.rk-dl-header p {
    font-size: 15px;
    color: #94a3b8;
    margin: 0;
    line-height: 1.6;
}

/* WIZUALIZACJA PDF / IKONA */
.rk-dl-visual {
    position: relative;
    z-index: 2;
}

.rk-dl-pdf-svg {
    width: 85px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.4));
    animation: floatPdf 3s infinite ease-in-out alternate;
}

@keyframes floatPdf {
    from { transform: translateY(0) rotate(0deg); }
    to { transform: translateY(-12px) rotate(3deg); }
}

/* GŁÓWNY WORKSPACE */
.rk-dl-workspace {
    display: flex;
    padding: 45px 50px;
    gap: 40px;
    background: var(--rk-dl-white);
}

.rk-dl-preview {
    flex: 1.2;
    background: var(--rk-dl-bg);
    border: 1px solid var(--rk-dl-border);
    border-radius: 16px;
    padding: 12px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.3s, box-shadow 0.3s;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.02);
}

.rk-dl-preview:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(234, 88, 12, 0.2);
    border-color: var(--rk-dl-accent);
}

.rk-dl-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

.rk-dl-zoom-hint {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: rgba(15, 23, 42, 0.85);
    color: white;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    backdrop-filter: blur(4px);
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-dl-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-features {
    list-style: none;
    padding: 0;
    margin: 0 0 35px 0;
}

.rk-dl-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 18px;
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-dl-text);
    line-height: 1.4;
}

.rk-dl-check {
    width: 22px;
    height: 22px;
    color: var(--rk-dl-accent);
    flex-shrink: 0;
    margin-top: -1px;
}

/* PRZYCISK POBIERANIA */
.rk-dl-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dl-accent);
    color: var(--rk-dl-white);
    text-decoration: none !important;
    padding: 20px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.4);
    border: 2px solid transparent;
}

.rk-dl-btn:hover {
    background: var(--rk-dl-accent-dark);
    transform: translateY(-4px);
    box-shadow: 0 15px 35px -5px rgba(234, 88, 12, 0.5);
    border-color: #fdba74;
}

.rk-dl-btn svg { transition: transform 0.3s; }
.rk-dl-btn:hover svg { transform: translateY(3px); }

/* STOPKA MODUŁU */
.rk-dl-footer {
    padding: 25px 50px;
    background: var(--rk-dl-bg);
    border-top: 1px solid var(--rk-dl-border);
    font-size: 14px;
    color: var(--rk-dl-muted);
    text-align: center;
    line-height: 1.6;
}

.rk-dl-footer a {
    color: var(--rk-dl-accent-dark);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-dl-accent-dark);
    transition: 0.3s;
}

.rk-dl-footer a:hover {
    border-bottom-style: solid;
    color: var(--rk-dl-primary);
}

@media (max-width: 800px) {
    .rk-dl-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-dl-header-content { max-width: 100%; margin-bottom: 30px; }
    .rk-dl-workspace { flex-direction: column; padding: 35px 25px; }
    .rk-dl-preview { margin-bottom: 10px; }
    .rk-dl-footer { padding: 25px; }
    .rk-dl-btn { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#infografika-schemat",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Kompletny Schemat Hydrauliczny: Kocioł na Pellet i Podłogówka (PDF)",
    "description": "Pobierz profesjonalny schemat inżynierski podłączenia kotła stałopalnego do instalacji podłogowej z wykorzystaniem bufora ciepła i zaworu mieszającego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-27",
    "dateModified": "2026-05-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-schemat",
    "name": "Schemat hydrauliczny i parametry: Kocioł na pellet z buforem",
    "description": "Zbiór danych wizualnych i normatywnych precyzujący prawidłowe podłączenie hydrauliczne źródła stałopalnego z niskotemperaturowym odbiornikiem płaszczyznowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "schemat instalacji kocioł na pellet z buforem",
      "podłączenie podłogówki do pieca na pellet",
      "optymalizacja pracy kotła stałopalnego",
      "temperatura zasilania ogrzewania podłogowego",
      "zabezpieczenie powrotu kotła na pellet"
    ],
    "measurementTechnique": "Weryfikacja hydrauliczna na zgodność z wymogami PN-EN 303-5 oraz zabezpieczenie jastrychu przed przegrzaniem wg normy PN-EN 1264-4.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Inżynierski schemat hydrauliczny instalacji grzewczej"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#download-hub",
    "name": "Centrum Pobierania Wiedzy: Kocioł na Pellet",
    "description": "Interaktywny moduł umożliwiający wizualizację (zoom) i bezproblemowe pobranie schematów technicznych w formacie PDF/WEBP do użytku na budowie.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="rk-dl-hub-container" id="rk-dl-pellet">
    
    <div class="rk-dl-header">
        <div class="rk-dl-header-content">
            <div class="rk-dl-badge">Darmowe Materiały Projektowe</div>
            <h2>Schemat Hydrauliczny: <span>Pellet i Podłogówka</span></h2>
            <p>Zabierz inżynierską wiedzę bezpośrednio do swojej kotłowni. Kompletny schemat podłączenia bufora, zaworu mieszającego i zabezpieczenia powrotu w jednym pliku PDF.</p>
        </div>
        <div class="rk-dl-visual">
            <svg class="rk-dl-pdf-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ea580c" stroke="#ffffff" stroke-width="1"/>
                <path d="M14 2V8H20" stroke="#ffffff" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
                <path d="M9 13H15M9 17H13" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round"/>
                <text x="7" y="11" fill="white" font-size="4.5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="rk-dl-workspace">
        
        <div class="rk-dl-preview" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.webp" alt="Infografika: Schemat instalacji kocioł na pellet z buforem i ogrzewaniem podłogowym" class="rk-dl-img" loading="lazy">
            <div class="rk-dl-zoom-hint">🔍 Kliknij, aby powiększyć</div>
        </div>

        <div class="rk-dl-info">
            <ul class="rk-dl-features">
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Schemat 1:1 z rozprzężeniem przez bufor ciepła
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Prawidłowe zabezpieczenie powrotu kotła
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Temperatury zasilania wg normy PN-EN 1264
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Wysoka rozdzielczość, gotowe do druku (A4/A3)
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.pdf" class="rk-dl-btn" target="_blank" rel="noopener noreferrer">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                POBIERZ SCHEMAT (PDF)
            </a>
            
        </div>

    </div>

    <div class="rk-dl-footer">
        Masz wątpliwości, czy Twoja maszynownia udźwignie te parametry? <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zleć nam profesjonalny projekt podłogówki i kotłowni</a>, zabezpieczając się przed kosztownymi awariami.
        <br><br>
        © 2026 Projekt-Ogrzewania.pl | Autor: <strong>Robert Kucharski</strong>. Udostępnianie dozwolone z zachowaniem linku do źródła.
    </div>
</div>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/">Kocioł na pellet.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kocioł gazowy.</title>
		<link>https://projekt-ogrzewania.pl/kociol-gazowy/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 04 Jan 2026 14:02:32 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kocioł gazowy]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie budynków]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[kocioł gazowy]]></category>
		<category><![CDATA[kocioł kondensacyjny]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie domu]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[sterowanie pogodowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3048</guid>

					<description><![CDATA[<p>Wybór źródła ciepła do ogrzewania podłogowego to decyzja, która wpływa na komfort, koszty i niezawodność systemu przez długie lata. Kocioł gazowy w ogrzewaniu podłogowym pozostaje jednym z najczęściej wybieranych rozwiązań, ponieważ idealnie wpisuje się w charakterystykę instalacji niskotemperaturowych. W artykule omawiamy zasadę działania kotła kondensacyjnego, proces kondensacji, kluczowe elementy instalacji, dobór mocy, sterowanie oraz praktyczne aspekty projektowania i eksploatacji. To kompleksowy przewodnik zarówno dla inwestorów, jak i osób technicznych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">Kocioł gazowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Wybór efektywnego i komfortowego systemu grzewczego to kluczowa decyzja dla każdego inwestora lub właściciela domu.&nbsp;<strong>Kocioł gazowy w ogrzewaniu podłogowym</strong>&nbsp;stanowi jedno z najpopularniejszych i najbardziej sprawdzonych rozwiązań, łącząc w sobie zalety nowoczesnej techniki grzewczej z niezrównanym komfortem użytkowania. W tym kompleksowym artykule, skierowanym zarówno do profesjonalistów, jak i świadomych inwestorów, przeanalizujemy techniczne aspekty, zasady działania, kryteria doboru oraz praktyczne wskazówki dotyczące budowy tego systemu.</p>



<h2 class="wp-block-heading">Dlaczego to idealne połączenie techniczne? Zgodność parametrów pracy.</h2>



<p class="wp-block-paragraph">Podstawą efektywnego działania każdej instalacji grzewczej jest&nbsp;<strong>zgodność charakterystyk źródła ciepła z systemem dystrybucji</strong>. W tym kontekście połączenie kondensacyjnego kotła gazowego z wodnym ogrzewaniem podłogowym to prawdziwe&nbsp;<em>małżeństwo z rozsądku</em>.</p>



<p class="wp-block-paragraph"><strong><a href="https://projekt-ogrzewania.pl">Wodne ogrzewanie podłogowe</a></strong> jest systemem <strong>niskotemperaturowym</strong>. Jego zadaniem jest dostarczenie łagodnego, równomiernego ciepła o stosunkowo niskiej temperaturze zasilania, zazwyczaj mieszczącej się w przedziale <strong>35-55°C</strong>. Z kolei nowoczesne <strong>kotły gazowe kondensacyjne</strong> osiągają szczyt swojej sprawności (często przekraczającej 100% w odniesieniu do wartości opałowej paliwa) właśnie podczas pracy w niskotemperaturowym zakresie. Dzieje się tak dzięki zjawisku <strong>kondensacji pary wodnej</strong> zawartej w spalinach, które zachodzi intensywniej, gdy temperatura wody powrotnej jest niska.</p>



<ul class="wp-block-list">
<li><strong>Przykład techniczny</strong>: Dla typowego kotła kondensacyjnego, przy temperaturze zasilania 40°C i powrotu 30°C, sprawność może osiągnąć <strong>108%</strong>. Gdyby ten sam kocioł pracował w systemie grzejnikowym starszego typu (temp. zasilania 75°C, powrót 65°C), sprawność spadłaby do poziomu ok. <strong>93-95%</strong>. Różnica w zużyciu gazu może sięgać <strong>10-15%</strong> na korzyść układu z podłogówką.</li>
</ul>



<h3 class="wp-block-heading">Jak działa proces kondensacji w niskiej temperaturze?</h3>



<p class="wp-block-paragraph">Kluczem jest tzw.&nbsp;<strong>punkt rosy</strong>&nbsp;spalin. W spalinach gazowych znajduje się para wodna. Gdy gorące spaliny przechodzą przez wymiennik ciepła, a temperatura ścianki wymiennika spadnie poniżej punktu rosy (ok. 55°C dla gazu ziemnego), para ulega skropleniu. Podczas tego&nbsp;<strong>przemiany fazowej</strong>&nbsp;uwalniana jest dodatkowa energia&nbsp;<em>latentna</em>&nbsp;(ciepło skraplania), która jest odzyskiwana i przekazywana do instalacji. To właśnie ten proces pozwala przekroczyć tradycyjnie pojmowaną sprawność.</p>



<h2 class="wp-block-heading">Architektura systemu: Nie tylko kocioł gazowy – kluczowe komponenty instalacji.</h2>



<p class="wp-block-paragraph">Sam&nbsp;<strong>kocioł gazowy</strong>&nbsp;jest sercem systemu, ale do jego prawidłowego funkcjonowania w układzie z ogrzewaniem podłogowym niezbędne są wyspecjalizowane komponenty. Ich prawidłowy dobór i montaż decyduje o sprawności, komforcie i bezawaryjności.</p>



<h3 class="wp-block-heading">1. <a href="https://projekt-ogrzewania.pl/kategoria-produktu/grupy-pompowo-mieszajace/">Układ mieszający</a> – strażnik temperatury.</h3>



<p class="wp-block-paragraph">To najważniejszy element pośredniczący między kotłem a pętlami podłogowymi. Jego zadaniem jest&nbsp;<strong>obniżenie temperatury wody</strong>&nbsp;pochodzącej z kotła (która może wynosić np. 60-70°C) do bezpiecznej i komfortowej wartości dla pętli podłogowych (np. 35-45°C).</p>



<ul class="wp-block-list">
<li><strong>Zasada działania</strong>: Zawór mieszający (zwykle 3- lub 4-drogowy) do gorącej wody z kotła (zasilanie) dolewa schłodzoną wodę powracającą z podłogówki (powrót), uzyskując wymaganą temperaturę mieszanki.</li>



<li><strong>Dlaczego to konieczne?</strong> Bezpośrednie podanie zbyt gorącej wody do pętli podłogowej spowodowałoby:
<ul class="wp-block-list">
<li>Dyskomfort cieplny (uczucie &#8222;za gorąco&#8221; pod stopami).</li>



<li>Ryzyko uszkodzenia warstw podłogi (np. paczenie paneli, pękanie płytek).</li>



<li>Niepotrzebne przeciążenie kotła i straty energii.</li>
</ul>
</li>
</ul>



<h3 class="wp-block-heading">2. Rozdzielacze z regulacją hydrauliczną.</h3>



<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl/kategoria-produktu/rozdzielacze-do-ogrzewania-podlogowego/">Rozdzielacz</a> to węzeł, od którego zaczynają się wszystkie pętle grzewcze. Składa się z części zasilającej i powrotnej. <strong>Jego prawidłowe wyposażenie jest kluczowe</strong>:</p>



<ul class="wp-block-list">
<li><strong>Przepływomierze (<a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametry</a>)</strong>: Na kolektorze zasilającym, umożliwiają wizualną kontrolę i ustawienie natężenia przepływu w każdej pętli.</li>



<li><strong>Zawory nastawcze (regulacyjne)</strong>: Na kolektorze powrotnym, służą do precyzyjnego <strong>zrównoważenia hydraulicznego</strong> instalacji. Dzięki nim można ustawić odpowiednie opory, tak aby do każdej pętli, niezależnie od jej długości, trafiła właściwa ilość ciepłej wody.</li>



<li><strong>Przykład praktyczny</strong>: W jednym domu mamy pętlę w łazience o długości 60m i pętlę w salonie o długości 120m. Bez regulacji, woda popłynie głównie krótszą, mniej oporową pętlą, pozostawiając salon zimny. Zawory nastawcze zwiększają opór na krótszej pętli, wymuszając odpowiedni przepływ również na dłuższej.</li>
</ul>



<h3 class="wp-block-heading">3. Zaawansowane sterowanie – mózg instalacji.</h3>



<p class="wp-block-paragraph">Inteligentne sterowanie to podstawa efektywności. Wyróżniamy kilka poziomów:</p>



<ul class="wp-block-list">
<li><strong>Sterownik (regulator) pogodowy</strong>: Montowany na zewnątrz budynku. Mierzy temperaturę otoczenia i na tej podstawie automatycznie oblicza oraz ustawia optymalną temperaturę wody zasilającej dla kotła i układu mieszającego (<strong>krzywa grzewcza</strong>). Im zimniej na zewnątrz, tym cieplejsza woda trafia do systemu.</li>



<li><strong><a href="https://projekt-ogrzewania.pl/czy-warto-montowac-sterowniki-do-ogrzewania-podlogowego/">Sterowniki strefowe (termostaty pokojowe)</a></strong>: Pozwalają na indywidualne ustawianie temperatury w różnych częściach domu (strefach). Wysyłają sygnał do siłowników termoelektrycznych zamontowanych na rozdzielaczu, które otwierają lub zamykają przepływ do danej pętli.</li>



<li><strong>Sterownik kotła</strong>: Koordynuje pracę palnika, pompy i współpracuje z pozostałymi elementami automatyki.</li>
</ul>



<h3 class="wp-block-heading">4. Pompy obiegowe.</h3>



<p class="wp-block-paragraph">W typowej instalacji pracują co najmniej&nbsp;<strong>dwie pompy</strong>:</p>



<ul class="wp-block-list">
<li><strong>Pompa kotłowa</strong>: Zintegrowana z kotłem, tłoczy wodę w obiegu kotłowym (kocioł -> zawór mieszający -> powrót do kotła).</li>



<li><strong><a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa podłogówki</a></strong>: Znajduje się w module mieszającym i odpowiada za tłoczenie wody w obiegu podłogowym (zawór mieszający -> rozdzielacz -> pętle -> powrót do zaworu mieszającego). Jej wydajność musi być dobrana do oporów hydraulicznych najdłuższej pętli.</li>
</ul>



<h2 class="wp-block-heading">Szczegółowy schemat przepływu ciepła i wody w systemie.</h2>



<p class="wp-block-paragraph">Aby w pełni zrozumieć synergię działania, prześledźmy krok po kroku drogę, jaką pokonuje ciepło i czynnik grzewczy.</p>



<ol start="1" class="wp-block-list">
<li><strong>Faza wytwarzania</strong>: <strong>Kocioł gazowy kondensacyjny</strong>, sterowany przez regulator pogodowy, rozpala palnik i podgrzewa wodę do obliczonej temperatury (np. 65°C przy mrozie -10°C).</li>



<li><strong>Faza mieszania</strong>: Gorąca woda z kotła trafia do <strong>zaworu mieszającego</strong>. Tu, na podstawie nastawy termostatu czujnika podłogowego, miesza się z chłodną wodą powrotną z pętli (np. 30°C), by uzyskać temperaturę docelową (np. 40°C).</li>



<li><strong>Faza dystrybucji</strong>: Schłodzona mieszanka jest tłoczona przez <strong>pompę obiegową podłogówki</strong> na <strong>rozdzielacz główny</strong>. Stamtąd, przez odpowiednio wyważone zawory, trafia do indywidualnych pętli ułożonych w wylewce podłogowej.</li>



<li><strong>Faza oddawania ciepła</strong>: Woda przepływa przez pętle z rur (np. <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">PEX</a>, <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/">PE-RT</a>), oddając ciepło przez kondukcję (przewodzenie) do wylewki, a następnie przez promieniowanie do pomieszczenia. Temperatura wody spada (np. do 30°C).</li>



<li><strong>Faza powrotu i kondensacji</strong>: Ochłodzona woda zbiera się w kolektorze powrotnym rozdzielacza. Następnie dzieli się:
<ul class="wp-block-list">
<li>Część (tzw. <strong>schłodzony powrót</strong>) trafia z powrotem do zaworu mieszającego, aby obniżyć temperaturę zasilania pętli.</li>



<li>Część (tzw. <strong>ciepły powrót</strong>) płynie bezpośrednio do kotła. <strong>To kluczowy moment!</strong> Niska temperatura tego powrotu (30°C) umożliwia intensywną kondensację w kotle, maksymalizując sprawność i odzysk energii.</li>
</ul>
</li>



<li><strong>Faza regulacji</strong>: Gdy termostat pokojowy w danej strefie osiągnie zadaną temperaturę, zamyka siłownik na rozdzielaczu. Przepływ w pętli ustaje. Kocioł może przejść w stan oczekiwania lub modulować swoją moc w dół, dzięki czemu pracuje w sposób ciągły i ekonomiczny.</li>
</ol>



<h2 class="wp-block-heading">Dobór mocy kotła gazowego: Obliczenia i praktyczne przykłady.</h2>



<p class="wp-block-paragraph">Przewymiarowanie kotła to jeden z najczęstszych błędów, prowadzący do&nbsp;<strong>cyklicznej, nieefektywnej pracy (tzw. taktowanie)</strong>&nbsp;i zwiększonego zużycia paliwa. Moc kotła powinna być dobrana na podstawie&nbsp;<strong>zapotrzebowania na ciepło budynku</strong>&nbsp;(moc cieplna), a nie &#8222;na oko&#8221;.</p>



<p class="wp-block-paragraph"><strong>Podstawowy wzór szacunkowy (dla domów o dobrej izolacji, według WT2021):</strong><br><code>Zapotrzebowanie na moc grzewczą [kW] = Kubatura [m³] * Współczynnik zapotrzebowania [W/m³]</code></p>



<p class="wp-block-paragraph">Gdzie współczynnik zapotrzudowania wynosi:</p>



<ul class="wp-block-list">
<li>Dom stary, słabo ocieplony: 60-80 W/m³</li>



<li>Dom standardowy (2000-2010): 40-60 W/m³</li>



<li>Dom dobrze ocieplony (po 2014): 30-50 W/m³</li>



<li>Dom pasywny/energooszczędny: 20-30 W/m³</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład obliczeniowy nr 1:</strong><br>Dom parterowy z poddaszem użytkowym, ocieplony zgodnie z obecnymi normami (wsp. = 25 W/m³). Kubatura netto (ogrzewana) = 450 m³.<br><code>Moc cieplna = 450 m³ * 25 W/m³ = 11 250 W = 11.25 kW</code><br>Do tego należy doliczyć&nbsp;<strong>zapotrzebowanie na moc do podgrzewu ciepłej wody użytkowej (c.w.u.)</strong>. Dla typowego domu 4-osobowego z bateriami prysznicowymi przyjmuje się ok.&nbsp;<strong>20-25 kW mocy chwilowej</strong>&nbsp;potrzebnej do komfortowego podgrzewu. Kocioł musi pokryć i to zapotrzebowanie.<br><strong>Wniosek</strong>: Dla takiego domu należy wybrać&nbsp;<strong>kocioł kondensacyjny o mocy grzewczej ok. 24-26 kW</strong>, który z powodzeniem pokryje zarówno potrzeby grzewcze (11.25 kW), jak i potrzebną moc do c.w.u.</p>



<p class="wp-block-paragraph"><strong>Przykład obliczeniowy nr 2:</strong><br>Mały, energooszczędny domek o kubaturze 200 m³ (wsp. = 15 W/m³).<br><code>Moc cieplna = 200 m³ * 15 W/m³ = 3 kW</code><br>Nawet biorąc pod uwagę c.w.u., wystarczający może okazać się&nbsp;<strong>kocioł kompaktowy o mocy 12-15 kW</strong>. Na rynku dostępne są już kotły z szerokim zakresem modulacji (np. 1:10), co oznacza, że kocioł 15kW może płynnie regulować moc w dół nawet do&nbsp;<strong>1.5 kW</strong>, idealnie dopasowując się do niskiego zapotrzebowania grzewczego budynku.</p>



<h2 class="wp-block-heading">Porównanie z innymi źródłami ciepła: Tabela analizy.</h2>



<p class="wp-block-paragraph">Poniższa tabela prezentuje techniczne i ekonomiczne aspekty różnych źródeł ciepła współpracujących z ogrzewaniem podłogowym.</p>



<style>
.responsive-table {
  width: 100%;
  border-collapse: collapse;
  margin: 30px 0;
  font-family: Arial, sans-serif;
  font-size: 15px;
}

.responsive-table th,
.responsive-table td {
  border: 1px solid #e0e0e0;
  padding: 12px 10px;
  text-align: left;
}

.responsive-table th {
  background: #f5f5f5;
  font-weight: 600;
}

.responsive-table tr:nth-child(even) {
  background: #fafafa;
}

.responsive-table-wrapper {
  overflow-x: auto;
}

/* Mobile */
@media (max-width: 768px) {
  .responsive-table thead {
    display: none;
  }

  .responsive-table tr {
    display: block;
    margin-bottom: 20px;
    border: 1px solid #ddd;
    padding: 10px;
    background: #fff;
  }

  .responsive-table td {
    display: flex;
    justify-content: space-between;
    padding: 8px 5px;
    border: none;
    border-bottom: 1px solid #eee;
  }

  .responsive-table td:last-child {
    border-bottom: none;
  }

  .responsive-table td::before {
    content: attr(data-label);
    font-weight: 600;
    color: #555;
    margin-right: 10px;
  }
}
</style>

<div class="responsive-table-wrapper">
<table class="responsive-table">
  <thead>
    <tr>
      <th>Parametr</th>
      <th>Kocioł gazowy kondensacyjny</th>
      <th><a href="https://projekt-ogrzewania.pl/pompa-ciepla/" title="Pompa ciepła powietrze–woda">Pompa ciepła powietrze–woda</a></th>
      <th>Kocioł elektryczny</th>
      <th>Kocioł na biomasę (pellet)</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td data-label="Parametr">Temperatura pracy</td>
      <td data-label="Kocioł gazowy">Idealna zgodność (niskotemp.)</td>
      <td data-label="Pompa ciepła">Idealna zgodność (niskotemp.)</td>
      <td data-label="Kocioł elektryczny">Idealna zgodność (dowolna)</td>
      <td data-label="Pellet">Wymaga bufora (wysokotemp.)</td>
    </tr>
    <tr>
      <td data-label="Parametr">Koszt inwestycyjny</td>
      <td data-label="Kocioł gazowy">Średni</td>
      <td data-label="Pompa ciepła">Wysoki</td>
      <td data-label="Kocioł elektryczny">Niski</td>
      <td data-label="Pellet">Średni/Wysoki (z magazynem)</td>
    </tr>
    <tr>
      <td data-label="Parametr">Koszt eksploatacji</td>
      <td data-label="Kocioł gazowy">Średni (zależny od ceny gazu)</td>
      <td data-label="Pompa ciepła">Niski (wysoki COP)</td>
      <td data-label="Kocioł elektryczny">Bardzo wysoki</td>
      <td data-label="Pellet">Niski (zależny od ceny pelletu)</td>
    </tr>
    <tr>
      <td data-label="Parametr">Sprawność / COP</td>
      <td data-label="Kocioł gazowy">105–109%</td>
      <td data-label="Pompa ciepła">COP 3–5 (300–500%)</td>
      <td data-label="Kocioł elektryczny">~100%</td>
      <td data-label="Pellet">80–90% (kotły automatyczne)</td>
    </tr>
    <tr>
      <td data-label="Parametr">Komfort obsługi</td>
      <td data-label="Kocioł gazowy">Bardzo wysoki (pełna autom.)</td>
      <td data-label="Pompa ciepła">Bardzo wysoki (pełna autom.)</td>
      <td data-label="Kocioł elektryczny">Bardzo wysoki (pełna autom.)</td>
      <td data-label="Pellet">Średni (uzupełnianie zasobnika)</td>
    </tr>
    <tr>
      <td data-label="Parametr">Niezależność</td>
      <td data-label="Kocioł gazowy">Zależny od sieci gazowej</td>
      <td data-label="Pompa ciepła">Zależna od prądu i temp. zew.</td>
      <td data-label="Kocioł elektryczny">Zależny od prądu</td>
      <td data-label="Pellet">Wysoka (lokalne paliwo)</td>
    </tr>
    <tr>
      <td data-label="Parametr">Emisja CO₂</td>
      <td data-label="Kocioł gazowy">Średnia</td>
      <td data-label="Pompa ciepła">Niska (zielona energia)</td>
      <td data-label="Kocioł elektryczny">Wysoka (energia węglowa)</td>
      <td data-label="Pellet">Neutralna (biogeniczny CO₂)</td>
    </tr>
    <tr>
      <td data-label="Parametr">Wymagania</td>
      <td data-label="Kocioł gazowy">Przyłącze gazowe, komin</td>
      <td data-label="Pompa ciepła">Miejsce na jednostkę zewnętrzną</td>
      <td data-label="Kocioł elektryczny">Przyłącze o dużej mocy</td>
      <td data-label="Pellet">Magazyn paliwa, komin, dostawy</td>
    </tr>
  </tbody>
</table>
</div>




<p class="wp-block-paragraph"><strong>Wnioski z porównania</strong>: Kocioł gazowy kondensacyjny znajduje swoją niszę jako rozwiązanie&nbsp;<strong>kompromisowe</strong>&nbsp;– oferujące wysoki komfort i dobrą efektywność przy umiarkowanych kosztach inwestycyjnych, w sytuacji gdy inwestycja w pompę ciepła jest zbyt wysoka, a dostęp do gazu istnieje.</p>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego z kotłem gazowym: Kluczowe etapy.</h2>



<p class="wp-block-paragraph"><strong><a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/">Projekt instalacji</a></strong> jest fundamentem, którego nie wolno pominąć. Działanie &#8222;na oko&#8221; prowadzi do nierównomiernego grzania, wysokich rachunków i dyskomfortu. Prawidłowy projekt dla systemu z <strong>kotłem gazowym</strong> powinien obejmować:</p>



<ol start="1" class="wp-block-list">
<li><strong>Audyt cieplny budynku</strong>: Obliczenie rzeczywistych strat ciepła dla każdego pomieszczenia (w Watach). To podstawa do dalszych kroków.</li>



<li><strong>Rozmieszczenie i podział na strefy grzewcze</strong>: Zaplanowanie, które pomieszczenia mają pracować w tej samej temperaturze i czasie (np. strefa dzienna, strefa nocna, łazienki).</li>



<li><strong>Projekt pętli grzewczych</strong>:
<ul class="wp-block-list">
<li><strong>Dobór rozstawu rur</strong>: Im większe straty ciepła, tym gęstszy rozstaw (np. 10 cm pod dużymi oknami, 15-20 cm w środku pomieszczenia).</li>



<li><strong>Długość pętli</strong>: Nie powinna przekraczać <strong>100-120m</strong> dla rur 16mm, aby opory przepływu nie były zbyt duże. Dłuższe pomieszczenia dzieli się na kilka pętli.</li>



<li><strong>Średnica rur</strong>: Najczęściej <strong>16 mm</strong> lub <strong>17 mm</strong> (zewnętrzne).</li>
</ul>
</li>



<li><strong>Dobór i projekt rozdzielaczy</strong>: Określenie liczby pętli i dobór rozdzielacza z odpowiednią liczbą odgałęzień. Zaplanowanie miejsca montażu (np. szafa instalacyjna w centralnym punkcie).</li>



<li><strong>Dobór mocy i parametrów kotła</strong>: Na podstawie całkowitego zapotrzebowania na ciepło oraz potrzeb c.w.u.</li>



<li><strong>Dobór pozostałych komponentów</strong>: Obliczenie wymaganej wydajności pompy obiegowej podłogówki, dobór zaworu mieszającego, naczynia wzbiorczego.</li>



<li><strong>Projekt sterowania</strong>: Zaplanowanie lokalizacji termostatów pokojowych, dobór sterownika pogodowego, określenie sposobu współpracy siłowników z rozdzielaczem.</li>
</ol>



<p class="wp-block-paragraph"><strong>Uwaga techniczna</strong>: W projekcie z&nbsp;<strong>kotłem kondensacyjnym</strong>&nbsp;szczególną uwagę zwraca się na&nbsp;<strong>obniżenie temperatury powrotu</strong>&nbsp;do kotła. Często stosuje się tzw.&nbsp;<strong>priorytet obiegu grzewczego</strong>, który podczas rozruchu kieruje całą wodę pierw do podłogówki, schładzając ją maksymalnie, zanim trafi z powrotem do kotła.</p>



<h2 class="wp-block-heading">Praktyczne aspekty montażu i późniejszej eksploatacji.</h2>



<p class="wp-block-paragraph">Montaż systemu powinien być wykonany rzetelnie, zgodnie z projektem i sztuką instalatorską. Kluczowe punkty to:</p>



<ul class="wp-block-list">
<li>Izolacja termiczna pod rurkami (<a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">styropian</a> lub polistyren ekstrudowany o odpowiedniej gęstości i lambda).</li>



<li><a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">Dylatacje obwodowe i pośrednie w wylewce</a>.</li>



<li><a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">Próba ciśnieniowa instalacji</a> przed wylaniem płyty.</li>



<li>Prawidłowe ustawienie i wyważenie hydrauliczne na rozdzielaczu.</li>



<li>Optymalne zaprogramowanie sterowników.</li>
</ul>



<p class="wp-block-paragraph">W eksploatacji&nbsp;<strong>kocioł gazowy kondensacyjny</strong>&nbsp;wymaga:</p>



<ul class="wp-block-list">
<li><strong>Czorocznego przeglądu</strong> przez wykwalifikowanego serwisanta (czyszczenie wymiennika, sprawdzenie szczelności, analiza spalin).</li>



<li><strong>Utrzymania niskiej temperatury pracy</strong> – nie ma potrzeby podkręcania parametrów na kotle.</li>



<li>Monitorowania ciśnienia w obiegu (uzupełnianie wody w razie potrzeby).</li>
</ul>



<h2 class="wp-block-heading">FAQ – Najczęściej zadawane pytania.</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1767533865925"><strong class="schema-faq-question"><strong>Czy kocioł gazowy dobrze współpracuje z ogrzewaniem podłogowym?</strong></strong> <p class="schema-faq-answer">Tak. Kocioł gazowy kondensacyjny jest wręcz stworzony do pracy z ogrzewaniem podłogowym, ponieważ osiąga najwyższą sprawność przy niskich temperaturach zasilania i powrotu.</p> </div> <div class="schema-faq-section" id="faq-question-1767533875201"><strong class="schema-faq-question"><strong>Czy potrzebny jest układ mieszający przy kotle gazowym?</strong></strong> <p class="schema-faq-answer">W większości instalacji tak. Układ mieszający obniża temperaturę wody z kotła do bezpiecznego poziomu dla pętli podłogowych i stabilizuje pracę całego systemu.</p> </div> <div class="schema-faq-section" id="faq-question-1767533888868"><strong class="schema-faq-question"><strong>Jak dobrać moc kotła gazowego do podłogówki?</strong></strong> <p class="schema-faq-answer">Moc kotła dobiera się na podstawie zapotrzebowania cieplnego budynku oraz potrzeb ciepłej wody użytkowej. Przewymiarowanie kotła prowadzi do nieefektywnej pracy i wyższych kosztów eksploatacji.</p> </div> <div class="schema-faq-section" id="faq-question-1767533906380"><strong class="schema-faq-question"><strong>Czy ogrzewanie podłogowe z kotłem gazowym jest tanie w eksploatacji?</strong></strong> <p class="schema-faq-answer">Koszty eksploatacji są umiarkowane i w dużym stopniu zależne od ceny gazu, jednak dzięki kondensacji i niskiej temperaturze pracy system należy do najbardziej efektywnych rozwiązań gazowych.</p> </div> <div class="schema-faq-section" id="faq-question-1767533916133"><strong class="schema-faq-question"><strong>Czy warto stosować sterowanie pogodowe w takim systemie?</strong></strong> <p class="schema-faq-answer">Zdecydowanie tak. Sterowanie pogodowe pozwala automatycznie dostosować temperaturę zasilania do warunków zewnętrznych, zwiększając komfort i ograniczając zużycie gazu.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie.</h2>



<p class="wp-block-paragraph"><strong>Podsumowując</strong>, system oparty na&nbsp;<strong>kotle gazowym kondensacyjnym i wodnym ogrzewaniu podłogowym</strong>&nbsp;to technologicznie dojrzałe, niezwykle efektywne i komfortowe rozwiązanie. Jego sukces zależy od trzech filarów:&nbsp;<strong>starannie wykonanego projektu</strong>,&nbsp;<strong>jakości komponentów</strong>&nbsp;oraz&nbsp;<strong>profesjonalnego montażu i uruchomienia</strong>. Dla inwestora poszukującego sprawdzonego, niezawodnego źródła ciepła o wysokim komforcie użytkowania, połączenie to pozostaje jednym z najlepszych wyborów na rynku, doskonale łącząc ekonomię z nowoczesną techniką grzewczą.</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="s8D4odUr4u"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=MTIW2HXc66#?secret=s8D4odUr4u" data-secret="s8D4odUr4u" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">Kocioł gazowy.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pompa obiegowa w instalacji ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 10:42:46 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika budowlana]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy obiegowe]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[auto adapt]]></category>
		<category><![CDATA[dobór pompy]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[hydraulika instalacji]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[pompy cyrkulacyjne]]></category>
		<category><![CDATA[pompy ec]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2943</guid>

					<description><![CDATA[<p>Pompa obiegowa w instalacji ogrzewania podłogowego to element, który w praktyce decyduje o tym, czy cały system będzie działał cicho, oszczędnie i równomiernie. Choć często traktowana jako detal techniczny, jej dobór ma bezpośredni wpływ na komfort cieplny, zużycie energii elektrycznej oraz trwałość instalacji. W artykule szczegółowo wyjaśniamy, jak działa pompa obiegowa w instalacji ogrzewania podłogowego, jakie parametry mają kluczowe znaczenie, czym różnią się nowoczesne pompy EC od starszych modeli oraz dlaczego projekt hydrauliczny jest fundamentem prawidłowej pracy całego systemu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa w instalacji ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-start-dark: #0f172a;
    --rk-start-slate: #475569;
    --rk-start-bg: #f8fafc;
    --rk-start-card: #ffffff;
    --rk-start-border: #e2e8f0;
    
    /* Kolory funkcyjne */
    --rk-start-blue: #2563eb;
    --rk-start-blue-light: #eff6ff;
    --rk-start-green: #059669;
    --rk-start-gold: #d97706;
}

.rk-start-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-start-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(37, 99, 235, 0.1);
    border: 1px solid var(--rk-start-border);
    overflow: hidden;
}

/* Sekcja Nagłówka i Hooka */
.rk-start-hero {
    background: linear-gradient(135deg, var(--rk-start-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
}

.rk-start-hero h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.25;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-hook-box {
    font-size: 17px;
    line-height: 1.6;
    color: #cbd5e1;
    margin-bottom: 30px;
    padding-left: 20px;
    border-left: 4px solid var(--rk-start-gold);
}

.rk-hook-box strong {
    color: #ffffff;
}

/* Szybka Odpowiedź (Quick Answer) */
.rk-qa-box {
    background: #ffffff;
    border-radius: 16px;
    padding: 25px 30px;
    color: var(--rk-start-dark);
    box-shadow: 0 10px 20px rgba(0,0,0,0.2);
}

.rk-qa-header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}

.rk-qa-icon {
    width: 28px;
    height: 28px;
    background: #dcfce7;
    color: var(--rk-start-green);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-qa-header h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--rk-start-green);
}

.rk-qa-content {
    font-size: 15px;
    line-height: 1.6;
    margin: 0;
    font-weight: 500;
}

.rk-qa-content strong {
    color: var(--rk-start-blue);
}

/* Kafelkowy Spis Treści (Zamiast Mapy) */
.rk-start-body {
    padding: 40px;
    background: var(--rk-start-bg);
}

.rk-body-heading {
    font-size: 13px;
    font-weight: 900;
    color: var(--rk-start-slate);
    text-transform: uppercase;
    margin-bottom: 25px;
    text-align: center;
}

.rk-start-tiles {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 35px;
}

.rk-start-tile {
    background: #ffffff;
    border: 1px solid var(--rk-start-border);
    border-radius: 16px;
    padding: 25px;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-start-tile:hover {
    border-color: var(--rk-start-blue);
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(37, 99, 235, 0.1);
}

.rk-start-tile.active {
    background: var(--rk-start-blue-light);
    border-color: var(--rk-start-blue);
    box-shadow: 0 10px 15px -3px rgba(37, 99, 235, 0.2);
}

.rk-tile-icon {
    width: 40px;
    height: 40px;
    margin-bottom: 15px;
    color: var(--rk-start-blue);
}

.rk-tile-num {
    font-size: 11px;
    font-weight: 900;
    color: var(--rk-start-slate);
    text-transform: uppercase;
    margin-bottom: 4px;
}

.rk-start-tile.active .rk-tile-num { color: var(--rk-start-blue); }

.rk-tile-text {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-start-dark);
    margin: 0;
}

/* Obszar Treści Pod Kafelkami */
.rk-content-group {
    background: #ffffff;
    border: 1px solid var(--rk-start-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-content-panel {
    display: none;
}

.rk-content-panel.active {
    display: block;
}

.rk-panel-badge {
    display: inline-block;
    padding: 6px 12px;
    background: var(--rk-start-bg);
    color: var(--rk-start-blue);
    font-size: 12px;
    font-weight: 900;
    border-radius: 6px;
    text-transform: uppercase;
    margin-bottom: 15px;
    border: 1px solid var(--rk-start-border);
}

.rk-content-panel h4 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-start-dark);
    margin: 0 0 15px 0;
}

.rk-content-panel p {
    font-size: 15px;
    color: var(--rk-start-slate);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-content-panel p:last-child { margin-bottom: 0; }

.rk-content-panel a {
    color: var(--rk-start-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Baner Informacyjny na dole */
.rk-start-footer {
    background: var(--rk-start-blue);
    padding: 20px 40px;
    display: flex;
    align-items: center;
    gap: 15px;
    color: #ffffff;
}

.rk-footer-icon {
    flex-shrink: 0;
}

.rk-footer-text {
    font-size: 14px;
    font-weight: 600;
    line-height: 1.5;
    margin: 0;
}

@media (max-width: 800px) {
    .rk-start-hero { padding: 35px 25px; }
    .rk-start-tiles { grid-template-columns: 1fr; gap: 15px; }
    .rk-start-body { padding: 25px; }
    .rk-intro-content { padding: 25px; }
    .rk-qa-box { padding: 20px; }
    .rk-start-footer { flex-direction: column; text-align: center; padding: 20px; }
}
</style>

<div class="rk-start-container" id="rkStartModule">
    
    <div class="rk-start-hero">
        <h2>Pompa obiegowa w instalacji ogrzewania podłogowego – Kompleksowy przewodnik</h2>
        
        <div class="rk-hook-box">
            Większość inwestorów skupia się na wyborze kotła czy pompy ciepła, całkowicie ignorując urządzenie, które fizycznie dystrybuuje energię. <strong>Złe wbudowanie pompy obiegowej w instalacji ogrzewania podłogowego to najkrótsza droga do niedogrzanej łazienki, hałasu w rurach i rachunków wyższych o kilkaset złotych rocznie.</strong> Przejmij kontrolę nad sercem swojego układu grzewczego.
        </div>

        <div class="rk-qa-box">
            <div class="rk-qa-header">
                <div class="rk-qa-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                </div>
                <h3>Szybka Odpowiedź</h3>
            </div>
            <p class="rk-qa-content">
                <strong>Pompa obiegowa w instalacji ogrzewania podłogowego</strong> to niewielkie urządzenie węzłowe (bezdławnicowe), montowane zazwyczaj przy rozdzielaczu. Jej kluczowym zadaniem jest wymuszenie ciągłego przepływu wody poprzez pokonanie wysokich oporów hydraulicznych wężownicy (rzadziej 16×2 mm). Prawidłowo dobrany model elektroniczny (EC) pracujący w trybie stałociśnieniowym (CP) zużywa <strong>zaledwie od 5 do 22 W</strong> energii elektrycznej.
            </p>
        </div>
    </div>

    <div class="rk-start-body">
        <div class="rk-body-heading">Interaktywny Przewodnik (Wybierz Zagadnienie)</div>
        
        <div class="rk-start-tiles">
            <div class="rk-start-tile active" data-target="mod-calc">
                <div class="rk-tile-num">Część 1</div>
                <h4 class="rk-tile-text">Inżynierski dobór</h4>
                <div class="rk-tile-icon" style="margin-top: 10px;">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>
                </div>
            </div>
            <div class="rk-start-tile" data-target="mod-mode">
                <div class="rk-tile-num">Część 2</div>
                <h4 class="rk-tile-text">Elektronika i Tryby</h4>
                <div class="rk-tile-icon" style="margin-top: 10px;">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
                </div>
            </div>
            <div class="rk-start-tile" data-target="mod-err">
                <div class="rk-tile-num">Część 3</div>
                <h4 class="rk-tile-text">Błędy w montażu</h4>
                <div class="rk-tile-icon" style="margin-top: 10px;">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
                </div>
            </div>
        </div>

        <div class="rk-content-group">
            
            <div class="rk-content-panel active" id="mod-calc">
                <span class="rk-panel-badge">Obliczenia Q/H</span>
                <h4>Jak poprawnie obliczyć przepływ i wysokość podnoszenia?</h4>
                <p>Odrzucamy instalatorskie mity o dobieraniu pompy &#8222;na oko&#8221; lub &#8222;na metry kwadratowe&#8221;. Wodne <strong>ogrzewanie podłogowe charakteryzuje się bardzo dużą pojemnością wodną (zładem) oraz wysokimi oporami wewnętrznymi.</strong> Rola pompy polega na pokonaniu tych oporów.</p>
                <p>W tej sekcji poznasz dokładne wzory inżynierskie bazujące na <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normie PN-EN 1264</a>, które pozwolą Ci wyliczyć wymagany przepływ masowy (Q) i wysokość podnoszenia (H) dla Twojej pętli krytycznej.</p>
            </div>

            <div class="rk-content-panel" id="mod-mode">
                <span class="rk-panel-badge">Konfiguracja pompy</span>
                <h4>Zasady działania i tryby pracy pompy EC</h4>
                <p>Nawet najlepsza <strong>pompa obiegowa w instalacji ogrzewania podłogowego</strong> ulegnie przyspieszonemu zużyciu, jeśli zostanie źle skonfigurowana. Elektronika nowoczesnych modeli EC wybacza znacznie mniej niż stare pompy AC.</p>
                <p>Wyjaśniamy, dlaczego tryb proporcjonalny (PP) to błąd w sztuce w płaszczyznowym ogrzewaniu. Dowiesz się, jak tryb stałociśnieniowy (CP) optymalizuje pracę układu i dlaczego funkcja AUTOADAPT może być pułapką, jeśli nie rozumiesz krzywych charakterystyki.</p>
            </div>

            <div class="rk-content-panel" id="mod-err">
                <span class="rk-panel-badge">Praktyka na Budowie</span>
                <h4>Katalog krytycznych błędów instalacyjnych</h4>
                <p>Przenosimy się z kotłowni na plac budowy. Dowiesz się, gdzie dokładnie powinna być zamontowana pompa (za lub przed <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworem mieszającym (3D/4D)</a>) i jakie są techniczne konsekwencje nieprzestrzegania instrukcji.</p>
                <p>Opisujemy katastrofalne skutki pracy wirnika w osi pionowej (co niszczy ceramiczne poduszki wodne łożysk) oraz zagrożenia wynikające z braku separatora magnetycznego (siatka min. 500 µm) przy silnikach z magnesem neodymowym.</p>
            </div>

        </div>
    </div>

    <div class="rk-start-footer">
        <div class="rk-footer-icon">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
        </div>
        <p class="rk-start-footer-text">
            <strong>Narzędzia premium wewnątrz artykułu:</strong> W dalszej części tekstu udostępniłem dla Ciebie interaktywne kalkulatory doboru, symulatory hydrauliczne oraz twarde tabele inżynierskie, które pomogą Ci podjąć bezbłędną decyzję inwestycyjną.
        </p>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tiles = document.querySelectorAll('.rk-start-tile');
    const panels = document.querySelectorAll('.rk-content-panel');

    tiles.forEach(tile => {
        tile.addEventListener('click', function() {
            // Reset active states
            tiles.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Set new active states
            this.classList.add('active');
            const targetId = this.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Pompa obiegowa w instalacji ogrzewania podłogowego – Kompleksowy przewodnik",
    "description": "Poradnik o pompach obiegowych w podłogówce. HOOK, Szybka Odpowiedź, parametry wydajnościowe, tryby pracy (CP/PP) oraz najczęstsze błędy montażowe.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-wstep",
    "name": "Wprowadzenie i parametry startowe pomp w podłogówce",
    "description": "Baza informacji startowych kategoryzująca kluczowe parametry doboru i diagnostyki pomp obiegowych w układach niskotemperaturowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa obiegowa w instalacji ogrzewania podłogowego",
      "szybka odpowiedź ogrzewanie podłogowe pompa",
      "obliczenia hydrauliczne podłogówki wzory",
      "tryb stałociśnieniowy cp vs proporcjonalny pp",
      "zatarte łożyska pompy ceramiczne"
    ],
    "measurementTechnique": "Kategoryzacja parametrów inżynierskich na podstawie podziału treści na trzy moduły tematyczne: dobór, elektronika, montaż.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obliczenia Q i H dla pętli krytycznej wg normy PN-EN 1264.",
        "Analiza trybów pracy pompy EC i energooszczędności.",
        "Diagnostyka błędów instalacyjnych i zanieczyszczeń magnetycznych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-spis-tresci",
    "name": "Kafelkowy Spis Treści (Statyczny)",
    "description": "Interfejs w formie kafelków na górze artykułu, pozwalający na statyczne (bez animacji) przełączanie informacji o tematyce trzech głównych sekcji poradnika.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-stat-dark: #0f172a;
    --rk-stat-slate: #475569;
    --rk-stat-bg: #f8fafc;
    --rk-stat-card: #ffffff;
    --rk-stat-border: #e2e8f0;
    
    /* Kolory akcentujące */
    --rk-stat-blue: #2563eb;
    --rk-stat-red: #ef4444;
    --rk-stat-green: #10b981;
}

.rk-stat-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-stat-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(37, 99, 235, 0.1);
    border: 1px solid rgba(37, 99, 235, 0.2);
    overflow: hidden;
}

/* Tagi Long Tail */
.rk-stat-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: var(--rk-stat-card);
}

.rk-mat-tag {
    background: var(--rk-stat-bg);
    color: var(--rk-stat-blue);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    border: 1px solid var(--rk-stat-border);
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: var(--rk-stat-blue);
    color: #ffffff;
}

/* Nagłówek */
.rk-stat-header {
    padding: 25px 40px 30px;
    background: var(--rk-stat-card);
    color: var(--rk-stat-dark);
}

.rk-stat-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-stat-header p {
    font-size: 15px;
    color: var(--rk-stat-slate);
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

/* Układ główny - Tło dla całej sekcji nawigacji i paneli */
.rk-stat-body {
    background: var(--rk-stat-bg);
    border-top: 1px solid var(--rk-stat-border);
    padding: 35px 40px;
}

/* Menu Nawigacyjne Poziome (Tab Bar) */
.rk-stat-nav-bar {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

.rk-stat-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 16px;
    background: #ffffff;
    border: 1px solid var(--rk-stat-border);
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-stat-btn:hover {
    border-color: var(--rk-stat-blue);
}

.rk-stat-btn.active {
    background: var(--rk-stat-blue);
    border-color: var(--rk-stat-blue);
    color: #ffffff;
    box-shadow: 0 10px 15px -3px rgba(37, 99, 235, 0.2);
}

.rk-stat-btn.active[data-target="panel2"],
.rk-stat-btn.active[data-target="panel3"] {
    background: var(--rk-stat-red);
    border-color: var(--rk-stat-red);
    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.2);
}

.rk-btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    color: var(--rk-stat-slate);
    transition: all 0.2s;
}

.rk-stat-btn.active .rk-btn-icon {
    color: #ffffff;
}

.rk-btn-text {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-stat-dark);
    margin: 0;
    transition: all 0.2s;
}

.rk-stat-btn.active .rk-btn-text {
    color: #ffffff;
}

/* Prawa Kolumna - Treść i SVG (Statyczne) */
.rk-stat-panel {
    display: none;
    animation: fadeInPanel 0.3s ease-out;
}

.rk-stat-panel.active {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
}

@keyframes fadeInPanel {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Obszar grafiki SVG */
.rk-svg-wrapper {
    background: #ffffff;
    border: 1px solid var(--rk-stat-border);
    border-radius: 16px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-static-svg {
    width: 100%;
    max-width: 320px;
    height: auto;
}

/* Obszar tekstu */
.rk-text-wrapper h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-stat-dark);
    margin: 0 0 15px 0;
}

.rk-text-wrapper p {
    font-size: 15px;
    color: var(--rk-stat-slate);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-text-wrapper strong {
    color: var(--rk-stat-dark);
}

.rk-text-wrapper a {
    color: var(--rk-stat-blue);
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 700;
}

.rk-consequence-box {
    background: #fef2f2;
    border-left: 4px solid var(--rk-stat-red);
    padding: 18px 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 20px;
}

.rk-consequence-box h4 {
    margin: 0 0 8px 0;
    color: var(--rk-stat-red);
    font-size: 13px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-consequence-box p {
    margin: 0;
    font-size: 14px;
    color: #991b1b;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-stat-nav-bar { grid-template-columns: 1fr; gap: 10px; }
    .rk-stat-panel.active { grid-template-columns: 1fr; gap: 20px; }
    .rk-stat-body { padding: 25px 20px; }
    .rk-stat-header { padding: 25px 20px 20px; }
    .rk-stat-tags { padding: 20px 20px 0; }
    .rk-stat-header h2 { font-size: 24px; }
    .rk-svg-wrapper { padding: 20px; }
}
</style>

<div class="rk-stat-container" id="rkStaticApp">
    
    <div class="rk-stat-tags">
        <span class="rk-mat-tag"># zasada działania pompy obiegowej</span>
        <span class="rk-mat-tag"># montaż pompy na powrocie</span>
        <span class="rk-mat-tag"># zatarte łożyska ceramiczne</span>
        <span class="rk-mat-tag"># filtr magnetyczny 500 µm</span>
    </div>

    <div class="rk-stat-header">
        <h2>Jak działa pompa obiegowa i gdzie powinna być zamontowana?</h2>
        <p>Pompa obiegowa w instalacji ogrzewania podłogowego działa na zasadzie wymuszenia przepływu hydraulicznego w zamkniętym układzie, a miejscem jej montażu – zgodnie z dobrą praktyką inżynierską i normą PN-EN 1264-4 – powinien być układ mieszająco-pompowy.</p>
    </div>

    <div class="rk-stat-body">
        <div class="rk-stat-nav-bar">
            <button class="rk-stat-btn active" data-target="panel1">
                <div class="rk-btn-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <span class="rk-btn-text">Zasada Działania</span>
            </button>
            
            <button class="rk-stat-btn" data-target="panel2">
                <div class="rk-btn-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </div>
                <span class="rk-btn-text">Błąd: Oś Pionowa</span>
            </button>
            
            <button class="rk-stat-btn" data-target="panel3">
                <div class="rk-btn-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <span class="rk-btn-text">Błąd: Brak Filtra</span>
            </button>
        </div>

        <div class="rk-stat-content-area">
            
            <div class="rk-stat-panel active" id="panel1">
                <div class="rk-svg-wrapper">
                    <svg class="rk-static-svg" viewBox="0 0 350 200">
                        <rect x="20" y="20" width="60" height="160" rx="8" fill="#e2e8f0" />
                        <text x="50" y="100" fill="#475569" font-size="12" font-weight="bold" text-anchor="middle" transform="rotate(-90 50 100)">Rozdzielacz</text>
                        
                        <path d="M 80 50 L 250 50" fill="none" stroke="#ef4444" stroke-width="12" stroke-linecap="round"/>
                        <path d="M 80 150 L 250 150" fill="none" stroke="#3b82f6" stroke-width="12" stroke-linecap="round"/>
                        <path d="M 180 50 L 180 150" fill="none" stroke="#cbd5e1" stroke-width="12" stroke-linecap="round"/>

                        <circle cx="180" cy="150" r="16" fill="#f59e0b" />
                        <text x="180" y="185" fill="#f59e0b" font-size="11" font-weight="bold" text-anchor="middle">Zawór Mieszający</text>

                        <rect x="150" y="30" width="60" height="40" rx="8" fill="#1e293b" />
                        <circle cx="180" cy="50" r="14" fill="#334155" />
                        <path d="M 170 50 L 190 50 M 180 40 L 180 60" stroke="#10b981" stroke-width="4" stroke-linecap="round"/>
                        <text x="180" y="18" fill="#1e293b" font-size="11" font-weight="bold" text-anchor="middle">Oś Pozioma (OK)</text>

                        <polygon points="120,44 130,50 120,56" fill="#ffffff" />
                        <polygon points="220,44 230,50 220,56" fill="#ffffff" />
                        <polygon points="230,144 220,150 230,156" fill="#ffffff" />
                        <polygon points="174,100 180,90 186,100" fill="#ffffff" />
                    </svg>
                </div>
                <div class="rk-text-wrapper">
                    <h3>Pojemność i opory hydrauliczne</h3>
                    <p>Wodne ogrzewanie podłogowe charakteryzuje się bardzo dużą pojemnością wodną (zładem) oraz wysokimi oporami wewnętrznymi. Rola pompy polega na przetłoczeniu masy wody przez pętle o małym przekroju (np. rura 16×2 mm posiada prześwit zaledwie 12 mm).</p>
                    <p>Montaż pompy za zaworem mieszającym pozwala na obniżenie temperatury zasilającego czynnika grzewczego z parametrów wysokich (np. 55°C) do bezpiecznych dla <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">jastrychu</a>, czyli <strong>30–45°C</strong>.</p>
                </div>
            </div>

            <div class="rk-stat-panel" id="panel2">
                <div class="rk-svg-wrapper">
                    <svg class="rk-static-svg" viewBox="0 0 350 200">
                        <path d="M 80 100 L 250 100" fill="none" stroke="#cbd5e1" stroke-width="12" stroke-linecap="round"/>
                        
                        <rect x="145" y="60" width="40" height="80" rx="8" fill="#1e293b" />
                        <circle cx="165" cy="100" r="14" fill="#334155" />
                        <path d="M 155 100 L 175 100 M 165 90 L 165 110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                        
                        <circle cx="210" cy="60" r="16" fill="#ef4444" />
                        <path d="M 205 55 L 215 65 M 215 55 L 205 65" stroke="#ffffff" stroke-width="3" stroke-linecap="round"/>
                        <text x="165" y="165" fill="#ef4444" font-size="11" font-weight="bold" text-anchor="middle">Oś Pionowa (BŁĄD)</text>
                    </svg>
                </div>
                <div class="rk-text-wrapper">
                    <h3>Orientacja wału wirnika</h3>
                    <p>Zgodnie z wymogami producentów i fizyką działania pomp bezdławnicowych, urządzenie musi pracować wyłącznie w osi poziomej wału wirnika. Woda instalacyjna pełni w tym układzie funkcję smarującą i chłodzącą dla precyzyjnych elementów ruchomych.</p>
                    <div class="rk-consequence-box">
                        <h4>Konsekwencje błędu</h4>
                        <p>Brak zachowania poziomej orientacji wału skutkuje pracą w warunkach suchego startu i zapowietrzeniem komory. Niszczy to ceramiczne poduszki wodne łożysk w czasie krótszym niż 1 sezon grzewczy.</p>
                    </div>
                </div>
            </div>

            <div class="rk-stat-panel" id="panel3">
                <div class="rk-svg-wrapper">
                    <svg class="rk-static-svg" viewBox="0 0 350 200">
                        <path d="M 80 100 L 250 100" fill="none" stroke="#cbd5e1" stroke-width="12" stroke-linecap="round"/>
                        
                        <circle cx="100" cy="100" r="3" fill="#475569"/>
                        <circle cx="115" cy="98" r="4" fill="#475569"/>
                        <circle cx="125" cy="103" r="2" fill="#475569"/>
                        
                        <rect x="150" y="80" width="60" height="40" rx="8" fill="#1e293b" />
                        <circle cx="180" cy="100" r="14" fill="#334155" />
                        <path d="M 170 100 L 190 100 M 180 90 L 180 110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                        
                        <circle cx="175" cy="95" r="3" fill="#000000"/>
                        <circle cx="185" cy="105" r="4" fill="#000000"/>

                        <path d="M 140 70 L 140 130" stroke="#ef4444" stroke-width="3" stroke-dasharray="4 4" />
                        <text x="140" y="60" fill="#ef4444" font-size="11" font-weight="bold" text-anchor="middle">Brak Filtra!</text>
                    </svg>
                </div>
                <div class="rk-text-wrapper">
                    <h3>Zabezpieczenie magnetyczne</h3>
                    <p>Nowoczesne pompy cyrkulacyjne (silniki EC) posiadają w wirniku niezwykle silne magnesy neodymowe. Zjawisko to sprawia, że pompa naturalnie przyciąga z instalacji wszelkie metaliczne zanieczyszczenia i rdzę.</p>
                    <div class="rk-consequence-box">
                        <h4>Konsekwencje błędu</h4>
                        <p>Montaż bez filtra z wkładem magnetycznym o gęstości siatki minimum 500 µm naraża wirnik na zablokowanie przez cząstki magnetytu. Trwałe zablokowanie obrotu wału w 90% przypadków doprowadza do przepalenia stojana.</p>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-stat-btn');
    const panels = document.querySelectorAll('.rk-stat-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Remove active classes
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Add active class to clicked button and target panel
            this.classList.add('active');
            const targetId = this.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-dzialanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak działa pompa obiegowa w instalacji ogrzewania podłogowego i gdzie powinna być zamontowana?",
    "description": "Zasady działania i wymogi montażowe (PN-EN 1264-4) pompy obiegowej w układzie mieszającym. Dowiedz się, dlaczego orientacja wału i filtr magnetyczny są krytyczne.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-montaz-pompy",
    "name": "Wytyczne Montażowe i Parametry Pracy Pompy Obiegowej 2026",
    "description": "Zestawienie statycznych zaleceń inżynierskich dotyczących pozycjonowania pomp bezdławnicowych oraz konieczności filtracji.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zasada działania pompy obiegowej",
      "montaż pompy na powrocie",
      "zatarte łożyska ceramiczne",
      "filtr magnetyczny 500 µm"
    ],
    "measurementTechnique": "Analiza schematyczna błędów instalacyjnych powodujących pracę na sucho lub blokadę wirnika przez zanieczyszczenia magnetyczne.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Oś pozioma wału: Wymagana dla zachowania żywotności łożysk ceramicznych (zapobieganie suchemu startowi).",
        "Zabezpieczenie magnetyczne: Filtr z siatką min. 500 µm jako ochrona przed zatarciem silnika EC magnetytem z instalacji.",
        "Miejsce montażu: Przy układzie mieszającym w celu redukcji parametrów zasilania z 55°C do 30-45°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-diagnostyka",
    "name": "Interaktywny Przewodnik Montażowy",
    "description": "Statyczny interfejs diagnostyczny z zakładkami, ilustrujący poprawne zasady wbudowania pompy obiegowej oraz techniczne konsekwencje nieprzestrzegania instrukcji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-char-dark: #0f172a;
    --rk-char-slate: #475569;
    --rk-char-bg: #f8fafc;
    --rk-char-card: #ffffff;
    --rk-char-border: #e2e8f0;
    
    /* Kolory funkcyjne */
    --rk-char-blue: #2563eb;
    --rk-char-blue-light: #eff6ff;
    --rk-char-green: #10b981;
    --rk-char-red: #ef4444;
    --rk-char-orange: #f59e0b;
}

.rk-char-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-char-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.1);
    border: 1px solid rgba(37, 99, 235, 0.2);
    overflow: hidden;
}

/* Nagłówek i Teoria (Układ jednowymiarowy pionowy) */
.rk-char-theory-grid {
    display: flex;
    flex-direction: column;
    border-bottom: 1px solid var(--rk-char-border);
}

.rk-char-text-part {
    padding: 40px;
    background: linear-gradient(145deg, var(--rk-char-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-char-text-part h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-char-text-part p {
    font-size: 15px;
    color: #cbd5e1;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-char-text-part a {
    color: #93c5fd;
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 700;
}

/* Kontenery parametrów ustawione obok siebie na desktopie */
.rk-param-boxes-wrapper {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 30px;
}

.rk-param-box {
    background: rgba(255,255,255,0.05);
    border-left: 3px solid var(--rk-char-blue);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    line-height: 1.6;
}

.rk-param-box strong {
    color: #60a5fa;
    display: block;
    margin-bottom: 8px;
    font-size: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Ilustracja Q i H (SVG) - Wyśrodkowana na pełnej szerokości */
.rk-char-illustration {
    background: #ffffff;
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    border-top: 1px solid var(--rk-char-border);
}

.rk-illu-title {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-char-dark);
    text-transform: uppercase;
    margin-bottom: 30px;
    letter-spacing: 1px;
}

/* Interaktywne Porównanie Pomp */
.rk-char-compare-sec {
    padding: 40px;
    background: var(--rk-char-bg);
}

.rk-comp-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-comp-header h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-char-dark);
    margin: 0 0 10px 0;
}

/* Zakładki (Tabs) */
.rk-tabs-nav {
    display: flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    max-width: 700px;
    margin: 0 auto 35px;
    position: relative;
}

.rk-tab-btn {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-char-slate);
    cursor: pointer;
    border: none;
    background: transparent;
    border-radius: 12px;
    transition: all 0.3s;
    position: relative;
    z-index: 2;
}

.rk-tab-btn.active { color: #ffffff; }

.rk-tab-glider {
    position: absolute;
    top: 6px; left: 6px;
    height: calc(100% - 12px);
    width: calc(33.333% - 4px);
    background: var(--rk-char-blue);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    z-index: 1;
}

/* Kafelki z danymi (zamiast tabeli) */
.rk-data-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-data-card {
    background: var(--rk-char-card);
    border: 1px solid var(--rk-char-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-data-icon {
    margin: 0 auto 12px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-char-blue);
    transition: color 0.3s;
}

.rk-data-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-char-dark);
    margin-bottom: 6px;
    transition: color 0.3s;
}

.rk-data-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-char-slate);
    text-transform: uppercase;
}

/* Animacja i status dla wybranej technologii */
.rk-tech-visual {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-char-border);
    padding: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 40px;
}

.rk-tech-desc {
    flex: 1;
}

.rk-tech-badge {
    display: inline-flex;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 15px;
    transition: all 0.3s;
}

.rk-tech-desc p {
    font-size: 14px;
    color: var(--rk-char-slate);
    line-height: 1.6;
    margin: 0;
}

/* SVG Animacje globalne */
.rk-anim-flow { stroke-dasharray: 10; animation: pipeFlow 2s linear infinite; }
@keyframes pipeFlow { to { stroke-dashoffset: -20; } }

/* Dynamiczne stany dla technologii */
.state-ac .rk-data-val { color: var(--rk-char-red); }
.state-ac .rk-data-icon { color: var(--rk-char-red); }
.state-ac .rk-tech-badge { background: #fee2e2; color: var(--rk-char-red); }
.state-ac .svg-ring { stroke: var(--rk-char-red); }

.state-ec-const .rk-data-val { color: var(--rk-char-orange); }
.state-ec-const .rk-data-icon { color: var(--rk-char-orange); }
.state-ec-const .rk-tech-badge { background: #fef3c7; color: #b45309; }
.state-ec-const .svg-ring { stroke: var(--rk-char-orange); }

.state-ec-auto .rk-data-val { color: var(--rk-char-green); }
.state-ec-auto .rk-data-icon { color: var(--rk-char-green); }
.state-ec-auto .rk-tech-badge { background: #dcfce7; color: var(--rk-char-green); }
.state-ec-auto .svg-ring { stroke: var(--rk-char-green); }

@media (max-width: 768px) {
    .rk-param-boxes-wrapper { grid-template-columns: 1fr; gap: 15px; }
    .rk-char-text-part, .rk-char-illustration, .rk-char-compare-sec { padding: 25px 20px; }
    .rk-data-grid { grid-template-columns: 1fr 1fr; }
    .rk-tech-visual { flex-direction: column; text-align: center; gap: 20px; }
    .rk-tab-btn { font-size: 12px; padding: 12px 5px; }
}

@media (max-width: 480px) {
    .rk-data-grid { grid-template-columns: 1fr; }
}
</style>

<div class="rk-char-container" id="rkCharApp">
    
    <div class="rk-char-theory-grid">
        <div class="rk-char-text-part">
            <h2>Jak dobrać parametry pompy obiegowej i jak czytać jej charakterystykę?</h2>
            <p>Prawidłowy dobór pompy obiegowej do ogrzewania podłogowego wymaga określenia dwóch punktów roboczych: wydajności <strong>Q</strong> wyrażonej w m³/h oraz wysokości podnoszenia <strong>H</strong> wyrażonej w m H₂O (lub kPa), zgodnie z procedurą projektową <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normy PN-EN 1264</a>.</p>
            <p>Punkt pracy instalacji musi przecinać się z krzywą charakterystyki pompy w obszarze jej najwyższej sprawności, czyli w środkowej 1/3 części wykresu.</p>
            
            <div class="rk-param-boxes-wrapper">
                <div class="rk-param-box">
                    <strong>Wydajność (Q)</strong>
                    Określa strumień objętościowy wody, jaki musi przepłynąć w ciągu godziny, aby dostarczyć moc cieplną przy założonym schłodzeniu czynnika (optymalne ΔT wynosi 5 K).
                </div>
                
                <div class="rk-param-box" style="border-color: #a78bfa;">
                    <strong style="color: #c4b5fd;">Wysokość podnoszenia (H)</strong>
                    Parametr określający zdolność pompy do pokonania sumarycznych strat ciśnienia (tarcia) w <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">najdłuższej pętli grzewczej</a>. Nie jest to fizyczna wysokość budynku! Ciśnienie statyczne się równoważy.
                </div>
            </div>
        </div>
        
        <div class="rk-char-illustration">
            <div class="rk-illu-title">Fizyka układu zamkniętego</div>
            <svg viewBox="0 0 200 250" style="width: 100%; max-width: 250px; height: auto;">
                <path d="M 20 100 L 100 30 L 180 100 L 180 230 L 20 230 Z" fill="none" stroke="#cbd5e1" stroke-width="3" stroke-dasharray="4 4"/>
                <line x1="20" y1="160" x2="180" y2="160" stroke="#cbd5e1" stroke-width="2" stroke-dasharray="4 4"/>
                
                <rect x="70" y="70" width="60" height="130" rx="10" fill="none" stroke="#e2e8f0" stroke-width="12"/>
                <path d="M 70 200 L 70 70 A 10 10 0 0 1 80 60 L 120 60 A 10 10 0 0 1 130 70 L 130 200" fill="none" stroke="#3b82f6" stroke-width="6" class="rk-anim-flow"/>
                
                <circle cx="100" cy="200" r="18" fill="#1e293b"/>
                <circle cx="100" cy="200" r="10" fill="#334155"/>
                
                <path d="M 145 100 L 145 140 M 140 135 L 145 140 L 150 135" fill="none" stroke="#10b981" stroke-width="2"/>
                <text x="155" y="125" font-size="11" fill="#10b981" font-weight="bold">ΔH = 0</text>
                
                <path d="M 55 140 L 55 100 M 50 105 L 55 100 L 60 105" fill="none" stroke="#ef4444" stroke-width="2"/>
                
                <text x="100" y="130" font-size="11" fill="#f59e0b" font-weight="bold" text-anchor="middle">Tarcie (H)</text>
            </svg>
            <p style="font-size: 14px; color: var(--rk-char-slate); text-align: center; margin-top: 25px; max-width: 600px; font-weight: 500; line-height: 1.6;">
                W zamkniętym układzie podłogówki siły grawitacji się znoszą. Pompa pokonuje wyłącznie opory tarcia rur (H).
            </p>
        </div>
    </div>

    <div class="rk-char-compare-sec" id="rkCompareStage">
        <div class="rk-comp-header">
            <h3>Porównanie technologii pomp obiegowych</h3>
            <p style="font-size: 14px; color: var(--rk-char-slate);">Wybierz technologię, aby sprawdzić jej parametry eksploatacyjne i koszty energii.</p>
        </div>

        <div class="rk-tabs-nav">
            <button class="rk-tab-btn active" data-index="0" data-type="ac">Pompa AC (Starszy typ)</button>
            <button class="rk-tab-btn" data-index="1" data-type="ec-const">Pompa EC (Biegi stałe)</button>
            <button class="rk-tab-btn" data-index="2" data-type="ec-auto">Pompa EC (AUTOADAPT)</button>
            <div class="rk-tab-glider" id="rkTabGlider"></div>
        </div>

        <div class="rk-data-grid" id="rkDataGrid">
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg></div>
                <div class="rk-data-val" id="valPow">45-90 W</div>
                <div class="rk-data-lbl">Pobór Mocy</div>
            </div>
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-data-val" id="valEei">≥ 0,40</div>
                <div class="rk-data-lbl">Wskaźnik EEI</div>
            </div>
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-data-val" id="valReg" style="font-size: 16px;">Manualna (3 biegi)</div>
                <div class="rk-data-lbl">Regulacja</div>
            </div>
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-data-val" id="valCost">~288 PLN</div>
                <div class="rk-data-lbl">Roczny Koszt Energii</div>
            </div>
        </div>

        <div class="rk-tech-visual state-ac" id="rkTechVisualArea">
            <div style="width: 120px; height: 120px; position: relative;">
                <svg viewBox="0 0 100 100" width="100%" height="100%">
                    <circle cx="50" cy="50" r="45" fill="#f1f5f9" stroke="#cbd5e1" stroke-width="2"/>
                    <circle cx="50" cy="50" r="35" fill="none" stroke-width="4" class="svg-ring"/>
                    <circle cx="50" cy="50" r="12" fill="#1e293b"/>
                </svg>
            </div>
            <div class="rk-tech-desc">
                <div class="rk-tech-badge" id="descBadge">Technologia Przestarzała</div>
                <p id="descText">Pompa asynchroniczna pracująca ze stałą, wysoką prędkością. Zużywa maksymalną ilość energii niezależnie od tego, czy zawory termostatyczne są otwarte czy zamknięte. Niezgodna z obecną dyrektywą ErP.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-tab-btn');
    const glider = document.getElementById('rkTabGlider');
    const visualArea = document.getElementById('rkTechVisualArea');
    const dataGrid = document.getElementById('rkDataGrid');
    
    // Data Elements
    const valPow = document.getElementById('valPow');
    const valEei = document.getElementById('valEei');
    const valReg = document.getElementById('valReg');
    const valCost = document.getElementById('valCost');
    const descBadge = document.getElementById('descBadge');
    const descText = document.getElementById('descText');

    const pumpData = {
        "ac": {
            pow: "45-90 W", eei: "≥ 0,40", reg: "Manualna (3 biegi)", cost: "144-288 PLN",
            badge: "Technologia Przestarzała",
            desc: "Pompa asynchroniczna pracująca ze stałą, wysoką prędkością. Zużywa maksymalną ilość energii niezależnie od tego, czy zawory termostatyczne są otwarte czy zamknięte. Niezgodna z obecną dyrektywą ErP."
        },
        "ec-const": {
            pow: "12-45 W", eei: "≤ 0,23", reg: "Proporcjonalna", cost: "38-144 PLN",
            badge: "Standard Rynkowy",
            desc: "Pompa z silnikiem elektronicznie komutowanym (EC). Oferuje ręczną zmianę charakterystyki pracy. Jest znacznie oszczędniejsza, ale wymaga ręcznego dopasowania krzywej do instalacji."
        },
        "ec-auto": {
            pow: "4-25 W", eei: "≤ 0,20", reg: "Automatyczna (ADAPT)", cost: "12-80 PLN",
            badge: "Najwyższa Efektywność",
            desc: "Inteligentna pompa z silnikiem EC, która automatycznie analizuje opory instalacji. Sama dobiera minimalne wymagane ciśnienie i przepływ, gwarantując najniższe możliwe zużycie prądu i ciszę."
        }
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Glider positioning
            const index = this.getAttribute('data-index');
            let transformVal = 0;
            
            // Calculating transform based on index and viewport width
            if (window.innerWidth <= 768) {
                transformVal = index * 100;
                glider.style.transform = `translateX(calc(${transformVal}% + ${index * 4}px))`;
            } else {
                transformVal = index * 100;
                glider.style.transform = `translateX(calc(${transformVal}% + ${index * 4}px))`;
            }

            // Colors update
            let color = '';
            const type = this.getAttribute('data-type');
            if(type === 'ac') color = '#ef4444';
            if(type === 'ec-const') color = '#f59e0b';
            if(type === 'ec-auto') color = '#10b981';
            glider.style.backgroundColor = color;

            // Active Class
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Data Population
            const d = pumpData[type];
            valPow.textContent = d.pow;
            valEei.textContent = d.eei;
            valReg.textContent = d.reg;
            valCost.textContent = d.cost;
            descBadge.textContent = d.badge;
            descText.textContent = d.desc;

            // Visual State Update
            visualArea.className = `rk-tech-visual state-${type}`;
            dataGrid.className = `rk-data-grid state-${type}`;
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-dobor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak dobrać parametry pompy obiegowej do podłogówki i jak czytać jej charakterystykę?",
    "description": "Poradnik wyjaśniający inżynieryjne parametry przepływu (Q) i wysokości podnoszenia (H) w pompach obiegowych. Porównanie technologii AC, EC i AUTOADAPT.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-technologie",
    "name": "Porównanie technologii pomp obiegowych (AC vs EC) 2026",
    "description": "Zestawienie parametrów technicznych i kosztów eksploatacji dla 3 generacji pomp cyrkulacyjnych stosowanych w instalacjach ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "parametry pompy obiegowej do podłogówki",
      "wydajność pompy obiegowej",
      "wysokość podnoszenia pompy co to jest",
      "wskaźnik eei w pompach",
      "koszt energii pompy obiegowej"
    ],
    "measurementTechnique": "Analiza wskaźników zużycia energii elektrycznej i krzywych pracy dla pomp asynchronicznych oraz elektronicznie komutowanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pompa AC: 45-90W, Koszt ~288 PLN/rok",
        "Pompa EC (Stała): 12-45W, Koszt ~144 PLN/rok",
        "Pompa EC (Autoadapt): 4-25W, Koszt ~80 PLN/rok"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-technologie",
    "name": "Kalkulator Oszczędności Technologii Pomp",
    "description": "Interaktywny moduł edukacyjny z zakładkami, pozwalający inwestorowi porównać roczne koszty poboru mocy oraz efektywność energetyczną różnych typów pomp obiegowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-calc-dark: #1e1b4b; /* Deep Indigo */
    --rk-calc-primary: #6366f1; /* Indigo */
    --rk-calc-primary-light: #e0e7ff;
    --rk-calc-accent: #f97316; /* Orange */
    --rk-calc-bg: #f8fafc;
    --rk-calc-card: #ffffff;
    --rk-calc-text: #475569;
    --rk-calc-border: #e2e8f0;
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-card);
    border-radius: 24px;
    box-shadow: 0 20px 50px -10px rgba(99, 102, 241, 0.15);
    border: 1px solid rgba(99, 102, 241, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-calc-header {
    padding: 35px 40px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #312e81 100%);
    color: #ffffff;
    text-align: center;
}

.rk-calc-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-calc-header p {
    font-size: 16px;
    color: #c7d2fe;
    margin: 0 auto;
    max-width: 800px;
    line-height: 1.6;
}

/* Interaktywny Kalkulator - Layout */
.rk-calc-app {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-bottom: 1px solid var(--rk-calc-border);
    background: var(--rk-calc-bg);
}

/* Lewa Kolumna - Suwaki */
.rk-calc-controls {
    padding: 35px;
    border-right: 1px solid var(--rk-calc-border);
    background: var(--rk-calc-card);
}

.rk-ctrl-box {
    margin-bottom: 30px;
}

.rk-ctrl-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    margin-bottom: 12px;
}

.rk-ctrl-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-ctrl-val-box {
    background: var(--rk-calc-primary-light);
    color: var(--rk-calc-primary);
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

/* Styl suwaka */
.rk-range {
    -webkit-appearance: none;
    width: 100%;
    height: 6px;
    background: #cbd5e1;
    border-radius: 3px;
    outline: none;
}

.rk-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-calc-primary);
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(99, 102, 241, 0.4);
    border: 3px solid #ffffff;
    transition: transform 0.1s;
}

.rk-range:active::-webkit-slider-thumb { transform: scale(1.15); }

.rk-range-desc {
    display: block;
    margin-top: 8px;
    font-size: 12px;
    color: #64748b;
    font-weight: 500;
}

/* Prawa Kolumna - Wyniki i Wykres SVG */
.rk-calc-visual {
    padding: 35px;
    display: flex;
    flex-direction: column;
}

.rk-result-row {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
}

.rk-res-card {
    flex: 1;
    background: var(--rk-calc-card);
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 15px;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    position: relative;
    overflow: hidden;
}

.rk-res-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 4px;
    background: var(--rk-calc-primary);
}

.rk-res-card:nth-child(2)::before { background: var(--rk-calc-accent); }

.rk-res-val {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin-bottom: 4px;
    font-variant-numeric: tabular-nums;
}

.rk-res-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-calc-text);
    text-transform: uppercase;
}

.rk-graph-box {
    flex: 1;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
}

.rk-graph-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    text-align: center;
    margin-bottom: 15px;
}

/* Wyjaśnienie Krok po Kroku */
.rk-steps-area {
    padding: 40px;
    background: #ffffff;
}

.rk-step-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-step-card {
    background: var(--rk-calc-bg);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-calc-border);
}

.rk-step-card h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-step-badge {
    width: 28px;
    height: 28px;
    background: var(--rk-calc-primary);
    color: white;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 900;
}

.rk-step-card p {
    font-size: 14px;
    color: var(--rk-calc-text);
    line-height: 1.6;
    margin: 0 0 12px 0;
}

.rk-step-card a {
    color: var(--rk-calc-primary);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-math-block {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-left: 4px solid var(--rk-calc-primary);
    padding: 12px 15px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 14px;
    color: var(--rk-calc-dark);
    margin: 15px 0;
    overflow-x: auto;
}

.rk-math-block strong {
    color: var(--rk-calc-primary);
    font-size: 15px;
}

.rk-step-card ul {
    margin: 0 0 15px 0;
    padding-left: 20px;
    font-size: 13px;
    color: var(--rk-calc-text);
    line-height: 1.6;
}

.rk-step-card li { margin-bottom: 4px; }

@media (max-width: 768px) {
    .rk-calc-app, .rk-step-grid { grid-template-columns: 1fr; }
    .rk-calc-controls { border-right: none; border-bottom: 1px solid var(--rk-calc-border); padding: 25px; }
    .rk-calc-visual, .rk-steps-area, .rk-calc-header { padding: 25px; }
    .rk-calc-header h2 { font-size: 24px; }
}
</style>

<div class="rk-calc-container" id="rkPumpCalculatorApp">
    
    <div class="rk-calc-header">
        <h2>Jak obliczyć wydajność i wysokość podnoszenia pompy obiegowej? Kalkulator krok po kroku</h2>
        <p>Obliczenie parametrów pompy obiegowej opiera się na matematycznym wyznaczeniu przepływu masowego oraz sumy strat ciśnienia liniowego i miejscowego. Sprawdź parametry interaktywnie.</p>
    </div>

    <div class="rk-calc-app">
        <div class="rk-calc-controls">
            
            <div class="rk-ctrl-box">
                <div class="rk-ctrl-header">
                    <span class="rk-ctrl-label">Moc instalacji (Φ)</span>
                    <span class="rk-ctrl-val-box" id="valPhiOut">12 kW</span>
                </div>
                <input type="range" id="rkInpPhi" class="rk-range" min="4" max="25" step="1" value="12">
                <span class="rk-range-desc">Projektowe obciążenie cieplne na podstawie <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń OZC</a>.</span>
            </div>

            <div class="rk-ctrl-box">
                <div class="rk-ctrl-header">
                    <span class="rk-ctrl-label">Różnica temp. (ΔT)</span>
                    <span class="rk-ctrl-val-box" id="valDtOut">5 K</span>
                </div>
                <input type="range" id="rkInpDt" class="rk-range" min="3" max="10" step="1" value="5">
                <span class="rk-range-desc"><a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Spadek temperatury (ΔT)</a> między zasilaniem a powrotem.</span>
            </div>

            <div class="rk-ctrl-box">
                <div class="rk-ctrl-header">
                    <span class="rk-ctrl-label">Najdłuższa pętla (l)</span>
                    <span class="rk-ctrl-val-box" id="valLenOut">100 m</span>
                </div>
                <input type="range" id="rkInpLen" class="rk-range" min="50" max="150" step="5" value="100">
                <span class="rk-range-desc">Krytyczna <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">długość pętli ogrzewania podłogowego</a> generująca największe opory.</span>
            </div>

        </div>

        <div class="rk-calc-visual">
            <div class="rk-result-row">
                <div class="rk-res-card">
                    <div class="rk-res-val" id="resQ">2.06</div>
                    <div class="rk-res-lbl">Wydajność (Q) [m³/h]</div>
                </div>
                <div class="rk-res-card">
                    <div class="rk-res-val" id="resH">2.21</div>
                    <div class="rk-res-lbl">Wys. podnoszenia (H) [m]</div>
                </div>
            </div>

            <div class="rk-graph-box">
                <div class="rk-graph-title">Wykres Punktu Pracy Pompy</div>
                <svg viewBox="0 0 300 150" style="width: 100%; height: auto; display: block; overflow: visible;">
                    <line x1="20" y1="130" x2="280" y2="130" stroke="#cbd5e1" stroke-width="1" />
                    <line x1="20" y1="10" x2="20" y2="130" stroke="#cbd5e1" stroke-width="1" />
                    <text x="280" y="145" font-size="10" fill="#64748b" text-anchor="end">Q (Przepływ)</text>
                    <text x="5" y="15" font-size="10" fill="#64748b" text-anchor="start">H</text>

                    <path d="M 20 20 Q 150 20 280 130" fill="none" stroke="#e2e8f0" stroke-width="4" stroke-dasharray="5 5" />
                    
                    <path id="svgSystemCurve" d="M 20 130 Q 80 130 150 70" fill="none" stroke="#f97316" stroke-width="3" />
                    
                    <line id="svgLineX" x1="20" y1="70" x2="150" y2="70" stroke="#6366f1" stroke-width="1" stroke-dasharray="3 3" />
                    <line id="svgLineY" x1="150" y1="130" x2="150" y2="70" stroke="#6366f1" stroke-width="1" stroke-dasharray="3 3" />
                    
                    <circle id="svgDot" cx="150" cy="70" r="6" fill="#6366f1" />
                </svg>
            </div>
        </div>
    </div>

    <div class="rk-steps-area">
        <div class="rk-step-grid">
            
            <div class="rk-step-card">
                <h3><div class="rk-step-badge">1</div> Obliczenie wydajności (Q)</h3>
                <p>Do wyznaczenia przepływu stosujemy podstawowe równanie wymiany ciepła przekształcone do postaci strumienia objętości.</p>
                
                <div class="rk-math-block">Q = Φ / (1,163 × ΔT)</div>
                
                <ul>
                    <li><strong>Q</strong> – wydajność pompy [m³/h]</li>
                    <li><strong>Φ</strong> – obciążenie cieplne instalacji [kW]</li>
                    <li><strong>ΔT</strong> – różnica temperatur zasilanie/powrót [K]</li>
                    <li><strong>1,163</strong> – stała gęstości/ciepła wody</li>
                </ul>

                <p style="font-size: 13px; margin-top: 15px;"><strong>Przykład dla ustalonego suwaka:</strong><br>
                Dla <span id="txtPhi">12</span> kW i ΔT = <span id="txtDt">5</span> K:</p>
                <div class="rk-math-block" style="border-left-color: #cbd5e1; background: #f8fafc;">
                    Q = <span id="txtPhi2">12</span> / (1,163 × <span id="txtDt2">5</span>)<br>
                    Q ≈ <strong id="txtResQ">2.06</strong> m³/h
                </div>
            </div>

            <div class="rk-step-card">
                <h3><div class="rk-step-badge">2</div> Wyznaczenie podnoszenia (H)</h3>
                <p>Wysokość podnoszenia obliczamy z sumy strat ciśnienia najdłuższego obiegu (pętli krytycznej).</p>
                
                <div class="rk-math-block">
                    Δp<sub>tot</sub> = (R × l + Δp<sub>m</sub>) × 1,3<br>
                    H = Δp<sub>tot</sub> / 10000
                </div>

                <ul>
                    <li><strong>R</strong> – opór rury (założono 120 Pa/m)</li>
                    <li><strong>l</strong> – długość najdłuższej pętli [m]</li>
                    <li><strong>Δp<sub>m</sub></strong> – opory miejscowe (założono 5000 Pa)</li>
                    <li><strong>1,3</strong> – współczynnik bezpieczeństwa</li>
                </ul>

                <p style="font-size: 13px; margin-top: 15px;"><strong>Przykład dla pętli <span id="txtLen">100</span> m:</strong></p>
                <div class="rk-math-block" style="border-left-color: #cbd5e1; background: #f8fafc;">
                    Δp<sub>tot</sub> = (120 × <span id="txtLen2">100</span> + 5000) × 1,3<br>
                    Δp<sub>tot</sub> = <span id="txtPa">22100</span> Pa<br>
                    H = <span id="txtPa2">22100</span> / 10000 = <strong id="txtResH">2.21</strong> m H₂O
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Input elements
    const inpPhi = document.getElementById('rkInpPhi');
    const inpDt = document.getElementById('rkInpDt');
    const inpLen = document.getElementById('rkInpLen');

    // UI Value Output elements
    const valPhiOut = document.getElementById('valPhiOut');
    const valDtOut = document.getElementById('valDtOut');
    const valLenOut = document.getElementById('valLenOut');

    // Result elements
    const resQ = document.getElementById('resQ');
    const resH = document.getElementById('resH');

    // Text replacement elements
    const txtPhi = document.getElementById('txtPhi');
    const txtPhi2 = document.getElementById('txtPhi2');
    const txtDt = document.getElementById('txtDt');
    const txtDt2 = document.getElementById('txtDt2');
    const txtResQ = document.getElementById('txtResQ');
    
    const txtLen = document.getElementById('txtLen');
    const txtLen2 = document.getElementById('txtLen2');
    const txtPa = document.getElementById('txtPa');
    const txtPa2 = document.getElementById('txtPa2');
    const txtResH = document.getElementById('txtResH');

    // SVG elements
    const svgSystemCurve = document.getElementById('svgSystemCurve');
    const svgDot = document.getElementById('svgDot');
    const svgLineX = document.getElementById('svgLineX');
    const svgLineY = document.getElementById('svgLineY');

    // Graph configuration
    const graphWidth = 260; // 280 - 20
    const graphHeight = 120; // 130 - 10
    const maxQ = 6; // max m3/h on graph
    const maxH = 6; // max m H2O on graph

    function updateCalculator() {
        const phi = parseFloat(inpPhi.value);
        const dt = parseFloat(inpDt.value);
        const len = parseFloat(inpLen.value);

        // UI Updates
        valPhiOut.textContent = phi + ' kW';
        valDtOut.textContent = dt + ' K';
        valLenOut.textContent = len + ' m';

        // Calculations
        const qVal = phi / (1.163 * dt);
        
        const R = 120; // Pa/m fixed for simulation
        const pm = 5000; // Pa fixed local resistance
        const pTot = (R * len + pm) * 1.3;
        const hVal = pTot / 10000;

        // Set Results
        resQ.textContent = qVal.toFixed(2);
        resH.textContent = hVal.toFixed(2);

        // Update Text Logic block
        txtPhi.textContent = phi; txtPhi2.textContent = phi;
        txtDt.textContent = dt; txtDt2.textContent = dt;
        txtResQ.textContent = qVal.toFixed(2);
        
        txtLen.textContent = len; txtLen2.textContent = len;
        txtPa.textContent = pTot.toFixed(0); txtPa2.textContent = pTot.toFixed(0);
        txtResH.textContent = hVal.toFixed(2);

        // Update SVG Graph
        // Calculate coordinates (Origin is at 20, 130)
        let cx = 20 + (qVal / maxQ) * graphWidth;
        let cy = 130 - (hVal / maxH) * graphHeight;

        // Clamp values for visual sanity if they exceed graph
        if(cx > 280) cx = 280;
        if(cy < 10) cy = 10;

        // Update Dot and Lines
        svgDot.setAttribute('cx', cx);
        svgDot.setAttribute('cy', cy);
        
        svgLineX.setAttribute('x2', cx);
        svgLineX.setAttribute('y1', cy);
        svgLineX.setAttribute('y2', cy);
        
        svgLineY.setAttribute('x1', cx);
        svgLineY.setAttribute('x2', cx);
        svgLineY.setAttribute('y1', 130);
        svgLineY.setAttribute('y2', cy);

        // Draw parabolic system curve
        // Parabola equation: H = k * Q^2 -> passing through origin (20,130) and point (cx,cy)
        // Control point for quadratic bezier to approximate parabola:
        const cpX = 20 + (cx - 20) / 2;
        const cpY = 130; 
        svgSystemCurve.setAttribute('d', `M 20 130 Q ${cpX} ${cpY} ${cx} ${cy}`);
    }

    // Listeners
    inpPhi.addEventListener('input', updateCalculator);
    inpDt.addEventListener('input', updateCalculator);
    inpLen.addEventListener('input', updateCalculator);

    // Initial run
    updateCalculator();
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak obliczyć wydajność i wysokość podnoszenia pompy obiegowej? Kalkulator krok po kroku",
    "description": "Zestawienie inżynierskich wzorów na przepływ i straty ciśnienia w podłogówce. Interaktywny algorytm wyliczający punkt pracy pompy obiegowej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-algorytm",
    "name": "Algorytm doboru parametrów Q i H pompy obiegowej 2026",
    "description": "Matematyczny model obliczeniowy strat ciśnienia i przepływu objętościowego dla pętli ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenie wydajności pompy obiegowej",
      "wysokość podnoszenia pompy wzór",
      "kalkulator doboru pompy obiegowej",
      "opory miejscowe i liniowe podłogówka",
      "punkt pracy pompy wykres"
    ],
    "measurementTechnique": "Równanie wymiany ciepła oraz sumowanie strat ciśnienia liniowego (120 Pa/m) i miejscowego z współczynnikiem 1.3.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Q [m3/h] = Moc [kW] / (1.163 * Delta T)",
        "H [m H2O] = (Opory rur + Opory zaworów) * 1.3 / 10000"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-kalkulator",
    "name": "Kalkulator Punktu Pracy Pompy Obiegowej",
    "description": "Narzędzie inżynierskie pozwalające na dynamiczne wyliczenie parametrów Q i H oraz narysowanie charakterystyki instalacji na podstawie suwaków.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-mod-dark: #0f172a;
    --rk-mod-slate: #334155;
    --rk-mod-bg: #f8fafc;
    --rk-mod-card: #ffffff;
    --rk-mod-border: #e2e8f0;
    
    /* Temat kolorystyczny - Techniczny Teal */
    --rk-mod-teal: #0d9488;
    --rk-mod-teal-light: #ccfbf1;
    --rk-mod-teal-dark: #115e59;
    --rk-mod-red: #ef4444;
    --rk-mod-red-light: #fee2e2;
}

.rk-mod-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-mod-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(13, 148, 136, 0.15);
    border: 1px solid rgba(13, 148, 136, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-mod-header {
    padding: 35px 40px;
    background: linear-gradient(135deg, var(--rk-mod-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-mod-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-mod-header p {
    font-size: 16px;
    color: #94a3b8;
    margin: 0;
    max-width: 800px;
    line-height: 1.6;
}

/* Układ główny */
.rk-mod-layout {
    display: grid;
    grid-template-columns: 380px 1fr;
    border-bottom: 1px solid var(--rk-mod-border);
}

/* Panel Sterowania */
.rk-mod-controls {
    padding: 35px;
    background: var(--rk-mod-bg);
    border-right: 1px solid var(--rk-mod-border);
}

.rk-ctrl-group {
    margin-bottom: 30px;
}

.rk-ctrl-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-mod-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Mode Switch (CP vs PP) */
.rk-mode-switch {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 4px;
    position: relative;
}

.rk-mode-switch input { display: none; }

.rk-mode-label {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-mod-slate);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 2;
}

.rk-mode-switch input:checked + .rk-mode-label {
    color: #ffffff;
}

.rk-mode-glider {
    position: absolute;
    top: 4px; left: 4px;
    height: calc(100% - 8px);
    width: calc(50% - 4px);
    background: var(--rk-mod-teal);
    border-radius: 8px;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    z-index: 1;
}

#rkModePP:checked ~ .rk-mode-glider {
    transform: translateX(100%);
    background: var(--rk-mod-red);
}

/* Termostaty (Checkbox) */
.rk-thermo-box {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 15px;
    background: var(--rk-mod-card);
    border: 1px solid var(--rk-mod-border);
    border-radius: 12px;
    margin-bottom: 10px;
    cursor: pointer;
    transition: all 0.2s;
}

.rk-thermo-box:hover { border-color: var(--rk-mod-teal); }

.rk-thermo-info {
    display: flex;
    flex-direction: column;
}

.rk-thermo-name { font-size: 15px; font-weight: 700; color: var(--rk-mod-dark); }
.rk-thermo-status { font-size: 12px; color: var(--rk-mod-teal); font-weight: 600; transition: color 0.3s; }

.rk-switch-sm {
    position: relative;
    width: 44px; height: 24px;
}

.rk-switch-sm input { display: none; }
.rk-slider-sm {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-mod-teal);
    border-radius: 24px;
    transition: .3s;
}
.rk-slider-sm:before {
    position: absolute;
    content: "";
    height: 18px; width: 18px;
    left: 3px; bottom: 3px;
    background-color: white;
    border-radius: 50%;
    transition: .3s;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.rk-switch-sm input:checked + .rk-slider-sm { background-color: #cbd5e1; }
.rk-switch-sm input:checked + .rk-slider-sm:before { transform: translateX(20px); }

/* Wizualizator */
.rk-mod-visual {
    padding: 35px;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

.rk-dashboard {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-dash-metric {
    flex: 1;
    background: var(--rk-mod-bg);
    border: 1px solid var(--rk-mod-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}

.rk-dash-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-mod-dark);
    font-variant-numeric: tabular-nums;
    transition: color 0.3s;
}

.rk-dash-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-mod-slate);
    text-transform: uppercase;
    margin-top: 4px;
}

.rk-svg-wrapper {
    flex: 1;
    background: var(--rk-mod-bg);
    border-radius: 16px;
    border: 1px solid var(--rk-mod-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

/* SVG Animations */
.rk-pipe { stroke: #cbd5e1; stroke-width: 8; fill: none; stroke-linecap: round; }
.rk-water { stroke: var(--rk-mod-teal); stroke-width: 4; fill: none; stroke-linecap: round; stroke-dasharray: 10 15; transition: stroke 0.3s, opacity 0.3s; }
.rk-valve { transition: transform 0.3s; transform-origin: center; }

.flow-active { animation: waterFlow 1s linear infinite; }
.flow-slow { animation: waterFlow 3s linear infinite; stroke: var(--rk-mod-red); }
.flow-stopped { opacity: 0; }

@keyframes waterFlow { to { stroke-dashoffset: -25; } }

.rk-status-alert {
    position: absolute;
    bottom: 20px; right: 20px;
    padding: 8px 16px;
    background: var(--rk-mod-teal-light);
    color: var(--rk-mod-teal-dark);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    transition: all 0.3s;
    opacity: 1;
}

/* Kontent Opisowy */
.rk-mod-content {
    padding: 40px;
    background: #ffffff;
}

.rk-mod-content h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-mod-dark);
    margin: 0 0 15px 0;
}

.rk-mod-content p {
    font-size: 15px;
    color: var(--rk-mod-slate);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-mod-content a {
    color: var(--rk-mod-teal);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-grid-text {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-top: 25px;
}

.rk-text-box {
    padding: 20px;
    background: var(--rk-mod-bg);
    border-radius: 12px;
    border-left: 4px solid var(--rk-mod-teal);
}

.rk-text-box.box-error {
    border-left-color: var(--rk-mod-red);
}

@media (max-width: 768px) {
    .rk-mod-layout { grid-template-columns: 1fr; }
    .rk-mod-controls { border-right: none; border-bottom: 1px solid var(--rk-mod-border); padding: 25px; }
    .rk-grid-text { grid-template-columns: 1fr; gap: 15px; }
    .rk-mod-visual, .rk-mod-content, .rk-mod-header { padding: 25px; }
    .rk-dashboard { flex-wrap: wrap; }
    .rk-dash-metric { min-width: 40%; }
}
</style>

<div class="rk-mod-container" id="rkPumpModeApp">
    <div class="rk-mod-header">
        <h2>Jaki tryb pracy pompy elektronicznej wybrać: Stałociśnieniowy (CP) czy Proporcjonalny (PP)?</h2>
        <p>W systemach płaszczyznowych, gdzie pętle zamykane są strefowo przez termostaty, wybór trybu determinuje komfort cieplny. Zobacz na żywo, jak błędny tryb &#8222;odcina&#8221; najdalsze pokoje.</p>
    </div>

    <div class="rk-mod-layout">
        <div class="rk-mod-controls">
            
            <div class="rk-ctrl-group">
                <div class="rk-ctrl-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    Ustawienie Pompy (Algorytm)
                </div>
                <div class="rk-mode-switch">
                    <input type="radio" name="pumpMode" id="rkModeCP" value="CP" checked="">
                    <label for="rkModeCP" class="rk-mode-label">Tryb Stałociśnieniowy (CP)</label>
                    
                    <input type="radio" name="pumpMode" id="rkModePP" value="PP">
                    <label for="rkModePP" class="rk-mode-label">Tryb Proporcjonalny (PP)</label>
                    
                    <div class="rk-mode-glider"></div>
                </div>
            </div>

            <div class="rk-ctrl-group">
                <div class="rk-ctrl-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Termostaty Pokojowe
                </div>

                <label class="rk-thermo-box" id="boxT1">
                    <div class="rk-thermo-info">
                        <span class="rk-thermo-name">Salon (Pętla 1)</span>
                        <span class="rk-thermo-status" id="statT1">Grzeje (Zawór otwarty)</span>
                    </div>
                    <div class="rk-switch-sm">
                        <input type="checkbox" id="rkToggle1">
                        <span class="rk-slider-sm"></span>
                    </div>
                </label>

                <label class="rk-thermo-box" id="boxT2">
                    <div class="rk-thermo-info">
                        <span class="rk-thermo-name">Sypialnia (Pętla 2)</span>
                        <span class="rk-thermo-status" id="statT2">Grzeje (Zawór otwarty)</span>
                    </div>
                    <div class="rk-switch-sm">
                        <input type="checkbox" id="rkToggle2">
                        <span class="rk-slider-sm"></span>
                    </div>
                </label>
                
                <div style="font-size: 12px; color: #64748b; margin-top: 10px; text-align: center;">
                    Pętla 3 (Łazienka) jest zawsze otwarta na potrzeby symulacji.
                </div>
            </div>
        </div>

        <div class="rk-mod-visual">
            <div class="rk-dashboard">
                <div class="rk-dash-metric">
                    <div class="rk-dash-val" id="valPress">2.5 m</div>
                    <div class="rk-dash-lbl">Ciśnienie (H)</div>
                </div>
                <div class="rk-dash-metric">
                    <div class="rk-dash-val" id="valPow">22 W</div>
                    <div class="rk-dash-lbl">Pobór Mocy</div>
                </div>
            </div>

            <div class="rk-svg-wrapper">
                <svg viewBox="0 0 300 200" style="width: 100%; height: auto;">
                    <path d="M 50 100 L 100 100" class="rk-pipe"></path>
                    <path d="M 50 100 L 100 100" class="rk-water flow-active" id="flowMain"></path>

                    <circle cx="50" cy="100" r="25" fill="#1e293b"></circle>
                    <circle cx="50" cy="100" r="15" fill="#334155"></circle>

                    <rect x="100" y="40" width="20" height="120" fill="#cbd5e1" rx="4"></rect>

                    <path d="M 120 60 L 250 60" class="rk-pipe"></path>
                    <path d="M 120 60 L 250 60" class="rk-water flow-active" id="flowP1"></path>
                    <circle cx="140" cy="60" r="8" fill="#0d9488" class="rk-valve" id="valve1"></circle>
                    <text x="260" y="64" font-size="12" font-weight="bold" fill="#334155">Salon</text>

                    <path d="M 120 100 L 250 100" class="rk-pipe"></path>
                    <path d="M 120 100 L 250 100" class="rk-water flow-active" id="flowP2"></path>
                    <circle cx="140" cy="100" r="8" fill="#0d9488" class="rk-valve" id="valve2"></circle>
                    <text x="260" y="104" font-size="12" font-weight="bold" fill="#334155">Sypialnia</text>

                    <path d="M 120 140 L 250 140" class="rk-pipe"></path>
                    <path d="M 120 140 L 250 140" class="rk-water flow-active" id="flowP3"></path>
                    <circle cx="140" cy="140" r="8" fill="#0d9488"></circle>
                    <text x="260" y="144" font-size="12" font-weight="bold" fill="#334155">Łazienka</text>
                </svg>

                <div class="rk-status-alert" id="statusAlert">System zbilansowany</div>
            </div>
        </div>
    </div>

    <div class="rk-mod-content">
        <h3>Dlaczego Tryb Stałociśnieniowy (CP) to jedyny wybór?</h3>
        <p>Dla instalacji ogrzewania podłogowego jedynym prawidłowym trybem pracy pompy elektronicznej jest tryb stałociśnieniowy (oznaczany jako <strong>CP – Constant Pressure</strong>). Urządzenie utrzymuje w nim stałą wysokość podnoszenia (ciśnienie) niezależnie od zmian natężenia przepływu, które są naturalnie wywoływane zamykaniem się <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> na rozdzielaczu.</p>
        
        <div class="rk-grid-text">
            <div class="rk-text-box">
                <h4 style="margin: 0 0 10px 0; color: var(--rk-mod-teal);">Mechanika w Trybie CP (Prawidłowa)</h4>
                <p style="font-size: 14px; margin: 0;">Gdy <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostat pokojowy</a> zamknie obieg nagrzanego salonu, pompa natychmiast wyczuwa wzrost oporów. Zmniejsza swoje obroty i pobór prądu (np. do 6W), ale <strong>utrzymuje zadane ciśnienie</strong>. Woda płynie z pełną prędkością przez łazienkę.</p>
            </div>
            <div class="rk-text-box box-error">
                <h4 style="margin: 0 0 10px 0; color: var(--rk-mod-red);">Mechanika w Trybie PP (Błąd)</h4>
                <p style="font-size: 14px; margin: 0;">Wybór trybu proporcjonalnego (PP) jest błędem. Gdy salon się zamyka, pompa sztucznie obniża ciśnienie hydrauliczne w całym układzie. Prowadzi to do drastycznego spowolnienia przepływu i wychłodzenia podłogi np. w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a>.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Controls
    const modeRadios = document.querySelectorAll('input[name="pumpMode"]');
    const toggle1 = document.getElementById('rkToggle1');
    const toggle2 = document.getElementById('rkToggle2');
    
    // Status Text
    const stat1 = document.getElementById('statT1');
    const stat2 = document.getElementById('statT2');
    const alertBox = document.getElementById('statusAlert');
    
    // Metrics
    const valPress = document.getElementById('valPress');
    const valPow = document.getElementById('valPow');
    
    // SVG Elements
    const flowMain = document.getElementById('flowMain');
    const flowP1 = document.getElementById('flowP1');
    const flowP2 = document.getElementById('flowP2');
    const flowP3 = document.getElementById('flowP3');
    const valve1 = document.getElementById('valve1');
    const valve2 = document.getElementById('valve2');

    function updateSim() {
        const mode = document.querySelector('input[name="pumpMode"]:checked').value;
        const v1Closed = toggle1.checked;
        const v2Closed = toggle2.checked;
        
        let openCount = 3;
        if(v1Closed) openCount--;
        if(v2Closed) openCount--;

        // UI Updates for Toggles
        if(v1Closed) {
            stat1.textContent = 'Zamknięty (Osiągnięto temp.)';
            stat1.style.color = '#64748b';
            valve1.style.transform = 'scale(0.3)';
            valve1.style.fill = '#ef4444';
            flowP1.className.baseVal = 'rk-water flow-stopped';
        } else {
            stat1.textContent = 'Grzeje (Zawór otwarty)';
            stat1.style.color = '#0d9488';
            valve1.style.transform = 'scale(1)';
            valve1.style.fill = '#0d9488';
            flowP1.className.baseVal = 'rk-water flow-active';
        }

        if(v2Closed) {
            stat2.textContent = 'Zamknięty (Osiągnięto temp.)';
            stat2.style.color = '#64748b';
            valve2.style.transform = 'scale(0.3)';
            valve2.style.fill = '#ef4444';
            flowP2.className.baseVal = 'rk-water flow-stopped';
        } else {
            stat2.textContent = 'Grzeje (Zawór otwarty)';
            stat2.style.color = '#0d9488';
            valve2.style.transform = 'scale(1)';
            valve2.style.fill = '#0d9488';
            flowP2.className.baseVal = 'rk-water flow-active';
        }

        // Core Simulation Logic
        if(openCount === 3) {
            valPress.textContent = '2.5 m';
            valPress.style.color = '#0f172a';
            valPow.textContent = '22 W';
            flowP3.className.baseVal = 'rk-water flow-active';
            flowMain.className.baseVal = 'rk-water flow-active';
            
            alertBox.textContent = 'Układ zbilansowany (Wszystko otwarte)';
            alertBox.style.background = 'var(--rk-mod-teal-light)';
            alertBox.style.color = 'var(--rk-mod-teal-dark)';
        } 
        else if (mode === 'CP') {
            // Constant Pressure Mode
            valPress.textContent = '2.5 m'; // Stays constant
            valPress.style.color = '#0f172a';
            valPow.textContent = openCount === 2 ? '14 W' : '6 W'; // Power drops adaptively
            flowP3.className.baseVal = 'rk-water flow-active'; // Łazienka still gets full flow
            flowMain.className.baseVal = 'rk-water flow-active';
            
            alertBox.textContent = 'CP: Łazienka dogrzewana poprawnie';
            alertBox.style.background = 'var(--rk-mod-teal-light)';
            alertBox.style.color = 'var(--rk-mod-teal-dark)';
        }
        else if (mode === 'PP') {
            // Proportional Pressure Mode
            valPress.textContent = openCount === 2 ? '1.5 m' : '0.8 m'; // Pressure drops!
            valPress.style.color = '#ef4444';
            valPow.textContent = openCount === 2 ? '10 W' : '4 W'; 
            
            // Flow in remaining loop suffers
            if(openCount === 1) {
                flowP3.className.baseVal = 'rk-water flow-slow';
                flowMain.className.baseVal = 'rk-water flow-slow';
                alertBox.textContent = 'BŁĄD PP: Łazienka niedogrzana! (Spadek ciśnienia)';
                alertBox.style.background = 'var(--rk-mod-red-light)';
                alertBox.style.color = 'var(--rk-mod-red)';
            } else {
                flowP3.className.baseVal = 'rk-water flow-active';
                flowMain.className.baseVal = 'rk-water flow-active';
                alertBox.textContent = 'PP: Spadek ciśnienia. Słabszy przepływ.';
                alertBox.style.background = '#fef3c7';
                alertBox.style.color = '#b45309';
            }
        }
    }

    // Event Listeners
    modeRadios.forEach(r => r.addEventListener('change', updateSim));
    toggle1.addEventListener('change', updateSim);
    toggle2.addEventListener('change', updateSim);

    // Init
    updateSim();
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-tryby-pracy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jaki tryb pracy pompy elektronicznej wybrać: Stałociśnieniowy (CP) czy Proporcjonalny (PP)?",
    "description": "Techniczne porównanie trybów pracy pomp obiegowych (CP vs PP). Dowiedz się, dlaczego tryb proporcjonalny powoduje niedogrzewanie pomieszczeń ze sterowaniem strefowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-tryby-pracy",
    "name": "Charakterystyki Pracy Pomp Obiegowych (CP vs PP) 2026",
    "description": "Zestawienie parametrów ciśnienia i przepływu dla inteligentnych pomp obiegowych w układach z dławieniem termostatycznym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tryb stałociśnieniowy pompy",
      "tryb proporcjonalny podłogówka",
      "zamykanie siłowników termoelektrycznych",
      "spadek ciśnienia w instalacji",
      "niedogrzana łazienka"
    ],
    "measurementTechnique": "Symulacja zmian ciśnienia tłoczenia [m H2O] i poboru mocy [W] w zależności od ilości otwartych zaworów na belce rozdzielacza.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Tryb CP (Constant Pressure): Utrzymuje stałe ciśnienie przy zmniejszonym przepływie, idealny dla podłogówki.",
        "Tryb PP (Proportional Pressure): Redukuje ciśnienie wraz ze spadkiem przepływu, powodując zaburzenia hydrauliczne i niedogrzewanie pętli."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-tryby-pracy",
    "name": "Symulator Hydrauliczny Trybów CP/PP",
    "description": "Narzędzie interaktywne ilustrujące wpływ zamykania siłowników termoelektrycznych na parametry przepływu i ciśnienia w zależności od zadanego algorytmu pompy.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-con-dark: #0f172a;
    --rk-con-text: #334155;
    --rk-con-bg: #f8fafc;
    --rk-con-surface: #ffffff;
    --rk-con-border: #e2e8f0;
    
    /* State Colors */
    --rk-state-weak: #0284c7;   /* Niebieski - niedogrzanie */
    --rk-state-opt: #10b981;    /* Zielony - idealnie */
    --rk-state-strong: #ef4444; /* Czerwony - przeciążenie */
}

.rk-con-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-con-surface);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-con-border);
    overflow: hidden;
}

/* Tagi SEO */
.rk-con-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.rk-mat-tag {
    background: #f1f5f9;
    color: #475569;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid #e2e8f0;
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: #e2e8f0;
    color: var(--rk-con-dark);
}

/* Nagłówek */
.rk-con-header {
    padding: 25px 40px 30px;
    text-align: center;
    border-bottom: 1px solid var(--rk-con-border);
}

.rk-con-header h2 {
    font-size: 30px;
    font-weight: 900;
    color: var(--rk-con-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-con-header p {
    font-size: 16px;
    color: var(--rk-con-text);
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interaktywny Symulator - Obszar Roboczy */
.rk-con-app-area {
    background: linear-gradient(180deg, var(--rk-con-bg) 0%, #ffffff 100%);
    padding: 40px;
}

/* Suwak (Slider) */
.rk-sim-slider-box {
    max-width: 600px;
    margin: 0 auto 40px;
    background: var(--rk-con-surface);
    padding: 25px 35px;
    border-radius: 20px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    border: 1px solid var(--rk-con-border);
    text-align: center;
}

.rk-slider-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--rk-con-dark);
    margin-bottom: 25px;
}

.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #cbd5e1;
    border-radius: 4px;
    outline: none;
    transition: background 0.3s;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-state-opt);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
    border: 4px solid #ffffff;
    transition: background 0.3s, transform 0.1s;
}

.rk-range-input::-moz-range-thumb {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-state-opt);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
    border: 4px solid #ffffff;
    transition: background 0.3s, transform 0.1s;
}

.rk-range-input:active::-webkit-slider-thumb { transform: scale(1.1); }
.rk-range-input:active::-moz-range-thumb { transform: scale(1.1); }

.rk-slider-labels {
    display: flex;
    justify-content: space-between;
    margin-top: 15px;
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
}

/* Wizualizacja SVG */
.rk-con-visual {
    position: relative;
    width: 100%;
    max-width: 400px;
    height: 180px;
    margin: 0 auto 40px;
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-con-border);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.rk-vis-status-badge {
    position: absolute;
    top: 15px;
    right: 15px;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #ffffff;
    transition: background-color 0.3s;
}

/* Animacje SVG zależne od stanu */
.rk-svg-pipe { stroke: #cbd5e1; stroke-width: 12; stroke-linecap: round; fill: none; transition: stroke 0.3s; }
.rk-svg-flow { stroke-width: 6; stroke-linecap: round; fill: none; stroke-dasharray: 15 15; transition: stroke 0.3s; }

/* Stany Wizualizatora */
.state-1 .rk-vis-status-badge { background: var(--rk-state-weak); }
.state-1 .rk-svg-pipe { stroke: #e0f2fe; }
.state-1 .rk-svg-flow { stroke: var(--rk-state-weak); animation: flowAnim 4s linear infinite; }
.state-1 .rk-svg-crack { opacity: 1; stroke-dasharray: 100; animation: drawCrack 2s forwards; }
.state-1 .rk-svg-wave { opacity: 0; }

.state-2 .rk-vis-status-badge { background: var(--rk-state-opt); }
.state-2 .rk-svg-pipe { stroke: #dcfce7; }
.state-2 .rk-svg-flow { stroke: var(--rk-state-opt); animation: flowAnim 1.5s linear infinite; }
.state-2 .rk-svg-crack { opacity: 0; }
.state-2 .rk-svg-wave { opacity: 0; }

.state-3 .rk-vis-status-badge { background: var(--rk-state-strong); }
.state-3 .rk-svg-pipe { stroke: #fee2e2; animation: shakePipe 0.5s infinite; }
.state-3 .rk-svg-flow { stroke: var(--rk-state-strong); animation: flowAnim 0.3s linear infinite; }
.state-3 .rk-svg-crack { opacity: 0; }
.state-3 .rk-svg-wave { opacity: 1; animation: pulseWave 0.5s infinite; }

@keyframes flowAnim { to { stroke-dashoffset: -60; } }
@keyframes drawCrack { from { stroke-dashoffset: 100; } to { stroke-dashoffset: 0; } }
@keyframes shakePipe { 0%, 100% { transform: translateY(0); } 25% { transform: translateY(-2px); } 75% { transform: translateY(2px); } }
@keyframes pulseWave { 0% { opacity: 0.3; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.3; transform: scale(0.9); } }

/* Karty Konsekwencji - Kafelki Grid */
.rk-con-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-con-card {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-con-border);
    border-top: 4px solid var(--rk-state-opt); /* Dynamiczny kolor */
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.3s ease;
}

.rk-con-card.fade-in {
    animation: cardFadeIn 0.4s ease-out forwards;
}

@keyframes cardFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-card-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    background: #f1f5f9;
    color: var(--rk-con-dark);
    transition: all 0.3s;
}

.rk-con-card h3 {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-con-dark);
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-con-card p {
    font-size: 14px;
    color: var(--rk-con-text);
    line-height: 1.6;
    margin: 0;
}

.rk-con-card a {
    color: inherit;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

@media (max-width: 768px) {
    .rk-con-cards { grid-template-columns: 1fr; }
    .rk-con-header { padding: 25px 20px; }
    .rk-con-header h2 { font-size: 24px; }
    .rk-con-app-area { padding: 25px 20px; }
    .rk-sim-slider-box { padding: 20px; }
}
</style>

<div class="rk-con-container" id="rkConsequenceApp">
    <div class="rk-con-tags">
        <span class="rk-mat-tag"># skutki przewymiarowania pompy</span>
        <span class="rk-mat-tag"># taktowanie pompy ciepła</span>
        <span class="rk-mat-tag"># niedogrzewanie strefowe</span>
        <span class="rk-mat-tag"># kawitacja w instalacji</span>
    </div>

    <div class="rk-con-header">
        <h2>Czym grozi zły dobór pompy obiegowej?</h2>
        <p>Konsekwencje błędnego doboru pompy obiegowej przekładają się bezpośrednio na straty finansowe, uciążliwy hałas w domu oraz drastyczne skrócenie żywotności samej wylewki i armatury. Przesuń suwak i zobacz skutki.</p>
    </div>

    <div class="rk-con-app-area">
        
        <div class="rk-sim-slider-box">
            <div class="rk-slider-title">Wydajność Pompy Obiegowej</div>
            <input type="range" min="1" max="3" step="1" value="2" class="rk-range-input" id="rkPumpSlider">
            <div class="rk-slider-labels">
                <span style="color: var(--rk-state-weak);">Za słaba</span>
                <span style="color: var(--rk-state-opt);">Optymalna</span>
                <span style="color: var(--rk-state-strong);">Za mocna</span>
            </div>
        </div>

        <div class="rk-con-visual state-2" id="rkSvgStage">
            <div class="rk-vis-status-badge" id="rkStatusBadge">Zrównoważona</div>
            <svg width="250" height="100" viewBox="0 0 250 100">
                <path d="M 20 50 Q 125 20 230 50" class="rk-svg-pipe" id="rkPipeLine"/>
                <path d="M 20 50 Q 125 20 230 50" class="rk-svg-flow" id="rkWaterFlow"/>
                
                <path d="M 110 10 L 120 30 L 115 45 L 125 60" stroke="#0f172a" stroke-width="2" fill="none" class="rk-svg-crack" opacity="0"/>
                
                <path d="M 125 0 A 20 20 0 0 1 145 20 M 125 -10 A 30 30 0 0 1 155 20" stroke="#ef4444" stroke-width="2" fill="none" class="rk-svg-wave" opacity="0" transform="translate(0, 15)"/>
            </svg>
        </div>

        <div class="rk-con-cards" id="rkCardsGrid">
            <div class="rk-con-card" id="rkCard1" style="border-top-color: var(--rk-state-opt);">
                <div class="rk-card-icon" id="rkIcon1" style="background: #dcfce7; color: var(--rk-state-opt);">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <h3 id="rkTitle1">Idealny przepływ</h3>
                <p id="rkText1">Przepływy na rotametrach stabilne (1,5 &#8211; 2,5 l/min). Równomierne oddawanie ciepła w każdym pomieszczeniu.</p>
            </div>

            <div class="rk-con-card" id="rkCard2" style="border-top-color: var(--rk-state-opt);">
                <div class="rk-card-icon" id="rkIcon2" style="background: #dcfce7; color: var(--rk-state-opt);">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <h3 id="rkTitle2">Bezpieczna wylewka</h3>
                <p id="rkText2">Prawidłowa Delta T zapobiega naprężeniom termicznym. Jastrych pracuje bezpiecznie wzdłuż wyznaczonych dylatacji.</p>
            </div>

            <div class="rk-con-card" id="rkCard3" style="border-top-color: var(--rk-state-opt);">
                <div class="rk-card-icon" id="rkIcon3" style="background: #dcfce7; color: var(--rk-state-opt);">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <h3 id="rkTitle3">Wysoka sprawność (COP)</h3>
                <p id="rkText3">Źródło ciepła pracuje w optymalnych, długich cyklach. Niskie rachunki za energię elektryczną.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rkPumpSlider');
    const svgStage = document.getElementById('rkSvgStage');
    const statusBadge = document.getElementById('rkStatusBadge');
    
    // Elementy Kart
    const cards = [document.getElementById('rkCard1'), document.getElementById('rkCard2'), document.getElementById('rkCard3')];
    const icons = [document.getElementById('rkIcon1'), document.getElementById('rkIcon2'), document.getElementById('rkIcon3')];
    const titles = [document.getElementById('rkTitle1'), document.getElementById('rkTitle2'), document.getElementById('rkTitle3')];
    const texts = [document.getElementById('rkText1'), document.getElementById('rkText2'), document.getElementById('rkText3')];

    // Baza danych dla stanów (Invisible Data logic)
    const simData = {
        "1": {
            color: "#0284c7",
            bg: "#e0f2fe",
            badge: "Niedowymiarowana",
            iconSvg: '<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>',
            content: [
                { title: "Zjawisko niedogrzewania", text: "Przepływ na rotametrach spada poniżej projektowych 1,0 l/min. Najdalsze pokoje i łazienki pozostają niedogrzane." },
                { title: "Szok termiczny wylewki", text: 'Wzrost <a href="https://projekt-ogrzewania.pl/spadek-temperatury-dt-roznica-miedzy-temperatura-zasilania-a-powrotu/">delty temperatur ponad krytyczne 10 K</a> wywołuje potężne naprężenia termiczne i pękanie wylewki.' },
                { title: "Taktowanie pompy ciepła", text: "Zbyt mały przepływ uniemożliwia oddanie mocy. Pompa ciepła zgłasza błąd wysokiego ciśnienia (HP) i co chwilę się wyłącza." }
            ]
        },
        "2": {
            color: "#10b981",
            bg: "#dcfce7",
            badge: "Zrównoważona",
            iconSvg: '<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>',
            content: [
                { title: "Idealny przepływ", text: "Przepływy na rotametrach stabilne (1,5 - 2,5 l/min). Równomierne oddawanie ciepła w każdym pomieszczeniu." },
                { title: "Bezpieczna wylewka", text: 'Prawidłowa Delta T zapobiega naprężeniom. <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">Jastrych betonowy</a> pracuje bezpiecznie wzdłuż wyznaczonych dylatacji.' },
                { title: "Wysoka sprawność (COP)", text: "Źródło ciepła pracuje w optymalnych, długich cyklach bez wywoływania błędów. Gwarancja niskich rachunków." }
            ]
        },
        "3": {
            color: "#ef4444",
            bg: "#fee2e2",
            badge: "Przewymiarowana",
            iconSvg: '<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>',
            content: [
                { title: "Kawitacja i uciążliwy hałas", text: "Przekroczenie prędkości 0,6 m/s generuje głośne szumy i buczenie w szafkach rozdzielaczowych. Brak komfortu akustycznego." },
                { title: "Erozja ścierna rur PEX", text: 'Potężna turbulencja zrywa gniazda zaworów i powoduje wymywanie <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">wewnętrznej warstwy EVOH</a> w rurach.' },
                { title: "Finansowe marnotrawstwo", text: "Za duża pompa pobiera stale o 40–60 W więcej energii niż powinna, co generuje stratę rzędu 120 PLN rocznie na samym prądzie." }
            ]
        }
    };

    function updateSimulation(val) {
        const data = simData[val];
        
        // Aktualizacja SVG Stage
        svgStage.className = `rk-con-visual state-${val}`;
        statusBadge.textContent = data.badge;
        
        // Aktualizacja Kolorów Suwaka (dynamiczny thumb zrealizowany w CSS root variables logicznie, tu wymuszamy styl)
        slider.style.background = `linear-gradient(to right, ${data.color} 0%, ${data.color} ${(val-1)*50}%, #cbd5e1 ${(val-1)*50}%, #cbd5e1 100%)`;

        // Aktualizacja Kart z efektem Fade
        cards.forEach((card, index) => {
            // Restart animacji
            card.classList.remove('fade-in');
            void card.offsetWidth; // trigger reflow
            
            // Wgrywanie danych
            card.style.borderTopColor = data.color;
            icons[index].style.background = data.bg;
            icons[index].style.color = data.color;
            icons[index].innerHTML = data.iconSvg;
            titles[index].textContent = data.content[index].title;
            texts[index].innerHTML = data.content[index].text; // innerHTML bo mamy linki
            
            // Odpal animację
            card.classList.add('fade-in');
        });
    }

    slider.addEventListener('input', (e) => {
        updateSimulation(e.target.value);
    });

    // Inicjalizacja
    updateSimulation(slider.value);
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-konsekwencje",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Czym grozi zły dobór pompy obiegowej? Konsekwencje niedowymiarowania i przewymiarowania",
    "description": "Zrozum hydrauliczne i finansowe skutki instalacji zbyt słabej (niedogrzewanie) lub zbyt mocnej (kawitacja) pompy w układzie ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-konsekwencje",
    "name": "Parametry Krytyczne Pracy Pompy Obiegowej 2026",
    "description": "Dane opisujące wpływ skrajnych nastaw wydajności pompy obiegowej na fizykę zładu grzewczego i żywotność podzespołów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "skutki przewymiarowania pompy",
      "taktowanie pompy ciepła",
      "prędkość przepływu w rurach pex",
      "niedogrzewanie strefowe podłogówki",
      "kawitacja w instalacji grzewczej"
    ],
    "measurementTechnique": "Modelowanie wpływu niedoboru przepływu (<1.0 l/min) i nadmiaru przepływu (>0.6 m/s) na strukturę wylewki, warstwę EVOH i pobór energii.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Niedowymiarowanie: Skutkuje deltą T > 10K, pękaniem jastrychu i błędami HP pompy ciepła.",
        "Przewymiarowanie: Generuje przepływ powyżej 0.6 m/s, prowadząc do kawitacji, erozji warstwy EVOH i strat rzędu 120 PLN/rok."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-konsekwencje",
    "name": "Symulator Skutków Doboru Pompy",
    "description": "Aplikacja edukacyjna z interaktywnym suwakiem, pozwalająca symulować i w czasie rzeczywistym odczytywać skutki instalacji nieodpowiedniej pompy w obwodach płaszczyznowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-slate: #334155;
    --rk-err-bg: #f8fafc;
    --rk-err-card: #ffffff;
    --rk-err-danger: #ef4444;
    --rk-err-danger-light: #fef2f2;
    --rk-err-warn: #f59e0b;
    --rk-err-border: #e2e8f0;
    --rk-err-blue: #0284c7;
    --rk-err-blue-light: #f0f9ff;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(239, 68, 68, 0.1);
    border: 1px solid rgba(239, 68, 68, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-err-header {
    padding: 35px 40px 25px;
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
}

.rk-err-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-err-header p {
    font-size: 16px;
    color: #94a3b8;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Layout Górny (Grid) */
.rk-err-grid {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-err-bg);
}

/* Kolumna Lewa - Menu Błędów */
.rk-err-menu {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-right: 1px solid var(--rk-err-border);
    background: var(--rk-err-card);
}

.rk-err-btn {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 16px;
    border: 2px solid transparent;
    border-radius: 16px;
    background: var(--rk-err-bg);
    cursor: pointer;
    text-align: left;
    transition: all 0.3s;
}

.rk-err-btn:hover {
    background: var(--rk-err-blue-light);
}

.rk-err-btn.active {
    background: var(--rk-err-danger-light);
    border-color: var(--rk-err-danger);
    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.1);
}

.rk-err-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: #e2e8f0;
    color: var(--rk-err-slate);
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-err-btn.active .rk-err-icon {
    background: var(--rk-err-danger);
    color: #ffffff;
}

.rk-err-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
    line-height: 1.3;
}

.rk-err-btn.active .rk-err-title {
    color: var(--rk-err-danger);
}

/* Kolumna Prawa - Wizualizator SVG */
.rk-err-visual {
    padding: 40px;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #ffffff;
    min-height: 250px;
}

.rk-svg-stage {
    width: 100%;
    max-width: 320px;
    height: auto;
}

/* Animacje SVG */
.rk-anim-fast { animation: spinRotor 0.3s linear infinite; stroke: var(--rk-err-danger); }
.rk-anim-jammed { animation: shakeRotor 0.5s ease-in-out infinite; stroke: var(--rk-err-slate); }
.rk-anim-friction { animation: spinRotor 2s linear infinite; stroke: var(--rk-err-warn); filter: drop-shadow(0 0 8px rgba(245, 158, 11, 0.6)); }

@keyframes spinRotor { 100% { transform: rotate(360deg); } }
@keyframes shakeRotor { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(10deg); } 75% { transform: rotate(-10deg); } }
@keyframes flowDirt { 0% { transform: translateX(0); opacity: 0; } 20% { opacity: 1; } 80% { opacity: 1; } 100% { transform: translateX(120px); opacity: 0; } }

.rk-dirt-particle { opacity: 0; }
.show-dirt .rk-dirt-particle { animation: flowDirt 1.5s linear infinite; fill: #78350f; }
.show-dirt .rk-dirt-particle:nth-child(2) { animation-delay: 0.5s; }
.show-dirt .rk-dirt-particle:nth-child(3) { animation-delay: 1s; }

.rk-valve-indicator { opacity: 0; transition: opacity 0.3s; }
.show-valves-missing .rk-valve-indicator { opacity: 1; }

.rk-friction-ring { opacity: 0; transform-origin: 150px 75px; }
.show-friction .rk-friction-ring { opacity: 1; animation: pulseRing 1s ease-out infinite; stroke: var(--rk-err-warn); }
@keyframes pulseRing { 0% { transform: scale(0.8); opacity: 0.8; } 100% { transform: scale(1.5); opacity: 0; } }

/* Treść Detalu - PEŁNA SZEROKOŚĆ (zmiana strukturalna) */
.rk-err-content-box {
    padding: 40px;
    background: var(--rk-err-bg);
    border-top: 1px solid var(--rk-err-border);
}

.rk-err-panel {
    display: none;
    animation: fadeInPanel 0.4s ease-out;
}

.rk-err-panel.active {
    display: block;
}

@keyframes fadeInPanel {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-err-panel h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-err-panel h3::before {
    content: '!';
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    background: var(--rk-err-danger);
    color: white;
    font-size: 15px;
    border-radius: 6px;
}

.rk-err-panel p {
    font-size: 15px;
    color: var(--rk-err-slate);
    line-height: 1.7;
    margin: 0 0 15px 0;
    max-width: 850px; /* Optymalizacja czytelności na pełnej szerokości */
}

.rk-err-panel a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.2s;
}

.rk-err-panel a:hover {
    border-color: var(--rk-err-blue);
}

.rk-consequence {
    margin-top: 25px;
    padding: 18px 25px;
    background: #ffffff;
    border-left: 4px solid var(--rk-err-danger);
    border-radius: 0 12px 12px 0;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
    max-width: 850px;
}

.rk-consequence strong {
    display: block;
    font-size: 13px;
    text-transform: uppercase;
    color: var(--rk-err-danger);
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.rk-consequence span {
    font-size: 15px;
    color: var(--rk-err-dark);
    font-weight: 600;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-menu { border-right: none; border-bottom: 1px solid var(--rk-err-border); flex-direction: row; flex-wrap: wrap; }
    .rk-err-btn { flex: 1 1 calc(50% - 5px); padding: 12px; gap: 10px; }
    .rk-err-icon { width: 32px; height: 32px; }
    .rk-err-title { font-size: 12px; }
    .rk-err-header { padding: 25px 20px; }
    .rk-err-header h2 { font-size: 22px; }
    .rk-err-content-box { padding: 30px 20px; }
    .rk-err-visual { padding: 20px; min-height: 200px; }
}
</style>

<div class="rk-err-container" id="rkErrorSimulator">
    
    <div class="rk-err-header">
        <h2>Jakie są najczęstsze błędy instalatorów przy montażu i konfiguracji pomp obiegowych?</h2>
        <p>Najczęstsze awarie pomp obiegowych wynikają z braku weryfikacji parametrów hydraulicznych oraz ignorowania podstawowych zasad czystości zładu wodnego. Wybierz symulację i zobacz konsekwencje.</p>
    </div>

    <div class="rk-err-grid">
        <div class="rk-err-menu">
            <button class="rk-err-btn active" data-target="err-gear">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg></div>
                <h4 class="rk-err-title">Fabryczny bieg 3</h4>
            </button>
            <button class="rk-err-btn" data-target="err-valves">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg></div>
                <h4 class="rk-err-title">Brak zaworów odcinających</h4>
            </button>
            <button class="rk-err-btn" data-target="err-dirt">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg></div>
                <h4 class="rk-err-title">Zabrudzony zład wodny</h4>
            </button>
            <button class="rk-err-btn" data-target="err-air">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <h4 class="rk-err-title">Brak odpowietrzenia</h4>
            </button>
        </div>

        <div class="rk-err-visual">
            <svg class="rk-svg-stage" viewBox="0 0 300 150" preserveAspectRatio="xMidYMid meet" id="svgStage">
                <rect x="20" y="60" width="260" height="30" fill="#cbd5e1" rx="4"></rect>
                <rect x="20" y="60" width="260" height="4" fill="#94a3b8"></rect>
                
                <g class="rk-valve-indicator">
                    <line x1="60" y1="40" x2="80" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                    <line x1="80" y1="40" x2="60" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                    <line x1="220" y1="40" x2="240" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                    <line x1="240" y1="40" x2="220" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                </g>

                <g class="rk-dirt-group">
                    <circle cx="30" cy="75" r="4" class="rk-dirt-particle"></circle>
                    <circle cx="20" cy="80" r="3" class="rk-dirt-particle"></circle>
                    <circle cx="10" cy="70" r="5" class="rk-dirt-particle"></circle>
                </g>

                <circle cx="150" cy="75" r="45" fill="#1e293b"></circle>
                <circle cx="150" cy="75" r="35" fill="#334155"></circle>
                
                <circle cx="150" cy="75" r="20" fill="none" stroke-width="4" class="rk-friction-ring"></circle>
                <circle cx="150" cy="75" r="30" fill="none" stroke-width="2" class="rk-friction-ring" style="animation-delay: 0.3s;"></circle>

                <g style="transform-origin: 150px 75px;" id="svgRotor" class="rk-anim-fast">
                    <line x1="150" y1="45" x2="150" y2="105" stroke-width="8" stroke-linecap="round"></line>
                    <line x1="120" y1="75" x2="180" y2="75" stroke-width="8" stroke-linecap="round"></line>
                    <circle cx="150" cy="75" r="8" fill="#ffffff"></circle>
                </g>

                <rect x="135" y="125" width="30" height="20" rx="4" fill="#0f172a"></rect>
                <text x="150" y="139" fill="#ef4444" font-size="12" font-family="monospace" font-weight="bold" text-anchor="middle" id="svgDisplay">45W</text>
            </svg>
        </div>
    </div>

    <div class="rk-err-content-box">
        <div class="rk-err-panel active" id="err-gear">
            <h3>Zostawienie fabrycznego biegu (Bieg 3)</h3>
            <p>Instalatorzy po montażu uruchamiają pompę na maksymalnych obrotach, aby szybko odpowietrzyć układ, zapominając o przełączeniu urządzenia w tryb <strong>AUTO</strong> lub <strong>Stałociśnieniowy</strong>.</p>
            <p>Skutkuje to ciągłym poborem maksymalnej mocy przez urządzenie, ignorując całkowicie zalety silników adaptacyjnych.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Ciągły pobór np. 45 W zamiast 8 W przez cały rok. Generowanie szumów w <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">instalacji podłogowej</a>.</span>
            </div>
        </div>

        <div class="rk-err-panel" id="err-valves">
            <h3>Montaż pompy bez odcinających zaworów</h3>
            <p>Brak zaworów kulowych ze śrubunkami tuż przed i tuż za pompą obiegową. Jest to oszczędność rzędu kilkudziesięciu złotych, która mści się przy pierwszej konserwacji.</p>
            <p>Uniemożliwia to szybki demontaż urządzenia lub czyszczenie filtra siatkowego bez integracji w zład całej instalacji.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Konieczność spuszczania kilkuset litrów <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">wody demineralizowanej z inhibitorem korozji</a> z całego układu, aby wyczyścić filtr lub wymienić pompę.</span>
            </div>
        </div>

        <div class="rk-err-panel" id="err-dirt">
            <h3>Uruchomienie w brudnej instalacji</h3>
            <p>Zaniechanie płukania zładu przed rozruchem to proszenie się o kłopoty. Pozostałości po montażu, takie jak opiłki tworzywa sztucznego z kalibratora rur PEX czy resztki pakuł uszczelniających, trafiają swobodnie do obiegu.</p>
            <p>Zanieczyszczenia są następnie zasysane prosto do precyzyjnej komory wirnika nowej pompy.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Permanentne zablokowanie mechaniczne i przepalenie stojana przy pierwszym uruchomieniu pompy. Błąd ten automatycznie skutkuje odmową naprawy gwarancyjnej.</span>
            </div>
        </div>

        <div class="rk-err-panel" id="err-air">
            <h3>Brak odpowietrzenia przed startem</h3>
            <p>Nowoczesne pompy posiadają wprawdzie funkcję automatycznego odpowietrzania, jednak przy całkowicie pierwszym napełnianiu ręczne poluzowanie śruby czołowej wału jest absolutnie kluczowe.</p>
            <p>Woda stanowi naturalną poduszkę poślizgową dla ceramicznych łożysk w pompach bezdławnicowych. Jej brak to destrukcja mechaniczna.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Tarcie suchych łożysk powodujące ich natychmiastowe uszkodzenie, zablokowanie urządzenia oraz głośne <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawy zapowietrzenia</a>.</span>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const errorBtns = document.querySelectorAll('.rk-err-btn');
    const panels = document.querySelectorAll('.rk-err-panel');
    const svgStage = document.getElementById('svgStage');
    const svgRotor = document.getElementById('svgRotor');
    const svgDisplay = document.getElementById('svgDisplay');

    function resetSVG() {
        svgStage.classList.remove('show-valves-missing', 'show-dirt', 'show-friction');
        svgRotor.className.baseVal = '';
        svgDisplay.textContent = '--W';
        svgDisplay.setAttribute('fill', '#94a3b8');
    }

    errorBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            errorBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const targetId = this.getAttribute('data-target');
            panels.forEach(p => p.classList.remove('active'));
            document.getElementById(targetId).classList.add('active');

            resetSVG();
            
            if (targetId === 'err-gear') {
                svgRotor.className.baseVal = 'rk-anim-fast';
                svgDisplay.textContent = '45W';
                svgDisplay.setAttribute('fill', '#ef4444');
            } 
            else if (targetId === 'err-valves') {
                svgStage.classList.add('show-valves-missing');
                svgRotor.className.baseVal = 'rk-anim-fast';
                svgRotor.style.stroke = '#38bdf8';
                svgDisplay.textContent = '8W';
                svgDisplay.setAttribute('fill', '#38bdf8');
            }
            else if (targetId === 'err-dirt') {
                svgStage.classList.add('show-dirt');
                svgRotor.className.baseVal = 'rk-anim-jammed';
                svgDisplay.textContent = 'ERR';
                svgDisplay.setAttribute('fill', '#f59e0b');
            }
            else if (targetId === 'err-air') {
                svgStage.classList.add('show-friction');
                svgRotor.className.baseVal = 'rk-anim-friction';
                svgDisplay.textContent = '12W';
                svgDisplay.setAttribute('fill', '#f59e0b');
            }
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jakie są najczęstsze błędy instalatorów przy montażu i konfiguracji pomp obiegowych?",
    "description": "Zestawienie najgroźniejszych błędów wykonawczych: od braku odpowietrzenia, przez złe nastawy biegów, po brak płukania instalacji. Zobacz interaktywną diagnostykę.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-bledy",
    "name": "Wskaźnik Awaryjności Pomp Obiegowych 2026",
    "description": "Klasyfikacja uszkodzeń pomp obiegowych wynikająca z zaniedbań montażowych i braku weryfikacji hydraulicznej zładu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy przy montażu ogrzewania podłogowego",
      "ustawienie pompy obiegowej na 3 bieg",
      "brak zaworów przy pompie",
      "płukanie instalacji podłogówki",
      "odpowietrzanie pompy obiegowej"
    ],
    "measurementTechnique": "Analiza wpływu zanieczyszczeń mechanicznych, braku armatury odcinającej oraz błędnych nastaw sterownika na żywotność urządzenia.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ciągła praca na 3 biegu (straty 45W).",
        "Brak zaworów - konieczność zrzutu wody demineralizowanej.",
        "Opiłki i pakuły blokujące precyzyjny wirnik.",
        "Suche łożyska z powodu zaniechania odpowietrzenia ręcznego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-bledy",
    "name": "Symulator Diagnostyczny Błędów Pompy",
    "description": "Interaktywne narzędzie wizualizujące fizyczne skutki braku płukania zładu, zastosowania niewłaściwych nastaw i braku zaworów odcinających w układzie hydraulicznym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-prj-dark: #0f172a;
    --rk-prj-blue: #2563eb;
    --rk-prj-light: #eff6ff;
    --rk-prj-accent: #f59e0b;
    --rk-prj-green: #059669;
    --rk-prj-border: #cbd5e1;
    --rk-prj-bg: #ffffff;
    --rk-prj-text: #334155;
}

.rk-prj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-prj-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.3);
    overflow: hidden;
}

/* Tagi Długi Ogon */
.rk-prj-tags {
    padding: 25px 35px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    background: linear-gradient(to bottom, #f8fafc, #ffffff);
}

.rk-mat-tag {
    background: var(--rk-prj-light);
    color: var(--rk-prj-blue);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    border: 1px solid rgba(37, 99, 235, 0.2);
    text-transform: lowercase;
}

/* Nagłówek */
.rk-prj-header {
    padding: 25px 35px;
}

.rk-prj-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-prj-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-prj-header p {
    font-size: 16px;
    color: var(--rk-prj-text);
    line-height: 1.7;
    margin: 0;
}

/* Sekcja Interaktywna - Podział 2 kolumny */
.rk-prj-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    border-top: 1px solid var(--rk-prj-border);
    border-bottom: 1px solid var(--rk-prj-border);
}

/* Lewa Kolumna - Schemat zależności */
.rk-prj-flow {
    padding: 35px;
    background: #f8fafc;
    border-right: 1px solid var(--rk-prj-border);
}

.rk-prj-flow h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-prj-dark);
    margin: 0 0 25px 0;
}

.rk-flow-step {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 25px;
    position: relative;
}

.rk-flow-step:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 17px;
    top: 40px;
    bottom: -20px;
    width: 2px;
    background: var(--rk-prj-blue);
    opacity: 0.2;
}

.rk-flow-number {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: var(--rk-prj-blue);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    flex-shrink: 0;
    z-index: 1;
}

.rk-flow-content h4 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-prj-dark);
}

.rk-flow-content p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-prj-text);
    line-height: 1.5;
}

.rk-flow-content a {
    color: var(--rk-prj-blue);
    text-decoration: none;
    font-weight: 700;
}

.rk-flow-result {
    margin-top: 30px;
    padding: 15px;
    background: var(--rk-prj-dark);
    border-radius: 12px;
    color: white;
    display: flex;
    align-items: center;
    gap: 15px;
}

/* Prawa Kolumna - Symulator */
.rk-prj-simulator {
    padding: 35px;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

.rk-sim-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-prj-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Custom Controls */
.rk-sim-control {
    margin-bottom: 25px;
}

.rk-sim-label {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-prj-text);
    margin-bottom: 10px;
}

.rk-radio-group {
    display: flex;
    gap: 10px;
}

.rk-radio-btn {
    flex: 1;
    position: relative;
}

.rk-radio-btn input {
    display: none;
}

.rk-radio-label {
    display: block;
    text-align: center;
    padding: 12px;
    background: var(--rk-prj-light);
    border: 2px solid transparent;
    border-radius: 10px;
    font-weight: 700;
    font-size: 14px;
    color: var(--rk-prj-text);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-radio-btn input:checked + .rk-radio-label {
    background: white;
    border-color: var(--rk-prj-blue);
    color: var(--rk-prj-blue);
    box-shadow: 0 4px 6px -1px rgba(37, 99, 235, 0.1);
}

/* SVG Animacja */
.rk-sim-visual {
    margin-top: auto;
    padding: 20px;
    background: var(--rk-prj-light);
    border-radius: 16px;
    text-align: center;
    border: 1px solid rgba(37, 99, 235, 0.1);
}

.rk-live-stats {
    display: flex;
    justify-content: space-around;
    margin-bottom: 15px;
}

.rk-stat-box {
    text-align: center;
}

.rk-stat-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-prj-blue);
    font-variant-numeric: tabular-nums;
}

.rk-stat-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-prj-text);
    text-transform: uppercase;
}

/* SVG Pipe */
.rk-pipe-svg {
    width: 100%;
    height: 60px;
}

.rk-pipe-path {
    stroke-dasharray: 10;
    animation: flowAnim 2s linear infinite;
}

@keyframes flowAnim {
    to { stroke-dashoffset: -20; }
}

/* Tekst podsumowujący */
.rk-prj-summary {
    padding: 30px 35px;
    background: #ffffff;
}

.rk-prj-summary p {
    font-size: 15px;
    color: var(--rk-prj-text);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-prj-summary strong {
    color: var(--rk-prj-dark);
}

/* CTA Masive */
.rk-prj-cta-box {
    padding: 40px 35px;
    background: linear-gradient(135deg, var(--rk-prj-dark) 0%, #1e293b 100%);
    text-align: center;
}

.rk-prj-cta-title {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
}

.rk-prj-cta-text {
    font-size: 16px;
    color: #94a3b8;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-project {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-prj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-btn-project:hover {
    transform: translateY(-4px) scale(1.02);
    background: #1d4ed8;
    box-shadow: 0 20px 35px -5px rgba(37, 99, 235, 0.6);
}

.rk-btn-project svg {
    transition: transform 0.3s;
}

.rk-btn-project:hover svg {
    transform: translateX(6px);
}

@media (max-width: 768px) {
    .rk-prj-grid { grid-template-columns: 1fr; }
    .rk-prj-flow { border-right: none; border-bottom: 1px solid var(--rk-prj-border); padding: 25px; }
    .rk-prj-simulator, .rk-prj-header, .rk-prj-summary, .rk-prj-cta-box, .rk-prj-tags { padding: 25px; }
    .rk-btn-project { width: 100%; padding: 18px 20px; font-size: 16px; }
    .rk-prj-header h2 { font-size: 24px; }
}
</style>

<div class="rk-prj-container" id="rkProjectIntegrator">
    <div class="rk-prj-tags">
        <span class="rk-mat-tag"># projekt ogrzewania podłogowego z pompą ciepła</span>
        <span class="rk-mat-tag"># obliczenia strat ciśnienia</span>
        <span class="rk-mat-tag"># rozstaw rur a wydajność pompy</span>
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
    </div>

    <div class="rk-prj-header">
        <h2>Jak dobór pompy wpływa na profesjonalny projekt ogrzewania podłogowego?</h2>
        <p>Wybór i parametry pompy obiegowej są ściśle powiązane z kluczowymi elementami dokumentacji technicznej. Pompa nie istnieje w próżni – jej punkt pracy jest bezpośrednią wypadkową konkretnych, twardych wyliczeń inżynierskich dla Twojego budynku.</p>
    </div>

    <div class="rk-prj-grid">
        <div class="rk-prj-flow">
            <h3>Architektura profesjonalnego doboru</h3>
            
            <div class="rk-flow-step">
                <div class="rk-flow-number">1</div>
                <div class="rk-flow-content">
                    <h4><a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Obliczenia OZC (PN-EN 12831)</a></h4>
                    <p>Definiują całkowite zapotrzebowanie na moc grzewczą [kW]. To fundament do określenia ilości ciepła, jaką woda musi dostarczyć.</p>
                </div>
            </div>

            <div class="rk-flow-step">
                <div class="rk-flow-number">2</div>
                <div class="rk-flow-content">
                    <h4><a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">Rozstaw rur w pętlach</a></h4>
                    <p>Decyduje o wymaganej temperaturze zasilania i bezpośrednio przekłada się na wielkość przepływów (l/min) na rotametrach.</p>
                </div>
            </div>

            <div class="rk-flow-step">
                <div class="rk-flow-number">3</div>
                <div class="rk-flow-content">
                    <h4>Geometria i układ pętli</h4>
                    <p>Długość rur i ilość zagięć generuje sumaryczne opory w Paskalach (Pa). To one wymuszają wysokość podnoszenia pompy.</p>
                </div>
            </div>

            <div class="rk-flow-result">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                <div style="font-weight: 800; font-size: 15px;">WYNIK: Optymalny punkt roboczy (Q i H)</div>
            </div>
        </div>

        <div class="rk-prj-simulator">
            <h3 class="rk-sim-title">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
                Symulator Zależności Projektowych
            </h3>

            <div class="rk-sim-control">
                <span class="rk-sim-label">Rozstaw rur (gęstość):</span>
                <div class="rk-radio-group">
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-spacing" value="10" checked>
                        <span class="rk-radio-label">Co 10 cm (Gęsto)</span>
                    </label>
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-spacing" value="15">
                        <span class="rk-radio-label">Co 15 cm (Rzadko)</span>
                    </label>
                </div>
            </div>

            <div class="rk-sim-control">
                <span class="rk-sim-label">Okładzina podłogowa (Opór cieplny R):</span>
                <div class="rk-radio-group">
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-floor" value="tiles" checked>
                        <span class="rk-radio-label">Płytki (0,02 m2K/W)</span>
                    </label>
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-floor" value="laminate">
                        <span class="rk-radio-label">Panele (0,08 m2K/W)</span>
                    </label>
                </div>
            </div>

            <div class="rk-sim-visual">
                <div class="rk-live-stats">
                    <div class="rk-stat-box">
                        <div class="rk-stat-lbl">Opory hydrauliczne</div>
                        <div class="rk-stat-val" id="rk-out-h">2.4 m</div>
                    </div>
                    <div class="rk-stat-box">
                        <div class="rk-stat-lbl">Przepływ na rotametrze</div>
                        <div class="rk-stat-val" id="rk-out-q">1.8 l/min</div>
                    </div>
                </div>
                <svg class="rk-pipe-svg" viewBox="0 0 300 60" preserveAspectRatio="none">
                    <path d="M10,30 Q75,10 150,30 T290,30" fill="none" stroke="#cbd5e1" stroke-width="8" stroke-linecap="round"/>
                    <path d="M10,30 Q75,10 150,30 T290,30" fill="none" stroke="#2563eb" stroke-width="4" stroke-linecap="round" class="rk-pipe-path" id="rk-svg-flow"/>
                </svg>
            </div>
        </div>
    </div>

    <div class="rk-prj-summary">
        <p>Gęstość rozstawu rur (np. co 10 cm w strefach brzegowych i łazienkach, co 15 cm w salonach) determinuje łączną długość rur, a tym samym bezpośrednio wpływa na opory hydrauliczne, które pompa musi pokonać.</p>
        <p>Projektant, znając opór cieplny okładziny podłogowej (np. płytki ceramiczne o <strong>R = 0,02 m2K/W</strong> lub panele o <strong>R = 0,08 m2K/W</strong>) oraz planowaną <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">grubość wylewki jastrychowej</a> (np. 65 mm), precyzyjnie wylicza wymaganą temperaturę zasilania.</p>
        <p>Te dane pozwalają na określenie optymalnego przepływu cząstkowego, co daje końcową wartość wydajności pompy. <strong>Projekt instalacji eliminuje zgubne dobieranie pompy „na oko”</strong> i chroni Inwestora przed kosztownym przewymiarowaniem lub brakiem komfortu cieplnego zimą.</p>
    </div>

    <div class="rk-prj-cta-box">
        <h3 class="rk-prj-cta-title">Przestań zgadywać. Zainwestuj w inżynierię.</h3>
        <p class="rk-prj-cta-text">Złe wyliczenia to zimna podłoga i pompa pobierająca 400% więcej prądu niż powinna. Zamów kompletny projekt i zyskaj gwarancję perfekcyjnie zbilansowanego układu hydraulicznego na dekady.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-project">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const spaceRadios = document.querySelectorAll('input[name="rk-spacing"]');
    const floorRadios = document.querySelectorAll('input[name="rk-floor"]');
    const outH = document.getElementById('rk-out-h');
    const outQ = document.getElementById('rk-out-q');
    const svgFlow = document.getElementById('rk-svg-flow');

    function calculateSimulation() {
        let spaceVal = document.querySelector('input[name="rk-spacing"]:checked').value;
        let floorVal = document.querySelector('input[name="rk-floor"]:checked').value;

        let resH = 2.0; // Base head
        let resQ = 1.5; // Base flow
        let animSpeed = 2; // SVG animation duration in seconds

        // Logika obliczeniowa symulatora
        if (spaceVal === "10") {
            // Gęsty rozstaw = więcej rur = większe opory, ale niższa temperatura i mniejszy przepływ na obieg
            resH += 0.8;
            resQ -= 0.3;
        } else if (spaceVal === "15") {
            // Rzadszy rozstaw = mniejsze opory, ale wymaga większego przepływu by oddać moc
            resH -= 0.4;
            resQ += 0.5;
        }

        if (floorVal === "laminate") {
            // Panele izolują, więc układ potrzebuje znacznie większego przepływu i wyższej delty/temperatury
            resQ += 0.8;
            resH += 0.3;
            animSpeed = 0.8; // Fast flow required
        } else {
            // Płytki dobrze przewodzą
            animSpeed = 2.0; // Normal flow
        }

        // Formatowanie i aktualizacja UI
        outH.textContent = resH.toFixed(1) + " m";
        outQ.textContent = resQ.toFixed(1) + " l/min";
        svgFlow.style.animationDuration = animSpeed + "s";
    }

    spaceRadios.forEach(r => r.addEventListener('change', calculateSimulation));
    floorRadios.forEach(r => r.addEventListener('change', calculateSimulation));
    
    // Initial calculate
    calculateSimulation();
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak dobór pompy wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Zrozumienie ścisłej korelacji pomiędzy obliczeniami OZC, rozstawem rur grzewczych a wymaganymi parametrami pompy obiegowej w nowoczesnej podłogówce.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Wpływ parametrów projektu na dobór pompy obiegowej 2026",
    "description": "Zestawienie relacji hydraulicznych pomiędzy gęstością rozstawu rur, oporem cieplnym okładzin podłogowych a ostatecznym przepływem i oporem pompy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego z pompą ciepła",
      "obliczenia strat ciśnienia",
      "rozstaw rur a wydajność pompy",
      "opór cieplny paneli a podłogówka",
      "dobór pompy obiegowej do podłogówki"
    ],
    "measurementTechnique": "Algorytm inżynierski wyznaczający przepływy i straty ciśnienia na podstawie wytycznych normy PN-EN 12831 oraz oporów R posadzki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obliczenia OZC jako fundament określenia mocy grzewczej [kW].",
        "Rozstaw rur kształtujący opory hydrauliczne pętli.",
        "Wpływ okładziny: płytki ceramiczne (0,02 m2K/W) vs panele (0,08 m2K/W) na przepływy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Symulator Zależności Projektowych Podłogówki",
    "description": "Narzędzie interaktywne ilustrujące zmiany oporów hydraulicznych (m H2O) i przepływu (l/min) w zależności od wybranego rozstawu rur oraz zastosowanej okładziny podłogowej.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-slate: #475569;
    --rk-case-bg: #f8fafc;
    --rk-case-card: #ffffff;
    --rk-case-border: #e2e8f0;
    
    /* Kolory funkcyjne */
    --rk-case-blue: #0ea5e9;
    --rk-case-blue-light: #e0f2fe;
    --rk-case-red: #ef4444;
    --rk-case-red-light: #fee2e2;
    --rk-case-green: #10b981;
    --rk-case-green-light: #dcfce7;
    --rk-case-gold: #f59e0b;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.15);
    border: 1px solid rgba(14, 165, 233, 0.2);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Tagi Long Tail */
.rk-case-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: var(--rk-case-dark);
}

.rk-mat-tag {
    background: rgba(255,255,255,0.1);
    color: var(--rk-case-blue-light);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid rgba(224, 242, 254, 0.2);
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: var(--rk-case-blue-light);
    color: var(--rk-case-dark);
}

/* Nagłówek */
.rk-case-header {
    padding: 25px 40px 30px;
    background: var(--rk-case-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-case-gold);
}

.rk-case-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-case-header p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

/* Ekspert Block */
.rk-case-expert {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 25px 40px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-case-border);
}

.rk-expert-photo {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--rk-case-blue);
    flex-shrink: 0;
}

.rk-expert-quote {
    position: relative;
}

.rk-expert-quote p {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-case-dark);
    font-style: italic;
    margin: 0 0 8px 0;
    line-height: 1.5;
}

.rk-expert-name {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-case-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Symulator - Przełącznik Przed/Po */
.rk-case-simulator {
    padding: 40px;
    background: var(--rk-case-bg);
}

.rk-toggle-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 35px;
}

.rk-state-toggle {
    display: flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    position: relative;
    width: 100%;
    max-width: 500px;
}

.rk-state-toggle input { display: none; }

.rk-toggle-lbl {
    flex: 1;
    text-align: center;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-slate);
    cursor: pointer;
    position: relative;
    z-index: 2;
    transition: color 0.3s;
}

.rk-state-toggle input:checked + .rk-toggle-lbl {
    color: #ffffff;
}

.rk-toggle-glider {
    position: absolute;
    top: 6px; left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-case-red);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    z-index: 1;
}

#stateAfter:checked ~ .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-case-green);
}

/* Grid Danych */
.rk-data-tiles {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-tile {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.4s ease;
}

.rk-tile-title {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-case-slate);
    text-transform: uppercase;
    margin-bottom: 10px;
}

.rk-tile-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-case-dark);
    transition: color 0.4s;
}

.rk-tile-desc {
    font-size: 12px;
    color: #94a3b8;
    margin-top: 5px;
    font-weight: 500;
}

/* Wizualizacja SVG */
.rk-case-visual {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-case-border);
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    transition: border-color 0.4s;
}

.rk-svg-box {
    width: 200px;
    flex-shrink: 0;
}

.rk-case-story {
    flex: 1;
}

.rk-case-story h3 {
    font-size: 20px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: var(--rk-case-dark);
    transition: color 0.4s;
}

.rk-case-story p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-case-slate);
    margin: 0;
}

/* Stany Wizualne - Dynamiczne klasy */
.state-before .rk-tile-val.dynamic { color: var(--rk-case-red); }
.state-before .rk-case-visual { border-top: 4px solid var(--rk-case-red); }
.state-before .svg-dial { stroke: var(--rk-case-red); stroke-dasharray: 100 100; transition: stroke-dasharray 1s ease-in-out; }
.state-before .svg-waves { stroke: var(--rk-case-red); opacity: 1; animation: pulseWave 0.5s infinite; }

.state-after .rk-tile-val.dynamic { color: var(--rk-case-green); }
.state-after .rk-case-visual { border-top: 4px solid var(--rk-case-green); }
.state-after .svg-dial { stroke: var(--rk-case-green); stroke-dasharray: 20 180; transition: stroke-dasharray 1s ease-in-out; }
.state-after .svg-waves { stroke: var(--rk-case-green); opacity: 0; }

@keyframes pulseWave {
    0% { transform: scale(0.9); opacity: 0.5; }
    50% { transform: scale(1.1); opacity: 1; }
    100% { transform: scale(0.9); opacity: 0.5; }
}

@media (max-width: 800px) {
    .rk-data-tiles { grid-template-columns: 1fr 1fr; }
    .rk-case-visual { flex-direction: column; text-align: center; }
    .rk-case-expert { flex-direction: column; text-align: center; }
}
@media (max-width: 480px) {
    .rk-data-tiles { grid-template-columns: 1fr; }
    .rk-toggle-lbl { font-size: 13px; padding: 12px 10px; }
}
</style>

<div class="rk-case-container" id="rkCaseApp">
    
    <div class="rk-case-tags">
        <span class="rk-mat-tag"># modernizacja ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># wymiana pompy obiegowej w starym domu</span>
        <span class="rk-mat-tag"># opory hydrauliczne w starych rurach</span>
        <span class="rk-mat-tag"># zużycie prądu przez pompę obiegową</span>
    </div>

    <div class="rk-case-header">
        <h2>Case Study: 140 m² z lat 70. – Dlaczego nowa podłogówka nie grzała?</h2>
        <p>Poznaj historię Pana Dawida z Poznania, który zmodernizował dom, wyrzucił grzejniki, wylał nowe jastrychy, ale zostawił &#8222;dobrą, starą pompę&#8221; z kotłowni. Zobacz, jak wyliczenia hydrauliczne uratowały tę inwestycję.</p>
    </div>

    <div class="rk-case-expert">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Audyt Instalacji" class="rk-expert-photo">
        <div class="rk-expert-quote">
            <p>&#8222;To klasyczny błąd przy termomodernizacjach. Inwestorzy ładują dziesiątki tysięcy w pompę ciepła i nową wylewkę, ale zostawiają starą pompę 3-biegową, bo 'przecież działa&#8217;. Stara pompa nie radzi sobie z ogromnymi oporami gęsto ułożonych rur podłogówki, dławi przepływ i zżera prąd.&#8221;</p>
            <div class="rk-expert-name">Robert Kucharski – Audyt i Projekt OZC</div>
        </div>
    </div>

    <div class="rk-case-simulator">
        
        <div class="rk-toggle-wrapper">
            <div class="rk-state-toggle">
                <input type="radio" name="caseState" id="stateBefore" value="before" checked>
                <label for="stateBefore" class="rk-toggle-lbl">Przed Audytem Roberta</label>
                
                <input type="radio" name="caseState" id="stateAfter" value="after">
                <label for="stateAfter" class="rk-toggle-lbl">Po Doborze Inżynierskim</label>
                
                <div class="rk-toggle-glider"></div>
            </div>
        </div>

        <div class="rk-data-tiles state-before" id="rkTileGroup">
            <div class="rk-tile">
                <div class="rk-tile-title">Pompa Obiegowa</div>
                <div class="rk-tile-val" id="valPump" style="font-size: 18px;">Stary Typ (AC)</div>
                <div class="rk-tile-desc" id="descPump">3 biegi stałe</div>
            </div>
            <div class="rk-tile">
                <div class="rk-tile-title">Pobór Mocy</div>
                <div class="rk-tile-val dynamic" id="valPower">85 W</div>
                <div class="rk-tile-desc" id="descPower">Praca ciągła</div>
            </div>
            <div class="rk-tile">
                <div class="rk-tile-title">Koszty Energii (Rok)</div>
                <div class="rk-tile-val dynamic" id="valCost">~326 PLN</div>
                <div class="rk-tile-desc">Sezon grzewczy</div>
            </div>
            <div class="rk-tile">
                <div class="rk-tile-title">Komfort Cieplny</div>
                <div class="rk-tile-val dynamic" id="valComfort" style="font-size: 18px;">Niedogrzanie</div>
                <div class="rk-tile-desc" id="descComfort">Chłodna łazienka</div>
            </div>
        </div>

        <div class="rk-case-visual state-before" id="rkVisualBox">
            <div class="rk-svg-box">
                <!-- SVG Dashboard Pompy -->
                <svg viewBox="0 0 100 100" width="100%" height="100%">
                    <!-- Tło i obudowa -->
                    <circle cx="50" cy="50" r="45" fill="#f8fafc" stroke="#e2e8f0" stroke-width="2"/>
                    
                    <!-- Skala mocy -->
                    <path d="M 20 80 A 40 40 0 1 1 80 80" fill="none" stroke="#cbd5e1" stroke-width="8" stroke-linecap="round"/>
                    <path d="M 20 80 A 40 40 0 1 1 80 80" fill="none" class="svg-dial" stroke-width="8" stroke-linecap="round"/>
                    
                    <!-- Fale dźwiękowe (Hałas/Kawitacja) -->
                    <g class="svg-waves" style="transform-origin: 50px 50px;">
                        <path d="M 10 50 Q -10 50 10 30" fill="none" stroke-width="3" stroke-linecap="round"/>
                        <path d="M 90 50 Q 110 50 90 30" fill="none" stroke-width="3" stroke-linecap="round"/>
                    </g>
                    
                    <text x="50" y="55" font-family="monospace" font-weight="bold" font-size="20" text-anchor="middle" fill="#0f172a" id="svgWattText">85W</text>
                    <text x="50" y="70" font-family="sans-serif" font-weight="bold" font-size="8" text-anchor="middle" fill="#64748b" id="svgStatusText">HAŁAS</text>
                </svg>
            </div>
            
            <div class="rk-case-story">
                <h3 id="storyTitle">Hałas w rurach i zimne strefy brzegowe</h3>
                <p id="storyText">Pan Dawid pozostawił starą pompę węzłową. Urządzenie tłoczyło wodę na sztywnym 3 biegu, pobierając aż 85W. Z powodu wysokich oporów hydraulicznych gęstej podłogówki (rury układane co 10 cm), pompa nie dawała rady &#8222;przepchnąć&#8221; wody do najdalszej dobudówki, a wysoka prędkość w pobliżu rozdzielacza powodowała irytujący szum kawitacyjny nocą.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const radios = document.querySelectorAll('input[name="caseState"]');
    
    // UI Elements
    const tileGroup = document.getElementById('rkTileGroup');
    const visualBox = document.getElementById('rkVisualBox');
    
    // Data Elements
    const valPump = document.getElementById('valPump');
    const descPump = document.getElementById('descPump');
    const valPower = document.getElementById('valPower');
    const descPower = document.getElementById('descPower');
    const valCost = document.getElementById('valCost');
    const valComfort = document.getElementById('valComfort');
    const descComfort = document.getElementById('descComfort');
    
    const storyTitle = document.getElementById('storyTitle');
    const storyText = document.getElementById('storyText');
    
    const svgWattText = document.getElementById('svgWattText');
    const svgStatusText = document.getElementById('svgStatusText');

    const stateData = {
        before: {
            pump: "Stary Typ (AC)", dPump: "3 biegi stałe",
            power: "85 W", dPower: "Praca ciągła",
            cost: "~326 PLN",
            comfort: "Niedogrzanie", dComfort: "Zimna dobudówka",
            title: "Hałas w rurach i zimne strefy brzegowe",
            text: "Pan Dawid pozostawił starą pompę węzłową. Urządzenie tłoczyło wodę na sztywnym 3 biegu, pobierając aż 85W. Z powodu wysokich oporów hydraulicznych gęstej podłogówki (rury układane co 10 cm), pompa nie dawała rady przepchnąć czynnika do najdalszej dobudówki, a nadmiar ciśnienia przy rozdzielaczu powodował irytujący szum kawitacyjny nocą.",
            svgW: "85W", svgS: "HAŁAS"
        },
        after: {
            pump: "Nowy Typ (EC)", dPump: "AUTOADAPT",
            power: "12 W", dPower: "Praca adaptacyjna",
            cost: "~46 PLN",
            comfort: "Idealny", dComfort: "Równe temperatury",
            title: "Cisza, oszczędność i równomierne ciepło",
            text: "Po audycie, wyliczyliśmy dokładne opory hydrauliczne instalacji (H) oraz wymagany przepływ (Q). Wymiana na nowoczesną pompę z silnikiem EC i trybem stałociśnieniowym (CP) całkowicie wyeliminowała szumy. Pompa adaptuje się do zamykających się termostatów, pobierając zaledwie 12W prądu, a woda w końcu dociera do każdego pomieszczenia.",
            svgW: "12W", svgS: "AUTO"
        }
    };

    radios.forEach(radio => {
        radio.addEventListener('change', function() {
            const state = this.value;
            const data = stateData[state];

            // Change Classes for Colors/Animations
            tileGroup.className = `rk-data-tiles state-${state}`;
            visualBox.className = `rk-case-visual state-${state}`;

            // Update Data
            valPump.textContent = data.pump;
            descPump.textContent = data.dPump;
            valPower.textContent = data.power;
            descPower.textContent = data.dPower;
            valCost.textContent = data.cost;
            valComfort.textContent = data.comfort;
            descComfort.textContent = data.dComfort;
            
            storyTitle.textContent = data.title;
            storyText.textContent = data.text;
            
            svgWattText.textContent = data.svgW;
            svgStatusText.textContent = data.svgS;
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Case Study: 140 m² z lat 70. – Dlaczego nowa podłogówka nie grzała?",
    "description": "Praktyczne studium przypadku (modernizacja domu 140m2 w Poznaniu). Zobacz, jak inżynierski dobór i wymiana starej pompy AC na energooszczędną pompę EC rozwiązały problem niedogrzania i wysokich rachunków.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Ekspert HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-casestudy",
    "name": "Porównanie parametrów po termomodernizacji (Pompa AC vs EC)",
    "description": "Zestawienie empirycznych danych eksploatacyjnych po audycie inżynierskim. Wymiana nieefektywnego urządzenia węzłowego na model adaptacyjny w domu 140m2.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "modernizacja ogrzewania podłogowego",
      "wymiana pompy obiegowej w starym domu",
      "opory hydrauliczne w starych rurach",
      "zużycie prądu przez pompę obiegową",
      "pompa energooszczędna do podłogówki"
    ],
    "measurementTechnique": "Pomiary poboru mocy elektrycznej oraz identyfikacja stref niedogrzania spowodowanych spadkiem ciśnienia w pętli krytycznej przed i po montażu nowej armatury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przed audytem: Pompa AC pobierała 85W, roczny koszt ~326 PLN, brak dopływu czynnika do stref brzegowych.",
        "Po audycie: Pompa EC z autoadaptacją pobiera 12W, roczny koszt ~46 PLN, pełne zrównoważenie hydrauliczne."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Symulator Efektów Termomodernizacji",
    "description": "Interaktywny interfejs pozwalający na przełączanie między stanami 'przed' i 'po' wymianie pompy obiegowej, ilustrujący bezpośrednie korzyści finansowe i akustyczne.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-panel: #1e293b;
    --rk-auth-bg: #ffffff;
    --rk-auth-surface: #f8fafc;
    --rk-auth-border: #e2e8f0;
    --rk-auth-text: #334155;
    --rk-auth-muted: #64748b;
    
    --rk-auth-blue: #0284c7;
    --rk-auth-gold: #eab308;
    --rk-auth-fb: #1877F2;
    --rk-auth-li: #0A66C2;
}

.rk-auth-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 24px;
    box-shadow: 0 10px 30px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-auth-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Header Area */
.rk-auth-header {
    background: var(--rk-auth-dark);
    padding: 35px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-auth-gold);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.rk-auth-header-text h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 8px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-auth-header-text p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    font-weight: 500;
}

.rk-auth-trust-badge {
    background: rgba(234, 179, 8, 0.15);
    border: 1px solid rgba(234, 179, 8, 0.3);
    color: var(--rk-auth-gold);
    padding: 10px 20px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 800;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    flex-shrink: 0;
}

/* Main Layout Grid */
.rk-auth-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-auth-bg);
}

/* Left Sidebar: Profile */
.rk-auth-profile {
    background: var(--rk-auth-surface);
    padding: 40px 30px;
    border-right: 1px solid var(--rk-auth-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.rk-auth-photo-wrap {
    width: 160px;
    height: 160px;
    margin-bottom: 25px;
}

.rk-auth-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.1);
}

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 5px 0;
}

.rk-auth-title {
    font-size: 14px;
    color: var(--rk-auth-blue);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-auth-socials {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
}

.rk-social-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px;
    border-radius: 12px;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}

.rk-social-btn.fb { background: var(--rk-auth-fb); }
.rk-social-btn.fb:hover { background: #166fe5; }
.rk-social-btn.li { background: var(--rk-auth-li); }
.rk-social-btn.li:hover { background: #0959aa; }

/* Right Content Area */
.rk-auth-content {
    display: flex;
    flex-direction: column;
}

/* Cytat (Hook) */
.rk-auth-quote-box {
    padding: 35px 40px 25px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-auth-border);
}

.rk-auth-quote-mark {
    font-size: 60px;
    color: var(--rk-auth-blue);
    line-height: 0;
    opacity: 0.2;
    margin-bottom: -15px;
    display: block;
    font-family: serif;
}

.rk-auth-quote-text {
    font-size: 19px;
    font-weight: 700;
    color: var(--rk-auth-dark);
    line-height: 1.5;
    margin: 0;
    font-style: italic;
}

/* Navigation Tabs */
.rk-auth-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-auth-border);
    background: var(--rk-auth-surface);
}

.rk-auth-tab {
    flex: 1;
    padding: 18px 10px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-auth-muted);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-auth-tab:hover {
    color: var(--rk-auth-dark);
    background: #f1f5f9;
}

.rk-auth-tab.active {
    color: var(--rk-auth-blue);
    border-bottom-color: var(--rk-auth-blue);
    background: #ffffff;
}

/* Tab Panels */
.rk-auth-panel {
    padding: 40px;
    display: none;
}

.rk-auth-panel.active {
    display: block;
}

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 15px 0;
}

.rk-auth-panel p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-auth-text);
    margin: 0 0 15px 0;
}

.rk-auth-panel p:last-child { margin-bottom: 0; }

.rk-auth-panel a {
    color: var(--rk-auth-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid transparent;
}

.rk-auth-panel a:hover {
    border-color: var(--rk-auth-blue);
}

/* Stats Grid in Panel 2 */
.rk-auth-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 25px;
}

.rk-stat-box {
    background: var(--rk-auth-surface);
    border: 1px solid var(--rk-auth-border);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-stat-icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: #ffffff;
    color: var(--rk-auth-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--rk-auth-border);
    flex-shrink: 0;
}

.rk-stat-info { display: flex; flex-direction: column; }

.rk-stat-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    line-height: 1.2;
}

.rk-stat-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-auth-muted);
    text-transform: uppercase;
}

/* Mobile */
@media (max-width: 850px) {
    .rk-auth-grid { grid-template-columns: 1fr; }
    .rk-auth-header { flex-direction: column; text-align: center; padding: 30px 25px; }
    .rk-auth-trust-badge { width: 100%; justify-content: center; }
    .rk-auth-profile { border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 30px 25px; }
    .rk-auth-socials { flex-direction: row; }
    .rk-auth-tabs { flex-direction: column; background: #ffffff; }
    .rk-auth-tab { border-bottom: none; border-left: 4px solid transparent; justify-content: flex-start; padding: 15px 25px; }
    .rk-auth-tab.active { border-left-color: var(--rk-auth-blue); border-bottom-color: transparent; background: var(--rk-auth-surface); }
    .rk-auth-quote-box { padding: 25px; }
    .rk-auth-panel { padding: 30px 25px; }
    .rk-auth-stats { grid-template-columns: 1fr; }
}
</style>

<div class="rk-auth-container">
    
    <div class="rk-auth-header">
        <div class="rk-auth-header-text">
            <h2>Ekspert HVAC Robert Kucharski: Dobór pompy to inżynieria, nie zgadywanka</h2>
            <p>Nie powielam instalatorskich mitów. Zobacz, kto odpowiada za wiedzę techniczną i obliczenia w tym artykule.</p>
        </div>
        <div class="rk-auth-trust-badge">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Weryfikacja HVAC
        </div>
    </div>

    <div class="rk-auth-grid">
        
        <div class="rk-auth-profile">
            <div class="rk-auth-photo-wrap">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
            </div>
            
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <div class="rk-auth-title">Inżynier &amp; Specjalista HVAC</div>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-social-btn fb">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                    Projekt Ogrzewania
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-social-btn li">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                    LinkedIn
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            
            <div class="rk-auth-quote-box">
                <span class="rk-auth-quote-mark">&#8222;</span>
                <p class="rk-auth-quote-text">
                    Nigdy nie kupuj pompy obiegowej &#8222;na zapas&#8221;. Przewymiarowana pompa to hałas, kawitacja i marnowanie prądu. Niedowymiarowana to zimna podłoga. Matematyka układu wybacza znacznie mniej niż wylewka betonowa – tutaj liczą się twarde obliczenia oporów, a nie przypuszczenia instalatora.
                </p>
            </div>

            <div class="rk-auth-tabs">
                <button class="rk-auth-tab active" data-panel="omnie">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
                    O Mnie
                </button>
                <button class="rk-auth-tab" data-panel="liczby">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    Fakty i Liczby
                </button>
                <button class="rk-auth-tab" data-panel="filozofia">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
                    Filozofia Projektowa
                </button>
            </div>

            <div class="rk-auth-panel active" id="panel-omnie">
                <h3>Praktyka wygrywa z teorią</h3>
                <p>
                    Projektowanie systemów ogrzewania to czysta matematyka i hydraulika. Od lat doradzam inwestorom, audytuję błędy wykonawcze na placach budowy i optymalizuję pracę źródeł ciepła. Oprócz działalności projektowej, zarządzam również portalami remont.biz.pl oraz <a sobir.pl, gdzie dzielę się konkretną, twardą wiedzą.
                </p>
                <p>
                    Wiem dokładnie, ile kosztuje inwestora niewiedza. W swoich projektach łączę rygorystyczne normy inżynierskie z bezkompromisowym pragmatyzmem, udowadniając, że odpowiednio zbilansowany zład wody to gwarancja spokoju na dekady.
                </p>
            </div>

            <div class="rk-auth-panel" id="panel-liczby">
                <h3>Instalacje oparte na twardych danych</h3>
                <p>Każdy opór hydrauliczny w rurze, każdy zakręt i przepływ na rotametrze mają gigantyczne znaczenie dla żywotności pompy. Moje podejście opiera się wyłącznie na wyliczeniach.</p>
                
                <div class="rk-auth-stats">
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">1000+</div>
                            <div class="rk-stat-label">Wykonanych Projektów OZC</div>
                        </div>
                    </div>
                    
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">3700+</div>
                            <div class="rk-stat-label">Aktywnych Obserwatorów</div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-auth-panel" id="panel-filozofia">
                <h3>Bezbłędny system zaczyna się na papierze</h3>
                <p>
                    Odrzucam dobieranie urządzeń na zasadzie &#8222;zawsze tak montujemy i działa&#8221;. Brak analizy krzywych ciśnienia (H) i wydajności (Q) to najczęstsza przyczyna awarii silników EC i głośnej pracy instalacji.
                </p>
                <p>
                    Wszystkie algorytmy i artykuły techniczne, które znajdziesz na tej stronie, bazują na obowiązujących normach projektowych (m.in. <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264</a> i PN-EN 12831). Zapewnia to pełną zgodność prawną i maksymalizuje sprawność energetyczną Twojego domu.
                </p>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-auth-tab');
    const panels = document.querySelectorAll('.rk-auth-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Remove active classes
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Add active class to clicked tab
            this.classList.add('active');

            // Show corresponding panel
            const target = this.getAttribute('data-panel');
            document.getElementById('panel-' + target).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-autor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Ekspert HVAC Robert Kucharski: Dobór pompy to inżynieria, nie zgadywanka",
    "description": "Profil ekspercki Roberta Kucharskiego, inżyniera HVAC weryfikującego błędy hydrauliczne oraz dobór parametrów ciśnienia i przepływu w instalacjach płaszczyznowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Specjalista HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-autor",
    "name": "Baza kompetencji inżynierskich HVAC - Robert Kucharski",
    "description": "Zestawienie twardych statystyk i doświadczenia w zakresie normatywnego projektowania hydrauliki instalacji płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej",
      "obliczenia oporów hydraulicznych",
      "norma PN-EN 1264 podłogówka",
      "inżynier hvac robert kucharski",
      "audyt instalacji grzewczej"
    ],
    "measurementTechnique": "Weryfikacja doświadczenia na bazie ponad 1000 zrealizowanych i zoptymalizowanych projektów OZC oraz sieci zaufania online.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zrealizowane projekty instalacji płaszczyznowych i doborów hydraulicznych: 1000+",
        "Społeczność ekspercka: Zaufanie ponad 3700 obserwatorów.",
        "Metodologia: Odrzucenie dobierania sprzętu na zapas na rzecz rygorystycznych obliczeń strat ciśnienia i przepływu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-autor",
    "name": "Statyczny Profil E-E-A-T Autora",
    "description": "Moduł weryfikujący autorytet inżynierski twórcy artykułu, integrujący bezpośredni cytat (hook), portfolio oraz potwierdzenie zastosowania norm technicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-faq-dark: #1e293b;
    --rk-faq-primary: #3b82f6;
    --rk-faq-accent: #8b5cf6;
    --rk-faq-bg: #ffffff;
    --rk-faq-surface: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #475569;
    --rk-faq-danger: #ef4444;
}

.rk-faq-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-faq-bg);
    border-radius: 24px;
    box-shadow: 0 10px 30px -10px rgba(59, 130, 246, 0.15);
    border: 1px solid var(--rk-faq-border);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-faq-top {
    padding: 40px 50px;
    background: linear-gradient(145deg, var(--rk-faq-surface) 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-faq-border);
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-faq-top h2 {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-faq-dark);
    margin: 0;
    line-height: 1.2;
    letter-spacing: -0.5px;
}

.rk-faq-top p {
    font-size: 16px;
    color: var(--rk-faq-text);
    margin: 0;
    max-width: 750px;
    line-height: 1.6;
}

/* Master Switch */
.rk-faq-master-control {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    background: var(--rk-faq-bg);
    padding: 12px 24px;
    border-radius: 12px;
    border: 1px solid var(--rk-faq-border);
    align-self: flex-start;
    cursor: pointer;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    transition: border-color 0.3s;
}

.rk-faq-master-control:hover {
    border-color: var(--rk-faq-primary);
}

.rk-faq-master-label {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-faq-dark);
}

.rk-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
}

.rk-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #cbd5e1;
    transition: .4s;
    border-radius: 24px;
}

.rk-slider:before {
    position: absolute;
    content: "";
    height: 18px; width: 18px;
    left: 3px; bottom: 3px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

input:checked + .rk-slider { background-color: var(--rk-faq-primary); }
input:checked + .rk-slider:before { transform: translateX(20px); }

/* Lista FAQ */
.rk-faq-list {
    padding: 20px 50px 40px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: var(--rk-faq-bg);
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-primary);
    box-shadow: 0 10px 20px -5px rgba(59, 130, 246, 0.1);
}

.rk-faq-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 25px;
    cursor: pointer;
    user-select: none;
    background: transparent;
    transition: background 0.3s;
}

.rk-faq-header:hover {
    background: var(--rk-faq-surface);
}

.rk-faq-question-box {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-faq-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: var(--rk-faq-surface);
    color: var(--rk-faq-primary);
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-faq-item.active .rk-faq-icon {
    background: var(--rk-faq-primary);
    color: #ffffff;
}

.rk-faq-item.active .rk-faq-icon.danger-icon {
    background: var(--rk-faq-danger);
    color: #ffffff;
}

.rk-faq-header h3 {
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    margin: 0;
    line-height: 1.4;
}

.rk-faq-chevron {
    color: #94a3b8;
    transition: transform 0.3s;
}

.rk-faq-item.active .rk-faq-chevron {
    transform: rotate(180deg);
    color: var(--rk-faq-primary);
}

.rk-faq-body {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-content {
    padding: 0 25px 25px 82px; /* Wyrównanie do tekstu, ominięcie ikony */
}

.rk-faq-content p {
    font-size: 15px;
    color: var(--rk-faq-text);
    line-height: 1.7;
    margin: 0;
}

.rk-faq-content a {
    color: var(--rk-faq-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(59, 130, 246, 0.2);
    transition: border-color 0.2s;
}

.rk-faq-content a:hover {
    border-color: var(--rk-faq-primary);
}

@media (max-width: 768px) {
    .rk-faq-top { padding: 30px 20px; }
    .rk-faq-top h2 { font-size: 26px; }
    .rk-faq-list { padding: 15px 20px 30px; gap: 10px; }
    .rk-faq-header { padding: 15px; }
    .rk-faq-content { padding: 0 15px 20px 15px; }
    .rk-faq-question-box { gap: 12px; }
    .rk-faq-header h3 { font-size: 15px; }
}
</style>

<div class="rk-faq-container" id="rkFaqApp">
    <div class="rk-faq-top">
        <h2>FAQ – Najczęściej zadawane pytania dotyczące pomp obiegowych</h2>
        <p>Baza wiedzy diagnostycznej. Eksperckie, techniczne odpowiedzi na najczęstsze problemy z przepływem, trybami pracy i integracją pomp cyrkulacyjnych w płaszczyznowych systemach grzewczych.</p>
        
        <label class="rk-faq-master-control">
            <span class="rk-faq-master-label">Rozwiń wszystkie odpowiedzi</span>
            <div class="rk-switch">
                <input type="checkbox" id="rkToggleAllFaq">
                <span class="rk-slider"></span>
            </div>
        </label>
    </div>

    <div class="rk-faq-list">
        
        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon danger-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    </div>
                    <h3>Czy pompa obiegowa do podłogówki może pracować na trybie proporcjonalnym (PP)?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p><strong>Nie, praca pompy w trybie proporcjonalnym (PP) jest kardynalnym błędem wykonawczym.</strong> W tym trybie zamknięcie części pętli grzewczych powoduje obniżenie ciśnienia przez pompę, co skutkuje drastycznym spadkiem przepływów w pozostałych, otwartych obiegach i niedogrzaniem pomieszczeń.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    </div>
                    <h3>Jaki przepływ na rotametrach powinna zapewnić pompa obiegowa?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>Prawidłowy przepływ dla standardowych pętli o długości 70–90 metrów wynosi <strong>od 1,5 do 2,5 litra na minutę (l/min)</strong>. Wartości te muszą wynikać bezpośrednio z projektu hydraulicznego i być precyzyjnie wyregulowane na belce rozdzielacza za pomocą <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów</a>.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path></svg>
                    </div>
                    <h3>Dlaczego pompa obiegowa podłogówki buczy i głośno pracuje?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>Główną przyczyną głośnej pracy jest <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">zapowietrzenie układu</a> lub zjawisko kawitacji wywołane zbyt niskim ciśnieniem statycznym w instalacji (poniżej 1,0 bar). Innym powodem może być zablokowanie wirnika przez osad magnetyczny w wyniku braku filtra magnetycznego w układzie.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h4l2-9 4 18 2-9h4"></path><path d="M12 2v2"></path><path d="M12 20v2"></path></svg>
                    </div>
                    <h3>Czy pompa wbudowana w pompę ciepła wystarczy do obsłużenia podłogówki?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>W budynkach o powierzchni do 120 m² ze sprzyjającą architekturą hydrauliczną <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a> ze zintegrowaną pompą cyrkulacyjną zazwyczaj jest wystarczająca. Przy większych metrażach lub skomplikowanych układach kaskadowych konieczne jest zastosowanie <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgła hydraulicznego</a> i zewnętrznej pompy obiegowej.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    </div>
                    <h3>Jak sprawdzić, czy elektroniczna pompa obiegowa działa prawidłowo?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>Prawidłowe działanie poznasz po stabilnym wskazaniu aktualnego poboru mocy (wyrażonego w Watach na wyświetlaczu) oraz braku drgań. Dodatkowo rura zasilająca za pompą powinna osiągnąć temperaturę zgodną z nastawą na <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworze mieszającym</a> w czasie kilkunastu minut od startu.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');
    const toggleAllCheckbox = document.getElementById('rkToggleAllFaq');

    // Obsługa pojedynczych akordeonów
    faqItems.forEach(item => {
        const header = item.querySelector('.rk-faq-header');
        const body = item.querySelector('.rk-faq-body');

        header.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            if (isActive) {
                item.classList.remove('active');
                body.style.maxHeight = '0px';
            } else {
                item.classList.add('active');
                body.style.maxHeight = body.scrollHeight + "px";
            }
            updateMasterSwitchState();
        });
    });

    // Obsługa przełącznika "Rozwiń wszystkie"
    toggleAllCheckbox.addEventListener('change', function() {
        const isChecked = this.checked;
        
        faqItems.forEach(item => {
            const body = item.querySelector('.rk-faq-body');
            if (isChecked) {
                item.classList.add('active');
                body.style.maxHeight = body.scrollHeight + "px";
            } else {
                item.classList.remove('active');
                body.style.maxHeight = '0px';
            }
        });
    });

    // Funkcja aktualizująca stan przełącznika głównego
    function updateMasterSwitchState() {
        const allActive = Array.from(faqItems).every(item => item.classList.contains('active'));
        toggleAllCheckbox.checked = allActive;
    }
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania dotyczące pomp obiegowych",
    "description": "Eksperckie odpowiedzi na najczęstsze problemy z pompami obiegowymi w systemach ogrzewania podłogowego. Diagnostyka, tryby pracy i ustawienia.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-faq",
    "name": "Baza Diagnostyczna Pomp Obiegowych 2026",
    "description": "Zbiór typowych awarii, optymalnych parametrów przepływu i konfiguracji hydraulicznych dla układów płaszczyznowych ogrzewania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tryb proporcjonalny a stałociśnieniowy",
      "przepływ na rotametrach podłogówki",
      "dlaczego pompa obiegowa buczy",
      "pompa obiegowa a pompa ciepła",
      "diagnostyka pompy ogrzewania podłogowego"
    ],
    "measurementTechnique": "Analiza objawów akustycznych i termicznych w odniesieniu do nastaw hydraulicznych na rozdzielaczu podłogowym.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Weryfikacja trybu PP (błąd) vs CP (prawidłowy)",
        "Kontrola przepływów nominalnych (1,5 - 2,5 l/min)",
        "Diagnostyka kawitacji i zapowietrzenia zładu",
        "Zależność wbudowanej pompy obiegowej od powierzchni budynku"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywny Asystent Diagnostyki Pomp",
    "description": "Moduł typu Accordion FAQ pozwalający użytkownikowi na szybkie filtrowanie i odczytywanie rozwiązań najczęstszych problemów hydraulicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#faq-schema",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy pompa obiegowa do podłogówki może pracować na trybie proporcjonalnym (PP)?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, praca pompy w trybie proporcjonalnym (PP) jest kardynalnym błędem wykonawczym. W tym trybie zamknięcie części pętli grzewczych powoduje obniżenie ciśnienia przez pompę, co skutkuje drastycznym spadkiem przepływów w pozostałych, otwartych obiegach i niedogrzaniem pomieszczeń."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki przepływ na rotametrach powinna zapewnić pompa obiegowa?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowy przepływ dla standardowych pętli o długości 70–90 metrów wynosi od 1,5 do 2,5 litra na minutę (l/min). Wartości te muszą wynikać bezpośrednio z projektu hydraulicznego i być precyzyjnie wyregulowane na belce rozdzielacza."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego pompa obiegowa podłogówki buczy i głośno pracuje?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Główną przyczyną głośnej pracy jest zapowietrzenie układu lub zjawisko kawitacji wywołane zbyt niskim ciśnieniem statycznym w instalacji (poniżej 1,0 bar). Innym powodem może być zablokowanie wirnika przez osad magnetyczny w wyniku braku filtra."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pompa wbudowana w pompę ciepła wystarczy do obsłużenia podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "W budynkach o powierzchni do 120 m² ze sprzyjającą architekturą hydrauliczną pompa fabryczna zazwyczaj jest wystarczająca. Przy większych metrażach lub skomplikowanych układach kaskadowych konieczne jest zastosowanie sprzęgła hydraulicznego i zewnętrznej pompy."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy elektroniczna pompa obiegowa działa prawidłowo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowe działanie poznasz po stabilnym wskazaniu aktualnego poboru mocy (wyrażonego w Watach na wyświetlaczu) oraz braku drgań. Dodatkowo rura zasilająca za pompą powinna osiągnąć zadaną temperaturę w czasie kilkunastu minut od startu."
        }
      }
    ]
  }
]
</script>



<style>
:root {
    --rk-pmp-dark: #1e293b;
    --rk-pmp-blue: #0284c7;
    --rk-pmp-accent: #38bdf8;
    --rk-pmp-green: #10b981;
    --rk-pmp-red: #ef4444;
    --rk-pmp-gray: #64748b;
    --rk-pmp-bg: #f8fafc;
    --rk-pmp-card: #ffffff;
    --rk-pmp-border: #e2e8f0;
}

.rk-pmp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pmp-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-pmp-border);
    overflow: hidden;
}

/* Tagi Długi Ogon */
.rk-tags-row {
    padding: 20px 30px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.rk-mat-tag {
    background: rgba(2, 132, 199, 0.08);
    color: var(--rk-pmp-blue);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid rgba(2, 132, 199, 0.15);
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: var(--rk-pmp-blue);
    color: #ffffff;
}

/* Nagłówek i Wstęp */
.rk-pmp-header {
    padding: 30px 40px;
    text-align: center;
    border-bottom: 1px solid var(--rk-pmp-border);
}

.rk-pmp-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-pmp-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-pmp-header p {
    font-size: 16px;
    color: var(--rk-pmp-gray);
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

/* Interaktywny Panel */
.rk-pmp-dashboard {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    background: var(--rk-pmp-bg);
    border-bottom: 1px solid var(--rk-pmp-border);
}

.rk-pmp-controls {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-toggle-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--rk-pmp-card);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-pmp-border);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-toggle-row:hover {
    border-color: var(--rk-pmp-accent);
}

.rk-toggle-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-pmp-dark);
}

/* Switch CSS */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 50px;
    height: 28px;
}
.rk-switch input { opacity: 0; width: 0; height: 0; }
.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #cbd5e1;
    transition: .4s;
    border-radius: 34px;
}
.rk-slider:before {
    position: absolute;
    content: "";
    height: 20px; width: 20px;
    left: 4px; bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
input:checked + .rk-slider { background-color: var(--rk-pmp-green); }
input:checked + .rk-slider:before { transform: translateX(22px); }

/* SVG Visualizer */
.rk-pmp-visual {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-left: 1px solid var(--rk-pmp-border);
    background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);
}

.rk-pmp-svg-box {
    position: relative;
    width: 160px;
    height: 160px;
    margin-bottom: 25px;
}

.rk-svg-rotor {
    transform-origin: center;
    transition: all 0.5s ease;
}

.anim-spin-slow { animation: pmpSpin 8s linear infinite; }
.anim-spin-fast { animation: pmpSpin 1.5s linear infinite; }
.color-off { stroke: #94a3b8; }
.color-on { stroke: var(--rk-pmp-green); filter: drop-shadow(0 0 8px rgba(16, 185, 129, 0.4)); }

@keyframes pmpSpin { 100% { transform: rotate(360deg); } }

.rk-status-badge {
    padding: 8px 24px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    background: #e2e8f0;
    color: var(--rk-pmp-gray);
    transition: all 0.3s;
}

.rk-status-badge.status-ready {
    background: var(--rk-pmp-green);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.4);
}

/* Grid Detali */
.rk-pmp-details {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 40px;
}

.rk-detail-card {
    background: var(--rk-pmp-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-pmp-border);
}

.rk-detail-card h3 {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-pmp-dark);
    margin: 0 0 12px 0;
}

.rk-detail-card h3 svg { color: var(--rk-pmp-blue); }

.rk-detail-card p {
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
    margin: 0;
}

.rk-detail-card a {
    color: var(--rk-pmp-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.2s;
}

.rk-detail-card a:hover { border-color: var(--rk-pmp-blue); }

@media (max-width: 768px) {
    .rk-pmp-dashboard { grid-template-columns: 1fr; }
    .rk-pmp-visual { border-left: none; border-top: 1px solid var(--rk-pmp-border); padding: 30px; }
    .rk-pmp-details { grid-template-columns: 1fr; padding: 25px; gap: 15px; }
    .rk-pmp-controls { padding: 25px; }
    .rk-pmp-header { padding: 25px 20px; }
    .rk-pmp-header h2 { font-size: 24px; }
}
</style>

<div class="rk-pmp-container" id="pmp-configurator-app">
    
    <div class="rk-tags-row">
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
        <span class="rk-mat-tag"># współczynnik efektywności energetycznej eei</span>
        <span class="rk-mat-tag"># tryb stałociśnieniowy pompy</span>
        <span class="rk-mat-tag"># straty ciśnienia w instalacji</span>
    </div>

    <div class="rk-pmp-header">
        <h2>Podsumowanie – Kryteria wyboru niezawodnej pompy obiegowej</h2>
        <p>Wybór pompy obiegowej do instalacji ogrzewania podłogowego musi być podyktowany wyłącznie rzetelną analizą inżynierską, a nie pozorną oszczędnością przy zakupie. Uruchom weryfikator i sprawdź kluczowe parametry.</p>
    </div>

    <div class="rk-pmp-dashboard">
        <div class="rk-pmp-controls">
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Zgodność z dyrektywą ErP (EEI ≤ 0,20)</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Tryb stałociśnieniowy (CP) i wyświetlacz</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Korpus z żeliwa i wał ceramiczny</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Zgodność z projektem hydraulicznym</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
        </div>

        <div class="rk-pmp-visual">
            <div class="rk-pmp-svg-box">
                <svg viewBox="0 0 100 100" fill="none">
                    <circle cx="50" cy="50" r="45" stroke="#cbd5e1" stroke-width="4" fill="#ffffff"/>
                    <circle cx="50" cy="50" r="35" stroke="#e2e8f0" stroke-width="8" />
                    <g class="rk-svg-rotor anim-spin-slow color-off" id="pmpRotor">
                        <line x1="50" y1="15" x2="50" y2="85" stroke-width="6" stroke-linecap="round"/>
                        <line x1="15" y1="50" x2="85" y2="50" stroke-width="6" stroke-linecap="round"/>
                        <circle cx="50" cy="50" r="8" fill="currentColor" />
                    </g>
                    <rect x="35" y="40" width="30" height="20" rx="4" fill="#1e293b" />
                    <text x="50" y="54" fill="#38bdf8" font-size="10" font-family="monospace" font-weight="bold" text-anchor="middle" id="pmpWattage">&#8212; W</text>
                </svg>
            </div>
            <div class="rk-status-badge" id="pmpStatusText">Urządzenie amatorskie</div>
        </div>
    </div>

    <div class="rk-pmp-details">
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                Zgodność z dyrektywą ErP
            </h3>
            <p>Urządzenie musi posiadać współczynnik efektywności energetycznej <strong>EEI ≤ 0,20</strong>. Spełnienie tego warunku gwarantuje minimalny pobór prądu na poziomie zaledwie kilku watów podczas inteligentnej pracy adaptacyjnej.</p>
        </div>
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                Wielofunkcyjność elektroniki
            </h3>
            <p>Solidna pompa musi oferować dedykowany tryb stałociśnieniowy (<strong>CP</strong>), niezbędny przy sterowaniu strefowym, oraz czytelny wyświetlacz informujący o aktualnym przepływie [m³/h] i poborze mocy [W].</p>
        </div>
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg>
                Wysoka jakość materiałowa
            </h3>
            <p>Korpus wykonany z ciężkiego żeliwa z powłoką kataforetyczną oraz precyzyjny wał ceramiczny z nowoczesnymi łożyskami. To zestawienie gwarantuje cichą i bezawaryjną pracę przez minimum <strong>10–15 lat</strong>.</p>
        </div>
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Oparcie na dokumentacji
            </h3>
            <p>Zakup musi być bezwzględnie potwierdzony obliczeniami za pomocą <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a>, w oparciu o wyliczone <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">zapotrzebowanie cieplne OZC</a>. Eliminuje to ryzyko błędów hydraulicznych.</p>
        </div>
    </div>
</div>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Podsumowanie – Kryteria wyboru niezawodnej pompy obiegowej",
    "description": "Zestawienie rygorystycznych kryteriów inżynierskich doboru energooszczędnej pompy obiegowej do ogrzewania podłogowego. Sprawdź parametry techniczne przed zakupem.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-podsumowanie",
    "name": "Standardy Techniczne Pomp Obiegowych 2026",
    "description": "Specyfikacja techniczna i minimalne wymogi materiałowo-elektroniczne dla pomp cyrkulacyjnych w płaszczyznowych systemach grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej do podłogówki",
      "współczynnik efektywności energetycznej eei",
      "tryb stałociśnieniowy cp pompy",
      "obliczenia strat ciśnienia w instalacji",
      "jakość pompy obiegowej"
    ],
    "measurementTechnique": "Analiza wskaźnika EEI z dyrektywy ErP, krzywych podnoszenia oraz oporów hydraulicznych rurociągów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "EEI ≤ 0,20 - gwarancja energooszczędności",
        "Tryb CP (Constant Pressure) - dla systemów ze sterowaniem strefowym",
        "Żeliwo kataforetyczne i wał ceramiczny - żywotność 10-15 lat",
        "Weryfikacja mocy w odniesieniu do projektu OZC"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-podsumowanie",
    "name": "Interaktywny Weryfikator Klasy Pompy Obiegowej",
    "description": "Narzędzie symulacyjne pozwalające na ocenę jakości wybranej pompy obiegowej poprzez weryfikację czterech kluczowych kryteriów inżynierskich.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const checkboxes = document.querySelectorAll('.pmp-req-check');
    const rotor = document.getElementById('pmpRotor');
    const statusText = document.getElementById('pmpStatusText');
    const wattageDisplay = document.getElementById('pmpWattage');

    function updatePumpStatus() {
        let checkedCount = 0;
        checkboxes.forEach(cb => { if(cb.checked) checkedCount++; });

        if (checkedCount === 0) {
            statusText.textContent = 'Urządzenie amatorskie';
            statusText.className = 'rk-status-badge';
            rotor.className.baseVal = 'rk-svg-rotor anim-spin-slow color-off';
            wattageDisplay.textContent = '-- W';
            wattageDisplay.setAttribute('fill', '#64748b');
        } else if (checkedCount > 0 && checkedCount < 4) {
            statusText.textContent = `Weryfikacja: ${checkedCount}/4 kryteriów`;
            statusText.className = 'rk-status-badge';
            rotor.className.baseVal = 'rk-svg-rotor anim-spin-slow color-on';
            wattageDisplay.textContent = `${45 - (checkedCount * 10)} W`;
            wattageDisplay.setAttribute('fill', '#38bdf8');
        } else if (checkedCount === 4) {
            statusText.textContent = 'Klasa: Inżynierska (Zatwierdzona)';
            statusText.className = 'rk-status-badge status-ready';
            rotor.className.baseVal = 'rk-svg-rotor anim-spin-fast color-on';
            wattageDisplay.textContent = '6 W';
            wattageDisplay.setAttribute('fill', '#10b981');
        }
    }

    checkboxes.forEach(cb => {
        cb.addEventListener('change', updatePumpStatus);
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-slate: #475569;
    --rk-dl-bg: #f8fafc;
    --rk-dl-card: #ffffff;
    --rk-dl-border: #e2e8f0;
    
    /* Kolory Akcentujące */
    --rk-dl-blue: #2563eb;
    --rk-dl-pdf: #ef4444; /* Czerwony dla PDF */
    --rk-dl-img: #10b981; /* Zielony dla WebP */
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(15, 23, 42, 0.08);
    border: 1px solid var(--rk-dl-border);
    overflow: hidden;
}

/* Tagi Long Tail */
.rk-dl-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: var(--rk-dl-card);
}

.rk-mat-tag {
    background: var(--rk-dl-bg);
    color: var(--rk-dl-slate);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    border: 1px solid var(--rk-dl-border);
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: var(--rk-dl-slate);
    color: #ffffff;
}

/* Nagłówek */
.rk-dl-header {
    padding: 25px 40px 30px;
    background: var(--rk-dl-card);
    color: var(--rk-dl-dark);
    border-bottom: 1px solid var(--rk-dl-border);
}

.rk-dl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

.rk-dl-header p {
    font-size: 15px;
    color: var(--rk-dl-slate);
    margin: 0;
    line-height: 1.6;
    max-width: 800px;
}

/* Układ główny - Grid */
.rk-dl-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-dl-bg);
}

/* Lewa Kolumna - Podgląd Infografiki */
.rk-dl-preview-area {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--rk-dl-border);
}

.rk-preview-box {
    width: 100%;
    max-width: 320px;
    background: #ffffff;
    border: 8px solid #ffffff;
    border-radius: 16px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
    overflow: hidden;
    position: relative;
}

.rk-preview-box img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 8px;
    border: 1px solid var(--rk-dl-border);
}

.rk-preview-label {
    margin-top: 20px;
    font-size: 12px;
    font-weight: 900;
    color: var(--rk-dl-slate);
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Prawa Kolumna - Przyciski Pobierania */
.rk-dl-actions-area {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
}

.rk-action-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 10px 0;
}

.rk-action-desc {
    font-size: 14px;
    color: var(--rk-dl-slate);
    margin: 0 0 20px 0;
    line-height: 1.6;
}

.rk-btn-card {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 20px;
    background: #ffffff;
    border: 2px solid var(--rk-dl-border);
    border-radius: 16px;
    text-decoration: none;
    transition: all 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-btn-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-btn-card.pdf:hover { border-color: var(--rk-dl-pdf); }
.rk-btn-card.img:hover { border-color: var(--rk-dl-img); }

.rk-btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 12px;
    flex-shrink: 0;
}

.rk-btn-card.pdf .rk-btn-icon { background: #fef2f2; color: var(--rk-dl-pdf); }
.rk-btn-card.img .rk-btn-icon { background: #f0fdf4; color: var(--rk-dl-img); }

.rk-btn-content {
    display: flex;
    flex-direction: column;
}

.rk-btn-headline {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 4px 0;
}

.rk-btn-sub {
    font-size: 13px;
    font-weight: 600;
    color: var(--rk-dl-slate);
    margin: 0;
}

/* Stopka z Copyright */
.rk-dl-footer {
    background: #ffffff;
    border-top: 1px solid var(--rk-dl-border);
    padding: 20px 40px;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.rk-footer-shield {
    color: var(--rk-dl-slate);
    margin-top: 2px;
    flex-shrink: 0;
}

.rk-footer-copy {
    font-size: 12px;
    font-weight: 500;
    color: var(--rk-dl-slate);
    line-height: 1.6;
    margin: 0;
}

.rk-footer-copy strong {
    color: var(--rk-dl-dark);
    font-weight: 800;
}

@media (max-width: 768px) {
    .rk-dl-layout { grid-template-columns: 1fr; }
    .rk-dl-preview-area { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 30px 20px; }
    .rk-dl-actions-area { padding: 30px 20px; }
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-tags { padding: 20px 20px 0; }
    .rk-dl-footer { padding: 20px; flex-direction: column; align-items: center; text-align: center; }
}
</style>

<div class="rk-dl-container">
    
    <div class="rk-dl-tags">
        <span class="rk-mat-tag"># schemat podłączenia pompy obiegowej pdf</span>
        <span class="rk-mat-tag"># infografika instalacja ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># instrukcja montażu pompy obiegowej do pobrania</span>
        <span class="rk-mat-tag"># układ mieszający podłogówki schemat</span>
    </div>

    <div class="rk-dl-header">
        <h2>Materiały techniczne do pobrania</h2>
        <p>Pobierz przygotowaną przeze mnie infografikę w wysokiej rozdzielczości. Zawiera ona przekrój najważniejszych wytycznych projektowych i montażowych dla pomp obiegowych.</p>
    </div>

    <div class="rk-dl-layout">
        <div class="rk-dl-preview-area">
            <div class="rk-preview-box">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.webp" alt="Infografika - Pompa obiegowa w instalacji ogrzewania podłogowego" loading="lazy">
            </div>
            <div class="rk-preview-label">Podgląd Dokumentu</div>
        </div>

        <div class="rk-dl-actions-area">
            <h3 class="rk-action-title">Wybierz format pliku</h3>
            <p class="rk-action-desc">Dokumentacja jest dostępna w formacie wektorowym (PDF do druku) oraz w lekkim formacie graficznym (WebP do podglądu na telefonie).</p>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.pdf" target="_blank" class="rk-btn-card pdf">
                <div class="rk-btn-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><path d="M12 18v-6"></path><path d="M9 15l3 3 3-3"></path></svg>
                </div>
                <div class="rk-btn-content">
                    <h4 class="rk-btn-headline">Pobierz plik PDF</h4>
                    <p class="rk-btn-sub">Wysoka jakość • Wersja do druku</p>
                </div>
            </a>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.webp" target="_blank" class="rk-btn-card img">
                <div class="rk-btn-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                </div>
                <div class="rk-btn-content">
                    <h4 class="rk-btn-headline">Wyświetl obraz WebP</h4>
                    <p class="rk-btn-sub">Lekki plik • Podgląd w przeglądarce</p>
                </div>
            </a>
        </div>
    </div>

    <div class="rk-dl-footer">
        <div class="rk-footer-shield">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
        </div>
        <p class="rk-footer-copy">
            <strong>© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski.</strong> Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku. Chronione prawem autorskim.
        </p>
    </div>

</div>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Materiały techniczne do pobrania: Schematy i wytyczne pomp obiegowych",
    "description": "Pobierz darmową infografikę w formacie PDF oraz WebP zawierającą techniczne zasady doboru, trybów pracy oraz montażu pompy obiegowej w ogrzewaniu podłogowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-infografika",
    "name": "Infografika techniczna: Pompa obiegowa w podłogówce",
    "description": "Zestawienie graficzne schematów montażowych, wzorów obliczeniowych (Q i H) oraz charakterystyk trybów pracy (CP/PP) do pobrania w formacie PDF i WebP.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "schemat podłączenia pompy obiegowej pdf",
      "infografika instalacja ogrzewania podłogowego",
      "instrukcja montażu pompy obiegowej do pobrania",
      "układ mieszający podłogówki schemat",
      "jak podłączyć pompę podłogówki pdf"
    ],
    "measurementTechnique": "Synteza wiedzy inżynierskiej z normy PN-EN 1264 zaprezentowana w formie zoptymalizowanej infografiki 2D.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik PDF: Format wektorowy przeznaczony do wydruku przez instalatorów (Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.pdf).",
        "Plik WebP: Skompresowany format rastrowy do podglądu bezpośrednio w przeglądarkach na urządzeniach mobilnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-repozytorium",
    "name": "Interfejs Repozytorium Dokumentacji HVAC",
    "description": "Statyczny interfejs graficzny ułatwiający użytkownikom szybki podgląd i pobieranie dokumentacji technicznej w preferowanym formacie z zachowaniem ochrony praw autorskich.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa w instalacji ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
