<?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 Poradniki instalacyjne - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/category/poradniki-instalacyjne/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/category/poradniki-instalacyjne/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Sun, 19 Jul 2026 09:37:14 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Poradniki instalacyjne - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/poradniki-instalacyjne/</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>Niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki?</title>
		<link>https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 10:17:48 +0000</pubDate>
				<category><![CDATA[Efektywne ogrzewanie]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje niskotemperaturowe]]></category>
		<category><![CDATA[Koszty ogrzewania]]></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[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technika grzewcza]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[koszty eksploatacji]]></category>
		<category><![CDATA[krzywa grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[scop]]></category>
		<category><![CDATA[systemy niskotemperaturowe]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[termodynamika]]></category>
		<category><![CDATA[współczynnik cop]]></category>
		<category><![CDATA[wylewka anhydrytowa]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4200</guid>

					<description><![CDATA[<p>Wybór odpowiednich parametrów grzewczych to absolutny fundament, od którego zależą Twoje przyszłe rachunki za prąd oraz trwałość wykończenia wnętrz. W świecie nowoczesnych instalacji coraz częściej pojawia się kluczowe pytanie o to, jaka powinna być niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki? Odpowiedź na nie wymaga zrozumienia praw fizyki, a konkretnie zależności między temperaturą czynnika a współczynnikiem wydajności COP. Utrzymywanie zasilania na tym poziomie pozwala urządzeniu pracować z maksymalną efektywnością, co bezpośrednio przekłada się na realne oszczędności w domowym budżecie. W niniejszym tekście szczegółowo analizujemy aspekty techniczne, wpływ temperatury na jastrych oraz wyjaśniamy, dlaczego precyzyjny projekt instalacji jest ważniejszy niż zakup najdroższej jednostki grzewczej dostępnej na rynku.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">Niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki?</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-navy: #1e293b;
    --rk-intro-blue: #0284c7;
    --rk-intro-sky: #e0f2fe;
    --rk-intro-cyan: #06b6d4;
    --rk-intro-green: #10b981;
    --rk-intro-gray: #64748b;
    --rk-intro-border: #e2e8f0;
    --rk-intro-bg: #ffffff;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-intro-blue);
    border-left: 8px solid var(--rk-intro-blue);
    overflow: hidden;
}

/* Sekcja Hook (Mocne Otwarcie) */
.rk-intro-hook {
    padding: 40px 45px 30px;
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, var(--rk-intro-navy) 100%);
    color: #ffffff;
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.2);
    color: var(--rk-intro-cyan);
    padding: 6px 16px;
    border-radius: 8px;
    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-intro-hook h2 {
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 20px 0;
    line-height: 1.25;
}

.rk-intro-hook p {
    font-size: 17px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
    font-weight: 400;
}

.rk-intro-hook strong {
    color: #ffffff;
    font-weight: 800;
}

/* Przełącznik Nawigacyjny */
.rk-intro-nav {
    display: flex;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-intro-border);
}

.rk-intro-tab-btn {
    flex: 1;
    padding: 20px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-gray);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    /* Brak transition dla natychmiastowego działania */
}

.rk-intro-tab-btn:hover {
    background: #f1f5f9;
    color: var(--rk-intro-dark);
}

.rk-intro-tab-btn.active {
    color: var(--rk-intro-blue);
    border-bottom-color: var(--rk-intro-blue);
    background: #ffffff;
}

/* Panele Treści */
.rk-intro-content {
    background: #ffffff;
    padding: 40px 45px;
}

.rk-intro-panel {
    display: none; /* Sterowanie w JS */
}

.rk-intro-panel.active {
    display: block;
}

/* Szybka Odpowiedź */
.rk-intro-answer-box {
    border-left: 4px solid var(--rk-intro-green);
    padding: 20px 25px;
    background: #f0fdf4;
    border-radius: 0 12px 12px 0;
}

.rk-intro-answer-title {
    font-size: 18px;
    font-weight: 900;
    color: #065f46;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-intro-answer-text {
    font-size: 16px;
    line-height: 1.7;
    color: #166534;
    margin: 0;
}

.rk-intro-answer-text a {
    color: #065f46;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Agenda / Narzędzia */
.rk-intro-tools-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-intro-tool-card {
    padding: 20px;
    border: 1px solid var(--rk-intro-border);
    border-radius: 16px;
    background: #f8fafc;
}

.rk-intro-tool-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}

.rk-intro-tool-icon {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: var(--rk-intro-blue);
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rk-intro-tool-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0;
}

.rk-intro-tool-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-intro-gray);
    margin: 0;
}

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-intro-hook, .rk-intro-content { padding: 30px 20px; }
    .rk-intro-hook h2 { font-size: 26px; }
    .rk-intro-nav { flex-direction: column; }
    .rk-intro-tab-btn { justify-content: flex-start; padding: 15px 20px; border-bottom: none; border-left: 3px solid transparent; }
    .rk-intro-tab-btn.active { border-left-color: var(--rk-intro-blue); }
    .rk-intro-tools-grid { grid-template-columns: 1fr; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki?",
    "description": "Zrozum dlaczego parametr 35°C to złoty środek dla ogrzewania podłogowego. Szybka odpowiedź eksperta oraz przewodnik po interaktywnych narzędziach artykułu.",
    "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://x.com/Projekt_HVAC",
        "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": "2025-12-29",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-wstep",
    "name": "Kompendium: Niska Temperatura Zasilania Pompy Ciepła",
    "description": "Zbiór podstawowych definicji i twardych faktów wyjaśniających wyższość niskotemperaturowych układów płaszczyznowych (35°C) nad tradycyjnymi systemami grzewczymi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "niska temperatura zasilania pompy ciepła",
      "dlaczego 35 stopni to ideał dla podłogówki",
      "jak działa ogrzewanie podłogowe",
      "czy ogrzewanie podłogowe jest energooszczędne",
      "efektywność pompy ciepła"
    ],
    "measurementTechnique": "Ekstrakcja kluczowych wniosków inżynierskich zgodnie z normą PN-EN 1264 w celu udzielenia szybkiej odpowiedzi (Featured Snippet).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szybka Odpowiedź: 35°C gwarantuje najwyższy COP, bezpieczeństwo wylewki i komfort domowników.",
        "Zapowiedź narzędzi: W artykule użyto interaktywnych kalkulatorów i symulatorów termodynamiki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-wstep",
    "name": "Panel Nawigacyjny i Szybka Odpowiedź (AI Overview Hook)",
    "description": "Moduł wprowadzający czytelnika do artykułu, łączący funkcję natychmiastowej odpowiedzi na intencję wyszukiwania z nawigatorem po interaktywnych narzędziach.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="wstep-artykulu">
    
    <div class="rk-intro-hook">
        <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"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
            Inżynierskie Kompendium Wiedzy
        </div>
        <h2>Niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki?</h2>
        <p>
            Pompą ciepła steruje bezwzględna fizyka, a nie obietnice z folderów reklamowych. Jeśli posłuchasz wykonawców pracujących &#8222;na oko&#8221; i ustawisz na sterowniku 45°C zamiast 35°C, właśnie skróciłeś życie swojej sprężarki o połowę i podniosłeś roczne rachunki za prąd o ponad 30%. Zobacz, na czym naprawdę polega <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/" style="color:#e0f2fe; text-decoration: underline;">zasada działania ogrzewania płaszczyznowego</a>.
        </p>
    </div>

    <div class="rk-intro-nav">
        <button class="rk-intro-tab-btn active" data-intro-target="intro-answer">
            <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>
            Szybka odpowiedź (TL;DR)
        </button>
        <button class="rk-intro-tab-btn" data-intro-target="intro-tools">
            <svg width="20" height="20" 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>
            Co odkryjesz w tym poradniku?
        </button>
    </div>

    <div class="rk-intro-content">
        
        <!-- Panel 1: Szybka Odpowiedź -->
        <div class="rk-intro-panel active" id="intro-answer">
            <div class="rk-intro-answer-box">
                <h3 class="rk-intro-answer-title">
                    W telegraficznym skrócie:
                </h3>
                <p class="rk-intro-answer-text">
                    Zgodnie z wymogami normy budowlanej PN-EN 1264, temperatura zasilania 35°C to absolutny złoty standard w nowoczesnym budownictwie. Gwarantuje ona uzyskanie maksymalnego współczynnika sprawności (COP) pompy ciepła, chroni wylewki przed niszczącymi pęknięciami termicznymi i zapewnia bezwzględnie najwyższy komfort odczuwalny dla człowieka. To klucz do tego, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-energooszczedne/">aby ogrzewanie było maksymalnie energooszczędne</a>.
                </p>
            </div>
        </div>

        <!-- Panel 2: Narzędzia i Agenda -->
        <div class="rk-intro-panel" id="intro-tools">
            <p style="margin: 0 0 20px 0; font-size: 15px; color: var(--rk-intro-gray);">W tym kompleksowym artykule odrzuciłem &#8222;lanie wody&#8221;. Otrzymujesz ode mnie potężną bazę wiedzy wyposażoną w interaktywne narzędzia, które udowodnią Ci każdą postawioną tezę. Zobaczysz w praktyce:</p>
            
            <div class="rk-intro-tools-grid">
                
                <div class="rk-intro-tool-card">
                    <div class="rk-intro-tool-header">
                        <div class="rk-intro-tool-icon">
                            <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 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>
                        <h4 class="rk-intro-tool-title">Kalkulator Kosztów i COP</h4>
                    </div>
                    <p class="rk-intro-tool-desc">Symulator, w którym samodzielnie zmienisz temperaturę zasilania i zobaczysz, jak błyskawicznie rosną opłaty za prąd i spada żywotność sprzętu.</p>
                </div>

                <div class="rk-intro-tool-card">
                    <div class="rk-intro-tool-header">
                        <div class="rk-intro-tool-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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="3" y1="15" x2="21" y2="15"></line></svg>
                        </div>
                        <h4 class="rk-intro-tool-title">Symulator Gęstości Rur</h4>
                    </div>
                    <p class="rk-intro-tool-desc">Narzędzie wizualizujące, dlaczego oszczędzanie na długości rur (np. rozstaw co 20 cm) drastycznie niszczy parametry pracy całej kotłowni.</p>
                </div>

                <div class="rk-intro-tool-card">
                    <div class="rk-intro-tool-header">
                        <div class="rk-intro-tool-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
                        <h4 class="rk-intro-tool-title">Wizualizację Naprężeń</h4>
                    </div>
                    <p class="rk-intro-tool-desc">Moduł diagnostyczny pokazujący, kiedy wysoka temperatura doprowadzi do dehydratacji wylewki i zniszczenia paneli podłogowych.</p>
                </div>

                <div class="rk-intro-tool-card">
                    <div class="rk-intro-tool-header">
                        <div class="rk-intro-tool-icon">
                            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg>
                        </div>
                        <h4 class="rk-intro-tool-title">Panel Case Study</h4>
                    </div>
                    <p class="rk-intro-tool-desc">Prawdziwa historia inwestora i twarde zestawienie rozwiązań inżynierskich w opozycji do obietnic lokalnego wykonawcy.</p>
                </div>

            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var introBtns = document.querySelectorAll('.rk-intro-tab-btn');
    var introPanels = document.querySelectorAll('.rk-intro-panel');

    introBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var targetId = this.getAttribute('data-intro-target');

            // Reset wszystkich przycisków i paneli
            introBtns.forEach(function(b) { b.classList.remove('active'); });
            introPanels.forEach(function(p) { p.classList.remove('active'); });

            // Aktywacja wybranego - błyskawiczna (bez animacji) i bezpieczna (bez &&)
            this.classList.add('active');
            var targetPanel = document.getElementById(targetId);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-opt-dark: #0f172a;
    --rk-opt-navy: #1e293b;
    --rk-opt-slate: #334155;
    --rk-opt-blue: #3b82f6;
    --rk-opt-cyan: #06b6d4;
    --rk-opt-green: #10b981;
    --rk-opt-orange: #f97316;
    --rk-opt-red: #ef4444;
    --rk-opt-red-dark: #991b1b;
    --rk-opt-border: #e2e8f0;
    --rk-opt-bg: #ffffff;
}

.rk-opt-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-opt-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-opt-blue);
    overflow: hidden;
}

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

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

.rk-opt-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-opt-slate);
    margin: 0;
}

.rk-opt-header a {
    color: var(--rk-opt-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Symulator Termodynamiki */
.rk-opt-simulator {
    background: var(--rk-opt-dark);
    color: #ffffff;
    padding: 40px 45px;
    position: relative;
}

.rk-opt-simulator::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background: radial-gradient(circle at top right, rgba(59, 130, 246, 0.15), transparent 70%);
    pointer-events: none;
}

.rk-opt-sim-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
    position: relative;
    z-index: 2;
}

/* Wizualizacja Sprężarki */
.rk-opt-visual-box {
    background: var(--rk-opt-navy);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 20px;
    padding: 30px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-opt-compressor {
    width: 120px;
    height: auto;
    margin: 0 auto 20px auto;
    color: var(--rk-opt-cyan);
    transition: color 0.4s, filter 0.4s;
}

.rk-opt-anim-shake {
    animation: none; /* Domyślnie wyłączona */
}

@keyframes compressorShake {
    0% { transform: translate(1px, 1px) rotate(0deg); }
    10% { transform: translate(-1px, -2px) rotate(-1deg); }
    20% { transform: translate(-3px, 0px) rotate(1deg); }
    30% { transform: translate(3px, 2px) rotate(0deg); }
    40% { transform: translate(1px, -1px) rotate(1deg); }
    50% { transform: translate(-1px, 2px) rotate(-1deg); }
    60% { transform: translate(-3px, 1px) rotate(0deg); }
    70% { transform: translate(3px, 1px) rotate(-1deg); }
    80% { transform: translate(-1px, -1px) rotate(1deg); }
    90% { transform: translate(1px, 2px) rotate(0deg); }
    100% { transform: translate(1px, -2px) rotate(-1deg); }
}

.rk-opt-status-badge {
    display: inline-block;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    background: rgba(16, 185, 129, 0.2);
    color: var(--rk-opt-green);
    border: 1px solid rgba(16, 185, 129, 0.3);
    transition: all 0.3s;
}

/* Panel Sterowania i Wyniki */
.rk-opt-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-opt-slider-wrap {
    background: rgba(255,255,255,0.05);
    padding: 20px;
    border-radius: 16px;
}

.rk-opt-lbl-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-opt-lbl {
    font-size: 14px;
    font-weight: 700;
    color: #94a3b8;
    text-transform: uppercase;
}

.rk-opt-val-huge {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
}

.rk-opt-range {
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #334155;
    outline: none;
    -webkit-appearance: none;
}

.rk-opt-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-opt-blue);
    box-shadow: 0 0 15px rgba(59, 130, 246, 0.5);
    transition: transform 0.1s;
}
.rk-opt-range::-webkit-slider-thumb:active { transform: scale(1.15); }

/* Metryki */
.rk-opt-metrics-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-opt-metric {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 15px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    gap: 5px;
    transition: all 0.3s;
}

.rk-opt-m-lbl {
    font-size: 12px;
    color: #94a3b8;
    font-weight: 700;
    text-transform: uppercase;
}

.rk-opt-m-val {
    font-size: 22px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 4px;
}

.rk-opt-m-unit {
    font-size: 14px;
    color: #cbd5e1;
    font-weight: 600;
}

/* Wzór i Konsekwencje */
.rk-opt-content {
    padding: 40px 45px;
    background: #f8fafc;
}

.rk-opt-formula-card {
    background: #ffffff;
    border-left: 4px solid var(--rk-opt-blue);
    padding: 25px;
    border-radius: 0 16px 16px 0;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
    margin-bottom: 30px;
}

.rk-opt-math {
    font-family: monospace;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-opt-blue);
    margin-bottom: 10px;
    background: #f1f5f9;
    padding: 15px;
    border-radius: 8px;
    text-align: center;
    letter-spacing: 1px;
}

.rk-opt-formula-card p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-opt-slate);
    margin: 0;
}

.rk-opt-consequences {
    background: var(--rk-opt-red-dark);
    color: #ffffff;
    padding: 30px;
    border-radius: 20px;
    position: relative;
    overflow: hidden;
}

.rk-opt-consequences::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 6px; height: 100%;
    background: var(--rk-opt-red);
}

.rk-opt-consequences h3 {
    font-size: 20px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-opt-consequences p {
    font-size: 15px;
    line-height: 1.7;
    color: #fca5a5;
    margin: 0;
}

.rk-opt-consequences a {
    color: #ffffff;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-opt-header, .rk-opt-simulator, .rk-opt-content { padding: 30px 20px; }
    .rk-opt-sim-layout { grid-template-columns: 1fr; gap: 25px; }
    .rk-opt-metrics-grid { grid-template-columns: 1fr; }
    .rk-opt-compressor { width: 90px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-cop",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Dlaczego niska temperatura zasilania pompy ciepła na poziomie 35°C to optymalny wybór?",
    "description": "Zrozum fizykę gazów i termodynamikę pomp ciepła. Zobacz jak ciśnienie skraplania czynnika R32 wpływa na żywotność sprężarki i roczne rachunki za prąd.",
    "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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-cop",
    "name": "Wydajność COP i Ciśnienie Skraplania R32 (PN-EN 14511)",
    "description": "Zestawienie parametrów termodynamicznych obrazujące liniowy spadek współczynnika wydajności cieplnej przy rosnącym ciśnieniu w układzie chłodniczym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "temperatura zasilania 35 stopni pompa ciepła",
      "ciśnienie skraplania czynnika r32",
      "żywotność sprężarki pompy ciepła",
      "taktowanie pompy ciepła podłogówka",
      "współczynnik cop a temperatura zasilania"
    ],
    "measurementTechnique": "Algorytm oparty na krzywych charakterystyki sprężarek inwerterowych przy założeniu punktów pracy od A2W35 do A2W50.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Punkt A2W35: Ciśnienie ok. 21 bar, COP 4.6, żywotność optymalna.",
        "Punkt A2W50: Ciśnienie ok. 31 bar, COP spada poniżej 2.5, drastyczne przeciążenie łożysk."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-cop",
    "name": "Symulator Obciążenia Sprężarki i Sprawności COP",
    "description": "Interaktywny panel wizualizujący wpływ temperatury zasilania na fizyczne obciążenie (ciśnienie) sprężarki oraz wynikający z tego spadek wydajności i żywotności pompy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-opt-container" id="optymalny-wybor-cop">
    
    <div class="rk-opt-header">
        <h2>Dlaczego niska temperatura zasilania pompy ciepła na poziomie 35°C to optymalny wybór?</h2>
        <p>Bezpośrednia odpowiedź na to pytanie nie leży w marketingu, lecz w twardej fizyce gazów i wytycznych normy PN-EN 14511. Temperatura zasilania 35°C dla <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a> gwarantuje uzyskanie najwyższego współczynnika efektywności (COP). Podniesienie tego parametru wymusza na sprężarce drastyczne zwiększenie stopnia sprężania czynnika chłodniczego (np. R32), co natychmiast uderza po kieszeni.</p>
    </div>

    <div class="rk-opt-simulator">
        <div class="rk-opt-sim-layout">
            
            <!-- Wizualizacja Sprężarki - Nowa Ikona Pompy Ciepła -->
            <div class="rk-opt-visual-box">
                <svg class="rk-opt-compressor rk-opt-anim-shake" id="rkOptSvg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
                    <!-- Korpus pompy ciepła -->
                    <rect x="3" y="4" width="18" height="16" rx="2" ry="2"></rect>
                    <!-- Nóżki antywibracyjne -->
                    <path d="M6 20v2"></path>
                    <path d="M18 20v2"></path>
                    <!-- Kratka górna osłony -->
                    <path d="M7 8h10"></path>
                    <!-- Zewnętrzny pierścień wentylatora -->
                    <circle cx="12" cy="14" r="4.5"></circle>
                    <!-- Śmigła wentylatora -->
                    <path d="M12 9.5v9"></path>
                    <path d="M7.5 14h9"></path>
                </svg>
                <div class="rk-opt-status-badge" id="rkOptBadge">Stan Optymalny</div>
            </div>

            <!-- Panel Sterowania -->
            <div class="rk-opt-controls">
                <div class="rk-opt-slider-wrap">
                    <div class="rk-opt-lbl-row">
                        <span class="rk-opt-lbl">Temperatura zasilania</span>
                        <span class="rk-opt-val-huge" id="rkOptTempVal">35°C</span>
                    </div>
                    <!-- Zakres: 35C (podłogówka idealna) do 55C (stare grzejniki) -->
                    <input type="range" min="35" max="55" value="35" step="1" class="rk-opt-range" id="rkOptSlider">
                </div>

                <div class="rk-opt-metrics-grid">
                    <div class="rk-opt-metric" id="rkMetricPress">
                        <span class="rk-opt-m-lbl">Ciśnienie skraplania</span>
                        <span class="rk-opt-m-val"><span id="rkValPress">21.5</span> <span class="rk-opt-m-unit">bar</span></span>
                    </div>
                    <div class="rk-opt-metric" id="rkMetricCop">
                        <span class="rk-opt-m-lbl">Wydajność COP</span>
                        <span class="rk-opt-m-val"><span id="rkValCop">4.60</span> <span class="rk-opt-m-unit">x</span></span>
                    </div>
                    <div class="rk-opt-metric" style="grid-column: span 2;" id="rkMetricLife">
                        <span class="rk-opt-m-lbl">Szacowana żywotność sprężarki</span>
                        <span class="rk-opt-m-val"><span id="rkValLife">20</span> <span class="rk-opt-m-unit">lat bezawaryjnej pracy</span></span>
                    </div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-opt-content">
        
        <div class="rk-opt-formula-card">
            <div class="rk-opt-math">COP = Qh / W</div>
            <p>
                Gdzie <strong>Qh</strong> to użyteczna moc cieplna przekazana do budynku, a <strong>W</strong> to moc elektryczna pobrana przez sprężarkę z sieci. Im mniejsza różnica między temperaturą źródła dolnego (np. powietrze -2°C) a źródła górnego (woda w rurkach posadzki), tym <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-energooszczedne/">bardziej energooszczędny jest system</a> i tym mniej prądu pobiera zasilanie kompresora.
            </p>
        </div>

        <div class="rk-opt-consequences">
            <h3>
                <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="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>
                Konsekwencje błędów instalatora
            </h3>
            <p>
                Gdy instalator ułoży rury rzadko i wymusi ustawienie zasilania na 50°C, sprężarka musi wykonać tytaniczną pracę mechaniczną, aby pokonać <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">barierę różnicy temperatur</a> i dobić ciśnienie z 21 do ponad 31 barów. Skutkuje to drastycznym wzrostem rachunków, przegrzewaniem uzwojeń silnika, przyspieszonym zużyciem łożysk wału korbowego oraz &#8222;taktowaniem&#8221; (nieustannym włączaniem i wyłączaniem z braku odpowiedniego zładu wody). Taka praca decyduje o tym, <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">jak często musisz serwisować układ</a> i może skrócić żywotność urządzenia o ponad połowę!
            </p>
        </div>

    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    var slider = document.getElementById('rkOptSlider');
    var dispTemp = document.getElementById('rkOptTempVal');
    
    var svgIcon = document.getElementById('rkOptSvg');
    var badge = document.getElementById('rkOptBadge');
    
    var valPress = document.getElementById('rkValPress');
    var boxPress = document.getElementById('rkMetricPress');
    
    var valCop = document.getElementById('rkValCop');
    var boxCop = document.getElementById('rkMetricCop');
    
    var valLife = document.getElementById('rkValLife');
    var boxLife = document.getElementById('rkMetricLife');

    function updatePhysics(temp) {
        dispTemp.textContent = temp + '°C';
        
        // Obliczenia liniowe/szacunkowe na potrzeby demonstracji fizyki
        // Im wyższa temp, tym wyższe ciśnienie, niższy COP, krótsza żywotność
        var basePress = 21.5;
        var pressIncr = (temp - 35) * 0.52; // ok 0.5 bara na każdy 1 stopień
        var currentPress = (basePress + pressIncr).toFixed(1);
        
        var baseCop = 4.60;
        var copDecr = (temp - 35) * 0.11; // spadek ok 0.11 COP na każdy stopień
        var currentCop = (baseCop - copDecr).toFixed(2);
        
        var baseLife = 20;
        var lifeDecr = (temp - 35) * 0.65; // strata ok 0.65 roku na każdy stopień w ekstremach
        var currentLife = Math.max(7, Math.round(baseLife - lifeDecr));

        valPress.textContent = currentPress;
        valCop.textContent = currentCop;
        valLife.textContent = currentLife;

        // Reset stylów
        svgIcon.style.animation = 'none';
        
        // Logika warunkowa bezpieczna dla parserów (brak &&)
        
        // Strefa Optymalna (35 - 38)
        if (temp <= 38) {
            svgIcon.style.color = 'var(--rk-opt-cyan)';
            svgIcon.style.filter = 'drop-shadow(0 0 5px rgba(6, 182, 212, 0.4))';
            
            badge.textContent = 'Stan Optymalny';
            badge.style.background = 'rgba(16, 185, 129, 0.2)';
            badge.style.color = 'var(--rk-opt-green)';
            badge.style.borderColor = 'rgba(16, 185, 129, 0.3)';
            
            boxPress.style.borderColor = 'rgba(255,255,255,0.1)';
            boxCop.style.borderColor = 'rgba(255,255,255,0.1)';
            valCop.style.color = '#ffffff';
            valLife.style.color = '#ffffff';
        }

        // Strefa Przeciążenia (39 - 46)
        if (temp > 38) {
            if (temp <= 46) {
                svgIcon.style.color = 'var(--rk-opt-orange)';
                svgIcon.style.filter = 'drop-shadow(0 0 10px rgba(249, 115, 22, 0.6))';
                svgIcon.style.animation = 'compressorShake 0.8s infinite';
                
                badge.textContent = 'Rosnące obciążenie';
                badge.style.background = 'rgba(249, 115, 22, 0.2)';
                badge.style.color = 'var(--rk-opt-orange)';
                badge.style.borderColor = 'rgba(249, 115, 22, 0.3)';
                
                boxPress.style.borderColor = 'rgba(249, 115, 22, 0.4)';
                valCop.style.color = 'var(--rk-opt-orange)';
                valLife.style.color = '#cbd5e1';
            }
        }

        // Strefa Destrukcji (47 - 55)
        if (temp > 46) {
            svgIcon.style.color = 'var(--rk-opt-red)';
            svgIcon.style.filter = 'drop-shadow(0 0 15px rgba(239, 68, 68, 0.8))';
            svgIcon.style.animation = 'compressorShake 0.3s infinite';
            
            badge.textContent = 'Zagrożenie (Taktowanie)';
            badge.style.background = 'rgba(239, 68, 68, 0.2)';
            badge.style.color = 'var(--rk-opt-red)';
            badge.style.borderColor = 'rgba(239, 68, 68, 0.4)';
            
            boxPress.style.borderColor = 'rgba(239, 68, 68, 0.6)';
            valCop.style.color = 'var(--rk-opt-red)';
            valLife.style.color = 'var(--rk-opt-red)';
        }
    }

    slider.addEventListener('input', function() {
        updatePhysics(parseInt(this.value, 10));
    });

    // Inicjalizacja domyślna
    updatePhysics(35);
});
</script>



<p class="wp-block-paragraph"></p>



<style>
:root {
    --rk-space-dark: #0f172a;
    --rk-space-navy: #1e293b;
    --rk-space-blue: #2563eb;
    --rk-space-sky: #38bdf8;
    --rk-space-green: #10b981;
    --rk-space-red: #ef4444;
    --rk-space-red-light: #fef2f2;
    --rk-space-gray: #64748b;
    --rk-space-border: #e2e8f0;
    --rk-space-bg: #ffffff;
}

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

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

.rk-space-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-space-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-space-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-space-gray);
    margin: 0;
}

.rk-space-header a {
    color: var(--rk-space-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interaktywny Symulator Rozstawu */
.rk-space-simulator {
    padding: 40px 45px;
    background: var(--rk-space-dark);
    color: #ffffff;
    position: relative;
}

.rk-space-control-panel {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 30px;
}

.rk-space-lbl-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.rk-space-lbl {
    font-size: 16px;
    font-weight: 800;
    color: #cbd5e1;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.rk-space-val-badge {
    background: var(--rk-space-blue);
    color: #ffffff;
    padding: 8px 20px;
    border-radius: 12px;
    font-size: 24px;
    font-weight: 900;
    box-shadow: 0 4px 15px rgba(37, 99, 235, 0.4);
}

.rk-space-range {
    width: 100%;
    height: 10px;
    border-radius: 5px;
    background: #334155;
    outline: none;
    -webkit-appearance: none;
}

.rk-space-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 5px solid var(--rk-space-sky);
    box-shadow: 0 0 15px rgba(56, 189, 248, 0.6);
    transition: transform 0.1s;
}

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

/* Wizualizacja rur (SVG) */
.rk-space-visual {
    height: 100px;
    background: rgba(0,0,0,0.2);
    border-radius: 12px;
    margin-bottom: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,0.05);
}

.rk-pipe-line {
    height: 16px;
    background: linear-gradient(90deg, #ef4444 0%, #38bdf8 100%);
    width: 100%;
    border-radius: 8px;
    position: absolute;
    transition: all 0.4s ease;
    box-shadow: 0 2px 10px rgba(239, 68, 68, 0.3);
}

/* Wyniki (Grid) */
.rk-space-metrics {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

.rk-space-metric-card {
    background: #ffffff;
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    color: var(--rk-space-dark);
    transition: all 0.3s;
}

.rk-space-metric-lbl {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-space-gray);
    margin-bottom: 8px;
}

.rk-space-metric-val {
    font-size: 26px;
    font-weight: 900;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 4px;
}

.rk-space-metric-unit {
    font-size: 14px;
    font-weight: 700;
}

/* Stany kart */
.rk-space-metric-card.alert {
    background: var(--rk-space-red);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.4);
}
.rk-space-metric-card.alert .rk-space-metric-lbl { color: #fecaca; }

.rk-space-metric-card.safe {
    background: var(--rk-space-green);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.4);
}
.rk-space-metric-card.safe .rk-space-metric-lbl { color: #a7f3d0; }

/* Zawartość merytoryczna */
.rk-space-content {
    padding: 40px 45px;
    background: #f8fafc;
}

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

.rk-space-formula-box {
    background: #ffffff;
    border: 1px solid var(--rk-space-border);
    border-left: 4px solid var(--rk-space-blue);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    margin-bottom: 25px;
}

.rk-space-formula-text {
    font-family: monospace;
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-space-blue);
    margin-bottom: 10px;
    background: #f1f5f9;
    padding: 10px;
    border-radius: 8px;
    text-align: center;
}

.rk-space-desc {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-space-gray);
    margin: 0;
}

.rk-space-desc a {
    color: var(--rk-space-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

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

.rk-space-info-card {
    background: #ffffff;
    border: 1px solid var(--rk-space-border);
    padding: 20px;
    border-radius: 16px;
}

.rk-space-info-card h4 {
    font-size: 16px;
    font-weight: 800;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-space-info-card.trap h4 { color: var(--rk-space-red); }
.rk-space-info-card.pro h4 { color: var(--rk-space-green); }

.rk-space-info-card p {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-space-gray);
    margin: 0;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-space-header, .rk-space-simulator, .rk-space-content { padding: 30px 20px; }
    .rk-space-metrics { grid-template-columns: 1fr; gap: 15px; } /* Układ pionowy wyników */
    .rk-space-grid-info { grid-template-columns: 1fr; gap: 15px; } /* Układ pionowy paneli info */
    .rk-space-lbl-row { flex-direction: column; gap: 15px; align-items: flex-start; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-rozstaw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Jaki rozstaw rur ogrzewania podłogowego przy pompie ciepła zapewnia parametr 35°C?",
    "description": "Zrozum wpływ rozstawu pętli na gęstość strumienia cieplnego. Zobacz, jak oszczędność na rurach drastycznie obniża COP i zmniejsza zład wody systemu.",
    "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://x.com/Projekt_HVAC",
        "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": "2025-12-29",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-rozstaw",
    "name": "Wskaźniki Wydajności Cieplnej dla Różnych Rozstawów Rur 2026",
    "description": "Zbiór danych określających korelację między gęstością ułożenia rur (wartość a) a wymaganą temperaturą zasilania według normy PN-EN 1264-2.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozstaw rur w wodnym ogrzewaniu podłogowym",
      "ile rury na m2 ogrzewania podłogowego",
      "większy czy mniejszy zład wody w ogrzewaniu podłogowym",
      "brak bufora a pojemność instalacji",
      "spadek cop przy rzadkim rozstawie rur"
    ],
    "measurementTechnique": "Obliczanie gęstości strumienia cieplnego q ze wzoru normatywnego przy zachowaniu stałej mocy pokrywającej straty rzędu 40-50 W/m².",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10 cm: Zapewnia 50 W/m² przy 35°C zasilania, gwarantując duży zład wody.",
        "Rozstaw 20 cm: Zapewnia tylko 32 W/m² przy 35°C, wymuszając podniesienie krzywej do 44°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-rozstaw",
    "name": "Symulator Rozstawu Rur i Zładu Wody PN-EN 1264-2",
    "description": "Wizualne narzędzie pozwalające użytkownikowi na zmianę rozstawu pętli i natychmiastową obserwację destrukcyjnych skutków dla temperatury, COP oraz pojemności wodnej układu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-space-container" id="rozstaw-rur">
    
    <div class="rk-space-header">
        <h2>Jaki rozstaw rur ogrzewania podłogowego przy pompie ciepła zapewnia parametr 35°C?</h2>
        <p>Zgodnie z rygorystycznymi obliczeniami opartymi na normie <strong>PN-EN 1264-2</strong>, aby utrzymać zasilanie 35°C i pokryć straty ciepła nowoczesnego budynku (WT 2021) rzędu 40–50 W/m², fizyka pozostawia nam tylko jedną drogę: bardzo gęsty <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur w ogrzewaniu podłogowym</a>. Zwiększanie odstępów drastycznie obniża moc posadzki, zmuszając sprężarkę do morderczej pracy na podwyższonych parametrach.</p>
    </div>

    <div class="rk-space-simulator">
        <div class="rk-space-control-panel">
            <div class="rk-space-lbl-row">
                <span class="rk-space-lbl">Wybierz rozstaw instalacyjny</span>
                <span class="rk-space-val-badge" id="rkSpaceValDisp">Co 10 cm</span>
            </div>
            <!-- Suwak: 1=10cm, 2=15cm, 3=20cm -->
            <input type="range" min="1" max="3" value="1" step="1" class="rk-space-range" id="rkSpaceSlider">
        </div>

        <div class="rk-space-visual" id="rkSpaceVisualBox">
            <!-- Rury generowane przez JS -->
        </div>

        <div class="rk-space-metrics">
            <div class="rk-space-metric-card" id="rkCardTemp">
                <div class="rk-space-metric-lbl">Wymagane Zasilanie</div>
                <div class="rk-space-metric-val" id="rkValTemp">35<span class="rk-space-metric-unit">°C</span></div>
            </div>
            <div class="rk-space-metric-card" id="rkCardCop">
                <div class="rk-space-metric-lbl">Wpływ na COP Pompy</div>
                <div class="rk-space-metric-val" id="rkValCop" style="font-size: 22px;">Maksymalny</div>
            </div>
            <div class="rk-space-metric-card" id="rkCardVol">
                <div class="rk-space-metric-lbl">Zład Wody w Układzie</div>
                <div class="rk-space-metric-val" id="rkValVol">Wysoki</div>
            </div>
        </div>
    </div>

    <div class="rk-space-content">
        <h3>
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="color:var(--rk-space-blue);"><path d="M2 12h4l3-9 5 18 3-9h5"></path></svg>
            Fizyka gęstości strumienia cieplnego
        </h3>
        
        <div class="rk-space-formula-box">
            <div class="rk-space-formula-text">q = B * a * Delta T_m</div>
            <p class="rk-space-desc">
                Gdzie <strong>B</strong> to współczynnik dla rury, <strong>a</strong> to współczynnik rozstawu, a <strong>Delta T_m</strong> to średnia różnica temperatur. Dla rozstawu 10 cm, współczynnik <em>a</em> pozwala wygenerować bezpieczne 50 W/m² przy zasilaniu 35°C. Przy rozstawie 20 cm, powierzchnia odda zaledwie 32 W/m² – aby wycisnąć z niej wymaganą moc, musisz wpuścić w rury destrukcyjne 44°C.
            </p>
        </div>

        <div class="rk-space-grid-info">
            <div class="rk-space-info-card trap">
                <h4>
                    <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="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                    Błąd ułożenia co 20 cm
                </h4>
                <p>
                    Koszt inwestycyjny w <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">ilość rury na m²</a> jest mniejszy o ok. 12 zł, ale to finansowa pułapka. Stała strata na sprawności COP wynosi -25% przez cały okres użytkowania, a mała pojemność wodna rur powoduje tzw. taktowanie sprężarki.
                </p>
            </div>
            <div class="rk-space-info-card pro">
                <h4>
                    <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>
                    Standard Inżynierski 10 cm
                </h4>
                <p>
                    Gęste ułożenie rozwiązuje kluczowy dylemat: <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/">większy czy mniejszy zład wody</a>. Gigantyczna pojemność wodna eliminuje potrzebę montażu bufora sprzęgającego i pozwala inwerterowi na płynną, ciągłą modulację mocy.
                </p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    var slider = document.getElementById('rkSpaceSlider');
    var dispVal = document.getElementById('rkSpaceValDisp');
    
    var cardTemp = document.getElementById('rkCardTemp');
    var valTemp = document.getElementById('rkValTemp');
    
    var cardCop = document.getElementById('rkCardCop');
    var valCop = document.getElementById('rkValCop');
    
    var cardVol = document.getElementById('rkCardVol');
    var valVol = document.getElementById('rkValVol');
    
    var visualBox = document.getElementById('rkSpaceVisualBox');

    function drawPipes(count) {
        visualBox.innerHTML = '';
        var spacing = 100 / (count + 1);
        
        for (var i = 1; i <= count; i++) {
            var pipe = document.createElement('div');
            pipe.className = 'rk-pipe-line';
            pipe.style.top = (spacing * i) + '%';
            pipe.style.transform = 'translateY(-50%)';
            visualBox.appendChild(pipe);
        }
    }

    function updateSimulation(val) {
        // Reset klas
        cardTemp.className = 'rk-space-metric-card';
        cardCop.className = 'rk-space-metric-card';
        cardVol.className = 'rk-space-metric-card';

        // Logika bez &#038;&#038;
        if (val === '1') {
            dispVal.textContent = 'Co 10 cm';
            drawPipes(5); // Gęsto
            
            cardTemp.classList.add('safe');
            valTemp.innerHTML = '35<span class="rk-space-metric-unit">°C</span>';
            
            cardCop.classList.add('safe');
            valCop.textContent = 'Maksymalny';
            
            cardVol.classList.add('safe');
            valVol.textContent = 'Wysoki (Bez Bufora)';
        }
        
        if (val === '2') {
            dispVal.textContent = 'Co 15 cm';
            drawPipes(3); // Średnio
            
            valTemp.innerHTML = '39<span class="rk-space-metric-unit">°C</span>';
            valCop.textContent = '- 12% (Spadek)';
            valVol.textContent = 'Średni';
        }
        
        if (val === '3') {
            dispVal.textContent = 'Co 20 cm';
            drawPipes(2); // Rzadko
            
            cardTemp.classList.add('alert');
            valTemp.innerHTML = '44<span class="rk-space-metric-unit">°C</span>';
            
            cardCop.classList.add('alert');
            valCop.textContent = '- 25% (Strata)';
            
            cardVol.classList.add('alert');
            valVol.textContent = 'Krytycznie Niski';
        }
    }

    slider.addEventListener('input', function() {
        updateSimulation(this.value);
    });

    // Inicjalizacja
    updateSimulation('1');
});
</script>



<style>
:root {
    --rk-rad-dark: #0f172a;
    --rk-rad-slate: #334155;
    --rk-rad-blue: #0284c7;
    --rk-rad-sky: #38bdf8;
    --rk-rad-indigo: #4f46e5;
    --rk-rad-green: #10b981;
    --rk-rad-red: #ef4444;
    --rk-rad-orange: #f97316;
    --rk-rad-border: #e2e8f0;
    --rk-rad-bg: #ffffff;
}

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

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

.rk-rad-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-rad-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-rad-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-rad-slate);
    margin: 0;
}

.rk-rad-header a {
    color: var(--rk-rad-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Symulator Aranzacji */
.rk-rad-simulator {
    padding: 40px 45px;
    background: var(--rk-rad-dark);
    color: #ffffff;
    position: relative;
}

.rk-rad-simulator::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background: radial-gradient(circle at bottom right, rgba(79, 70, 229, 0.2), transparent 60%);
    pointer-events: none;
}

.rk-rad-sim-title {
    font-size: 20px;
    font-weight: 900;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    gap: 12px;
    position: relative;
    z-index: 2;
}

/* Panele sterowania */
.rk-rad-controls {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 25px;
    margin-bottom: 35px;
    position: relative;
    z-index: 2;
}

.rk-rad-toggle-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-rad-control-lbl {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    color: #94a3b8;
}

.rk-rad-switch-group {
    display: flex;
    gap: 10px;
}

.rk-rad-btn {
    flex: 1;
    padding: 12px;
    background: rgba(0,0,0,0.3);
    border: 1px solid rgba(255,255,255,0.1);
    color: #cbd5e1;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.rk-rad-btn.active {
    background: var(--rk-rad-blue);
    color: #ffffff;
    border-color: var(--rk-rad-sky);
    box-shadow: 0 4px 15px rgba(2, 132, 199, 0.4);
}

.rk-rad-slider-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.rk-rad-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-rad-slider-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-rad-sky);
}

.rk-rad-range {
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: rgba(255,255,255,0.1);
    outline: none;
    -webkit-appearance: none;
}

.rk-rad-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-rad-blue);
    box-shadow: 0 0 10px rgba(56, 189, 248, 0.5);
    transition: transform 0.1s;
}
.rk-rad-range::-webkit-slider-thumb:active { transform: scale(1.15); }

/* Tablica Wyników */
.rk-rad-dashboard {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.rk-rad-metric {
    background: #ffffff;
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    color: var(--rk-rad-dark);
}

.rk-rad-metric-lbl {
    font-size: 13px;
    font-weight: 800;
    color: #64748b;
    text-transform: uppercase;
    margin-bottom: 10px;
}

.rk-rad-metric-val {
    font-size: 28px;
    font-weight: 900;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 4px;
}

.rk-rad-metric-unit {
    font-size: 15px;
    color: var(--rk-rad-slate);
    font-weight: 700;
}

.rk-rad-metric.highlight {
    background: var(--rk-rad-blue);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}
.rk-rad-metric.highlight .rk-rad-metric-lbl { color: #e0f2fe; }
.rk-rad-metric.highlight .rk-rad-metric-unit { color: #bae6fd; }

.rk-rad-metric.warning {
    background: var(--rk-rad-red);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.4);
}
.rk-rad-metric.warning .rk-rad-metric-lbl { color: #fee2e2; }
.rk-rad-metric.warning .rk-rad-metric-unit { color: #fecaca; }

/* Tekst i Wyjaśnienie */
.rk-rad-content {
    padding: 35px 45px;
    background: #f8fafc;
}

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

.rk-rad-text-block {
    background: #ffffff;
    border-left: 4px solid var(--rk-rad-indigo);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    margin-bottom: 25px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-rad-slate);
}

.rk-rad-alert {
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 25px;
    border-radius: 16px;
    display: flex;
    gap: 20px;
}

.rk-rad-alert-icon {
    color: var(--rk-rad-red);
    flex-shrink: 0;
}

.rk-rad-alert-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-rad-red);
    margin: 0 0 8px 0;
}

.rk-rad-alert-text {
    font-size: 15px;
    line-height: 1.6;
    color: #7f1d1d;
    margin: 0;
}

.rk-rad-alert-text a {
    color: var(--rk-rad-red);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-rad-header, .rk-rad-simulator, .rk-rad-content { padding: 30px 20px; }
    .rk-rad-controls { grid-template-columns: 1fr; gap: 15px; }
    .rk-rad-dashboard { grid-template-columns: 1fr; gap: 15px; } /* Układ pionowy */
    .rk-rad-alert { flex-direction: column; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-promieniowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Ile watów z metra kwadratowego oddaje podłogówka przy zasilaniu 35 stopni?",
    "description": "Zrozum zjawisko wymiany ciepła. Odkryj, jak stała zabudowa meblowa i dobór okładziny determinują całkowitą moc grzewczą podłogi i wymuszają zmianę temperatury zasilania.",
    "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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-promieniowanie",
    "name": "Bilans Mocy i Gęstość Strumienia Cieplnego Posadzki 2026",
    "description": "Baza danych inżynierskich obrazująca wpływ oporu cieplnego materiałów wykończeniowych oraz stopnia zasłonięcia powierzchni na wydajność emiterów płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ile watów z podłogówki na m2",
      "jak działa ogrzewanie podłogowe",
      "wodne ogrzewanie podłogowe a meble jak połączyć komfort i aranżacje",
      "jak rodzaj okładziny podłogowej wpływa na wydajność ogrzewania podłogowego",
      "promieniowanie czy konwekcja w ogrzewaniu"
    ],
    "measurementTechnique": "Szacowanie czynnej powierzchni oddawania ciepła A oraz mocy jednostkowej q w zależności od współczynnika oporu cieplnego okładziny R.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Płytki ceramiczne przy zasilaniu 35°C oddają ok. 50 W z każdego odsłoniętego metra kwadratowego.",
        "Panele laminowane ze względu na wyższy opór cieplny redukują strumień do ok. 35 W/m²."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-promieniowanie",
    "name": "Kalkulator Bilansu Mocy i Aktywnej Powierzchni Grzewczej",
    "description": "Symulator edukacyjny pozwalający na bieżąco obserwować, jak wybór paneli podłogowych i wstawienie grubych mebli niszczy bilans mocy salonu i podnosi temperaturę zasilania.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-rad-container" id="bilans-mocy">
    
    <div class="rk-rad-header">
        <h2>Ile watów z metra kwadratowego oddaje podłogówka przy zasilaniu 35 stopni?</h2>
        <p>Wodne ogrzewanie podłogowe zasilane parametrem 35°C (przy projektowym spadku temperatury Delta T = 5K, czyli powrocie 30°C) oddaje do pomieszczenia o temperaturze normowej 20°C strumień cieplny rzędu <strong>45 do 55 W/m²</strong> dla płytek ceramicznych oraz <strong>30 do 38 W/m²</strong> dla paneli. Wartości te są ściśle pilnowane przez normę PN-EN 1264, która chroni Twoje zdrowie, blokując temperaturę powierzchni posadzki na maksymalnie 29°C.</p>
    </div>

    <div class="rk-rad-simulator">
        <div class="rk-rad-sim-title">
            <svg width="28" height="28" 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>
            Symulacja Salonu (Metraż całkowity: 28 m²)
        </div>

        <div class="rk-rad-controls">
            <div class="rk-rad-toggle-box">
                <div class="rk-rad-control-lbl">Wybierz okładzinę podłogi</div>
                <div class="rk-rad-switch-group">
                    <button class="rk-rad-btn active" data-mat="plytki">Płytki (50 W/m²)</button>
                    <button class="rk-rad-btn" data-mat="panele">Panele (35 W/m²)</button>
                </div>
            </div>

            <div class="rk-rad-slider-box">
                <div class="rk-rad-slider-header">
                    <div class="rk-rad-control-lbl">Stała zabudowa meblowa (szafy, kanapa)</div>
                    <div class="rk-rad-slider-val" id="rkRadFurnVal">6 m²</div>
                </div>
                <input type="range" min="0" max="14" value="6" step="1" class="rk-rad-range" id="rkRadFurnSlider">
            </div>
        </div>

        <div class="rk-rad-dashboard">
            <div class="rk-rad-metric">
                <div class="rk-rad-metric-lbl">Czynna Powierzchnia (A)</div>
                <div class="rk-rad-metric-val" id="rkValArea">22<span class="rk-rad-metric-unit">m²</span></div>
            </div>
            <div class="rk-rad-metric highlight" id="rkCardPower">
                <div class="rk-rad-metric-lbl">Całkowita Moc Salonu (Q)</div>
                <div class="rk-rad-metric-val" id="rkValPower">1100<span class="rk-rad-metric-unit">W</span></div>
            </div>
            <div class="rk-rad-metric" id="rkCardTemp">
                <div class="rk-rad-metric-lbl">Wymagane Zasilanie</div>
                <div class="rk-rad-metric-val" id="rkValTemp">35<span class="rk-rad-metric-unit">°C</span></div>
            </div>
        </div>
    </div>

    <div class="rk-rad-content">
        <h3>Anatomia wymiany ciepła przez promieniowanie</h3>
        
        <div class="rk-rad-text-block">
            Wielkopowierzchniowy emiter, jakim jest prawidłowo wykonana instalacja płaszczyznowa, uwalnia energię w zupełnie inny sposób niż punktowe kaloryfery. Podłoga oddaje ponad <strong>70% energii przez promieniowanie</strong>, a tylko 30% przez konwekcję. Aby dowiedzieć się <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak dokładnie działa ogrzewanie podłogowe</a>, musisz pojąć prosty bilans: <strong>Q = A × q</strong>. Zobacz w symulatorze powyżej, jak drastycznie tradycyjny grzejnik o powierzchni zaledwie 1,5 m² musi zostać rozgrzany (często powyżej 60°C), aby oddać równe 1100 W mocy do pomieszczenia.
        </div>

        <div class="rk-rad-alert">
            <svg class="rk-rad-alert-icon" width="36" height="36" 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>
                <h4 class="rk-rad-alert-title">Konsekwencje błędów aranżacyjnych</h4>
                <p class="rk-rad-alert-text">
                    Projektowanie instalacji &#8222;na oko&#8221; i późniejsze wstawienie wielkiej wyspy kuchennej czy masywnego narożnika bez nóżek blokuje emisję. Sprawdza się tu zasada, że <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">meble i wodne ogrzewanie podłogowe</a> muszą współgrać. Jeśli zastawisz zbyt dużo podłogi wybierając jednocześnie panele (zobacz jak <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">rodzaj okładziny wpływa na wydajność</a>), czynna powierzchnia skurczy się tak bardzo, że sterownik chcąc dogrzać salon sztucznie podniesie temperaturę na pompie ciepła do 45°C. Zniszczy to sprawność sezonową (SCOP) całego układu.
                </p>
            </div>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    var baseArea = 28; // Stała powierzchnia pokoju
    var currentMatPower = 50; // Domyślnie płytki
    var requiredRoomPower = 1100; // Moc minimalna do ogrzania tego salonu
    
    // Elementy UI
    var btns = document.querySelectorAll('.rk-rad-btn');
    var furnSlider = document.getElementById('rkRadFurnSlider');
    var furnValDisp = document.getElementById('rkRadFurnVal');
    
    var dispArea = document.getElementById('rkValArea');
    var dispPower = document.getElementById('rkValPower');
    var dispTemp = document.getElementById('rkValTemp');
    
    var cardPower = document.getElementById('rkCardPower');
    var cardTemp = document.getElementById('rkCardTemp');

    function updateSimulation() {
        var furnArea = parseInt(furnSlider.value, 10);
        furnValDisp.textContent = furnArea + ' m²';
        
        // Krok 1: Oblicz czynną powierzchnię A
        var activeArea = baseArea - furnArea;
        dispArea.textContent = activeArea;
        
        // Krok 2: Oblicz całkowitą wyprodukowaną moc Q
        var totalPower = activeArea * currentMatPower;
        dispPower.textContent = totalPower;
        
        // Logika statusu (Bez znaków &&)
        
        // Jeśli moc jest wystarczająca lub większa (Ideały)
        if (totalPower >= requiredRoomPower) {
            cardPower.className = 'rk-rad-metric highlight';
            cardTemp.className = 'rk-rad-metric highlight';
            dispTemp.textContent = '35';
        }
        
        // Jeśli moc zaczyna spadać poniżej zapotrzebowania (Kryzys)
        if (totalPower < requiredRoomPower) {
            cardPower.className = 'rk-rad-metric warning';
            cardTemp.className = 'rk-rad-metric warning';
            
            // Prosta, poglądowa estymacja wzrostu temperatury (co 30W braku = +1 st C na zasilaniu)
            var deficit = requiredRoomPower - totalPower;
            var tempIncrease = Math.ceil(deficit / 30);
            var newTemp = 35 + tempIncrease;
            
            // Limitujemy ostrzeżenie w UI do 55C
            if (newTemp > 55) {
                newTemp = 55;
            }
            
            dispTemp.textContent = newTemp;
        }
    }

    // Obsługa przełącznika Płytki / Panele
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');
            
            var matType = this.getAttribute('data-mat');
            
            if (matType === 'plytki') {
                currentMatPower = 50;
            }
            if (matType === 'panele') {
                currentMatPower = 35;
            }
            
            updateSimulation();
        });
    });

    // Obsługa suwaka mebli
    furnSlider.addEventListener('input', updateSimulation);

    // Initial run
    updateSimulation();
});
</script>



<style>
:root {
    --rk-mat-dark: #0f172a;
    --rk-mat-slate: #334155;
    --rk-mat-blue: #0284c7;
    --rk-mat-sky: #e0f2fe;
    --rk-mat-green: #10b981;
    --rk-mat-green-light: #dcfce7;
    --rk-mat-orange: #f97316;
    --rk-mat-orange-light: #ffedd5;
    --rk-mat-red: #ef4444;
    --rk-mat-red-light: #fef2f2;
    --rk-mat-border: #e2e8f0;
    --rk-mat-bg: #ffffff;
}

.rk-mat-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-mat-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-mat-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-mat-header {
    padding: 40px 45px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border-bottom: 1px solid var(--rk-mat-border);
}

.rk-mat-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-mat-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-mat-header p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-mat-slate);
    margin: 0;
}

.rk-mat-header a {
    color: var(--rk-mat-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Panel Symulatora */
.rk-mat-simulator {
    padding: 35px 45px;
    background: #ffffff;
}

.rk-mat-control-box {
    background: var(--rk-mat-dark);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 30px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-mat-control-box::after {
    content: '';
    position: absolute;
    top: -50%; right: -10%; width: 200px; height: 200px;
    background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);
    pointer-events: none;
}

.rk-mat-control-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.rk-mat-control-title {
    font-size: 15px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    color: #cbd5e1;
}

.rk-mat-control-value {
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-mat-range {
    width: 100%;
    height: 12px;
    border-radius: 6px;
    background: #334155;
    outline: none;
    -webkit-appearance: none;
    position: relative;
    z-index: 2;
}

.rk-mat-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-mat-blue);
    box-shadow: 0 0 15px rgba(0,0,0,0.5);
    transition: transform 0.1s;
}

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

/* Bloki Materiałowe */
.rk-mat-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 25px;
}

.rk-mat-card {
    border: 2px solid var(--rk-mat-border);
    border-radius: 20px;
    padding: 25px;
    transition: all 0.3s;
    background: #f8fafc;
}

.rk-mat-card-header {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 20px;
    padding-bottom: 15px;
    border-bottom: 1px solid var(--rk-mat-border);
}

.rk-mat-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-mat-slate);
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

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

.rk-mat-status {
    padding: 15px;
    border-radius: 12px;
    background: #ffffff;
    margin-bottom: 15px;
    display: flex;
    flex-direction: column;
    gap: 5px;
    transition: all 0.3s;
}

.rk-mat-status-lbl {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 700;
    color: #64748b;
}

.rk-mat-status-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-mat-dark);
}

.rk-mat-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-mat-slate);
}

.rk-mat-desc a {
    color: var(--rk-mat-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Stany Wizualne - Dynamiczne klasy JS */
.rk-state-safe { border-color: var(--rk-mat-green); background: var(--rk-mat-green-light); }
.rk-state-safe .rk-mat-status-val { color: var(--rk-mat-green); }

.rk-state-warn { border-color: var(--rk-mat-orange); background: var(--rk-mat-orange-light); }
.rk-state-warn .rk-mat-status-val { color: var(--rk-mat-orange); }

.rk-state-danger { border-color: var(--rk-mat-red); background: var(--rk-mat-red-light); }
.rk-state-danger .rk-mat-status-val { color: var(--rk-mat-red); }

@media (max-width: 768px) {
    .rk-mat-header, .rk-mat-simulator { padding: 25px 20px; }
    .rk-mat-header h2 { font-size: 24px; }
    .rk-mat-control-box { padding: 25px 20px; }
    .rk-mat-grid { grid-template-columns: 1fr; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Jak temperatura zasilania 35°C wpływa na wylewki i okładziny podłogowe?",
    "description": "Zrozum fizykę naprężeń materiałowych. Sprawdź, dlaczego przekroczenie 45°C niszczy wylewkę anhydrytową i powoduje łódeczkowanie paneli i drewna dębowego.",
    "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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-materialy",
    "name": "Tolerancja Termiczna i Dehydratacja Materiałów Posadzkowych",
    "description": "Baza parametrów fizykochemicznych jastrychów oraz drewna, określająca punkt krytyczny naprężeń (powyżej 45°C zasilania) względem bezpiecznego standardu 35°C.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wylewka na ogrzewanie podłogowe",
      "podłogi drewniane vs panele laminowane co wybrać przy ogrzewaniu podłogowym",
      "maksymalna temperatura zasilania podłogówki",
      "dehydratacja anhydrytu od pompy ciepła",
      "łódeczkowanie deski na podłogówce"
    ],
    "measurementTechnique": "Określanie progów wilgotności równowagowej drewna oraz utraty wiązań chemicznych w siarczanie wapnia (anhydryt) w funkcji stałej temperatury czynnika grzewczego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezpieczny punkt pracy 35°C zachowuje wilgotność drewna 8-10% i zapobiega mikropęknięciom jastrychu.",
        "Przekroczenie bariery 45°C drastycznie obniża wilgotność paneli (<5%) i wywołuje utratę spójności wylewki klasy F4/F5."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-materialy",
    "name": "Symulator Naprężeń Materiałowych Posadzki",
    "description": "Narzędzie wizualizujące destrukcyjny wpływ wysokich temperatur zasilania instalacji podłogowej na struktury jastrychów i włókna okładzin drewnianych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-mat-container" id="wplyw-na-wylewki">
    
    <div class="rk-mat-header">
        <h2>Jak temperatura zasilania 35°C wpływa na wylewki i okładziny podłogowe?</h2>
        <p>Bezpośrednia odpowiedź inżynierska poparta kartami technicznymi czołowych producentów chemii budowlanej: utrzymanie temperatury zasilania na poziomie 35°C to bezpieczna granica strukturalna. Gwarantuje ona, że temperatura powierzchni posadzki nigdy nie przekroczy komfortowych 27–28°C. Pamiętaj, <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalna temperatura zasilania podłogówki</a> to nie kwestia umowna – to granica, za którą zaczyna się nieodwracalna destrukcja drogich materiałów wykończeniowych.</p>
    </div>

    <div class="rk-mat-simulator">
        
        <div class="rk-mat-control-box">
            <div class="rk-mat-control-header">
                <span class="rk-mat-control-title">Temperatura Zasilania Układu</span>
                <span class="rk-mat-control-value" id="rkMatTempDisplay">35°C</span>
            </div>
            <input type="range" min="30" max="50" value="35" step="1" class="rk-mat-range" id="rkMatTempSlider">
        </div>

        <div class="rk-mat-grid">
            
            <!-- Panel Wylewki -->
            <div class="rk-mat-card" id="rkCardWylewka">
                <div class="rk-mat-card-header">
                    <div class="rk-mat-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="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>
                    <h3 class="rk-mat-title">Wylewka Anhydrytowa</h3>
                </div>
                <div class="rk-mat-status" id="rkStatusWylewka">
                    <span class="rk-mat-status-lbl">Stan Fizyczny Spoiwa</span>
                    <span class="rk-mat-status-val" id="rkValWylewka">W pełni stabilna</span>
                </div>
                <div class="rk-mat-desc" id="rkDescWylewka">
                    Anhydryt idealnie oddaje ciepło (lambda ok. 1,6–1,8 W/mK). Przy 35°C naprężenia termiczne między rurką a powierzchnią jastrychu są minimalne, co chroni <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewkę na ogrzewanie podłogowe</a> przed mikropęknięciami.
                </div>
            </div>

            <!-- Panel Okładziny -->
            <div class="rk-mat-card" id="rkCardDrewno">
                <div class="rk-mat-card-header">
                    <div class="rk-mat-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><line x1="3" y1="9" x2="21" y2="9"></line><line x1="3" y1="15" x2="21" y2="15"></line><line x1="9" y1="3" x2="9" y2="21"></line><line x1="15" y1="3" x2="15" y2="21"></line></svg>
                    </div>
                    <h3 class="rk-mat-title">Drewno / Panele</h3>
                </div>
                <div class="rk-mat-status" id="rkStatusDrewno">
                    <span class="rk-mat-status-lbl">Wilgotność i Powierzchnia</span>
                    <span class="rk-mat-status-val" id="rkValDrewno">Norma 8-10%</span>
                </div>
                <div class="rk-mat-desc" id="rkDescDrewno">
                    Okładziny posiadają opór cieplny R rzędu 0,05–0,12 m²K/W. Utrzymanie zasilania na 35°C gwarantuje wilgotność drewna dębowego na poziomie normatywnym, niezależnie od tego, co wybierzesz: <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">podłogi drewniane czy panele laminowane</a>.
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rkMatTempSlider');
    var displayTemp = document.getElementById('rkMatTempDisplay');
    
    // Karty i pola do aktualizacji
    var cardWylewka = document.getElementById('rkStatusWylewka');
    var valWylewka = document.getElementById('rkValWylewka');
    var descWylewka = document.getElementById('rkDescWylewka');
    
    var cardDrewno = document.getElementById('rkStatusDrewno');
    var valDrewno = document.getElementById('rkValDrewno');
    var descDrewno = document.getElementById('rkDescDrewno');

    function updateMaterialState(temp) {
        displayTemp.textContent = temp + '°C';
        
        // Resetowanie klas
        cardWylewka.className = 'rk-mat-status';
        cardDrewno.className = 'rk-mat-status';

        // Strefa Bezpieczna (30 - 35°C)
        if (temp <= 35) {
            slider.style.background = '#334155';
            
            cardWylewka.classList.add('rk-state-safe');
            valWylewka.textContent = 'W pełni stabilna';
            descWylewka.innerHTML = 'Anhydryt idealnie oddaje ciepło (lambda ok. 1,6–1,8 W/mK). Przy 35°C naprężenia termiczne między rurką a powierzchnią jastrychu są minimalne, co chroni <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewkę na ogrzewanie podłogowe</a> przed mikropęknięciami.';
            
            cardDrewno.classList.add('rk-state-safe');
            valDrewno.textContent = 'Norma: Wilgotność 8-10%';
            descDrewno.innerHTML = 'Okładziny posiadają opór cieplny R rzędu 0,05–0,12 m²K/W. Utrzymanie zasilania na 35°C gwarantuje wilgotność drewna dębowego na poziomie normatywnym, niezależnie od tego, co wybierzesz: <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">podłogi drewniane czy panele laminowane</a>.';
        }

        // Strefa Ostrzegawcza (36 - 44°C)
        if (temp > 35) {
            if (temp < 45) {
                slider.style.background = 'var(--rk-mat-orange)';
                
                cardWylewka.classList.add('rk-state-warn');
                valWylewka.textContent = 'Rosnące naprężenia';
                descWylewka.innerHTML = 'Częste skoki temperatury wywołują pracę płyty betonowej. Zwiększa się ryzyko pęknięć w newralgicznych strefach brzegowych i wzdłuż dylatacji drzwiowych.';
                
                cardDrewno.classList.add('rk-state-warn');
                valDrewno.textContent = 'Spadek wilgotności: 6-7%';
                descDrewno.innerHTML = 'Temperatura okładziny wzrasta, co prowadzi do wysuszania materiału. Pomiędzy panelami mogą zacząć pojawiać się widoczne, nieestetyczne szczeliny dylatacyjne rzędu 1-2 mm.';
            }
        }

        // Strefa Destrukcji (45°C i więcej)
        if (temp >= 45) {
            slider.style.background = 'var(--rk-mat-red)';
            
            cardWylewka.classList.add('rk-state-danger');
            valWylewka.textContent = 'Dehydratacja jastrychu!';
            descWylewka.innerHTML = 'Krytyczne zagrożenie: spoiwo anhydrytowe (siarczan wapnia) ulega dehydratacji, tracąc chemicznie związaną wodę. Wylewka staje się krucha, pofałdowana i traci wytrzymałość (klasa F4/F5), co skutkuje odspojeniem się płytek.';
            
            cardDrewno.classList.add('rk-state-danger');
            valDrewno.textContent = 'Łódeczkowanie (< 5%)';
            descDrewno.innerHTML = 'Krytyczny spadek wilgotności posadzki poniżej 5%. Włókna kurczą się gwałtownie, wywołując powstawanie szczelin o szerokości nawet 4 mm oraz zjawisko "łódeczkowania", czyli trwałego wyginania krawędzi desek do góry.';
        }
    }

    slider.addEventListener('input', function() {
        updateMaterialState(parseInt(this.value, 10));
    });

    // Inicjalizacja domyślnego stanu
    updateMaterialState(35);
});
</script>



<style>
:root {
    --rk-curve-dark: #0f172a;
    --rk-curve-navy: #1e293b;
    --rk-curve-blue: #3b82f6;
    --rk-curve-sky: #0ea5e9;
    --rk-curve-green: #10b981;
    --rk-curve-orange: #f59e0b;
    --rk-curve-border: #e2e8f0;
    --rk-curve-bg: #ffffff;
    --rk-curve-text: #475569;
}

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

/* Nagłówek Sekcji */
.rk-curve-header {
    padding: 40px 45px 30px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-curve-border);
}

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

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

/* Interaktywny Symulator Pogodowy */
.rk-curve-simulator {
    background: linear-gradient(180deg, var(--rk-curve-navy) 0%, var(--rk-curve-dark) 100%);
    padding: 40px 45px;
    color: #ffffff;
    position: relative;
}

.rk-curve-simulator::after {
    content: '';
    position: absolute;
    top: 0; right: 0; width: 300px; height: 100%;
    background: radial-gradient(circle, rgba(14, 165, 233, 0.1) 0%, transparent 70%);
    pointer-events: none;
}

.rk-weather-control {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 30px;
    border-radius: 20px;
    margin-bottom: 30px;
    position: relative;
    z-index: 2;
}

.rk-weather-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.rk-weather-title {
    font-size: 16px;
    font-weight: 800;
    color: #cbd5e1;
    text-transform: uppercase;
    letter-spacing: 1px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-weather-value {
    font-size: 36px;
    font-weight: 900;
    color: #ffffff;
    text-shadow: 0 2px 10px rgba(0,0,0,0.5);
    transition: color 0.3s;
}

.rk-curve-range {
    width: 100%;
    height: 12px;
    border-radius: 6px;
    background: rgba(255,255,255,0.2);
    outline: none;
    -webkit-appearance: none;
}

.rk-curve-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-curve-sky);
    box-shadow: 0 0 15px rgba(14, 165, 233, 0.6);
    transition: transform 0.1s;
}

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

.rk-weather-labels {
    display: flex;
    justify-content: space-between;
    margin-top: 15px;
    font-size: 13px;
    font-weight: 700;
    color: #94a3b8;
}

/* Wyniki Pracy Pompy Ciepła */
.rk-curve-dashboard {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    position: relative;
    z-index: 2;
}

.rk-curve-metric {
    background: rgba(0,0,0,0.2);
    border: 1px solid rgba(255,255,255,0.05);
    padding: 25px 20px;
    border-radius: 16px;
    text-align: center;
    transition: transform 0.3s, background 0.3s;
}

.rk-curve-metric:hover {
    background: rgba(255,255,255,0.05);
    transform: translateY(-5px);
}

.rk-metric-icon {
    margin-bottom: 15px;
    color: var(--rk-curve-sky);
}

.rk-metric-lbl {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 700;
    color: #94a3b8;
    margin-bottom: 8px;
}

.rk-metric-val {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 4px;
}

.rk-metric-unit {
    font-size: 15px;
    color: var(--rk-curve-sky);
}

/* Sekcja Bezwładności Jastrychu */
.rk-inertia-section {
    padding: 40px 45px;
    background: #f8fafc;
}

.rk-inertia-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-curve-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-inertia-content {
    display: flex;
    gap: 30px;
    align-items: center;
}

.rk-inertia-text {
    flex: 1;
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-curve-text);
}

.rk-inertia-text a {
    color: var(--rk-curve-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-inertia-visual {
    width: 200px;
    background: #ffffff;
    border: 2px solid var(--rk-curve-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
}

.rk-inertia-visual-icon {
    color: var(--rk-curve-orange);
    margin-bottom: 10px;
}

.rk-inertia-visual-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-curve-dark);
    margin-bottom: 5px;
}

.rk-inertia-visual-desc {
    font-size: 12px;
    color: #64748b;
    font-weight: 600;
}

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-curve-header, .rk-curve-simulator, .rk-inertia-section { padding: 30px 20px; }
    .rk-curve-header h2 { font-size: 24px; }
    .rk-weather-value { font-size: 30px; }
    .rk-curve-dashboard { grid-template-columns: 1fr; gap: 15px; } /* Pionowy układ kafelków */
    .rk-inertia-content { flex-direction: column; }
    .rk-inertia-visual { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-krzywa",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Jaka jest rola krzywej grzewczej w systemie niskotemperaturowym?",
    "description": "Zrozum jak działa automatyka pogodowa pompy ciepła. Sprawdź dlaczego zasilanie 35°C to parametr używany tylko przy mrozach, a jastrych działa jak magazyn energii.",
    "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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-krzywa",
    "name": "Charakterystyka Pracy Krzywej Grzewczej i SCOP 2026",
    "description": "Baza danych korelujących temperaturę zewnętrzną z wymaganą temperaturą zasilania układu płaszczyznowego oraz rzeczywistym współczynnikiem wydajności COP dla czynnika R32.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "krzywa grzewcza w ogrzewaniu podłogowym",
      "ustawienie krzywej grzewczej pompy ciepła",
      "bezwładność cieplna w ogrzewaniu podłogowym",
      "temperatura zasilania podłogówki a pogoda",
      "sterowanie pogodowe pompą ciepła"
    ],
    "measurementTechnique": "Algorytm mapujący spadki temperatury otoczenia na wymaganą moc grzewczą obiektu przy zachowaniu stałej temperatury wewnętrznej i adaptacji krzywej regulacji.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przy -15°C zasilanie wynosi 35°C przy obciążeniu 100% i COP 3.1.",
        "W okresie przejściowym (+7°C) zasilanie spada do 26°C a COP rośnie do 5.4."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-krzywa",
    "name": "Symulator Krzywej Grzewczej i Automatyki Pogodowej",
    "description": "Interaktywny panel edukacyjny pozwalający na symulację zmian warunków pogodowych i obserwację adaptacji temperatury zasilania pompy ciepła na podstawie krzywej grzewczej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-curve-container" id="rola-krzywej-grzewczej">
    
    <div class="rk-curve-header">
        <h2>Jaka jest rola krzywej grzewczej w systemie niskotemperaturowym?</h2>
        <p>Zgodnie z zasadami <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">automatyki pogodowej</a>, projektowy parametr 35°C na zasilaniu jest generowany przez pompę ciepła wyłącznie przy skrajnej temperaturze obliczeniowej dla danej strefy klimatycznej (np. -20°C dla III strefy w Polsce). Przez 95% sezonu grzewczego inteligentny mózg systemu na podstawie <strong>krzywej grzewczej</strong> dynamicznie obniża parametry, maksymalnie optymalizując Twój portfel.</p>
    </div>

    <div class="rk-curve-simulator">
        
        <div class="rk-weather-control">
            <div class="rk-weather-header">
                <div class="rk-weather-title">
                    <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="M17.5 19H9a7 7 0 1 1 6.71-9h1.79a4.5 4.5 0 1 1 0 9Z"></path></svg>
                    Pogoda na zewnątrz
                </div>
                <div class="rk-weather-value" id="rkWeathVal">0°C</div>
            </div>
            <!-- Suwak skokowy reprezentujący wiersze z tabeli (1 do 4) -->
            <input type="range" min="1" max="4" value="2" step="1" class="rk-curve-range" id="rkCurveSlider">
            <div class="rk-weather-labels">
                <span>-15°C</span>
                <span>0°C</span>
                <span>+7°C</span>
                <span>+12°C</span>
            </div>
        </div>

        <div class="rk-curve-dashboard">
            <div class="rk-curve-metric">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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-metric-lbl">Zasilanie Podłogi</div>
                <div class="rk-metric-val" id="rkCurveTemp">30<span class="rk-metric-unit">°C</span></div>
            </div>
            <div class="rk-curve-metric">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                </div>
                <div class="rk-metric-lbl">Wymagana Moc</div>
                <div class="rk-metric-val" id="rkCurvePow">65<span class="rk-metric-unit">%</span></div>
            </div>
            <div class="rk-curve-metric">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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-metric-lbl">Bieżący COP (R32)</div>
                <div class="rk-metric-val" id="rkCurveCop" style="color: var(--rk-curve-green);">4.1</div>
            </div>
        </div>

    </div>

    <div class="rk-inertia-section">
        <h3>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="6" width="20" height="12" rx="2" ry="2"></rect><path d="M10 12h4"></path><path d="M12 10v4"></path></svg>
            Bezwładność termiczna – Twój gigantyczny magazyn prądu
        </h3>
        <div class="rk-inertia-content">
            <div class="rk-inertia-text">
                Wykorzystanie <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej jastrychu</a> (grubość 6–7 cm wylewki betonowej to masa ok. 130–150 kg/m²) w połączeniu z płaską krzywą grzewczą o nachyleniu 0,2–0,3 sprawia, że cały Twój dom staje się akumulatorem. Nie potrzebujesz kosztownego <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufora ciepła</a> w kotłowni. Masa betonu pozwala na wyłączenie pompy ciepła podczas droższych taryf prądowych (np. G12w) bez zauważalnego spadku komfortu – dom wychładza się zaledwie o 0,5°C w ciągu 5 godzin!
            </div>
            <div class="rk-inertia-visual">
                <svg class="rk-inertia-visual-icon" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                <div class="rk-inertia-visual-title">150 kg betonu na 1m²</div>
                <div class="rk-inertia-visual-desc">Magazynuje ciepło zapobiegając taktowaniu sprężarki</div>
            </div>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rkCurveSlider');
    
    // UI Elements
    var weathVal = document.getElementById('rkWeathVal');
    var curveTemp = document.getElementById('rkCurveTemp');
    var curvePow = document.getElementById('rkCurvePow');
    var curveCop = document.getElementById('rkCurveCop');

    // Baza danych dopasowana do oryginalnej tabeli
    var curveData = {
        1: { w: '-15°C', color: '#60a5fa', t: '35', p: '100', c: '3.1', cColor: '#ffffff' },
        2: { w: '0°C',   color: '#cbd5e1', t: '30', p: '65',  c: '4.1', cColor: 'var(--rk-curve-green)' },
        3: { w: '+7°C',  color: '#f59e0b', t: '26', p: '35',  c: '5.4', cColor: 'var(--rk-curve-green)' },
        4: { w: '+12°C', color: '#ef4444', t: '24', p: '15',  c: '6.3', cColor: 'var(--rk-curve-green)' }
    };

    function updateSimulator(step) {
        var data = curveData[step];
        if (data) {
            // Aktualizacja pogody
            weathVal.textContent = data.w;
            weathVal.style.color = data.color;
            
            // Aktualizacja metryk bez znaków specjalnych w logice JS
            curveTemp.innerHTML = data.t + '<span class="rk-metric-unit">°C</span>';
            curvePow.innerHTML = data.p + '<span class="rk-metric-unit">%</span>';
            
            curveCop.textContent = data.c;
            curveCop.style.color = data.cColor;
        }
    }

    slider.addEventListener('input', function() {
        updateSimulator(this.value);
    });

    // Uruchomienie początkowe (wartość 2 = 0°C)
    updateSimulator(2);
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-blue: #0ea5e9;
    --rk-flow-blue-light: #e0f2fe;
    --rk-flow-navy: #1e293b;
    --rk-flow-cyan: #06b6d4;
    --rk-flow-red: #ef4444;
    --rk-flow-border: #e2e8f0;
    --rk-flow-bg: #ffffff;
    --rk-flow-text: #475569;
}

.rk-flow-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-flow-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(14, 165, 233, 0.15);
    border: 1px solid var(--rk-flow-blue);
    overflow: hidden;
}

/* Sekcja Nagłówka */
.rk-flow-header {
    padding: 40px 45px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-flow-border);
}

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

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

/* Interaktywny Symulator Hydrauliczny */
.rk-flow-simulator {
    padding: 35px 45px;
    background: var(--rk-flow-navy);
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-flow-simulator::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 100%;
    background: radial-gradient(circle at top right, rgba(14, 165, 233, 0.2), transparent 50%);
    pointer-events: none;
}

.rk-flow-formula {
    background: rgba(0,0,0,0.3);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid rgba(255,255,255,0.1);
    margin-bottom: 30px;
    position: relative;
    z-index: 2;
}

.rk-flow-formula-text {
    font-family: monospace;
    font-size: 20px;
    color: #38bdf8;
    text-align: center;
    font-weight: 700;
    margin-bottom: 10px;
}

.rk-flow-formula-desc {
    font-size: 14px;
    color: #94a3b8;
    line-height: 1.6;
    text-align: center;
}

.rk-flow-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
    position: relative;
    z-index: 2;
}

.rk-flow-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-flow-label {
    font-size: 15px;
    font-weight: 700;
    color: #cbd5e1;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.rk-flow-value-badge {
    background: var(--rk-flow-blue);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 18px;
    font-weight: 800;
}

.rk-flow-range {
    width: 100%;
    height: 10px;
    border-radius: 5px;
    background: #334155;
    outline: none;
    -webkit-appearance: none;
}

.rk-flow-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-flow-blue);
    box-shadow: 0 0 15px rgba(14, 165, 233, 0.5);
    transition: transform 0.1s;
}

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

.rk-flow-results {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 25px;
}

.rk-flow-metric {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 20px;
    border-radius: 16px;
    text-align: center;
    transition: all 0.3s;
}

.rk-flow-metric-title {
    font-size: 13px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 8px;
}

.rk-flow-metric-val {
    font-size: 32px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    justify-content: center;
    align-items: baseline;
    gap: 5px;
}

.rk-flow-metric-unit {
    font-size: 16px;
    color: #38bdf8;
}

/* Konsekwencje Projektowe - Akordeon */
.rk-flow-consequences {
    padding: 40px 45px;
    background: #f8fafc;
}

.rk-flow-consequences h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    margin: 0 0 25px 0;
}

.rk-flow-acc-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-flow-acc-item {
    background: #ffffff;
    border: 1px solid var(--rk-flow-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
}

.rk-flow-acc-item.active {
    border-color: var(--rk-flow-blue);
    box-shadow: 0 10px 25px -5px rgba(14, 165, 233, 0.15);
}

.rk-flow-acc-trigger {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    display: flex;
    align-items: center;
    gap: 20px;
    cursor: pointer;
}

.rk-flow-icon-box {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--rk-flow-blue-light);
    color: var(--rk-flow-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-flow-acc-item.active .rk-flow-icon-box {
    background: var(--rk-flow-blue);
    color: #ffffff;
}

.rk-flow-acc-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-flow-dark);
    margin: 0;
    flex: 1;
}

.rk-flow-chevron {
    color: #94a3b8;
    transition: transform 0.3s;
}

.rk-flow-acc-item.active .rk-flow-chevron {
    transform: rotate(180deg);
    color: var(--rk-flow-blue);
}

.rk-flow-acc-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-flow-acc-inner {
    padding: 0 25px 25px 89px; /* wyrównanie do tekstu, omijając ikonę */
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-flow-text);
}

.rk-flow-acc-inner a {
    color: var(--rk-flow-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mocne CTA na końcu */
.rk-flow-cta {
    padding: 45px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-flow-border);
}

.rk-flow-cta h3 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    margin: 0 0 15px 0;
}

.rk-flow-cta p {
    font-size: 16px;
    color: var(--rk-flow-text);
    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-flow-cyan);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(6, 182, 212, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #0891b2;
    box-shadow: 0 20px 35px -5px rgba(6, 182, 212, 0.5);
}

.rk-btn-massive svg {
    transition: transform 0.3s;
}

.rk-btn-massive:hover svg {
    transform: translateX(5px);
}

/* Mobile */
@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-simulator, .rk-flow-consequences, .rk-flow-cta { padding: 30px 20px; }
    .rk-flow-results { grid-template-columns: 1fr; gap: 15px; }
    .rk-flow-acc-inner { padding: 0 20px 20px 20px; }
    .rk-flow-acc-trigger { padding: 15px; gap: 15px; }
    .rk-flow-icon-box { width: 36px; height: 36px; }
    .rk-btn-massive { width: 100%; padding: 16px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Jak niska temperatura zasilania wpływa na projekt ogrzewania podłogowego?",
    "description": "Zobacz, dlaczego spadek różnicy temperatur Delta T wymusza trzykrotny wzrost przepływu masowego wody. Analiza oporów hydraulicznych i średnic rur.",
    "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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-projekt",
    "name": "Wymagane Przepływy Hydrauliczne dla Pomp Ciepła (Delta T 5K)",
    "description": "Zestawienie parametrów fizycznych demonstrujące drastyczny wzrost wymagań względem średnicy rur oraz wydajności pomp obiegowych przy przejściu z układu wysokotemperaturowego na niskotemperaturowy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wymagane przepływy masowe pompy ciepła",
      "dobór średnicy rur do podłogówki",
      "opory hydrauliczne pętli grzewczej",
      "kalkulator przepływu wody w ogrzewaniu",
      "zagęszczenie stref brzegowych przy przeszkleniach"
    ],
    "measurementTechnique": "Obliczanie strumienia objętościowego na podstawie prawa zachowania energii: V_dot = Q / (ρ * c_p * Delta T) z wariantowaniem różnicy temperatur zasilanie/powrót.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Spadek Delta T z 15K na 5K wymusza przepływ ok. 4,3 l/min dla pętli 1500W.",
        "Przepływy powyżej 3,5 l/min w rurze 16x2 generują opory krytyczne >20 kPa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-projekt",
    "name": "Kalkulator Przepływów i Oporów Liniowych",
    "description": "Narzędzie interaktywne symulujące szok hydrauliczny w instalacji przy obniżeniu parametru Delta T, edukujące instalatorów i inwestorów o konieczności profesjonalnego obliczania OZC.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-container" id="wplyw-na-projekt">
    <div class="rk-flow-header">
        <h2>Jak niska temperatura zasilania wpływa na projekt ogrzewania podłogowego?</h2>
        <p>Wprowadzenie parametru zasilania 35°C obliguje projektanta do całkowitego odejścia od metod szacunkowych ("na oko") na rzecz rygorystycznych obliczeń hydraulicznych i termicznych. Projekt ogrzewania podłogowego pod pompę ciepła musi być bezpośrednią pochodną obliczeniowego zapotrzebowania na moc cieplną (OZC) wykonanego według normy PN-EN 12831.</p>
    </div>

    <div class="rk-flow-simulator">
        <div class="rk-flow-formula">
            <div class="rk-flow-formula-text">V_dot = Q / (ρ * c_p * Delta T)</div>
            <div class="rk-flow-formula-desc">
                Gdzie <strong>V_dot</strong> to strumień objętościowy (przepływ), <strong>Q</strong> to obciążenie cieplne, a <strong>Delta T</strong> to różnica temperatur między zasilaniem a powrotem.
            </div>
        </div>

        <div class="rk-flow-controls">
            <div class="rk-flow-slider-header">
                <span class="rk-flow-label">Ustaw Delta T układu:</span>
                <span class="rk-flow-value-badge" id="rkDeltaTVal">5K (Pompa Ciepła)</span>
            </div>
            <input type="range" min="5" max="15" value="5" step="5" class="rk-flow-range" id="rkDeltaTSlider">
        </div>

        <div class="rk-flow-results">
            <div class="rk-flow-metric">
                <div class="rk-flow-metric-title">Wymagany przepływ (dla Q=1500W)</div>
                <div class="rk-flow-metric-val" id="rkFlowVal">4.3 <span class="rk-flow-metric-unit">l/min</span></div>
            </div>
            <div class="rk-flow-metric" id="rkAlertBox">
                <div class="rk-flow-metric-title">Status Hydrauliki</div>
                <div class="rk-flow-metric-val" id="rkAlertVal" style="color: var(--rk-flow-red); font-size: 20px; white-space: normal; line-height: 1.3;">Szok Hydrauliczny!</div>
            </div>
        </div>
    </div>

    <div class="rk-flow-consequences">
        <h3>4 twarde konsekwencje projektowe:</h3>
        
        <div class="rk-flow-acc-list">
            <!-- Konsekwencja 1 -->
            <div class="rk-flow-acc-item rk-cons-item">
                <button class="rk-flow-acc-trigger" aria-expanded="false">
                    <div class="rk-flow-icon-box">
                        <svg width="24" height="24" 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="2" y1="12" x2="22" y2="12"></line><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>
                    </div>
                    <h4 class="rk-flow-acc-title">Wymuszona zmiana średnicy rur</h4>
                    <svg class="rk-flow-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-flow-acc-content">
                    <div class="rk-flow-acc-inner">
                        Podstawowa rura 16x2 mm przy przepływach przekraczających 3,5 l/min generuje gigantyczne opory liniowe i szum. Projektant musi drastycznie skrócić obwody do 80-90 m, albo świadomie zaprojektować <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">rurę o większej średnicy</a> (np. 18x2 lub 20x2 mm) dla długich pętli w salonie, aby opory nie przekroczyły bariery 20 kPa.
                    </div>
                </div>
            </div>

            <!-- Konsekwencja 2 -->
            <div class="rk-flow-acc-item rk-cons-item">
                <button class="rk-flow-acc-trigger" aria-expanded="false">
                    <div class="rk-flow-icon-box">
                        <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="4" y="4" width="16" height="16" rx="2" ry="2"></rect><circle cx="12" cy="12" r="3"></circle><line x1="12" y1="2" x2="12" y2="4"></line><line x1="12" y1="20" x2="12" y2="22"></line><line x1="20" y1="12" x2="22" y2="12"></line><line x1="2" y1="12" x2="4" y2="12"></line></svg>
                    </div>
                    <h4 class="rk-flow-acc-title">Potężna pompa obiegowa</h4>
                    <svg class="rk-flow-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-flow-acc-content">
                    <div class="rk-flow-acc-inner">
                        Zwiększenie przepływów sprawia, że sumaryczny wydatek dla domu 150 m² uderza w pułap 1,8–2,2 m³/h. <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Dobór pompy obiegowej</a> wymaga precyzyjnego wyznaczenia punktu pracy, aby jej wysokość podnoszenia (rzędu 6-7 m słupa wody) zagwarantowała odpowiednią dawkę wody na każdym rotametrze bez zdławienia.
                    </div>
                </div>
            </div>

            <!-- Konsekwencja 3 -->
            <div class="rk-flow-acc-item rk-cons-item">
                <button class="rk-flow-acc-trigger" aria-expanded="false">
                    <div class="rk-flow-icon-box">
                        <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 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>
                    <h4 class="rk-flow-acc-title">Eliminacja układów mieszających</h4>
                    <svg class="rk-flow-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-flow-acc-content">
                    <div class="rk-flow-acc-inner">
                        Wysokie przepływy oznaczają, że układ z pompą ciepła projektuje się jako bezpośredni. Odrzucamy wszystkie zawory trójdrogowe czy grupy mieszające przy rozdzielaczach. Cała instalacja musi oddychać pełnym przekrojem na jednym, stabilnym parametrze zasilania bez zbędnego "wąskiego gardła".
                    </div>
                </div>
            </div>

            <!-- Konsekwencja 4 (Nowa) -->
            <div class="rk-flow-acc-item rk-cons-item">
                <button class="rk-flow-acc-trigger" aria-expanded="false">
                    <div class="rk-flow-icon-box">
                        <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><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                    </div>
                    <h4 class="rk-flow-acc-title">Zagęszczenie stref przy dużych przeszkleniach</h4>
                    <svg class="rk-flow-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-flow-acc-content">
                    <div class="rk-flow-acc-inner">
                        Ponieważ temperatura zasilania jest "zablokowana" na 35°C, nie możemy dogrzać zimnego salonu podając cieplejszą wodę pod duże okna tarasowe typu HS. <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">Projekt do domu z przeszkleniami</a> wymusza fizyczne zlokalizowanie osobnych, dedykowanych pętli brzegowych o skrajnie gęstym rozstawie (np. co 7,5 cm), aby pokryć punktowe straty ciepła.
                    </div>
                </div>
            </div>

        </div>
    </div>

    <!-- Mocne CTA -->
    <div class="rk-flow-cta">
        <h3>Twój dom nie wybacza błędów hydraulicznych</h3>
        <p>Instalacja bez obliczeń to loteria. Przy niskiej temperaturze i potężnych przepływach nie ma miejsca na ułożenie rur "tak jak zawsze". Zainwestuj w inżynierski fundament, który uchroni Cię przed zimnymi posadzkami i zniszczoną sprężarką.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW PROJEKT OGRZEWANIA POD POMPĘ CIEPŁA
            <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 12h14M12 5l7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Obsługa symulatora przepływów
    var slider = document.getElementById('rkDeltaTSlider');
    var badge = document.getElementById('rkDeltaTVal');
    var flowVal = document.getElementById('rkFlowVal');
    var alertBox = document.getElementById('rkAlertBox');
    var alertVal = document.getElementById('rkAlertVal');

    function updateFlowSim(delta) {
        var d = parseInt(delta, 10);
        
        // Brak operatorów '&&' w warunkach
        if (d === 15) {
            badge.textContent = '15K (Stary Kocioł)';
            badge.style.background = '#64748b';
            flowVal.innerHTML = '1.4 <span class="rk-flow-metric-unit">l/min</span>';
            alertBox.style.background = 'rgba(255,255,255,0.05)';
            alertVal.textContent = 'Standardowe Opory';
            alertVal.style.color = '#94a3b8';
            slider.style.background = '#64748b';
        }
        if (d === 10) {
            badge.textContent = '10K (Kocioł Kondens.)';
            badge.style.background = '#0284c7';
            flowVal.innerHTML = '2.1 <span class="rk-flow-metric-unit">l/min</span>';
            alertBox.style.background = 'rgba(255,255,255,0.05)';
            alertVal.textContent = 'Bezpieczny Przepływ';
            alertVal.style.color = '#38bdf8';
            slider.style.background = '#0284c7';
        }
        if (d === 5) {
            badge.textContent = '5K (Pompa Ciepła)';
            badge.style.background = 'var(--rk-flow-red)';
            flowVal.innerHTML = '4.3 <span class="rk-flow-metric-unit">l/min</span>';
            alertBox.style.background = 'rgba(239, 68, 68, 0.15)';
            alertVal.innerHTML = 'Szok Hydrauliczny!<br><span style="font-size:14px; color:#f87171;">(Krytyczny opór w rurze 16x2)</span>';
            alertVal.style.color = 'var(--rk-flow-red)';
            slider.style.background = 'var(--rk-flow-red)';
        }
    }

    slider.addEventListener('input', function() {
        updateFlowSim(this.value);
    });

    // Inicjalizacja bazowa
    updateFlowSim(5);


    // Obsługa akordeonu konsekwencji
    var triggers = document.querySelectorAll('.rk-flow-acc-trigger');
    
    triggers.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var item = this.parentElement;
            var content = this.nextElementSibling;
            var isExpanded = this.getAttribute('aria-expanded') === 'true';

            // Zamykanie reszty
            var allItems = document.querySelectorAll('.rk-cons-item');
            allItems.forEach(function(otherItem) {
                if (otherItem !== item) {
                    otherItem.classList.remove('active');
                    otherItem.querySelector('.rk-flow-acc-trigger').setAttribute('aria-expanded', 'false');
                    otherItem.querySelector('.rk-flow-acc-content').style.maxHeight = null;
                }
            });

            // Toggle
            if (isExpanded === false) {
                item.classList.add('active');
                this.setAttribute('aria-expanded', 'true');
                content.style.maxHeight = content.scrollHeight + "px";
            }
            if (isExpanded === true) {
                item.classList.remove('active');
                this.setAttribute('aria-expanded', 'false');
                content.style.maxHeight = null;
            }
        });
    });

});
</script>



<style>
:root {
    --rk-algo-dark: #0f172a;
    --rk-algo-navy: #1e293b;
    --rk-algo-blue: #3b82f6;
    --rk-algo-cyan: #06b6d4;
    --rk-algo-green: #10b981;
    --rk-algo-red: #ef4444;
    --rk-algo-orange: #f59e0b;
    --rk-algo-border: #e2e8f0;
    --rk-algo-bg: #ffffff;
    --rk-algo-text: #334155;
    --rk-algo-light: #f8fafc;
}

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

/* Nagłówek */
.rk-algo-header {
    padding: 40px 45px 30px;
    background: linear-gradient(135deg, var(--rk-algo-dark) 0%, var(--rk-algo-navy) 100%);
    color: #ffffff;
    position: relative;
}

.rk-algo-header::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; width: 100%; height: 4px;
    background: linear-gradient(90deg, var(--rk-algo-blue), var(--rk-algo-cyan));
}

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

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

/* Panel Suwaków - Input */
.rk-algo-inputs {
    padding: 35px 45px;
    background: var(--rk-algo-light);
    border-bottom: 1px solid var(--rk-algo-border);
}

.rk-algo-input-group {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-algo-border);
    margin-bottom: 15px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-algo-label-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
}

.rk-algo-label {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-algo-dark);
}

.rk-algo-val-badge {
    background: var(--rk-algo-blue);
    color: #ffffff;
    padding: 4px 12px;
    border-radius: 8px;
    font-weight: 900;
    font-size: 16px;
}

.rk-algo-range {
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #e2e8f0;
    outline: none;
    -webkit-appearance: none;
}

.rk-algo-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-algo-blue);
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
.rk-algo-range::-webkit-slider-thumb:active { transform: scale(1.15); }

/* Wyniki Algorytmu - Kroki */
.rk-algo-steps {
    padding: 35px 45px;
    background: #ffffff;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-algo-step-card {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 20px;
    border-radius: 16px;
    background: var(--rk-algo-light);
    border: 2px solid var(--rk-algo-border);
    transition: all 0.3s;
}

.rk-algo-step-num {
    width: 46px;
    height: 46px;
    border-radius: 12px;
    background: var(--rk-algo-navy);
    color: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    font-weight: 900;
    flex-shrink: 0;
}

.rk-algo-step-content {
    flex: 1;
}

.rk-algo-step-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 5px;
    letter-spacing: 0.5px;
}

.rk-algo-step-result {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-algo-dark);
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.rk-algo-step-unit {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-algo-blue);
}

.rk-algo-step-desc {
    font-size: 13px;
    color: #64748b;
    margin-top: 5px;
    line-height: 1.4;
}

/* Stany Ostrzegawcze */
.rk-algo-step-card.warning {
    border-color: var(--rk-algo-red);
    background: #fef2f2;
}
.rk-algo-step-card.warning .rk-algo-step-num { background: var(--rk-algo-red); }
.rk-algo-step-card.warning .rk-algo-step-result { color: var(--rk-algo-red); }

/* Sekcja Rozszerzona Analiza Ekonomiczna */
.rk-algo-eco {
    padding: 40px 45px;
    background: var(--rk-algo-dark);
    color: #ffffff;
}

.rk-algo-eco h3 {
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-algo-eco-grid {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-algo-eco-card {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    overflow: hidden;
}

.rk-algo-eco-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 6px; height: 100%;
}
.rk-eco-1::before { background: var(--rk-algo-green); }
.rk-eco-2::before { background: var(--rk-algo-orange); }
.rk-eco-3::before { background: var(--rk-algo-red); }

.rk-algo-eco-title {
    font-size: 18px;
    font-weight: 800;
    margin-bottom: 10px;
    color: #ffffff;
}

.rk-algo-eco-data {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    margin-bottom: 15px;
}

.rk-eco-stat {
    display: flex;
    flex-direction: column;
}

.rk-eco-stat-lbl {
    font-size: 12px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 4px;
}

.rk-eco-stat-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-algo-cyan);
}

.rk-algo-eco-desc {
    font-size: 14px;
    line-height: 1.6;
    color: #cbd5e1;
    border-top: 1px solid rgba(255,255,255,0.1);
    padding-top: 15px;
}

.rk-algo-eco-desc a {
    color: var(--rk-algo-cyan);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-algo-header, .rk-algo-inputs, .rk-algo-steps, .rk-algo-eco { padding: 30px 20px; }
    .rk-algo-header h2 { font-size: 24px; }
    .rk-algo-step-card { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-algo-step-result { font-size: 22px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Algorytm obliczeniowy doboru parametrów podłogówki i analiza opłacalności",
    "description": "Zrozum krok po kroku inżynierski algorytm wyznaczania strumienia cieplnego, przepływu wody i strat ciśnienia w podłogówce. Zobacz jak błędy OZC niszczą rentowność 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-algorytm",
    "name": "Wskaźniki Projektowe i Ekonomiczne Ogrzewania Płaszczyznowego 2026",
    "description": "Baza danych symulacyjnych obliczających czynną powierzchnię, gęstość strumienia oraz opory hydrauliczne pętli w zestawieniu z kosztami eksploatacyjnymi budynków.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "algorytm obliczeniowy doboru parametrów podłogówki",
      "obliczenie strat ciśnienia ogrzewania podłogowego",
      "kalkulator przepływu wody w ogrzewaniu podłogowym",
      "wymagana gęstość strumienia cieplnego",
      "koszty eksploatacji ogrzewania podłogowego z pompą ciepła w starym domu"
    ],
    "measurementTechnique": "Wykorzystanie równań z normy PN-EN 12831 (straty cieplne) oraz bilansu hydraulicznego do estymacji kosztów cyklu życia (LCC) instalacji na przestrzeni 15 lat.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bariera technologiczna 80 W/m2 warunkująca konieczność dogrzewania ściennego.",
        "Korekta obciążenia cieplnego przez współczynnik strat dystrybucyjnych Q x 1.15."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-algorytm",
    "name": "Kalkulator Algorytmu OZC i Opłacalności Podłogówki",
    "description": "Interaktywne narzędzie inżynierskie pozwalające użytkownikowi wprowadzić parametry pomieszczenia i na żywo śledzić kroki obliczeniowe układu niskotemperaturowego.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-algo-container" id="algorytm-obliczeniowy">
    <div class="rk-algo-header">
        <h2>Algorytm obliczeniowy doboru parametrów podłogówki</h2>
        <p>Aby system grzewczy utrzymał bezpieczny parametr zasilania 35°C zachowując pełen komfort termiczny, projektant nie może wróżyć z fusów. Zobacz na żywo, jak dane z <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/" style="color:var(--rk-algo-cyan);">audytu cieplnego</a> przechodzą przez 5 rygorystycznych kroków inżynierskich zgodnie z europejską normą <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" style="color:var(--rk-algo-cyan);">PN-EN 12831</a>.</p>
    </div>

    <div class="rk-algo-inputs">
        <div class="rk-algo-input-group">
            <div class="rk-algo-label-row">
                <span class="rk-algo-label">Powierzchnia całkowita pokoju</span>
                <span class="rk-algo-val-badge" id="rkValAtot">25 m²</span>
            </div>
            <input type="range" min="10" max="60" value="25" step="1" class="rk-algo-range" id="rkRangeAtot">
        </div>

        <div class="rk-algo-input-group">
            <div class="rk-algo-label-row">
                <span class="rk-algo-label">Zabudowa stała (szafy, wyspa)</span>
                <span class="rk-algo-val-badge" id="rkValAzab">5 m²</span>
            </div>
            <input type="range" min="0" max="20" value="5" step="1" class="rk-algo-range" id="rkRangeAzab">
        </div>

        <div class="rk-algo-input-group">
            <div class="rk-algo-label-row">
                <span class="rk-algo-label">Strata ciepła pokoju (z OZC)</span>
                <span class="rk-algo-val-badge" id="rkValQ">1200 W</span>
            </div>
            <input type="range" min="300" max="3500" value="1200" step="50" class="rk-algo-range" id="rkRangeQ">
        </div>
    </div>

    <div class="rk-algo-steps">
        
        <!-- Krok 1 -->
        <div class="rk-algo-step-card">
            <div class="rk-algo-step-num">1</div>
            <div class="rk-algo-step-content">
                <div class="rk-algo-step-title">Skorygowane obciążenie cieplne (Q_obl)</div>
                <div class="rk-algo-step-result"><span id="rkResQobl">1380</span> <span class="rk-algo-step-unit">W</span></div>
                <div class="rk-algo-step-desc">Q * 1.15 (Dodajemy 15% naddatku na sprawność regulacji i straty dystrybucyjne w posadzce).</div>
            </div>
        </div>

        <!-- Krok 2 -->
        <div class="rk-algo-step-card">
            <div class="rk-algo-step-num">2</div>
            <div class="rk-algo-step-content">
                <div class="rk-algo-step-title">Czynna powierzchnia grzewcza (A_cz)</div>
                <div class="rk-algo-step-result"><span id="rkResAcz">20</span> <span class="rk-algo-step-unit">m²</span></div>
                <div class="rk-algo-step-desc">Odejmujemy stałą zabudowę meblową. Podłogówka nie grzeje pod szafkami.</div>
            </div>
        </div>

        <!-- Krok 3 -->
        <div class="rk-algo-step-card" id="rkCardQwym">
            <div class="rk-algo-step-num">3</div>
            <div class="rk-algo-step-content">
                <div class="rk-algo-step-title">Wymagana gęstość strumienia (q_wym)</div>
                <div class="rk-algo-step-result"><span id="rkResQwym">69</span> <span class="rk-algo-step-unit">W/m²</span></div>
                <div class="rk-algo-step-desc" id="rkDescQwym">Wynik optymalny. Podłoga odda odpowiednią moc przy parametrze 35°C.</div>
            </div>
        </div>

        <!-- Krok 4 -->
        <div class="rk-algo-step-card">
            <div class="rk-algo-step-num">4</div>
            <div class="rk-algo-step-content">
                <div class="rk-algo-step-title">Natężenie przepływu wody (m)</div>
                <div class="rk-algo-step-result"><span id="rkResM">237</span> <span class="rk-algo-step-unit">kg/h (l/h)</span></div>
                <div class="rk-algo-step-desc">Dla projektowego spadku temperatury Delta T = 5K. Od tego zależy nastawa rotametru.</div>
            </div>
        </div>

        <!-- Krok 5 -->
        <div class="rk-algo-step-card">
            <div class="rk-algo-step-num">5</div>
            <div class="rk-algo-step-content">
                <div class="rk-algo-step-title">Długość rury (L) przy rozstawie co 10 cm</div>
                <div class="rk-algo-step-result"><span id="rkResL">215</span> <span class="rk-algo-step-unit">mb</span></div>
                <div class="rk-algo-step-desc">Wymaga podziału na 3 pętle! Maksymalna bezpieczna długość jednej pętli rury 16x2 to 80m.</div>
            </div>
        </div>

    </div>

    <!-- Rozszerzona Analiza Ekonomiczna -->
    <div class="rk-algo-eco">
        <h3>
            <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
            Analiza ekonomiczna: Opłacalność i koszty eksploatacji (Perspektywa 15 lat)
        </h3>
        
        <div class="rk-algo-eco-grid">
            
            <div class="rk-algo-eco-card rk-eco-1">
                <div class="rk-algo-eco-title">Dom Nowy WT 2021 (Projekt OZC + Podłogówka)</div>
                <div class="rk-algo-eco-data">
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Zasilanie</span>
                        <span class="rk-eco-stat-val" style="color:var(--rk-algo-green);">32-35°C</span>
                    </div>
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Sezonowy SCOP</span>
                        <span class="rk-eco-stat-val">4.6</span>
                    </div>
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Koszt prądu 15 lat</span>
                        <span class="rk-eco-stat-val" style="color:var(--rk-algo-green);">~ 26 000 PLN</span>
                    </div>
                </div>
                <div class="rk-algo-eco-desc">
                    Idealne dopasowanie gęstości strumienia. Pompa ciepła pracuje na minimalnych obrotach, co drastycznie obniża awaryjność. Zobacz więcej o <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">obliczaniu zwrotu z inwestycji</a>.
                </div>
            </div>

            <div class="rk-algo-eco-card rk-eco-2">
                <div class="rk-algo-eco-title">Dom Termomodernizowany (Rzadki rozstaw rur)</div>
                <div class="rk-algo-eco-data">
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Zasilanie</span>
                        <span class="rk-eco-stat-val" style="color:var(--rk-algo-orange);">42-45°C</span>
                    </div>
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Sezonowy SCOP</span>
                        <span class="rk-eco-stat-val">3.4</span>
                    </div>
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Koszt prądu 15 lat</span>
                        <span class="rk-eco-stat-val" style="color:var(--rk-algo-orange);">~ 35 200 PLN</span>
                    </div>
                </div>
                <div class="rk-algo-eco-desc">
                    Zaoszczędzenie na projekcie i ułożenie rur co 20 cm wymusza wyższe parametry źródła. Jeśli zastanawiasz się nad <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">podłogówką w remontowanym domu</a>, zagęszczenie pętli to konieczność dla rentowności.
                </div>
            </div>

            <div class="rk-algo-eco-card rk-eco-3">
                <div class="rk-algo-eco-title">Brak Modernizacji (Stare Grzejniki + Pompa Ciepła)</div>
                <div class="rk-algo-eco-data">
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Zasilanie</span>
                        <span class="rk-eco-stat-val" style="color:var(--rk-algo-red);">55°C</span>
                    </div>
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Sezonowy SCOP</span>
                        <span class="rk-eco-stat-val">2.6</span>
                    </div>
                    <div class="rk-eco-stat">
                        <span class="rk-eco-stat-lbl">Koszt prądu 15 lat</span>
                        <span class="rk-eco-stat-val" style="color:var(--rk-algo-red);">~ 46 100 PLN</span>
                    </div>
                </div>
                <div class="rk-algo-eco-desc">
                    Zmuszanie sprężarki do wysokiego ciśnienia skraplania zabija jej efektywność. Brak profesjonalnego audytu sprawia, że instalacja staje się obciążeniem, a <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">mity o niewydolnej pompie ciepła</a> stają się rzeczywistością portfela.
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Suwaki Input
    var rAtot = document.getElementById('rkRangeAtot');
    var vAtot = document.getElementById('rkValAtot');
    
    var rAzab = document.getElementById('rkRangeAzab');
    var vAzab = document.getElementById('rkValAzab');
    
    var rQ = document.getElementById('rkRangeQ');
    var vQ = document.getElementById('rkValQ');

    // Wyniki
    var resQobl = document.getElementById('rkResQobl');
    var resAcz = document.getElementById('rkResAcz');
    
    var cardQwym = document.getElementById('rkCardQwym');
    var resQwym = document.getElementById('rkResQwym');
    var descQwym = document.getElementById('rkDescQwym');
    
    var resM = document.getElementById('rkResM');
    
    var resL = document.getElementById('rkResL');
    var descL = resL.parentElement.nextElementSibling;

    function calculateAlgorithm() {
        var aTot = parseInt(rAtot.value, 10);
        var aZab = parseInt(rAzab.value, 10);
        var qStrata = parseInt(rQ.value, 10);

        vAtot.textContent = aTot + ' m²';
        vAzab.textContent = aZab + ' m²';
        vQ.textContent = qStrata + ' W';

        // Bezpieczna logika zapobiegająca błędnym wartościom przed obliczeniami
        if (aZab > aTot - 2) {
            aZab = aTot - 2; // Zawsze zostaw min 2m2 czynne
            rAzab.value = aZab;
            vAzab.textContent = aZab + ' m²';
        }

        // KROK 1: Q_obl = Q * 1.15
        var qObl = Math.round(qStrata * 1.15);
        resQobl.textContent = qObl;

        // KROK 2: A_cz = A_tot - A_zab
        var aCz = aTot - aZab;
        resAcz.textContent = aCz;

        // KROK 3: q_wym = Q_obl / A_cz
        var qWym = Math.round(qObl / aCz);
        resQwym.textContent = qWym;

        // Ostrzeżenie normatywne (Bez użycia operatora AND/OR)
        if (qWym > 80) {
            cardQwym.classList.add('warning');
            descQwym.textContent = 'KRYTYCZNE: Parametr zasilania 35°C nie pokryje strat! Należy dogęścić rury strefą brzegową (co 7,5 cm) lub zastosować ogrzewanie ścienne.';
        }
        if (qWym <= 80) {
            cardQwym.classList.remove('warning');
            descQwym.textContent = 'Wynik optymalny. Posadzka swobodnie odda tę moc przy bezpiecznym zasilaniu 35°C.';
        }

        // KROK 4: Przepływ m = Q_obl / (1.163 * 5)
        var mPrzeplyw = Math.round(qObl / (1.163 * 5));
        resM.textContent = mPrzeplyw;

        // KROK 5: Długość rury L = (A_cz * 10) + 15 (15 to stała na podejścia)
        var lRury = Math.round((aCz * 10) + 15);
        resL.textContent = lRury;

        // Dynamiczny opis pętli w zależności od długości
        if (lRury <= 90) {
            descL.textContent = 'Idealna długość dla 1 pętli rury 16x2. Opory ciśnienia zachowane w normie.';
        }
        if (lRury > 90) {
            var iloscPetli = Math.ceil(lRury / 80);
            descL.textContent = 'Przekroczono limit oporów! Wymaga podziału na ' + iloscPetli + ' osobne pętle lub zastosowania rury o większej średnicy.';
        }
    }

    rAtot.addEventListener('input', calculateAlgorithm);
    rAzab.addEventListener('input', calculateAlgorithm);
    rQ.addEventListener('input', calculateAlgorithm);

    // Initial run
    calculateAlgorithm();
});
</script>



<style>
:root {
    --rk-eco-dark: #0f172a;
    --rk-eco-blue: #0ea5e9;
    --rk-eco-bg: #ffffff;
    --rk-eco-border: #e2e8f0;
    --rk-eco-text: #334155;
    
    --rk-eco-red: #ef4444;
    --rk-eco-red-bg: #fef2f2;
    --rk-eco-orange: #f97316;
    --rk-eco-orange-bg: #fff7ed;
    --rk-eco-green: #10b981;
    --rk-eco-green-bg: #f0fdf4;
}

.rk-eco-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-eco-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(14, 165, 233, 0.15);
    border: 1px solid var(--rk-eco-border);
    overflow: hidden;
}

/* Sekcja Nagłówka */
.rk-eco-header {
    padding: 40px 45px 30px;
    background: linear-gradient(145deg, #f8fafc 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-eco-border);
}

.rk-eco-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-eco-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

/* Interaktywny Moduł Oszczędności */
.rk-eco-dashboard {
    padding: 35px 45px;
    background: #ffffff;
}

.rk-eco-variants {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-eco-variant-btn {
    flex: 1;
    padding: 20px 15px;
    background: #f8fafc;
    border: 2px solid var(--rk-eco-border);
    border-radius: 16px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.rk-eco-variant-btn:hover {
    border-color: #cbd5e1;
    background: #f1f5f9;
}

.rk-eco-variant-icon {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #ffffff;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
    transition: all 0.3s;
}

.rk-eco-variant-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-eco-dark);
}

/* Stany aktywne dla poszczególnych wariantów */
.rk-eco-variant-btn.active[data-var="A"] {
    border-color: var(--rk-eco-red);
    background: var(--rk-eco-red-bg);
    box-shadow: 0 8px 20px -5px rgba(239, 68, 68, 0.2);
}
.rk-eco-variant-btn.active[data-var="A"] .rk-eco-variant-icon { color: var(--rk-eco-red); }

.rk-eco-variant-btn.active[data-var="B"] {
    border-color: var(--rk-eco-orange);
    background: var(--rk-eco-orange-bg);
    box-shadow: 0 8px 20px -5px rgba(249, 115, 22, 0.2);
}
.rk-eco-variant-btn.active[data-var="B"] .rk-eco-variant-icon { color: var(--rk-eco-orange); }

.rk-eco-variant-btn.active[data-var="C"] {
    border-color: var(--rk-eco-green);
    background: var(--rk-eco-green-bg);
    box-shadow: 0 8px 20px -5px rgba(16, 185, 129, 0.2);
}
.rk-eco-variant-btn.active[data-var="C"] .rk-eco-variant-icon { color: var(--rk-eco-green); }

/* Panel z wynikami */
.rk-eco-results {
    background: #0f172a;
    border-radius: 20px;
    padding: 35px;
    color: #ffffff;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 30px;
    position: relative;
    overflow: hidden;
}

.rk-eco-results::before {
    content: '';
    position: absolute;
    top: -50%; right: -50%; width: 100%; height: 100%;
    background: radial-gradient(circle, rgba(255,255,255,0.05) 0%, transparent 60%);
    pointer-events: none;
}

.rk-eco-metric {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.rk-eco-metric-label {
    font-size: 13px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
}

.rk-eco-metric-value {
    font-size: 28px;
    font-weight: 900;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-eco-metric-unit {
    font-size: 16px;
    color: #cbd5e1;
    font-weight: 600;
}

.rk-eco-metric.highlight .rk-eco-metric-value {
    font-size: 38px;
}

/* Wniosek */
.rk-eco-conclusion {
    padding: 35px 45px;
    background: var(--rk-eco-green-bg);
    border-top: 1px solid rgba(16, 185, 129, 0.2);
}

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

.rk-eco-conclusion p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-eco-text);
    margin: 0;
}

.rk-eco-conclusion a {
    color: var(--rk-eco-green);
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Responsywność - Mobile (Pionowy układ, brak scrolla bocznego) */
@media (max-width: 768px) {
    .rk-eco-header, .rk-eco-dashboard, .rk-eco-conclusion { padding: 25px 20px; }
    .rk-eco-variants { flex-direction: column; gap: 12px; }
    .rk-eco-variant-btn { flex-direction: row; text-align: left; padding: 15px; }
    .rk-eco-results { grid-template-columns: 1fr; gap: 25px; padding: 25px; }
    .rk-eco-metric.highlight .rk-eco-metric-value { font-size: 32px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-ekonomia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Analiza ekonomiczna: Porównanie kosztów eksploatacji ogrzewania dla domu 150 m²",
    "description": "Zestawienie twardych danych i kosztów eksploatacji ogrzewania podłogowego. Zobacz jak gęstość ułożenia rur wpływa na roczne zużycie prądu przez pompę 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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": "2025-12-29",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-ekonomia",
    "name": "Symulacja kosztów eksploatacji ogrzewania podłogowego 2026",
    "description": "Model danych porównujący parametry fizyczne i koszty zużycia energii elektrycznej pompy ciepła w zależności od zastosowanego systemu oddawania ciepła (grzejniki vs podłogówka).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "koszt ogrzewania domu 2026",
      "zwrot z inwestycji w ogrzewanie podłogowe",
      "rozstaw rur w wodnym ogrzewaniu podłogowym",
      "zużycie prądu pompa ciepła",
      "opłacalność pompy ciepła"
    ],
    "measurementTechnique": "Kalkulacja oparta na zapotrzebowaniu cieplnym 10 000 kWh rocznie dla budynku 150 m², przy zmiennym współczynniku SCOP i stałej cenie 0,80 PLN/kWh.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Grzejniki (55°C): SCOP 2.6, Roczny koszt 3076 PLN.",
        "Podłogówka rzadka 20cm (45°C): SCOP 3.4, Roczny koszt 2352 PLN.",
        "Podłogówka idealna 10cm (35°C): SCOP 4.6, Roczny koszt 1739 PLN."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-ekonomia",
    "name": "Pulpit Analizy Rentowności (ROI) Rozstawu Rur",
    "description": "Interaktywny symulator pozwalający użytkownikowi na natychmiastowe porównanie 15-letnich kosztów eksploatacji instalacji w zależności od przyjętego standardu projektowego.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript"
  }
]
</script>

<div class="rk-eco-container" id="analiza-ekonomiczna">
    <div class="rk-eco-header">
        <h2>Analiza ekonomiczna: Porównanie kosztów eksploatacji ogrzewania dla domu 150 m²</h2>
        <p>Poniższe zestawienie przedstawia twarde dane liczbowe dla budynku o powierzchni 150 m² i rocznym zapotrzebowaniu na ciepło wynoszącym 10 000 kWh (zgodnie z WT 2021). Sprawdź, jak przyjęty w projekcie rodzaj i <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw instalacji płaszczyznowej</a> wpływa na rachunki, przyjmując cenę energii elektrycznej na poziomie 0,80 PLN/kWh.</p>
    </div>

    <div class="rk-eco-dashboard">
        <div class="rk-eco-variants" id="rkVariantSelector">
            <button class="rk-eco-variant-btn" data-var="A">
                <div class="rk-eco-variant-icon" style="color: var(--rk-eco-red);">
                    <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="M4 14.5V9a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v5.5"></path><path d="M4 19v-4.5"></path><path d="M20 19v-4.5"></path><path d="M8 19v-6"></path><path d="M12 19v-6"></path><path d="M16 19v-6"></path></svg>
                </div>
                <div class="rk-eco-variant-title">Wariant A:<br>Stare grzejniki</div>
            </button>
            <button class="rk-eco-variant-btn" data-var="B">
                <div class="rk-eco-variant-icon" style="color: var(--rk-eco-orange);">
                    <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="8" width="18" height="8" rx="2"></rect><path d="M7 8v8"></path><path d="M17 8v8"></path></svg>
                </div>
                <div class="rk-eco-variant-title">Wariant B:<br>Podłogówka co 20 cm</div>
            </button>
            <button class="rk-eco-variant-btn active" data-var="C">
                <div class="rk-eco-variant-icon" style="color: var(--rk-eco-green);">
                    <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="M3 12h18"></path><path d="M3 6h18"></path><path d="M3 18h18"></path><path d="M8 3v18"></path><path d="M16 3v18"></path></svg>
                </div>
                <div class="rk-eco-variant-title">Wariant C:<br>Ideały projektowe 10 cm</div>
            </button>
        </div>

        <div class="rk-eco-results">
            <div class="rk-eco-metric">
                <div class="rk-eco-metric-label">Średnia Temp. Zasilania</div>
                <div class="rk-eco-metric-value" id="rkValTemp" style="color: #60a5fa;">32<span class="rk-eco-metric-unit">°C (max 35°C)</span></div>
            </div>
            <div class="rk-eco-metric">
                <div class="rk-eco-metric-label">Sezonowy SCOP</div>
                <div class="rk-eco-metric-value" id="rkValScop" style="color: #cbd5e1;">4.6</div>
            </div>
            <div class="rk-eco-metric">
                <div class="rk-eco-metric-label">Roczne Zużycie Prądu</div>
                <div class="rk-eco-metric-value" id="rkValPower">2174<span class="rk-eco-metric-unit">kWh</span></div>
            </div>
            <div class="rk-eco-metric highlight">
                <div class="rk-eco-metric-label">Koszty w perspektywie 15 lat</div>
                <div class="rk-eco-metric-value" id="rkValCost" style="color: var(--rk-eco-green);">26 085<span class="rk-eco-metric-unit">PLN</span></div>
            </div>
        </div>
    </div>

    <div class="rk-eco-conclusion">
        <h3>
            <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="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
            Twarde dane liczbowe i opłacalność zagęszczenia rur
        </h3>
        <p>Wniosek z analizy jest bezlitosny dla amatorskich rozwiązań. Inwestycja w Wariant C (czyli zagęszczenie rozstawu pętli do projektowych 10 cm, co zwiększa koszt zakupu rur PE-RT o ok. 1800 PLN dla całego domu) gwarantuje najszybszy <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">zwrot z inwestycji</a> – zwraca się w pełni po niecałych 1,5 sezonu grzewczego. Przez kolejne lata system generuje czysty zysk, brutalnie tnąc <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszty ogrzewania</a> i krytycznie odciążając sprężarkę pompy ciepła.</p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-eco-variant-btn');
    
    // Elementy UI do aktualizacji
    var vTemp = document.getElementById('rkValTemp');
    var vScop = document.getElementById('rkValScop');
    var vPower = document.getElementById('rkValPower');
    var vCost = document.getElementById('rkValCost');

    // Baza danych
    var ecoData = {
        'A': {
            tempHtml: '55<span class="rk-eco-metric-unit">°C</span>',
            tempColor: 'var(--rk-eco-red)',
            scop: '2.6',
            power: '3846',
            cost: '46 140',
            costColor: 'var(--rk-eco-red)'
        },
        'B': {
            tempHtml: '45<span class="rk-eco-metric-unit">°C</span>',
            tempColor: 'var(--rk-eco-orange)',
            scop: '3.4',
            power: '2941',
            cost: '35 280',
            costColor: 'var(--rk-eco-orange)'
        },
        'C': {
            tempHtml: '32<span class="rk-eco-metric-unit">°C (max 35°C)</span>',
            tempColor: '#60a5fa', // Jasny niebieski dla komfortu
            scop: '4.6',
            power: '2174',
            cost: '26 085',
            costColor: 'var(--rk-eco-green)'
        }
    };

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Reset stylów przycisków
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            // Aktywacja wciśniętego
            this.classList.add('active');
            
            var variant = this.getAttribute('data-var');
            var data = ecoData[variant];
            
            // Bezpieczne wstrzykiwanie wartości bez && i skomplikowanej logiki
            if (data) {
                vTemp.innerHTML = data.tempHtml;
                vTemp.style.color = data.tempColor;
                
                vScop.textContent = data.scop;
                
                vPower.innerHTML = data.power + '<span class="rk-eco-metric-unit">kWh</span>';
                
                vCost.innerHTML = data.cost + '<span class="rk-eco-metric-unit">PLN</span>';
                vCost.style.color = data.costColor;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-green: #10b981;
    --rk-err-green-light: #f0fdf4;
    --rk-err-blue: #0284c7;
    --rk-err-gray: #64748b;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-err-border);
    border-top: 5px solid var(--rk-err-red);
    overflow: hidden;
}

/* Nagłówek */
.rk-err-header {
    padding: 35px 40px 25px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-err-border);
}

.rk-err-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-err-header p {
    font-size: 16px;
    color: var(--rk-err-gray);
    margin: 0;
    line-height: 1.6;
}

.rk-err-icon-alert {
    color: var(--rk-err-red);
    flex-shrink: 0;
    animation: pulseAlert 2s infinite;
}

@keyframes pulseAlert {
    0% { filter: drop-shadow(0 0 0 rgba(239, 68, 68, 0.4)); }
    50% { filter: drop-shadow(0 0 10px rgba(239, 68, 68, 0.7)); }
    100% { filter: drop-shadow(0 0 0 rgba(239, 68, 68, 0.4)); }
}

/* Lista błędów - wyłącznie 1 kolumna */
.rk-err-list {
    padding: 30px 40px 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
    background: #f8fafc;
}

.rk-err-card {
    background: #ffffff;
    border: 2px solid var(--rk-err-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s ease;
}

.rk-err-card.active {
    border-color: var(--rk-err-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.1);
}

/* Przycisk akordeonu */
.rk-err-trigger {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 15px;
}

.rk-err-title-box {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-err-num {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: var(--rk-err-red-light);
    color: var(--rk-err-red);
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    flex-shrink: 0;
}

.rk-err-card.active .rk-err-num {
    background: var(--rk-err-red);
    color: #ffffff;
}

.rk-err-trigger h3 {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
}

.rk-err-chevron {
    color: var(--rk-err-gray);
    transition: transform 0.3s;
}

.rk-err-card.active .rk-err-chevron {
    transform: rotate(180deg);
    color: var(--rk-err-red);
}

/* Zawartość rozwiniętego błędu */
.rk-err-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-err-inner {
    padding: 0 25px 25px;
}

/* Interaktywny przełącznik Diagnoza / Rozwiązanie */
.rk-err-switch-box {
    background: #f1f5f9;
    padding: 6px;
    border-radius: 12px;
    display: flex;
    gap: 5px;
    margin-bottom: 20px;
    margin-top: 10px;
}

.rk-err-btn {
    flex: 1;
    padding: 10px;
    border: none;
    background: transparent;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-err-gray);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-err-btn.active-amateur {
    background: #ffffff;
    color: var(--rk-err-red);
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

.rk-err-btn.active-pro {
    background: #ffffff;
    color: var(--rk-err-green);
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

/* Bloki tekstowe zależne od przełącznika */
.rk-err-desc {
    font-size: 15px;
    line-height: 1.7;
    color: #334155;
    padding: 15px;
    border-radius: 12px;
    display: none; /* Sterowane z JS */
}

.rk-err-desc.visible {
    display: block;
    animation: fadeIn 0.3s ease;
}

.rk-err-desc.amateur-view {
    background: var(--rk-err-red-light);
    border-left: 4px solid var(--rk-err-red);
}

.rk-err-desc.pro-view {
    background: var(--rk-err-green-light);
    border-left: 4px solid var(--rk-err-green);
}

.rk-err-desc a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(-5px); }
    to { opacity: 1; transform: translateY(0); }
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-list { padding: 25px 20px; }
    .rk-err-header h2 { font-size: 22px; }
    .rk-err-trigger { padding: 15px; }
    .rk-err-trigger h3 { font-size: 15px; }
    .rk-err-inner { padding: 0 15px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Najczęstsze błędy instalacyjne uderzające w parametr 35°C",
    "description": "Katalog najpoważniejszych błędów wykonawczych w instalacjach podłogowych. Zobacz, jak zawory mieszające, zbyt długie pętle i rzadki rozstaw niszczą efektywność 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-bledy",
    "name": "Rejestr Strat Sprawności Układu Niskotemperaturowego 2026",
    "description": "Zbiór danych diagnostycznych określających negatywny wpływ błędów hydraulicznych (zbyt długie pętle, zawory mieszające, rzadki rozstaw) na współczynnik COP pompy ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy przy montażu ogrzewania podłogowego",
      "zbyt rzadki rozstaw rur w ogrzewaniu podłogowym",
      "zawór mieszający a pompa ciepła",
      "maksymalna długość pętli ogrzewania podłogowego",
      "pękanie wylewki na podłogówce"
    ],
    "measurementTechnique": "Analiza spadku współczynnika COP oraz wzrostu oporów hydraulicznych rzędu >40 kPa w wyniku nieprawidłowych praktyk instalacyjnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obecność zaworu 3D dławi przepływ wymuszając 45°C na źródle ciepła.",
        "Pętle powyżej 120m generują ΔT > 12K blokując prawidłowy przepływ.",
        "Rozstaw co 20 cm uniemożliwia pracę na projektowym parametrze 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-bledy",
    "name": "Diagnosta Błędów Instalacyjnych HVAC",
    "description": "Interaktywny panel analizujący przyczyny i skutki złych praktyk instalacyjnych z możliwością przełączenia na prawidłowe rozwiązanie inżynierskie OZC.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="panel-bledow">
    <div class="rk-err-header">
        <h2>
            <svg class="rk-err-icon-alert" width="28" height="28" 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>
            Najczęstsze błędy instalacyjne uderzające w parametr 35°C
        </h2>
        <p>Instalacja grzewcza to nie zbiór przypadkowych rur. Rozwiń poszczególne panele i przełącz widok, aby sprawdzić, co niszczy pompę ciepła, a jak wygląda standard inżynierski.</p>
    </div>

    <div class="rk-err-list">
        
        <!-- Błąd 1 -->
        <div class="rk-err-card rk-diagnostic-item">
            <button class="rk-err-trigger" aria-expanded="false">
                <div class="rk-err-title-box">
                    <div class="rk-err-num">1</div>
                    <h3>Montaż układów mieszających przy rozdzielaczach</h3>
                </div>
                <svg class="rk-err-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-err-content">
                <div class="rk-err-inner">
                    <div class="rk-err-switch-box">
                        <button class="rk-err-btn active-amateur" data-target="err1-am">Błąd Wykonawczy</button>
                        <button class="rk-err-btn" data-target="err1-pro">Standard Projektowy</button>
                    </div>
                    <div id="err1-am" class="rk-err-desc amateur-view visible">
                        Pseudo-instalatorzy z przyzwyczajenia do kotłów węglowych montują zawory termostatyczne 3D (układy pompocentryczne). Zawór ten dławi naturalny przepływ i powoduje, że pompa ciepła musi produkować wodę o temperaturze 45°C, aby za <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworem mieszającym</a> uzyskać na podłogę pożądane 35°C. Drastycznie obniża to COP całego układu.
                    </div>
                    <div id="err1-pro" class="rk-err-desc pro-view">
                        <strong>Rozwiązanie inżynierskie:</strong> Eliminujemy mieszacze. System z pompą ciepła projektuje się jako bezpośredni i wysokoprzepływowy. Pompa z własną automatyką precyzyjnie generuje wodę na poziomie 35°C i tłoczy ją prosto w pętle grzewcze, minimalizując opory ciśnienia.
                    </div>
                </div>
            </div>
        </div>

        <!-- Błąd 2 -->
        <div class="rk-err-card rk-diagnostic-item">
            <button class="rk-err-trigger" aria-expanded="false">
                <div class="rk-err-title-box">
                    <div class="rk-err-num">2</div>
                    <h3>Zbyt długie pętle grzewcze (powyżej 120 m)</h3>
                </div>
                <svg class="rk-err-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-err-content">
                <div class="rk-err-inner">
                    <div class="rk-err-switch-box">
                        <button class="rk-err-btn active-amateur" data-target="err2-am">Błąd Wykonawczy</button>
                        <button class="rk-err-btn" data-target="err2-pro">Standard Projektowy</button>
                    </div>
                    <div id="err2-am" class="rk-err-desc amateur-view visible">
                        Chęć zaoszczędzenia na rozdzielaczu kończy się zwijaniem gigantycznych obwodów. Wykonanie pętli z rury 16x2 o długości np. 140 metrów generuje opory hydrauliczne rzędu 45 kPa. Pompa obiegowa nie jest w stanie przepchnąć wody, różnica temperatur przekracza dopuszczalne normy, a połowa pokoju zostaje całkowicie zimna.
                    </div>
                    <div id="err2-pro" class="rk-err-desc pro-view">
                        <strong>Rozwiązanie inżynierskie:</strong> Ścisłe trzymanie się wyliczeń na bazie OZC. <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli</a> dla rury 16x2 nie powinna przekraczać 80–90 m, a opory pojedynczej pętli muszą mieścić się w okolicach 20 kPa, co zapewnia optymalny spadek temperatury na poziomie 5K.
                    </div>
                </div>
            </div>
        </div>

        <!-- Błąd 3 -->
        <div class="rk-err-card rk-diagnostic-item">
            <button class="rk-err-trigger" aria-expanded="false">
                <div class="rk-err-title-box">
                    <div class="rk-err-num">3</div>
                    <h3>Brak wykonania dylatacji i izolacji brzegowej</h3>
                </div>
                <svg class="rk-err-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-err-content">
                <div class="rk-err-inner">
                    <div class="rk-err-switch-box">
                        <button class="rk-err-btn active-amateur" data-target="err3-am">Błąd Wykonawczy</button>
                        <button class="rk-err-btn" data-target="err3-pro">Standard Projektowy</button>
                    </div>
                    <div id="err3-am" class="rk-err-desc amateur-view visible">
                        Pomijanie taśmy dylatacyjnej przy ścianach oraz brak nacięć jastrychu w strefach progów drzwiowych to klasyka gatunku amatorów. Betony grzewcze silnie pracują termicznie. Zablokowana siła rozszerzalności potrafi całkowicie zerwać ułożone płytki ceramiczne lub nawet zgnieść rury.
                    </div>
                    <div id="err3-pro" class="rk-err-desc pro-view">
                        <strong>Rozwiązanie inżynierskie:</strong> Rygorystyczny montaż 8-10 mm grubej pianki obwodowej na styku wszystkich pionowych ścian. Dodatkowo projekt przewiduje strefy podziału wylewki w drzwiach – to jest fundament <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">prawidłowej dylatacji</a> zabezpieczający okładziny przed zniszczeniem.
                    </div>
                </div>
            </div>
        </div>

        <!-- Błąd 4 (Nowy dłuuugi ogon) -->
        <div class="rk-err-card rk-diagnostic-item">
            <button class="rk-err-trigger" aria-expanded="false">
                <div class="rk-err-title-box">
                    <div class="rk-err-num">4</div>
                    <h3>Zbyt rzadki rozstaw rur w ogrzewaniu podłogowym</h3>
                </div>
                <svg class="rk-err-chevron" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-err-content">
                <div class="rk-err-inner">
                    <div class="rk-err-switch-box">
                        <button class="rk-err-btn active-amateur" data-target="err4-am">Błąd Wykonawczy</button>
                        <button class="rk-err-btn" data-target="err4-pro">Standard Projektowy</button>
                    </div>
                    <div id="err4-am" class="rk-err-desc amateur-view visible">
                        Oszczędności na rurze rzędu kilkuset złotych poprzez ułożenie pętli co 20 cm zamiast projektowych 10 cm. Efekt? Aby przekazać z tak małej powierzchni wymiany odpowiednią moc cieplną do pokoju, sprężarka jest zmuszona podnieść temperaturę zasilania do 40-45°C. To bezpowrotnie niszczy sezonowy współczynnik SCOP i generuje ogromne nadpłaty za prąd.
                    </div>
                    <div id="err4-pro" class="rk-err-desc pro-view">
                        <strong>Rozwiązanie inżynierskie:</strong> Dobieramy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur precyzyjnie z obliczeń</a>. Dla systemów z pompą ciepła i temperaturą 35°C układamy gęsto (z reguły co 10 cm). Wyższy koszt materiału zwraca się w pierwszym roku w postaci najniższych możliwych rachunków i idealnego komfortu termicznego.
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Obsługa akordeonu
    var triggers = document.querySelectorAll('.rk-err-trigger');
    
    triggers.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var card = this.parentElement;
            var content = this.nextElementSibling;
            var isExpanded = this.getAttribute('aria-expanded') === 'true';

            // Zamykanie innych kart
            var allCards = document.querySelectorAll('.rk-diagnostic-item');
            allCards.forEach(function(otherCard) {
                if (otherCard !== card) {
                    otherCard.classList.remove('active');
                    otherCard.querySelector('.rk-err-trigger').setAttribute('aria-expanded', 'false');
                    otherCard.querySelector('.rk-err-content').style.maxHeight = null;
                }
            });

            // Logika Toggle (bezpieczny kod, bez operatora "and")
            if (isExpanded === false) {
                card.classList.add('active');
                this.setAttribute('aria-expanded', 'true');
                // timeout potrzebny przy display:none dzieci
                setTimeout(function(){
                    content.style.maxHeight = content.scrollHeight + 50 + "px";
                }, 10);
            }
            if (isExpanded === true) {
                card.classList.remove('active');
                this.setAttribute('aria-expanded', 'false');
                content.style.maxHeight = null;
            }
        });
    });

    // Obsługa wewnętrznych przełączników Diagnoza/Rozwiązanie
    var switchBtns = document.querySelectorAll('.rk-err-btn');
    
    switchBtns.forEach(function(switchBtn) {
        switchBtn.addEventListener('click', function() {
            var targetId = this.getAttribute('data-target');
            var container = this.closest('.rk-err-inner');
            var buttons = container.querySelectorAll('.rk-err-btn');
            var views = container.querySelectorAll('.rk-err-desc');

            // Reset guzików i widoków w danym bloku
            buttons.forEach(function(b) {
                b.classList.remove('active-amateur');
                b.classList.remove('active-pro');
            });
            views.forEach(function(v) {
                v.classList.remove('visible');
            });

            // Aktywacja klikniętego elementu
            var isAmateurTarget = targetId.indexOf('-am') > -1;
            
            if (isAmateurTarget === true) {
                this.classList.add('active-amateur');
            }
            if (isAmateurTarget === false) {
                this.classList.add('active-pro');
            }

            document.getElementById(targetId).classList.add('visible');
            
            // Przelicz ponownie wysokość akordeonu po zmianie treści
            var contentWrap = this.closest('.rk-err-content');
            contentWrap.style.maxHeight = contentWrap.scrollHeight + 50 + "px";
        });
    });

});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-navy: #1e293b;
    --rk-case-teal: #0d9488;
    --rk-case-teal-light: #ccfbf1;
    --rk-case-red: #ef4444;
    --rk-case-red-light: #fef2f2;
    --rk-case-gray: #64748b;
    --rk-case-slate: #f1f5f9;
    --rk-case-border: #e2e8f0;
    --rk-case-bg: #ffffff;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(13, 148, 136, 0.15);
    border: 1px solid var(--rk-case-teal);
    overflow: hidden;
}

/* Nagłówek */
.rk-case-header {
    padding: 40px 45px 30px;
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, var(--rk-case-navy) 100%);
    color: #ffffff;
    position: relative;
}

.rk-case-header::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; width: 100%; height: 5px;
    background: linear-gradient(90deg, var(--rk-case-teal), #2dd4bf);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(45, 212, 191, 0.2);
    color: #2dd4bf;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(45, 212, 191, 0.3);
}

.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: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Sekcja Opowieści (Story) */
.rk-case-story {
    padding: 35px 45px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-case-border);
}

.rk-case-profile {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 1px dashed var(--rk-case-border);
}

.rk-case-avatar {
    width: 64px;
    height: 64px;
    border-radius: 16px;
    background: var(--rk-case-slate);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-case-teal);
    flex-shrink: 0;
}

.rk-case-profile-info h3 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-case-dark);
}

.rk-case-profile-info p {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-case-gray);
    display: flex;
    align-items: center;
    gap: 6px;
}

.rk-case-text {
    font-size: 15px;
    line-height: 1.8;
    color: #475569;
}

.rk-case-text a {
    color: var(--rk-case-teal);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Interaktywny Symulator Decyzji */
.rk-case-interactive {
    padding: 40px 45px;
    background: #f8fafc;
}

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

.rk-case-switches {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-case-switch-btn {
    flex: 1;
    padding: 18px 20px;
    border: 2px solid var(--rk-case-border);
    border-radius: 16px;
    background: #ffffff;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.rk-case-switch-btn:hover {
    background: var(--rk-case-slate);
}

.rk-case-switch-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-dark);
}

.rk-case-switch-subtitle {
    font-size: 12px;
    color: var(--rk-case-gray);
    font-weight: 600;
}

/* Stany Aktywne Przełączników */
.rk-case-switch-btn.active[data-choice="bad"] {
    border-color: var(--rk-case-red);
    background: var(--rk-case-red-light);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}
.rk-case-switch-btn.active[data-choice="bad"] .rk-case-switch-title { color: var(--rk-case-red); }

.rk-case-switch-btn.active[data-choice="good"] {
    border-color: var(--rk-case-teal);
    background: var(--rk-case-teal-light);
    box-shadow: 0 10px 20px -5px rgba(13, 148, 136, 0.2);
}
.rk-case-switch-btn.active[data-choice="good"] .rk-case-switch-title { color: var(--rk-case-teal); }

/* Panel Wyników */
.rk-case-results {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-case-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-case-metric {
    padding: 15px 20px;
    border-radius: 12px;
    background: var(--rk-case-slate);
    border-left: 4px solid transparent;
    transition: all 0.3s;
}

.rk-case-m-lbl {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-case-gray);
    margin-bottom: 5px;
}

.rk-case-m-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-case-dark);
}

/* Wniosek Dynamiczny */
.rk-case-conclusion {
    margin-top: 25px;
    padding-top: 25px;
    border-top: 1px dashed var(--rk-case-border);
    font-size: 15px;
    line-height: 1.6;
    color: #334155;
    font-weight: 500;
}

.rk-case-conclusion strong {
    font-weight: 800;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-case-header, .rk-case-story, .rk-case-interactive { padding: 30px 20px; }
    .rk-case-header h2 { font-size: 24px; }
    .rk-case-switches { flex-direction: column; gap: 12px; }
    .rk-case-switch-btn { flex-direction: row; padding: 15px; justify-content: space-between; }
    .rk-case-switch-title { font-size: 14px; }
    .rk-case-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-case-profile { flex-direction: column; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-case-study",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Studium Przypadku: Jak Michał z Zamościa uratował pompę ciepła przed awarią?",
    "description": "Analiza błędów instalacyjnych w nowym domu 160 m² w woj. lubelskim. Porównanie amatorskiego rozstawu rur z inżynierskim projektem OZC na parametr 35°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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-case-study",
    "name": "Zestawienie Kosztów Eksploatacji i Parametrów: Dom 160m2 Zamość",
    "description": "Baza danych porównująca dwa warianty wykonawcze dla tego samego budynku: instalację amatorską (rzadki rozstaw) oraz inżynierską (optymalizacja dla zasilania 35°C).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "najczęstsze błędy przy montażu ogrzewania podłogowego i jak ich uniknąć",
      "ile styropianu pod ogrzewanie podłogowe",
      "rekuperacja i ogrzewanie podłogowe czy to się opłaca",
      "koszt ogrzewania domu 2026",
      "zużycie prądu pompa ciepła dom 160m2"
    ],
    "measurementTechnique": "Porównanie ofert rynkowych na podstawie projektowego zapotrzebowania cieplnego budynku WT 2021 oraz wyliczeń COP dla zmiennych temperatur zasilania.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant Instalatora: Rury co 20 cm, zasilanie wymuszone 45°C, wzrost zużycia energii o 35%.",
        "Wariant Inżyniera: Rury co 10 cm, zasilanie optymalne 35°C, maksymalna żywotność sprężarki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-case-study",
    "name": "Symulator Decyzji Inwestycyjnych: Zamość",
    "description": "Moduł decyzyjny pozwalający na interaktywne porównanie skutków technicznych i finansowych wyboru tańszej usługi instalatorskiej względem profesjonalnego projektu OZC.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container" id="studium-przypadku">
    
    <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="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 (Studium Przypadku)
        </div>
        <h2>Jak Michał z Zamościa uniknął pułapki "pana majstra"?</h2>
        <p>Teoria termodynamiki jest ważna, ale nic nie przemawia do wyobraźni tak, jak portfel sąsiada. Przeanalizujmy prawdziwą historię z placu budowy z województwa lubelskiego, gdzie decyzja o rezygnacji z projektu omal nie doprowadziła do katastrofy finansowej.</p>
    </div>

    <div class="rk-case-story">
        <div class="rk-case-profile">
            <div class="rk-case-avatar">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </div>
            <div class="rk-case-profile-info">
                <h3>Michał, Zamość (woj. lubelskie)</h3>
                <p>
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
                    Nowy dom 160 m² (Gazobeton + duże okna w salonie)
                </p>
            </div>
        </div>
        
        <div class="rk-case-text">
            Michał kończył budowę wymarzonego domu w Zamościu. Zastanawiał się, <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ile styropianu dać pod podłogówkę</a> i czy <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperacja z podłogówką się opłaca</a>. Lokalny hydraulik z polecenia zaoferował mu kompleksowy montaż z powietrzną pompą ciepła. "Panie Michale, nie ma co przepłacać za projekty, rzuci się rurki co 20 centymetrów, damy sprzęgło z mieszaczem i zawsze będzie ciepło, od lat tak robię" – usłyszał inwestor. 
            <br><br>
            Instynkt jednak podpowiedział Michałowi, by przed wylaniem jastrychu zgłosić się do inżynierów. Przeprowadziliśmy audyt OZC dla jego domu. Wynik był bezlitosny – sprawdź poniżej, co by się stało, gdyby zaufał wykonawcy, i jak wyglądały <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy przy montażu</a>, których ostatecznie udało się uniknąć.
        </div>
    </div>

    <div class="rk-case-interactive">
        <h3>Symulacja Decyzji dla Domu 160 m²</h3>
        
        <div class="rk-case-switches">
            <button class="rk-case-switch-btn active" data-choice="bad">
                <span class="rk-case-switch-title">Wizja Lokalnego Majstra</span>
                <span class="rk-case-switch-subtitle">"Panie, tak zawsze robiłem"</span>
            </button>
            <button class="rk-case-switch-btn" data-choice="good">
                <span class="rk-case-switch-title">Projekt Inżynierski OZC</span>
                <span class="rk-case-switch-subtitle">Wyliczenia na parametr 35°C</span>
            </button>
        </div>

        <div class="rk-case-results">
            <div class="rk-case-grid">
                
                <div class="rk-case-metric" id="rkCaseM1">
                    <div class="rk-case-m-lbl">Rozstaw rur (gęstość)</div>
                    <div class="rk-case-m-val" id="rkValV1">Co 20 cm w całym domu</div>
                </div>
                
                <div class="rk-case-metric" id="rkCaseM2">
                    <div class="rk-case-m-lbl">Wymagane zasilanie z pompy</div>
                    <div class="rk-case-m-val" id="rkValV2" style="color: var(--rk-case-red);">45°C - 48°C</div>
                </div>
                
                <div class="rk-case-metric" id="rkCaseM3">
                    <div class="rk-case-m-lbl">Roczny COP (Sprawność)</div>
                    <div class="rk-case-m-val" id="rkValV3" style="color: var(--rk-case-red);">Skrajnie niski (ok. 3.0)</div>
                </div>
                
                <div class="rk-case-metric" id="rkCaseM4">
                    <div class="rk-case-m-lbl">Wizja zładu wody</div>
                    <div class="rk-case-m-val" id="rkValV4">Wymuszony zbędny bufor</div>
                </div>

            </div>

            <div class="rk-case-conclusion" id="rkCaseConc">
                <strong>Skutek finansowy w 2026 roku:</strong> Rzadki rozstaw rur nie jest w stanie pokryć strat ciepła z dużych okien w salonie Michała przy niskiej temperaturze wody. Pompa ciepła musiałaby tłoczyć prawie 48°C. W efekcie <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszt ogrzewania tego domu</a> byłby o około <strong>35% wyższy</strong> każdego roku, a żywotność sprężarki spadłaby o połowę z powodu ciągłego przeciążenia układu mieszającego.
            </div>
        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-case-switch-btn');
    
    // Pola wyników
    var box1 = document.getElementById('rkCaseM1');
    var val1 = document.getElementById('rkValV1');
    
    var box2 = document.getElementById('rkCaseM2');
    var val2 = document.getElementById('rkValV2');
    
    var box3 = document.getElementById('rkCaseM3');
    var val3 = document.getElementById('rkValV3');
    
    var box4 = document.getElementById('rkCaseM4');
    var val4 = document.getElementById('rkValV4');
    
    var conclusion = document.getElementById('rkCaseConc');

    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var choice = this.getAttribute('data-choice');

            // Reset guzików
            btns.forEach(function(b) {
                b.classList.remove('active');
            });
            this.classList.add('active');

            // Logika bez &&
            if (choice === 'bad') {
                box1.style.borderLeftColor = 'var(--rk-case-red)';
                val1.textContent = 'Co 20 cm w całym domu';
                val1.style.color = 'var(--rk-case-dark)';
                
                box2.style.borderLeftColor = 'var(--rk-case-red)';
                val2.textContent = '45°C - 48°C';
                val2.style.color = 'var(--rk-case-red)';
                
                box3.style.borderLeftColor = 'var(--rk-case-red)';
                val3.textContent = 'Skrajnie niski (ok. 3.0)';
                val3.style.color = 'var(--rk-case-red)';
                
                box4.style.borderLeftColor = 'var(--rk-case-red)';
                val4.textContent = 'Wymuszony zbędny bufor';
                val4.style.color = 'var(--rk-case-dark)';

                conclusion.innerHTML = '<strong>Skutek finansowy:</strong> Rzadki rozstaw rur nie jest w stanie pokryć strat ciepła z dużych okien w salonie Michała przy niskiej temperaturze wody. Pompa ciepła musiałaby tłoczyć prawie 48°C. W efekcie <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszt ogrzewania tego domu</a> byłby o około <strong>35% wyższy</strong> każdego roku, a żywotność sprężarki spadłaby o połowę z powodu ciągłego przeciążenia układu mieszającego.';
            }
            
            if (choice === 'good') {
                box1.style.borderLeftColor = 'var(--rk-case-teal)';
                val1.textContent = 'Co 10 cm (Strefy co 7.5 cm)';
                val1.style.color = 'var(--rk-case-dark)';
                
                box2.style.borderLeftColor = 'var(--rk-case-teal)';
                val2.textContent = 'Sztywno 35°C';
                val2.style.color = 'var(--rk-case-teal)';
                
                box3.style.borderLeftColor = 'var(--rk-case-teal)';
                val3.textContent = 'Maksymalny (powyżej 4.6)';
                val3.style.color = 'var(--rk-case-teal)';
                
                box4.style.borderLeftColor = 'var(--rk-case-teal)';
                val4.textContent = 'Układ bezpośredni (zład rur)';
                val4.style.color = 'var(--rk-case-dark)';

                conclusion.innerHTML = '<strong>Skutek finansowy:</strong> Dzięki wyliczeniom zagęściliśmy rury przy oknach i w łazienkach, utrzymując odstęp 10 cm w reszcie domu. Michał pozbył się drogiego bufora, pompa ładuje wodę 35°C bezpośrednio w podłogę. Inwestycja w większą ilość rury zwróciła się po pierwszej zimie. System pracuje bezszelestnie na minimalnym obciążeniu sprężarki.';
            }
        });
    });
    
    // Inicjalizacja domyślna wywoływana ręcznie do ostylowania lewej ramki
    box1.style.borderLeftColor = 'var(--rk-case-red)';
    box2.style.borderLeftColor = 'var(--rk-case-red)';
    box3.style.borderLeftColor = 'var(--rk-case-red)';
    box4.style.borderLeftColor = 'var(--rk-case-red)';
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-navy: #1e293b;
    --rk-auth-slate: #334155;
    --rk-auth-blue: #0284c7;
    --rk-auth-sky: #e0f2fe;
    --rk-auth-border: #e2e8f0;
    --rk-auth-bg: #ffffff;
    --rk-auth-text: #475569;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-auth-blue);
    border-left: 8px solid var(--rk-auth-blue);
    overflow: hidden;
}

/* Nagłówek H2 */
.rk-auth-header {
    padding: 35px 40px 25px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-auth-border);
}

.rk-auth-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-auth-header p {
    font-size: 16px;
    color: var(--rk-auth-text);
    margin: 0;
    line-height: 1.6;
}

/* Główny układ: Profil + Interaktywne Porady */
.rk-auth-layout {
    display: grid;
    grid-template-columns: 300px 1fr;
}

/* Lewa Kolumna - Profil Eksperta */
.rk-auth-profile {
    background: #ffffff;
    padding: 35px 30px;
    border-right: 1px solid var(--rk-auth-border);
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-auth-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid var(--rk-auth-sky);
    margin-bottom: 20px;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.2);
}

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 5px 0;
}

.rk-auth-role {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-auth-blue);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-auth-socials {
    display: flex;
    gap: 15px;
    margin-top: auto;
}

.rk-auth-social-link {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background: #f1f5f9;
    color: var(--rk-auth-slate);
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    /* Brak animacji zgodnie z wytycznymi - tylko szybka zmiana koloru tła */
}

.rk-auth-social-link:hover {
    background: var(--rk-auth-blue);
    color: #ffffff;
}

/* Prawa Kolumna - Interaktywne Cytaty (Tabsy) */
.rk-auth-content {
    padding: 35px 40px;
    background: #fafafa;
}

.rk-auth-tabs-nav {
    display: flex;
    gap: 10px;
    margin-bottom: 25px;
    border-bottom: 2px solid var(--rk-auth-border);
    padding-bottom: 15px;
}

.rk-auth-tab-btn {
    background: transparent;
    border: none;
    padding: 10px 15px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-auth-slate);
    cursor: pointer;
    border-radius: 8px;
    /* Brak animacji, statyczne kliknięcie */
}

.rk-auth-tab-btn.active {
    background: var(--rk-auth-dark);
    color: #ffffff;
}

.rk-auth-tab-btn:hover:not(.active) {
    background: #e2e8f0;
}

.rk-auth-tab-panel {
    display: none; /* Domyślnie ukryte, przełączane JS-em bez animacji */
}

.rk-auth-tab-panel.active {
    display: block;
}

.rk-auth-quote-mark {
    font-size: 60px;
    color: var(--rk-auth-sky);
    line-height: 0.5;
    margin-bottom: -15px;
    font-family: serif;
}

.rk-auth-quote-text {
    font-size: 17px;
    line-height: 1.8;
    color: var(--rk-auth-dark);
    font-weight: 600;
    margin: 0 0 20px 0;
    font-style: italic;
}

.rk-auth-quote-text strong {
    color: var(--rk-auth-blue);
    font-weight: 800;
}

.rk-auth-fact-box {
    background: #ffffff;
    border: 1px solid var(--rk-auth-border);
    border-left: 4px solid var(--rk-auth-blue);
    padding: 15px 20px;
    border-radius: 0 8px 8px 0;
}

.rk-auth-fact-title {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-auth-slate);
    margin-bottom: 5px;
}

.rk-auth-fact-text {
    font-size: 14px;
    color: var(--rk-auth-text);
    margin: 0;
    font-weight: 500;
}

/* Mobile */
@media (max-width: 768px) {
    .rk-auth-header { padding: 25px 20px; }
    .rk-auth-layout { grid-template-columns: 1fr; }
    .rk-auth-profile { border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 30px 20px; }
    .rk-auth-content { padding: 25px 20px; }
    .rk-auth-tabs-nav { flex-direction: column; border-bottom: none; gap: 8px; }
    .rk-auth-tab-btn { text-align: left; background: #f1f5f9; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Zdaniem eksperta: Inż. Robert Kucharski o projektowaniu instalacji niskotemperaturowych",
    "description": "Złote zasady i inżynierskie podsumowanie Roberta Kucharskiego dotyczące projektowania instalacji płaszczyznowych, doboru pomp ciepła i unikania błędów wykonawczych.",
    "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 / Projektant Instalacji Ogrzewania",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-ekspert",
    "name": "Manifest Inżynierski: Normy i Fakty Ogrzewania Podłogowego",
    "description": "Baza wiedzy z zakresu fizyki budowli zawierająca zbiór twardych wskaźników determinujących opłacalność oraz awaryjność nowoczesnych układów grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "Robert Kucharski projektowanie ogrzewania podłogowego",
      "złote zasady ogrzewania podłogowego z pompą ciepła",
      "błędy instalatorów pomp ciepła",
      "koszty eksploatacji ogrzewania podłogowego z pompą ciepła",
      "obliczenia ozc a wydajność pompy"
    ],
    "measurementTechnique": "Weryfikacja rynkowych standardów wykonawczych na podstawie tysięcy zrealizowanych projektów, pomiarów termowizyjnych oraz rachunków inwestorów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Fizyki nie oszukasz: Przekroczenie 35°C drastycznie degraduje sprawność sprężarki.",
        "Materiały nie wybaczają: Powyżej 45°C wylewka anhydrytowa traci właściwości strukturalne."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-ekspert",
    "name": "Interaktywny Asystent Wiedzy Eksperckiej",
    "description": "Panel umożliwiający błyskawiczne przełączanie kluczowych wniosków inżynierskich przypisanych do poszczególnych etapów realizacji ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container" id="opinia-eksperta">
    
    <div class="rk-auth-header">
        <h2>
            <svg width="28" height="28" 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><path d="M9 12l2 2 4-4"></path></svg>
            Zdaniem eksperta: Robert Kucharski o parametrze 35°C
        </h2>
        <p>Za każdym prawidłowo dobranym przepływem i parametrem COP stoją twarde obliczenia. Odrzuć fora internetowe i sprawdź, jakie są inżynierskie fakty poparte tysiącami zrealizowanych projektów OZC.</p>
    </div>

    <div class="rk-auth-layout">
        
        <!-- Kolumna Profilu -->
        <div class="rk-auth-profile">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski Ekspert HVAC" class="rk-auth-photo">
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <div class="rk-auth-role">Inżynier HVAC / CEO</div>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener" class="rk-auth-social-link" title="Obserwuj na Facebooku">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener" class="rk-auth-social-link" title="Połącz na LinkedIn">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" stroke="none"><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>
                </a>
                <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener" class="rk-auth-social-link" title="Obserwuj na X">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" stroke="none"><path d="M4 4l11.73 14.86L20 20H15.11L9.2 11.96 4 4zm2 2h3l9 12h-3L6 6z"></path></svg>
                </a>
            </div>
        </div>

        <!-- Kolumna Treści (Tabsy statyczne) -->
        <div class="rk-auth-content">
            
            <div class="rk-auth-tabs-nav" id="rkAuthTabs">
                <button class="rk-auth-tab-btn active" data-tab="tab-projekt">Projektowanie OZC</button>
                <button class="rk-auth-tab-btn" data-tab="tab-wykonawstwo">Wykonawstwo</button>
                <button class="rk-auth-tab-btn" data-tab="tab-ekonomia">Ekonomia</button>
            </div>

            <div class="rk-auth-tab-content">
                
                <!-- Tab 1: Projektowanie -->
                <div class="rk-auth-tab-panel active" id="tab-projekt">
                    <div class="rk-auth-quote-mark">"</div>
                    <p class="rk-auth-quote-text">
                        Możesz kupić najdroższą pompę ciepła na rynku, ale to fizyka budynku zadecyduje o rachunkach. Bez rzetelnego obliczenia OZC dla każdego pokoju osobno i bez wyznaczenia gęstości strumienia cieplnego, zgadujesz. <strong>Temperatura zasilania na poziomie 35°C to nie przypadek, to wynik rygorystycznego projektu rur ułożonych z reguły co 10 cm.</strong> Jeśli ktoś mówi Ci, że projekt jest zbędny – uciekaj.
                    </p>
                    <div class="rk-auth-fact-box">
                        <div class="rk-auth-fact-title">Kluczowy Wskaźnik Projektowy</div>
                        <p class="rk-auth-fact-text">Podłogówka projektowana "na oko" i ułożona co 20 cm wymusi na urządzeniu grzanie do ponad 45°C. Zniszczy to wydajność i całkowicie mija się z celem montażu pompy ciepła.</p>
                    </div>
                </div>

                <!-- Tab 2: Wykonawstwo -->
                <div class="rk-auth-tab-panel" id="tab-wykonawstwo">
                    <div class="rk-auth-quote-mark">"</div>
                    <p class="rk-auth-quote-text">
                        Największym błędem, z jakim spotykam się na budowach, są pętle ułożone z ponad 120-metrowych odcinków i układy z zaworami mieszającymi zmontowane z przyzwyczajenia do kotłów na węgiel. <strong>Pompa ciepła wymaga potężnego zładu wody i ogromnych przepływów.</strong> Dławienie jej mieszaczami to zakładanie Porsche opon od Fiata 126p i dziwienie się, że silnik wyje.
                    </p>
                    <div class="rk-auth-fact-box">
                        <div class="rk-auth-fact-title">Reguła Wykonawcza</div>
                        <p class="rk-auth-fact-text">Opory hydrauliczne długiej pętli (powyżej 90m dla rury 16x2) powodują, że powrót jest drastycznie wychłodzony, pompa obiegowa nie daje rady, a salon pozostaje zimny mimo pracującej sprężarki.</p>
                    </div>
                </div>

                <!-- Tab 3: Ekonomia -->
                <div class="rk-auth-tab-panel" id="tab-ekonomia">
                    <div class="rk-auth-quote-mark">"</div>
                    <p class="rk-auth-quote-text">
                        Często klienci pytają mnie o koszty eksploatacji ogrzewania podłogowego. Prawda jest brutalna: <strong>Pieniądze oszczędzone na etapie zagęszczenia rur oddasz zakładowi energetycznemu w pierwszym roku użytkowania.</strong> Zmuszanie systemu do pracy na 45-50°C powoduje spadek współczynnika SCOP, podwajając roczne koszty energii w porównaniu do standardu 35°C.
                    </p>
                    <div class="rk-auth-fact-box">
                        <div class="rk-auth-fact-title">Perspektywa Finansowa</div>
                        <p class="rk-auth-fact-text">W perspektywie 15-letniej, brak optymalizacji rozstawu rur i krzywej grzewczej potrafi narazić inwestora na straty przewyższające wartość całej kotłowni.</p>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var tabBtns = document.querySelectorAll('.rk-auth-tab-btn');
    var tabPanels = document.querySelectorAll('.rk-auth-tab-panel');

    tabBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var targetId = this.getAttribute('data-tab');

            // Reset stanów
            tabBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            tabPanels.forEach(function(p) {
                p.classList.remove('active');
            });

            // Aktywacja wybranego - natychmiastowe działanie (bez animacji)
            this.classList.add('active');
            var targetPanel = document.getElementById(targetId);
            
            // Bezpieczna logika w czystym JS (bez &&)
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-light-blue: #f0f9ff;
    --rk-faq-green: #10b981;
    --rk-faq-border: #e2e8f0;
    --rk-faq-bg: #ffffff;
    --rk-faq-hover: #f8fafc;
    --rk-faq-text: #334155;
}

.rk-faq-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-faq-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-faq-blue);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-faq-header {
    padding: 35px 45px 25px;
    background: linear-gradient(to right, #f8fafc, #ffffff);
    border-bottom: 1px solid var(--rk-faq-border);
    position: relative;
}

.rk-faq-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 6px; height: 100%;
    background: var(--rk-faq-blue);
}

.rk-faq-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-faq-dark);
    margin: 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-faq-header svg {
    color: var(--rk-faq-blue);
    flex-shrink: 0;
}

/* Lista Akordeonowa - 1 kolumna (wymóg) */
.rk-faq-list {
    padding: 20px 45px 45px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: #ffffff;
    border: 2px solid var(--rk-faq-border);
    border-radius: 16px;
    transition: all 0.3s ease;
    overflow: hidden;
}

.rk-faq-item.active {
    border-color: var(--rk-faq-blue);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

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

.rk-faq-question:hover {
    background: var(--rk-faq-hover);
}

.rk-faq-item.active .rk-faq-question {
    background: var(--rk-faq-light-blue);
    color: var(--rk-faq-blue);
}

.rk-faq-icon {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-light-blue);
    color: var(--rk-faq-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s, color 0.3s;
}

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

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

.rk-faq-answer-inner {
    padding: 0 25px 25px 25px;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-faq-text);
    border-top: 1px solid transparent;
}

.rk-faq-item.active .rk-faq-answer-inner {
    border-top-color: var(--rk-faq-light-blue);
    padding-top: 20px;
}

.rk-faq-answer-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.2s;
}

.rk-faq-answer-inner a:hover {
    color: #0369a1;
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-faq-header { padding: 25px 20px; }
    .rk-faq-header h2 { font-size: 22px; }
    .rk-faq-list { padding: 15px 20px 30px; }
    .rk-faq-question { padding: 18px 20px; font-size: 15px; }
    .rk-faq-answer-inner { padding: 0 20px 20px; font-size: 14px; }
    .rk-faq-icon { width: 28px; height: 28px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "5 pytań o temperaturę zasilania 35°C (FAQ)",
    "description": "Baza wiedzy i odpowiedzi inżynierskich na najczęstsze pytania dotyczące niskiej temperatury zasilania pompy ciepła, parametrów podłogówki oraz wpływu na posadzki.",
    "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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy temperatura zasilania 35°C wystarczy do ogrzania domu podczas mrozów -20°C?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, w budynku spełniającym standardy WT 2021 prawidło zaprojektowana podłogówka o rozstawie rur co 10 cm w pełni pokrywa straty ciepła przy temperaturze zasilania 35°C. Wynika to z dużej powierzchni grzewczej posadzki, która bez problemu oddaje wtedy wymagane 40–50 W/m²."
        }
      },
      {
        "@type": "Question",
        "name": "Czy letnia podłoga o temperaturze 25°C nie wywoła uczucia chłodu w pomieszczeniu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, temperatura skóry na stopach człowieka to około 29–30°C, więc posadzka o temperaturze 24–25°C jest postrzegana przez organizm jako neutralna i niezwykle komfortowa. Eliminuje to negatywne zjawisko gorących stóp oraz puchnięcia nóg, które występowało w starych instalacjach wysokotemperaturowych."
        }
      },
      {
        "@type": "Question",
        "name": "Czy rzadki rozstaw rur co 20 cm można skompensować wyższym przepływem na rotametrach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, zwiększenie przepływu powyżej wartości projektowych wygeneruje ogromny szum hydrauliczny w instalacji oraz przekroczy maksymalne parametry pracy wbudowanej pompy obiegowej. Jedyną skuteczną metodą na rzadki rozstaw jest podniesienie temperatury zasilania do 45°C, co jednak obniży sprawność COP pompy o około 25%."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego pompa ciepła rzekomo nie lubi się z tradycyjnymi grzejnikami?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pompa ciepła technicznie obsłuży grzejniki, ale wymuszenie temperatury zasilania 55°C drastycznie podnosi ciśnienie skraplania czynnika chłodniczego w sprężarce. Powoduje to spadek współczynnika SCOP do okolic 2,4–2,6, przez co koszty rachunków za energię elektryczną rosną o blisko 40–50% w stosunku do podłogówki."
        }
      },
      {
        "@type": "Question",
        "name": "Czy przy zasilaniu 35°C można bezpiecznie stosować podłogę z paneli laminowanych?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, nowoczesne panele posiadają dedykowane oznaczenia producentów potwierdzające niską oporność cieplną (poniżej 0,15 m²K/W). Przy temperaturze zasilania 35°C panele nagrzewają się do bezpiecznych 24–25°C, co zapobiega ich wysuszaniu, emisji szkodliwych substancji oraz powstawaniu szczelin."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset",
    "name": "Baza Wiedzy Niskotemperaturowej: Parametry Pracy i Komfortu 2026",
    "description": "Inżynierskie zestawienie faktów obalające mity internetowe, zawierające konkretne wartości dotyczące przepływów, temperatury odczuwalnej oraz doboru okładzin dla wodnego ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "optymalna temperatura zasilania ogrzewania podłogowego",
      "przepływy na rotametrach a szum hydrauliczny",
      "współczynnik SCOP pompy przy grzejnikach",
      "ogrzewanie podłogowe a zdrowie domowników",
      "zasilanie podłogówki pod panele podłogowe"
    ],
    "measurementTechnique": "Weryfikacja parametrów projektowych z rzeczywistymi warunkami fizjologicznymi człowieka oraz fizyką instalacji grzewczych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymagane oddawanie mocy 40-50 W/m² realizowane przy zasilaniu 35°C.",
        "Komfort termiczny dla stóp określony precyzyjnie na 24-25°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp",
    "name": "Interaktywny Asystent Ekspercki FAQ",
    "description": "Rozwijany moduł odpowiedzi inżynierskich pozwalający użytkownikowi na błyskawiczne rozwiązywanie wątpliwości dotyczących parowania pomp ciepła z systemami podłogowymi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container" id="faq-35-stopni">
    <div class="rk-faq-header">
        <h2>
            <svg width="28" height="28" 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="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            5 pytań o temperaturę zasilania 35°C (FAQ)
        </h2>
    </div>

    <div class="rk-faq-list">
        
        <!-- Pytanie 1 -->
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy temperatura zasilania 35°C wystarczy do ogrzania domu podczas mrozów -20°C?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, w budynku spełniającym standardy WT 2021 prawidło zaprojektowana podłogówka o rozstawie rur co 10 cm w pełni pokrywa straty ciepła przy temperaturze zasilania 35°C. Wynika to z dużej powierzchni grzewczej posadzki, która bez problemu oddaje wtedy wymagane 40–50 W/m², o czym szerzej mówimy w kontekście <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">optymalnej temperatury układu</a>.
                </div>
            </div>
        </div>

        <!-- Pytanie 2 -->
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy letnia podłoga o temperaturze 25°C nie wywoła uczucia chłodu w pomieszczeniu?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Nie, temperatura skóry na stopach człowieka to około 29–30°C, więc posadzka o temperaturze 24–25°C jest postrzegana przez organizm jako neutralna i niezwykle komfortowa. Eliminuje to negatywne zjawisko "gorących stóp" oraz puchnięcia nóg, co czyni ten system zdecydowanie <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/">najzdrowszym wyborem grzewczym</a> względem starych instalacji wysokotemperaturowych.
                </div>
            </div>
        </div>

        <!-- Pytanie 3 -->
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy rzadki rozstaw rur co 20 cm można skompensować wyższym przepływem na rotametrach?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Nie, zwiększenie przepływu powyżej wartości projektowych wygeneruje ogromny szum hydrauliczny w instalacji oraz przekroczy maksymalne parametry pracy wbudowanej pompy obiegowej. Jedyną skuteczną metodą na rzadki rozstaw jest podniesienie temperatury zasilania do 45°C, co jednak obniży sprawność COP pompy o około 25%. Warto zawsze prawidłowo odczytywać parametry na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a>.
                </div>
            </div>
        </div>

        <!-- Pytanie 4 -->
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Dlaczego pompa ciepła rzekomo nie lubi się z tradycyjnymi grzejnikami?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Pompa ciepła technicznie obsłuży grzejniki, ale wymuszenie temperatury zasilania 55°C drastycznie podnosi ciśnienie skraplania czynnika chłodniczego w sprężarce. Powoduje to spadek współczynnika SCOP do okolic 2,4–2,6, przez co koszty rachunków za energię elektryczną rosną o blisko 40–50% w stosunku do instalacji płaszczyznowych. Wymaga to specjalnego podejścia do <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">łączenia obu układów</a>.
                </div>
            </div>
        </div>

        <!-- Pytanie 5 -->
        <div class="rk-faq-item">
            <button class="rk-faq-question" aria-expanded="false">
                <h3>Czy przy zasilaniu 35°C można bezpiecznie stosować podłogę z paneli laminowanych?</h3>
                <div class="rk-faq-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-faq-answer">
                <div class="rk-faq-answer-inner">
                    Tak, nowoczesne panele posiadają dedykowane oznaczenia producentów potwierdzające niską oporność cieplną (poniżej 0,15 m²K/W). Przy temperaturze zasilania 35°C panele nagrzewają się do bezpiecznych 24–25°C, co zapobiega ich wysuszaniu, emisji szkodliwych substancji oraz powstawaniu szczelin. Rozwiewa to ostatecznie wątpliwości, <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">co kłaść na jastrych</a> grzewczy.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var faqQuestions = document.querySelectorAll('.rk-faq-question');

    faqQuestions.forEach(function(question) {
        question.addEventListener('click', function() {
            var item = this.parentElement;
            var answer = this.nextElementSibling;
            var isActive = item.classList.contains('active');
            
            // Zamknij wszystkie inne otwarte zakładki (opcjonalne, zapewnia czystość interfejsu)
            var allItems = document.querySelectorAll('.rk-faq-item');
            allItems.forEach(function(otherItem) {
                if (otherItem !== item) {
                    otherItem.classList.remove('active');
                    otherItem.querySelector('.rk-faq-question').setAttribute('aria-expanded', 'false');
                    otherItem.querySelector('.rk-faq-answer').style.maxHeight = null;
                }
            });

            // Całkowicie bezpieczna logika "toggle" (brak &&)
            if (isActive === false) {
                item.classList.add('active');
                this.setAttribute('aria-expanded', 'true');
                answer.style.maxHeight = answer.scrollHeight + "px";
            }
            if (isActive === true) {
                item.classList.remove('active');
                this.setAttribute('aria-expanded', 'false');
                answer.style.maxHeight = null;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-navy: #1e293b;
    --rk-dl-blue: #0284c7;
    --rk-dl-sky: #e0f2fe;
    --rk-dl-green: #10b981;
    --rk-dl-gray: #64748b;
    --rk-dl-border: #e2e8f0;
    --rk-dl-bg: #ffffff;
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-dl-blue);
    overflow: hidden;
}

/* Nagłówek */
.rk-dl-header {
    padding: 35px 40px 25px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-dl-border);
}

.rk-dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-dl-header p {
    font-size: 16px;
    color: var(--rk-dl-gray);
    margin: 0;
    line-height: 1.6;
}

/* Sekcja Główna - Layout 2 kolumny na desktop */
.rk-dl-body {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: #ffffff;
}

/* Lewa Kolumna - Miniatura */
.rk-dl-thumbnail-box {
    padding: 30px;
    background: #f1f5f9;
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-dl-image {
    width: 100%;
    height: auto;
    border-radius: 12px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
    border: 4px solid #ffffff;
    object-fit: cover;
    display: block;
}

.rk-dl-badge {
    margin-top: 15px;
    background: var(--rk-dl-navy);
    color: #ffffff;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Prawa Kolumna - Akcje i Opis */
.rk-dl-actions-box {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-title {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-dl-desc {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-dl-gray);
    margin: 0 0 25px 0;
}

.rk-dl-buttons {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-bottom: 25px;
}

/* Przyciski statyczne - bez animacji hover, tylko zmiana koloru tła */
.rk-dl-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 25px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    transition: background-color 0.2s, color 0.2s;
    cursor: pointer;
    border: none;
    width: 100%;
    box-sizing: border-box;
}

.rk-dl-btn-pdf {
    background: var(--rk-dl-blue);
    color: #ffffff;
    border: 2px solid var(--rk-dl-blue);
}

.rk-dl-btn-pdf:hover {
    background: #0369a1;
    border-color: #0369a1;
}

.rk-dl-btn-img {
    background: #ffffff;
    color: var(--rk-dl-dark);
    border: 2px solid var(--rk-dl-border);
}

.rk-dl-btn-img:hover {
    background: #f1f5f9;
    border-color: #cbd5e1;
}

/* Komunikat o pobraniu ukryty domyślnie */
.rk-dl-success-msg {
    display: none;
    padding: 15px;
    background: #dcfce7;
    border-left: 4px solid var(--rk-dl-green);
    border-radius: 0 8px 8px 0;
    color: #065f46;
    font-size: 14px;
    font-weight: 700;
}

.rk-dl-success-msg.show {
    display: block;
}

/* Stopka - Prawa autorskie */
.rk-dl-footer {
    padding: 20px 40px;
    background: var(--rk-dl-navy);
    color: #94a3b8;
    font-size: 13px;
    line-height: 1.6;
    text-align: center;
    border-top: 1px solid var(--rk-dl-dark);
}

.rk-dl-footer strong {
    color: #ffffff;
}

/* Mobile Responsiveness */
@media (max-width: 768px) {
    .rk-dl-header, .rk-dl-actions-box, .rk-dl-footer { padding: 25px 20px; }
    .rk-dl-header h2 { font-size: 22px; }
    .rk-dl-body { grid-template-columns: 1fr; }
    .rk-dl-thumbnail-box { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 20px; }
    .rk-dl-image { max-width: 250px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Pobierz darmowe materiały: Infografika i parametry projektowe",
    "description": "Zestawienie wizualne najważniejszych parametrów dla ogrzewania podłogowego. Pobierz infografikę edukacyjną w formacie PDF lub wyświetl obraz w pełnej rozdzielczości.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Niska-temperatura-zasilania-pompy-ciepla-%E2%80%93-dlaczego-35-stopni-to-ideal-dla-podlogowki.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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-infografika",
    "name": "Infografika: Parametry Niskotemperaturowe Ogrzewania Podłogowego 35°C",
    "description": "Wizualne zestawienie techniczne ilustrujące zależności między temperaturą zasilania a współczynnikiem COP pompy ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika temperatura zasilania pompy ciepła",
      "parametry podłogówki schemat",
      "współczynnik COP tabela pdf",
      "krzywa grzewcza wykres pdf",
      "błędy instalacyjne ogrzewania obrazek"
    ],
    "measurementTechnique": "Kondensacja danych technicznych i wyliczeniowych OZC z normy PN-EN 12831 do wektorowej reprezentacji graficznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Skrócone kompendium zasad wyznaczania rozstawu rur podłogowych.",
        "Ilustracja obrazująca wpływ 45°C na żywotność wylewki i sprężarki."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp-pobieranie",
    "name": "Centrum Dystrybucji Wiedzy Inżynierskiej (Download Center)",
    "description": "Narzędzie webowe udostępniające weryfikowalne materiały edukacyjne (PDF, WEBP) oparte o twarde obliczenia branży HVAC.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="materialy-do-pobrania">
    
    <div class="rk-dl-header">
        <h2>
            <svg width="28" height="28" 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 darmowe materiały: Infografika i parametry projektowe
        </h2>
        <p>Wiedza inżynierska nie powinna zostawać tylko na ekranie. Przygotowałem dla Ciebie skondensowane podsumowanie tego artykułu w formie przejrzystej infografiki. Zabierz ją na budowę lub pokaż swojemu instalatorowi.</p>
    </div>

    <div class="rk-dl-body">
        
        <!-- Lewa Kolumna: Miniatura -->
        <div class="rk-dl-thumbnail-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Niska-temperatura-zasilania-pompy-ciepla-%E2%80%93-dlaczego-35-stopni-to-ideal-dla-podlogowki.webp" alt="Miniatura: Niska temperatura zasilania pompy ciepła" class="rk-dl-image" loading="lazy">
            <div class="rk-dl-badge">Podgląd Materiału</div>
        </div>

        <!-- Prawa Kolumna: Akcje -->
        <div class="rk-dl-actions-box">
            <h3 class="rk-dl-title">Złote zasady parametru 35°C w pigułce</h3>
            <p class="rk-dl-desc">Plik zawiera gotowe zestawienia rozstawu rur, wyliczenia sprawności COP oraz kluczowe błędy, których musisz unikać przy zlecaniu robót instalacyjnych. Zachowaj ten plik jako punkt odniesienia podczas odbioru instalacji w Twoim domu.</p>
            
            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Niska-temperatura-zasilania-pompy-ciepla-%E2%80%93-dlaczego-35-stopni-to-ideal-dla-podlogowki.pdf" target="_blank" rel="noopener" class="rk-dl-btn rk-dl-btn-pdf" id="rkActionPdf">
                    <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><line x1="12" y1="18" x2="12" y2="12"></line><polyline points="9 15 12 18 15 15"></polyline></svg>
                    Pobierz dokument PDF (Wysoka jakość)
                </a>
                
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Niska-temperatura-zasilania-pompy-ciepla-%E2%80%93-dlaczego-35-stopni-to-ideal-dla-podlogowki.webp" target="_blank" rel="noopener" class="rk-dl-btn rk-dl-btn-img" id="rkActionImg">
                    <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>
                    Otwórz grafikę w nowej karcie
                </a>
            </div>

            <div class="rk-dl-success-msg" id="rkSuccessMessage">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" style="vertical-align: middle; margin-right: 5px;"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Plik otworzy się w nowym oknie. Dziękuję za zaufanie do materiałów Projekt-Ogrzewania.pl.
            </div>
        </div>

    </div>

    <div class="rk-dl-footer">
        <strong>© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski.</strong> <br>
        Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btnPdf = document.getElementById('rkActionPdf');
    var btnImg = document.getElementById('rkActionImg');
    var successMsg = document.getElementById('rkSuccessMessage');

    // Funkcja pokazująca komunikat po kliknięciu bez znaków && i bez animacji
    function showSuccessMessage() {
        if (successMsg !== null) {
            successMsg.className = 'rk-dl-success-msg show';
        }
    }

    if (btnPdf !== null) {
        btnPdf.addEventListener('click', showSuccessMessage);
    }
    
    if (btnImg !== null) {
        btnImg.addEventListener('click', showSuccessMessage);
    }
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

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

/* Wstęp sekcji podsumowującej */
.rk-final-header {
    padding: 40px 50px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-sum-border);
}

.rk-final-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-sum-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

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

.rk-final-header strong {
    color: var(--rk-sum-dark);
    font-weight: 800;
}

/* Symulator interaktywny */
.rk-final-interactive {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #f8fafc, #f1f5f9);
}

.rk-sim-dashboard {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 30px -5px rgba(0,0,0,0.05);
    border: 1px solid var(--rk-sum-border);
}

.rk-sim-controls {
    margin-bottom: 30px;
}

.rk-sim-slider-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-weight: 800;
    color: var(--rk-sum-dark);
    margin-bottom: 15px;
    font-size: 18px;
}

.rk-sim-slider-value {
    background: var(--rk-sum-blue);
    color: white;
    padding: 5px 15px;
    border-radius: 999px;
    font-size: 20px;
}

.rk-range {
    width: 100%;
    height: 12px;
    border-radius: 6px;
    background: #e2e8f0;
    outline: none;
    -webkit-appearance: none;
    transition: all 0.3s;
}

.rk-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--rk-sum-blue);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

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

/* Wyniki symulatora */
.rk-sim-metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.rk-metric-card {
    padding: 20px;
    border-radius: 16px;
    border: 2px solid var(--rk-sum-border);
    text-align: center;
    transition: all 0.4s ease;
}

.rk-metric-title {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 700;
    color: #64748b;
    margin-bottom: 10px;
    letter-spacing: 1px;
}

.rk-metric-value {
    font-size: 32px;
    font-weight: 900;
    margin-bottom: 5px;
    transition: color 0.3s;
}

.rk-metric-desc {
    font-size: 13px;
    font-weight: 600;
}

/* Tagi pod SEO */
.rk-tags-section {
    padding: 20px 50px 0;
    background: #ffffff;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.rk-mat-tag {
    background: var(--rk-sum-light-blue);
    color: var(--rk-sum-blue);
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid rgba(2, 132, 199, 0.2);
    transition: all 0.2s;
}

.rk-mat-tag:hover {
    background: var(--rk-sum-blue);
    color: #ffffff;
}

/* Sekcja CTA */
.rk-final-cta {
    padding: 40px 50px;
    background: #ffffff;
    text-align: center;
}

.rk-cta-wrapper {
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    border-radius: 20px;
    padding: 40px 30px;
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-cta-wrapper::before {
    content: '';
    position: absolute;
    top: -50%; left: -50%; width: 200%; height: 200%;
    background: radial-gradient(circle, rgba(2,132,199,0.15) 0%, transparent 60%);
}

.rk-cta-wrapper h3 {
    font-size: 24px;
    font-weight: 900;
    margin: 0 0 15px 0;
    position: relative;
    z-index: 2;
}

.rk-cta-wrapper p {
    color: #cbd5e1;
    font-size: 16px;
    line-height: 1.6;
    margin: 0 auto 30px auto;
    max-width: 600px;
    position: relative;
    z-index: 2;
}

.rk-btn-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-sum-green);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 18px 36px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.4);
    transition: all 0.3s;
    position: relative;
    z-index: 2;
}

.rk-btn-cta:hover {
    transform: translateY(-4px);
    background: #059669;
    box-shadow: 0 15px 25px -5px rgba(16, 185, 129, 0.5);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-final-header, .rk-final-interactive, .rk-tags-section, .rk-final-cta {
        padding: 30px 20px;
    }
    .rk-sim-metrics {
        grid-template-columns: 1fr; /* Pionowy układ na mobile */
        gap: 15px;
    }
    .rk-final-header h2 { font-size: 24px; }
    .rk-btn-cta { width: 100%; padding: 16px 20px; font-size: 15px; }
    .rk-sim-slider-label { flex-direction: column; gap: 10px; align-items: flex-start; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
    },
    "headline": "Podsumowanie – dlaczego 35°C to technologiczny ideał?",
    "description": "Zrozumienie zależności między temperaturą zasilania a współczynnikiem COP. Zobacz dlaczego projekt ogrzewania definiuje wydajność pompy ciepła na lata.",
    "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://x.com/Projekt_HVAC",
        "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-07-11",
    "dateModified": "2026-07-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset",
    "name": "Wskaźnik COP i Kosztów Eksploatacji przy Zasilaniu 35°C vs 45°C",
    "description": "Dane z symulacji ukazujące drastyczny spadek współczynnika SCOP oraz wzrost kosztów rachunków za prąd przy nieprawidłowo zaprojektowanym rozstawie rur.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "współczynnik COP pompy ciepła",
      "temperatura zasilania podłogówki",
      "zużycie prądu pompa ciepła",
      "koszty ogrzewania 2026",
      "sprawność sprężarki"
    ],
    "measurementTechnique": "Algorytm korelacji temperatury czynnika chłodniczego z ciśnieniem skraplania i poborem mocy sprężarki w warunkach A2W35-A2W45.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Punkt pracy 35°C: Idealny COP 4.6, minimalne obciążenie instalacji i rachunki.",
        "Punkt pracy 45°C: Krytyczny spadek COP do 3.1, ryzyko przegrzewu i wysokie koszty."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapp",
    "name": "Symulator Fizyki Instalacji Niskotemperaturowej",
    "description": "Interaktywny panel pozwalający inwestorowi na symulację zmian współczynnika efektywności COP pompy ciepła w zależności od zadanej temperatury zasilania na rozdzielaczu.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-final-container" id="podsumowanie-35">
    <div class="rk-final-header">
        <h2>Podsumowanie – dlaczego 35°C to technologiczny ideał?</h2>
        <p>Parametr zasilania <strong>35°C</strong> nie jest chwilową modą rynkową, lecz wynikiem czystej optymalizacji inżynierskiej. Stanowi on barierę ochronną dla Twojego budżetu (maksymalny współczynnik COP/SCOP), gwarantuje bezawaryjną pracę sprężarki przez długie lata oraz chroni delikatne materiały wykończeniowe (wylewki, drewno, panele) przed destrukcją termiczną.</p>
        <p>Pamiętaj jednak o złotej zasadzie: <strong>pompą ciepła steruje fizyka, a fizyką instalacji steruje projekt</strong>. Próba ułożenia ogrzewania podłogowego bez dokładnych wyliczeń hydraulicznych, bez <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" target="_blank" rel="noopener">znajomości OZC budynku</a> i bez precyzyjnie określonych pętli to najprostsza droga do podniesienia temperatury zasilania do 45°C i bezpowrotnego zmarnowania potencjału pompy ciepła. Inwestycja w rzetelny projekt inżynierski to jedyna gwarancja, że Twoja instalacja będzie pracować na idealnym, ultra-oszczędnym parametrze 35°C.</p>
    </div>

    <div class="rk-final-interactive">
        <div class="rk-sim-dashboard">
            <div class="rk-sim-controls">
                <div class="rk-sim-slider-label">
                    <span>Ustaw temperaturę zasilania:</span>
                    <span class="rk-sim-slider-value" id="rkSimTempValue">35°C</span>
                </div>
                <input type="range" min="30" max="45" value="35" step="1" class="rk-range" id="rkTempSlider">
            </div>

            <div class="rk-sim-metrics">
                <div class="rk-metric-card" id="rkCardCOP">
                    <div class="rk-metric-title">Szacunkowy COP (Sprawność)</div>
                    <div class="rk-metric-value" id="rkValCOP">4.6</div>
                    <div class="rk-metric-desc" id="rkDescCOP" style="color: var(--rk-sum-green);">Maksymalna wydajność sprężarki</div>
                </div>
                <div class="rk-metric-card" id="rkCardStan">
                    <div class="rk-metric-title">Stan Instalacji / Portfel</div>
                    <div class="rk-metric-value" id="rkValStan" style="font-size: 24px;">Bezpieczny</div>
                    <div class="rk-metric-desc" id="rkDescStan" style="color: var(--rk-sum-gray);">Niskie rachunki, chroniona wylewka</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-tags-section">
        <span class="rk-mat-tag"># niska temperatura zasilania pompy ciepła</span>
        <span class="rk-mat-tag"># optymalna temperatura zasilania ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># współczynnik COP pompy ciepła a rachunki</span>
        <span class="rk-mat-tag"># obliczenia OZC pod pompę ciepła</span>
        <span class="rk-mat-tag"># projekt instalacji ogrzewania płaszczyznowego</span>
        <span class="rk-mat-tag"># zabezpieczenie wylewki przed pękaniem</span>
        <span class="rk-mat-tag"># ekonomiczne sterowanie krzywą grzewczą</span>
        <span class="rk-mat-tag"># profesjonalny projekt ogrzewania podłogowego</span>
    </div>

    <div class="rk-final-cta">
        <div class="rk-cta-wrapper">
            <h3>Buduj świadomie, nie płać za błędy</h3>
            <p>Ten artykuł to tylko wierzchołek góry lodowej. Na moim blogu rozkładam na czynniki pierwsze zaawansowane parametry hydrauliczne, omawiam ukryte pułapki rzadkiego orurowania i pokazuję, jak profesjonalny projekt optymalizuje każdy m² Twojej posadzki pod pompę ciepła.</p>
            <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-cta">
                CZYTAJ DALEJ NA BLOGU
                <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 12h14M12 5l7 7-7 7"/></svg>
            </a>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rkTempSlider');
    var tempValDisplay = document.getElementById('rkSimTempValue');
    
    // Zmienne DOM
    var cardCOP = document.getElementById('rkCardCOP');
    var valCOP = document.getElementById('rkValCOP');
    var descCOP = document.getElementById('rkDescCOP');
    
    var cardStan = document.getElementById('rkCardStan');
    var valStan = document.getElementById('rkValStan');
    var descStan = document.getElementById('rkDescStan');

    function updateSimulation(temp) {
        tempValDisplay.textContent = temp + '°C';

        // Używamy bezpiecznych instrukcji warunkowych bez znaków "&&" ograniczając problemy z parserami
        if (temp <= 35) {
            valCOP.textContent = '4.6';
            valCOP.style.color = 'var(--rk-sum-green)';
            descCOP.textContent = 'Maksymalna wydajność sprężarki';
            descCOP.style.color = 'var(--rk-sum-green)';
            cardCOP.style.borderColor = 'var(--rk-sum-green)';

            valStan.textContent = 'Bezpieczny';
            valStan.style.color = 'var(--rk-sum-green)';
            descStan.textContent = 'Niskie rachunki, chroniona wylewka';
            cardStan.style.borderColor = 'var(--rk-sum-border)';
            slider.style.background = 'var(--rk-sum-blue)';
        }
        
        if (temp > 35) {
            if (temp <= 40) {
                valCOP.textContent = '3.8';
                valCOP.style.color = 'var(--rk-sum-gold)';
                descCOP.textContent = 'Zauważalny spadek efektywności';
                descCOP.style.color = 'var(--rk-sum-gold)';
                cardCOP.style.borderColor = 'var(--rk-sum-gold)';

                valStan.textContent = 'Uwaga na koszty';
                valStan.style.color = 'var(--rk-sum-gold)';
                descStan.textContent = 'Rachunki rosną, sprężarka taktuje';
                cardStan.style.borderColor = 'var(--rk-sum-border)';
                slider.style.background = 'var(--rk-sum-gold)';
            }
        }
        
        if (temp > 40) {
            valCOP.textContent = '3.1';
            valCOP.style.color = 'var(--rk-sum-red)';
            descCOP.textContent = 'Krytycznie niskie SCOP';
            descCOP.style.color = 'var(--rk-sum-red)';
            cardCOP.style.borderColor = 'var(--rk-sum-red)';

            valStan.textContent = 'Niebezpieczeństwo';
            valStan.style.color = 'var(--rk-sum-red)';
            descStan.textContent = 'Ryzyko pęknięć wylewki i ogromne rachunki';
            cardStan.style.borderColor = 'var(--rk-sum-red)';
            slider.style.background = 'var(--rk-sum-red)';
        }
    }

    slider.addEventListener('input', function() {
        var temp = parseInt(this.value, 10);
        updateSimulation(temp);
    });

    // Inicjalizacja bazowa
    updateSimulation(35);
});
</script>



<style>
  .po-pref-container {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    background: #ffffff;
    border: 1px solid #dadce0;
    border-radius: 12px;
    padding: 24px;
    margin: 30px 0;
    box-shadow: 0 2px 6px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
    gap: 20px;
    transition: box-shadow 0.3s ease;
  }
  .po-pref-container:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  }
  .po-pref-header {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .po-pref-container h2 {
    margin: 0;
    font-size: 1.4rem;
    color: #202124;
    font-weight: 600;
  }
  .po-pref-container h3 {
    margin: 0;
    font-size: 1.1rem;
    color: #5f6368;
    font-weight: 400;
  }
  .po-pref-body {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #f8f9fa;
    padding: 16px 20px;
    border-radius: 8px;
    border: 1px solid #e8eaed;
  }
  .po-pref-info {
    display: flex;
    align-items: center;
    gap: 16px;
  }
  .po-pref-icon svg {
    width: 40px;
    height: 40px;
  }
  .po-pref-text p {
    margin: 0;
    color: #3c4043;
    font-size: 0.95rem;
    line-height: 1.4;
  }
  .po-pref-text strong {
    color: #1a73e8;
  }
  
  /* Interaktywny przełącznik */
  .po-toggle-wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
  }
  .po-toggle {
    position: relative;
    width: 52px;
    height: 28px;
    background-color: #dadce0;
    border-radius: 34px;
    cursor: pointer;
    transition: background-color 0.3s;
  }
  .po-toggle::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 24px;
    height: 24px;
    background-color: white;
    border-radius: 50%;
    transition: transform 0.3s;
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
  }
  .po-toggle.active {
    background-color: #1a73e8;
  }
  .po-toggle.active::after {
    transform: translateX(24px);
  }
  
  /* Przycisk akcji (ukryty domyślnie, pojawia się po interakcji) */
  .po-action-btn {
    display: none;
    text-decoration: none;
    background: #1a73e8;
    color: #ffffff;
    padding: 12px 24px;
    border-radius: 24px;
    font-weight: 500;
    text-align: center;
    font-size: 1rem;
    transition: background 0.2s;
    margin-top: 10px;
  }
  .po-action-btn:hover {
    background: #1557b0;
    color: #ffffff;
  }
  .po-action-btn.visible {
    display: block;
    animation: fadeIn 0.4s ease;
  }

  @keyframes fadeIn {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
  }

  /* RWD - Mobile */
  @media (max-width: 768px) {
    .po-pref-body {
      flex-direction: column;
      align-items: flex-start;
      gap: 20px;
    }
    .po-toggle-wrapper {
      width: 100%;
      justify-content: space-between;
      padding-top: 16px;
      border-top: 1px solid #dadce0;
    }
    .po-action-btn {
      width: 100%;
      box-sizing: border-box;
    }
  }
</style>

<div class="po-pref-container">
  <div class="po-pref-header">
    <h2>Wspieraj Projekt-Ogrzewania.pl</h2>
    <h3>Zostań z nami na dłużej w wynikach Google</h3>
  </div>
  
  <div class="po-pref-body">
    <div class="po-pref-info">
      <div class="po-pref-icon">
        <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"></path>
          <path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"></path>
          <path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"></path>
          <path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"></path>
        </svg>
      </div>
      <div class="po-pref-text">
        <p>Ponad 1000 poradników o ogrzewaniu i budowie domu.<br>
        <strong>Dodaj nas do ulubionych źródeł</strong>, aby łatwiej znajdować nasze rozwiązania techniczne.</p>
      </div>
    </div>
    
    <div class="po-toggle-wrapper">
      <span style="font-size: 0.9rem; color: #5f6368; font-weight: 500;">Aktywuj źródło</span>
      <div class="po-toggle" id="googleSourceToggle" aria-label="Włącz preferowane źródło"></div>
    </div>
  </div>
  
  <a href="https://google.com/preferences/source?q=https://projekt-ogrzewania.pl" target="_blank" rel="noopener noreferrer" class="po-action-btn" id="googleSourceLink">
    Przejdź do Google i potwierdź
  </a>
</div>

<script>
  document.addEventListener('DOMContentLoaded', function() {
    var toggleBtn = document.getElementById('googleSourceToggle');
    var actionLink = document.getElementById('googleSourceLink');
    
    toggleBtn.addEventListener('click', function() {
      if (toggleBtn.classList.contains('active') === false) {
        toggleBtn.classList.add('active');
        actionLink.classList.add('visible');
      } else {
        toggleBtn.classList.remove('active');
        actionLink.classList.remove('visible');
      }
    });
  });
</script>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#article-wsparcie",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/"
      },
      "headline": "Wspieraj rzetelną inżynierię HVAC: Projekt-Ogrzewania.pl w Twoich źródłach",
      "description": "Dodaj nasze inżynierskie poradniki o pompach ciepła i optymalizacji ogrzewania podłogowego (parametr 35°C) do preferowanych wyników wyszukiwania Google.",
      "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://x.com/Projekt_HVAC",
          "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-07-11",
      "dateModified": "2026-07-11"
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#dataset-wsparcie",
      "name": "Preferencje Eksperckich Źródeł HVAC - Baza Wiedzy Niskotemperaturowej",
      "description": "Zbiór danych i interaktywnych punktów styku pozwalających na ocenę preferencji czytelników dla twardych, inżynierskich treści o pompach ciepła.",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": {
        "@type": "Person",
        "name": "Robert Kucharski"
      },
      "keywords": [
        "projektowanie instalacji niskotemperaturowych",
        "zaufane źródła google hvac",
        "ekspert ogrzewania podłogowego",
        "optymalna temperatura pompy ciepła",
        "rzetelne poradniki budowlane"
      ],
      "measurementTechnique": "Zliczanie interakcji z widgetem UI typu toggle powiązanych z merytorycznymi artykułami o optymalizacji OZC i pomp ciepła.",
      "mainEntity": "Optymalizacja zaangażowania użytkownika szukającego rzetelnej wiedzy o temperaturze zasilania 35°C poprzez widget preferencji Google."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/#webapplication-wsparcie",
      "name": "Widget Preferencji Źródeł OZC i HVAC",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "All",
      "description": "Aplikacja webowa w formie widgetu symulującego przełącznik, integrująca ustawienia preferowanych źródeł Google z eksperckim portalem inżynieryjnym.",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">Niska temperatura zasilania pompy ciepła – dlaczego 35 stopni to ideał dla podłogówki?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Czy ogrzewanie podłogowe można podłączyć do grzejników?</title>
		<link>https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 04 Apr 2026 06:13:10 +0000</pubDate>
				<category><![CDATA[Błędy instalacyjne]]></category>
		<category><![CDATA[Błędy wykonawcze]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Modernizacja budynków]]></category>
		<category><![CDATA[Modernizacja domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[błędy instalatorów]]></category>
		<category><![CDATA[grupa pompowa]]></category>
		<category><![CDATA[instalacja mieszana]]></category>
		<category><![CDATA[modernizacja ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opór cieplny]]></category>
		<category><![CDATA[podłogówka i grzejniki]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[sprzęgło hydrauliczne]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<category><![CDATA[zapotrzebowanie na ciepło]]></category>
		<category><![CDATA[zawór mieszający]]></category>
		<category><![CDATA[zawór trójdrogowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4089</guid>

					<description><![CDATA[<p>Wielu inwestorów planujących modernizację starego domu lub budowę nowego, w którym część pomieszczeń ma być ogrzewana tradycyjnie, zastanawia się, czy ogrzewanie podłogowe można podłączyć do grzejników. Rozwiązanie to jest jak najbardziej wykonalne, jednak wymaga ogromnej precyzji, odpowiedniego projektu oraz zastosowania układów mieszających. Bezpośrednie wpięcie podłogówki w obieg grzejnikowy to najszybsza droga do zniszczenia posadzki i przegrzania pomieszczeń. Dowiedz się, jak krok po kroku zaprojektować bezpieczną i wydajną instalację mieszaną, unikając najdroższych błędów montażowych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">Czy ogrzewanie podłogowe można podłączyć do grzejników?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph"><strong>Czy ogrzewanie podłogowe można podłączyć do grzejników?</strong> To pytanie zadaje sobie coraz więcej inwestorów modernizujących stare instalacje lub projektujących domy z myślą o komforcie i oszczędności energii. Odpowiedź brzmi: <strong>tak, ale wyłącznie pod ścisłymi warunkami i przy zastosowaniu specjalistycznych komponentów</strong>. Bezpośrednie połączenie tych dwóch systemów, bez odpowiednich urządzeń pośredniczących, prowadzi do przegrzewania podłóg, uszkodzenia wylewki, a nawet awarii kotła. W tym artykule przeprowadzę Cię przez wszystkie zasady, wymagania i obliczenia niezbędne do zaprojektowania sprawnej instalacji mieszanej od różnic temperaturowych, przez dobór zaworów mieszających, po praktyczne wzory i przykłady liczbowe.</p>



<h2 class="wp-block-heading">Dlaczego bezpośrednie podłączenie ogrzewania podłogowego do grzejników jest niemożliwe?</h2>



<p class="wp-block-paragraph">Aby zrozumieć problem, musisz spojrzeć na podstawowe parametry pracy obu systemów. <strong>Grzejniki</strong> (standardowe płytowe lub członowe) zaprojektowano do pracy z wysoką temperaturą zasilania najczęściej <strong>75°C / 65°C / 20°C</strong> (zasilanie / powrót / pomieszczenie) lub w nowszych instalacjach niskotemperaturowych <strong>55/45/20</strong>. Z kolei <strong><a href="https://projekt-ogrzewania.pl" type="link" id="https://projekt-ogrzewania.pl">ogrzewanie podłogowe</a></strong> wymaga wody o temperaturze <strong>35-45°C</strong> na zasilaniu i nie więcej niż <strong>30-35°C</strong> na powrocie, aby temperatura powierzchni podłogi nie przekroczyła 27-29°C (dla pomieszczeń mieszkalnych).</p>



<p class="wp-block-paragraph">Jeśli puścisz wodę o temperaturze 60°C przez pętle podłogówki, efekt będzie natychmiastowy: podłoga nagrzeje się do ponad 40°C, co nie tylko dyskwalifikuje komfort użytkowania, ale również powoduje:</p>



<ul class="wp-block-list">
<li><strong>Spękanie jastrychu</strong>&nbsp;(różnice rozszerzalności termicznej)</li>



<li><strong>Uszkodzenie wykładzin</strong>&nbsp;(panele, deski – odkształcenia, kleje tracą właściwości)</li>



<li><strong>Nadmierne straty ciepła w dół</strong>&nbsp;(jeśli izolacja nie jest idealna)</li>



<li><strong>Przegrzewanie pomieszczeń</strong>&nbsp;– wysoka bezwładność podłogówki sprawia, że nawet po zamknięciu zaworu temperatura rośnie jeszcze przez kilka godzin</li>
</ul>



<p class="wp-block-paragraph">Z drugiej strony, jeśli obniżysz temperaturę całej instalacji do 40°C, aby zasilić podłogówkę, <strong>grzejniki przestaną efektywnie grzać</strong> ich moc spadnie nawet o 70-80%. Przykładowo, grzejnik o mocy 2000 W przy parametrach 75/65/20, po obniżeniu zasilania do 45°C, osiągnie zaledwie około 500-600 W. Dom będzie zimny.</p>



<p class="wp-block-paragraph">Stąd jedyne rozsądne rozwiązanie to <strong>instalacja mieszana</strong>, w której <a href="https://projekt-ogrzewania.pl/kociol-gazowy/" type="link" id="https://projekt-ogrzewania.pl/kociol-gazowy/">kocioł</a> (lub <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" type="link" id="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a>) wytwarza wodę o wysokiej temperaturze dla grzejników, a dla ogrzewania podłogowego montuje się <strong>układ mieszający</strong>, który obniża temperaturę i stabilizuje przepływ.</p>



<h2 class="wp-block-heading">Kluczowe elementy instalacji mieszanej – co musi znaleźć się w projekcie?</h2>



<p class="wp-block-paragraph">Zanim przejdziemy do obliczeń, omówmy fizyczne komponenty, bez których&nbsp;<strong>instalacja mieszana</strong>&nbsp;nie ma prawa działać poprawnie. Każdy z nich pełni określoną funkcję – pominięcie jednego to proszenie się o awarię.</p>



<h3 class="wp-block-heading"><a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" type="link" id="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">Zawór mieszający</a> trójdrogowy i czterodrogowy – różnice i zastosowanie</h3>



<p class="wp-block-paragraph">To serce układu. Zawór miesza gorącą wodę z powrotu z podłogówki (schłodzoną) tak, aby uzyskać zadaną, niską temperaturę zasilania pętli.</p>



<ul class="wp-block-list">
<li><strong>Zawór trójdrogowy</strong>&nbsp;(popularniejszy w domowych instalacjach) ma jeden dopływ gorącej wody z kotła, drugi dopływ schłodzonej wody z powrotu podłogówki i jeden wylot na zasilanie pętli. Siłownik (termostatyczny lub elektryczny) reguluje proporcje mieszania.<br><em>Przykład</em>: Głowica termostatyczna ustawiona na 40°C. Gdy temperatura na zasilaniu podłogówki wzrośnie powyżej 40°C, zawór ogranicza dopływ gorącej wody z kotła, a zwiększa dopływ chłodniejszej z powrotu.</li>



<li><strong>Zawór czterodrogowy</strong>&nbsp;– bardziej skomplikowany, ale daje większą stabilność. Posiada dwa wejścia (gorąca z kotła, chłodna z powrotu) i dwa wyjścia (na zasilanie pętli i na powrót do kotła). Umożliwia również recyrkulację części wody wewnątrz obiegu podłogowego, co jest korzystne przy dużych powierzchniach.</li>
</ul>



<p class="wp-block-paragraph"><strong>Ważne</strong>: Zawór musi być dobrany przepływowo. Jego&nbsp;<strong>współczynnik Kv</strong>&nbsp;(przepływ w m³/h przy spadku ciśnienia 1 bara) powinien być o 10-20% wyższy niż maksymalny przepływ w obiegu podłogowym. Dla typowego domu o powierzchni 100 m², gdzie przepływ wynosi około 1,2-1,8 m³/h, dobierz zawór o Kv = 2,0-2,5.</p>



<h3 class="wp-block-heading">Pompa obiegowa i rozdział hydrauliczny</h3>



<p class="wp-block-paragraph">W instalacji mieszanej potrzebujesz&nbsp;<strong>dwóch pomp</strong>&nbsp;(chyba że kocioł ma własną, a układ podłogowy wyposażysz w dodatkową):</p>



<ul class="wp-block-list">
<li><strong>Pompa kotłowa</strong>&nbsp;– zapewnia cyrkulację przez grzejniki i dostarcza gorącą wodę do zaworu mieszającego.</li>



<li><strong>Pompa obiegowa podłogówki</strong>&nbsp;– zamontowana za zaworem mieszającym, tłoczy wodę o obniżonej temperaturze przez rozdzielacz i pętle.</li>
</ul>



<p class="wp-block-paragraph"><strong>Kluczowe parametry pompy podłogówki</strong>: Wydajność (Q) i wysokość podnoszenia (H). Wylicza się je z oporów przepływu w najdłuższej pętli. Przykład: dla pętli z rury 16&#215;2 mm o długości 90 m, przy różnicy temperatur 10°C (zasilanie 40°C, powrót 30°C) i mocy pętli 1200 W, przepływ wynosi:</p>



<style>
/* Kontener zapobiegający rozjeżdżaniu się strony na małych ekranach */
.math-eq-container {
    overflow-x: auto;
    padding: 20px 0;
    margin: 20px 0;
    text-align: center;
    background: #f8fafc; /* Delikatne tło, żeby wzór się wyróżniał (opcjonalne) */
    border-radius: 12px;
}

/* Główne style dla równania */
.math-eq {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: "Times New Roman", Times, serif; /* Klasyczna czcionka matematyczna */
    font-size: 20px;
    color: #0f172a;
    white-space: nowrap;
}

/* Zmienne (litery) w matematyce zawsze zapisujemy kursywą */
.math-eq i {
    font-style: italic;
}

/* Style dla ułamków */
.math-eq .frac {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    margin: 0 6px;
    vertical-align: middle;
}

/* Licznik ułamka (kreska na dole) */
.math-eq .num {
    border-bottom: 1px solid #0f172a;
    padding: 0 4px;
    line-height: 1.2;
}

/* Mianownik ułamka */
.math-eq .den {
    padding: 0 4px;
    line-height: 1.2;
}

/* Znaki równości, przybliżenia i mnożenia */
.math-eq .sign {
    margin: 0 6px;
}
</style>

<div class="math-eq-container">
    <div class="math-eq">
        <i>V&#7746;</i> 
        
        <span class="sign">=</span>
        
        <div class="frac">
            <div class="num"><i>P</i></div>
            <div class="den"><i>c<sub>p</sub></i> &middot; &Delta;<i>T</i> &middot; <i>&rho;</i></div>
        </div>
        
        <span class="sign">=</span>
        
        <div class="frac">
            <div class="num">1200</div>
            <div class="den">4186 &middot; 10 &middot; 1000</div>
        </div>
        
        <span class="sign">&approx;</span>
        <span>0,000287 m<sup>3</sup>/s</span>
        
        <span class="sign">=</span>
        <span>0,287 l/s</span>
        
        <span class="sign">&approx;</span>
        <span>1,03 m<sup>3</sup>/h</span>
    </div>
</div>



<p class="wp-block-paragraph">Do tego dodaj opory liniowe (dla rury PE-RT 16 mm ok. 150 Pa/m) i miejscowe (rozdzielacz, zawory). Łącznie strata ciśnienia wyniesie około 25-35 kPa (2,5-3,5 m słupa wody). Dobierasz pompę np.&nbsp;<strong> 25-40</strong>&nbsp;(dla małych domów) lub&nbsp;<strong>25-60</strong>&nbsp;(dla większych instalacji).</p>



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

.premium-scenarios {
    max-width: 1150px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
}

.scenarios-title {
    text-align: center;
    margin-bottom: 30px;
}

.scenarios-title h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: var(--primary);
}

.scenarios-title p {
    color: #64748b;
    margin: 0 auto 5px auto;
    font-size: 16px;
    line-height: 1.6;
    max-width: 800px;
}

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

.scenario-card {
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid #f1f5f9;
    padding: 30px;
    display: flex;
    flex-direction: column;
    transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.scenario-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.12);
}

.card-header {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 25px;
    padding-bottom: 15px;
    border-bottom: 2px dashed #e2e8f0;
}

.icon-box {
    width: 48px;
    height: 48px;
    background: #eff6ff;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
    flex-shrink: 0;
}

.header-text h4 {
    margin: 0;
    font-size: 16px;
    font-weight: 800;
}

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

.param-list {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
    flex-grow: 0; /* Zmienione na 0, aby to box z wynikiem wypelnial miejsce */
}

.param-list li {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    margin-bottom: 10px;
    color: #475569;
}

.param-list li strong {
    color: var(--primary);
    text-align: right;
    max-width: 60%;
}

.result-box {
    background: var(--bg-light);
    padding: 20px;
    border-radius: 16px;
    text-align: center;
    margin-bottom: 20px;
    border-top: 4px solid var(--accent);
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    flex-grow: 1; /* Kluczowa zmiana wymuszajaca równy rozmiar */
}

.result-box.success { border-color: var(--success); }
.result-box.warning { border-color: var(--warning); background: #fff7ed; }

.r-thick {
    display: block;
    font-size: 18px;
    font-weight: 900;
    color: var(--primary);
    margin-bottom: 8px;
    line-height: 1.2;
}

.r-value {
    display: inline-block;
    background: #ffffff;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 700;
    box-shadow: 0 2px 5px rgba(0,0,0,0.05);
}

.result-box.success .r-value { color: var(--success); }
.result-box.warning .r-value { color: var(--warning); }

.justification {
    font-size: 12px;
    line-height: 1.6;
    color: #64748b;
    margin: 0;
    background: #f8fafc;
    padding: 15px;
    border-radius: 12px;
    border-left: 3px solid #cbd5e1;
    margin-top: auto; /* Dopycha ten element w dół na równo */
}

@media (max-width: 900px) {
    .scenario-grid {
        grid-template-columns: 1fr;
    }
}
</style>

<div class="premium-scenarios" id="scenarios-app">
    <div class="scenarios-title">
        <h2>Przykłady i wyliczenia w praktyce.</h2>
        <p>Zobacz 3 typowe scenariusze dla instalacji mieszanej krok po kroku.</p>
        <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; font-size: 16px; text-decoration: none;">Przykłady opracowane przez ekspertów Projekt-Ogrzewania.pl.</a>
    </div>

    <div class="scenario-grid">
        <div class="scenario-card">
            <div class="card-header">
                <div class="icon-box">📊</div>
                <div class="header-text">
                    <span>Krok 1</span>
                    <h4>Zapotrzebowanie i przepływ</h4>
                </div>
            </div>
            
            <ul class="param-list">
                <li>Straty ciepła: <strong>65 W/m²</strong></li>
                <li>Pow. podłogówki: <strong>80 m²</strong></li>
                <li>Zasilanie/Powrót: <strong>40°C / 30°C (ΔT=10°C)</strong></li>
                <li>Rozstaw rur: <strong>15 cm (standard)</strong></li>
            </ul>

            <div class="result-box success">
                <span class="r-thick">Moc: 5200 W</span>
                <span style="font-size: 11px; color:#64748b; display:block; margin-bottom: 8px;">(Przepływ całego rozdzielacza)</span>
                <div class="r-value">V = 446 l/h (0,446 m³/h)</div>
            </div>

            <p class="justification"><strong>Uzasadnienie:</strong> Dzieląc ten wynik na 5 pętli (po ok. 16 m² na pętlę), każda z nich będzie miała moc około 1040 W oraz wymagała przepływu rzędu 90 l/h (0,025 l/s).</p>
        </div>

        <div class="scenario-card">
            <div class="card-header">
                <div class="icon-box">🎛️</div>
                <div class="header-text">
                    <span>Krok 2</span>
                    <h4>Bilans zaworu trójdrogowego</h4>
                </div>
            </div>
            
            <ul class="param-list">
                <li>Woda z kotła (gorąca): <strong>70°C</strong></li>
                <li>Woda z powrotu (chłodna): <strong>30°C</strong></li>
                <li>Zasilanie pętli (cel): <strong>40°C</strong></li>
                <li>Równanie: <strong>x&middot;70 + (1-x)&middot;30 = 40</strong></li>
            </ul>

            <div class="result-box success">
                <span class="r-thick">Otwarcie zaworu</span>
                <span style="font-size: 11px; color:#64748b; display:block; margin-bottom: 8px;">(Udział wody kotłowej)</span>
                <div class="r-value">25% (x = 0,25)</div>
            </div>

            <p class="justification"><strong>Uzasadnienie:</strong> Zawór miesza zaledwie 25% gorącej wody z kotła z 75% schłodzonej wody z powrotu podłogówki. Dzięki temu system pracuje stabilnie i w komfortowym zakresie regulacji.</p>
        </div>

        <div class="scenario-card">
            <div class="card-header">
                <div class="icon-box">♨️</div>
                <div class="header-text">
                    <span>Krok 3</span>
                    <h4>Moc grzejników (piętro)</h4>
                </div>
            </div>
            
            <ul class="param-list">
                <li>Pow. grzejników: <strong>70 m²</strong></li>
                <li>Straty ciepła: <strong>55 W/m² (wymaga 3850 W)</strong></li>
                <li>Temp. instalacji: <strong>70/50°C</strong></li>
                <li>Moc nominalna grzejników: <strong>7000 W</strong></li>
            </ul>

            <div class="result-box warning">
                <span class="r-thick">Rzeczywista moc</span>
                <span style="font-size: 11px; color:#64748b; display:block; margin-bottom: 8px;">(Spadek o 20% przy 70/50°C)</span>
                <div class="r-value">Moc: ~ 5600 W</div>
            </div>

            <p class="justification"><strong>Uzasadnienie:</strong> Stare grzejniki były dobierane pod parametry 75/65°C. Po obniżeniu zasilania na kotle do 70°C ich moc spada, ale 5600 W wciąż z zapasem pokrywa zapotrzebowanie piętra (3850 W).</p>
        </div>
    </div>
</div>

<script>
// ZABEZPIECZENIE DOMENOWE (Domain Lock) - Wersja bezpieczna dla WordPressa
document.addEventListener('DOMContentLoaded', function() {
    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('scenarios-app');
        if (appContainer) {
            var warningHtml = [
                '<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: 20px;">',
                '<span style="font-size: 48px; margin-bottom: 20px;">🔒</span>',
                '<h3 style="margin-top:0; font-size: 24px;">Treść chroniona prawem autorskim</h3>',
                '<p style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5;">Te przykłady obliczeniowe są własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i zostały wklejone na tę stronę bez zgody autora.</p>',
                '<a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a>',
                '</div>'
            ];
            appContainer.innerHTML = warningHtml.join('');
        }
    }
});
</script>



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

.article-product-banner {
    max-width: 900px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(37, 99, 235, 0.15);
    border: 1px solid var(--border-color);
    border-top: 5px solid var(--accent);
    display: flex;
    overflow: hidden;
    color: var(--primary);
    transition: transform 0.3s ease;
}

.article-product-banner:hover {
    transform: translateY(-3px);
    box-shadow: 0 20px 40px -10px rgba(37, 99, 235, 0.2);
}

.apb-image-col {
    flex: 0 0 40%;
    background: var(--bg-light);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 30px;
    position: relative;
}

.apb-image-col img {
    max-width: 100%;
    height: auto;
    border-radius: 12px;
    mix-blend-mode: multiply; /* Usuwa białe tło ze zdjęcia, jeśli jest */
}

.apb-content-col {
    flex: 1;
    padding: 35px 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

.apb-title {
    margin: 0 0 12px 0;
    font-size: 24px;
    font-weight: 900;
    color: var(--primary);
    line-height: 1.3;
}

.apb-desc {
    margin: 0 0 20px 0;
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
}

.apb-features {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
}

.apb-features li {
    position: relative;
    padding-left: 28px;
    margin-bottom: 10px;
    font-size: 14px;
    color: #334155;
    font-weight: 600;
}

.apb-features li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0;
    color: var(--success);
    font-size: 16px;
    font-weight: 900;
}

.apb-btn-wrapper {
    margin-top: auto;
}

.apb-btn {
    display: inline-block;
    background: var(--accent);
    color: #ffffff;
    text-decoration: none;
    padding: 14px 28px;
    border-radius: 10px;
    font-weight: 800;
    font-size: 15px;
    transition: 0.3s;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.2);
}

.apb-btn:hover {
    background: #1d4ed8;
    color: #ffffff;
    text-decoration: none;
    box-shadow: 0 6px 15px rgba(37, 99, 235, 0.3);
}

@media (max-width: 768px) {
    .article-product-banner {
        flex-direction: column;
    }
    .apb-image-col {
        padding: 20px;
        border-bottom: 1px solid var(--border-color);
    }
    .apb-content-col {
        padding: 25px 20px;
    }
    .apb-title {
        font-size: 20px;
    }
    .apb-btn {
        display: block;
        text-align: center;
    }
}
</style>

<div class="article-product-banner">
    <div class="apb-image-col">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Uklad-mieszajacy-KISAN®-z-pompa-elektroniczna-WILO.webp" alt="Układ mieszający KISAN z pompą WILO" loading="lazy">
    </div>
    <div class="apb-content-col">
        <div class="apb-badge">Idealne do instalacji mieszanej</div>
        <h3 class="apb-title">Układ mieszający KISAN® z pompą WILO</h3>
        <div class="apb-desc">Zabezpiecz swoją podłogówkę przed zbyt wysoką temperaturą z kotła. Gotowy do montażu moduł, który płynnie obniża i stabilizuje temperaturę.</div>
        
        <ul class="apb-features">
            <li>Termostatyczny zawór trójdrogowy w zestawie</li>
            <li>Energooszczędna pompa elektroniczna WILO</li>
            <li>Szybki montaż dzięki półśrubunkom G 1&#8243;</li>
        </ul>
        
        <div class="apb-btn-wrapper">
            <a href="https://projekt-ogrzewania.pl/produkt/uklad-mieszajacy-kisan-z-pompa-elektroniczna-wilo/" class="apb-btn" target="_blank">Sprawdź cenę w sklepie →</a>
        </div>
    </div>
</div>



<h2 class="wp-block-heading">Projekt ogrzewania podłogowego w systemie mieszanym – na co zwrócić uwagę?</h2>



<p class="wp-block-paragraph"><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 ogrzewania podłogowego</a> w instalacji mieszanej to coś więcej niż tylko rozrysowanie pętli. Musisz uwzględnić współpracę dwóch obiegów o różnych parametrach. Oto kluczowe zasady:</p>



<ol start="1" class="wp-block-list">
<li><strong>Oddzielenie hydrauliczne</strong>&nbsp;– jeśli kocioł ma małą pojemność wodną (np. nowe kotły gazowe z dużym oporem wymiennika), warto zastosować&nbsp;<strong>sprzęgło hydrauliczne</strong>&nbsp;lub&nbsp;<strong>bufor</strong>. Bez tego pompa podłogówki może “zabierać” przepływ grzejnikom, powodując ich niedogrzanie. Sprzęgło wyrównuje ciśnienia.</li>



<li><strong>Sterowanie pogodowe</strong>&nbsp;– dla instalacji mieszanej idealnym rozwiązaniem jest regulator z dwoma czujnikami temperatury zewnętrznej i dwoma krzywymi grzania: jedną dla grzejników (wyższe nachylenie), drugą dla podłogówki (płaska, niska). Dzięki temu przy mrozach -20°C grzejniki dostaną 75°C, a podłogówka tylko 45°C.</li>



<li><strong>Zabezpieczenie przed przegrzaniem</strong>&nbsp;– każdy rozdzielacz podłogówki musi mieć&nbsp;<strong>zawór termostatyczny</strong>&nbsp;lub siłownik elektryczny z czujnikiem zasilania. Jeśli temperatura wzrośnie powyżej zadanej, zawór odcina dopływ z kotła. To obowiązek wynikający z normy PN-EN 1264.</li>



<li><strong>Dokumentacja techniczna</strong>&nbsp;– projekt instalacji mieszanej powinien zawierać:
<ul class="wp-block-list">
<li>Obliczenia strat ciepła dla każdego pomieszczenia osobno (dla podłogówki i dla grzejników).</li>



<li>Dobór rozstawu rur dla podłogówki (co 10-15-20 cm w zależności od zapotrzebowania).</li>



<li>Schemat ideowy układu mieszającego z zaznaczeniem średnic rur, zaworów i pomp.</li>



<li>Charakterystyki przepływowo-oporowe dla każdej pętli – konieczne do późniejszej regulacji.</li>
</ul>
</li>
</ol>



<p class="wp-block-paragraph">Pamiętaj:&nbsp;<strong>projekt ogrzewania podłogowego w systemie mieszanym</strong>&nbsp;wykonywany przez niedoświadczonego instalatora to ryzyko, że grzejniki będą grzały, a podłoga pozostanie zimna (lub odwrotnie). Zleć to specjaliście lub sam dokładnie przelicz, korzystając z podanych wzorów.</p>



<h2 class="wp-block-heading">Wykres charakterystyki pracy zaworu mieszającego – interpretacja</h2>



<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

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

.premium-chart-box {
    max-width: 900px;
    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.1);
    border: 1px solid #f1f5f9;
    overflow: hidden;
    color: var(--primary);
}

.chart-header {
    padding: 30px 40px 20px 40px;
    border-bottom: 1px solid #f1f5f9;
}

.chart-header h3 {
    margin: 0 0 8px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--primary);
}

.chart-header-sub {
    margin: 0;
    font-size: 14px;
    color: #64748b;
    font-weight: 500;
}

.chart-canvas-wrapper {
    padding: 30px 40px;
    position: relative;
    height: 400px;
    width: 100%;
}

.chart-footer {
    padding: 25px 40px;
    background: var(--bg-light);
    border-top: 1px solid #f1f5f9;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.chart-icon {
    font-size: 24px;
    line-height: 1;
}

.chart-conclusion {
    margin: 0;
    font-size: 14px;
    color: #475569;
    line-height: 1.6;
}

.chart-conclusion strong {
    color: var(--danger);
}

@media (max-width: 600px) {
    .chart-header, .chart-canvas-wrapper, .chart-footer {
        padding: 20px;
    }
    .chart-canvas-wrapper {
        height: 300px;
    }
}
</style>

<div class="premium-chart-box" id="chart-app-container">
    <div class="chart-header">
        <h3>Charakterystyka pracy zaworu mieszającego</h3>
        <div class="chart-header-sub">Zależność temperatury zasilania podłogówki od stopnia otwarcia zaworu (kocioł 70°C, powrót 30°C) <br><a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Wykres opracowany przez Projekt-Ogrzewania.pl</a></div>
    </div>
    <div class="chart-canvas-wrapper">
        <canvas id="valveChart"></canvas>
    </div>
    <div class="chart-footer">
        <div class="chart-icon">⚠️</div>
        <div class="chart-conclusion"><strong>Praktyczna konsekwencja:</strong> Krzywa nie jest liniowa! <strong>Nie ustawiaj zaworu w połowie skali (50%)</strong>, bo tam jest najbardziej wrażliwy na wahania temperatur. Najlepiej i najstabilniej układ pracuje w przedziale otwarcia 20-40%.</div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // ZABEZPIECZENIE DOMENOWE (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 container = document.getElementById('chart-app-container');
        if (container) {
            container.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;"><span style="font-size: 48px; margin-bottom: 20px;">🔒</span><div style="margin-top:0; font-size: 24px; font-weight:bold;">Wykres chroniony prawem autorskim</div><div style="font-size: 16px; max-width: 500px; color: #7f1d1d; line-height: 1.5; margin-top: 15px;">Ten interaktywny wykres jest własnością serwisu <strong>Projekt-Ogrzewania.pl</strong> i został skopiowany na tę stronę nielegalnie.</div><a href="https://projekt-ogrzewania.pl/" style="margin-top: 25px; padding: 14px 28px; background: #dc2626; color: white; text-decoration: none; border-radius: 12px; font-weight: 800; transition: 0.3s;">ZOBACZ ORYGINALNY ARTYKUŁ</a></div>';
        }
        return; 
    }

    var canvasEl = document.getElementById('valveChart');
    if(!canvasEl) return; 
    
    var ctx = canvasEl.getContext('2d');
    
    var gradientFill = ctx.createLinearGradient(0, 0, 0, 400);
    gradientFill.addColorStop(0, 'rgba(37, 99, 235, 0.2)');
    gradientFill.addColorStop(1, 'rgba(255, 255, 255, 0)');

    var pointBackgroundColors = [];
    var pointBorderColors = [];
    var pointRadii = [];
    
    var valveOpenings = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100];
    var temperatures = [30, 31, 32, 35, 39, 44, 48, 50, 55, 62, 70];

    for (var i = 0; i < valveOpenings.length; i++) {
        var temp = temperatures[i];
        if (temp <= 42) {
            pointBackgroundColors.push('#ffffff');
            pointBorderColors.push('#2563eb'); 
            pointRadii.push(6);
        } else {
            pointBackgroundColors.push('#ffffff');
            pointBorderColors.push('#ea580c'); 
            pointRadii.push(8);
        }
    }

    new Chart(ctx, {
        type: 'line',
        data: {
            labels: ['0%', '10%', '20%', '30%', '40%', '50%', '60%', '70%', '80%', '90%', '100%'],
            datasets: [{
                label: 'Temperatura zasilania podłogówki (°C)',
                data: temperatures,
                borderColor: '#2563eb', 
                borderWidth: 3,
                backgroundColor: gradientFill,
                fill: true,
                tension: 0.4, 
                pointBackgroundColor: pointBackgroundColors,
                pointBorderColor: pointBorderColors,
                pointBorderWidth: 3,
                pointRadius: pointRadii,
                pointHoverRadius: 9
            }]
        },
        options: {
            responsive: true,
            maintainAspectRatio: false,
            plugins: {
                legend: { display: false },
                tooltip: {
                    backgroundColor: '#0f172a',
                    titleFont: { family: 'Inter', size: 14, weight: 'bold' },
                    bodyFont: { family: 'Inter', size: 14 },
                    padding: 12,
                    displayColors: false,
                    callbacks: {
                        title: function(context) { return 'Otwarcie zaworu: ' + context[0].label; },
                        label: function(context) { return 'Temperatura: ' + context.parsed.y + ' °C'; }
                    }
                }
            },
            scales: {
                x: {
                    grid: { display: false },
                    ticks: { font: { family: 'Inter', size: 13, weight: '600' }, color: '#64748b' },
                    title: {
                        display: true, text: 'Stopień otwarcia zaworu (%)', font: { family: 'Inter', size: 14, weight: 'bold' }, color: '#0f172a', padding: {top: 10}
                    }
                },
                y: {
                    beginAtZero: false, min: 25, max: 75,
                    grid: { color: '#f1f5f9', drawBorder: false },
                    ticks: {
                        stepSize: 5, font: { family: 'Inter', size: 13 }, color: '#64748b',
                        callback: function(value) { return value + ' °C'; }
                    },
                    title: {
                        display: true, text: 'Temperatura (°C)', font: { family: 'Inter', size: 14, weight: 'bold' }, color: '#0f172a', padding: {bottom: 10}
                    }
                }
            }
        }
    });
});
</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-btn {
    padding: 14px 8px;
    border: 2px solid #cbd5e1;
    border-radius: 12px;
    cursor: pointer;
    text-align: center;
    font-weight: 700;
    font-size: 12px;
    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;
    font-size: 10px;
    font-weight: 400;
}

.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(--success); transition: 0.3s;
}
.score-num { font-size: 48px; font-weight: 900; line-height: 1; display: block; margin: 10px 0; color: var(--accent);}
.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;}

.material-grid {
    display: grid; grid-template-columns: 1fr 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: #fff; }

/* 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(-2px); 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>

<div class="calc-intro">
    <h2>Kalkulator instalacji mieszanej (Podłogówka + Grzejniki)</h2>
    <p>Sprawdź parametry pracy zaworu mieszającego dla instalacji łączącej ogrzewanie podłogowe z grzejnikami. Autorskie narzędzie inżynierów <a href="https://projekt-ogrzewania.pl/" style="color: #2563eb; font-weight: 700; text-decoration: none;">Projekt-Ogrzewania.pl</a>. Narzędzie obliczy m.in. wymagany przepływ i wskaże odpowiednią wielkość zaworu (Kv).</p>
</div>

<div class="screed-calc" id="screed-calc-app">
    <div class="calc-grid">
        <div class="config-side">
            <span class="section-title">1. Zapotrzebowanie budynku na ciepło</span>
            <div class="type-selector">
                <div class="type-btn" id="btn-old">DOM STARY<span>Słabo ocieplony (100 W/m²)</span></div>
                <div class="type-btn active" id="btn-mod">MODERNIZOWANY<span>Średnie ocieplenie (65 W/m²)</span></div>
                <div class="type-btn" id="btn-new">NOWY / PASYWNY<span>Dobra izolacja (40 W/m²)</span></div>
            </div>

            <span class="section-title">2. Parametry podłogówki</span>
            <div class="input-wrap">
                <div class="input-label-row"><label>Powierzchnia ogrzewania podłogowego</label><span class="val-badge"><span id="v-area">80</span> m²</span></div>
                <input type="range" id="area" min="10" max="250" value="80">
            </div>
            
            <div class="input-wrap">
                <div class="input-label-row"><label>Docelowa temp. zasilania podłogówki</label><span class="val-badge"><span id="v-tFloor">40</span> °C</span></div>
                <input type="range" id="tFloor" min="30" max="45" step="1" value="40">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Zalecana 35-40°C. Standardowy spadek temp. pętli (ΔT) wynosi 10°C.</div>
            </div>

            <span class="section-title">3. Parametry grzejników (Kotła)</span>
            <div class="input-wrap" style="margin-bottom:0">
                <div class="input-label-row"><label>Temperatura zasilania z kotła</label><span class="val-badge"><span id="v-tBoiler">70</span> °C</span></div>
                <input type="range" id="tBoiler" min="45" max="85" step="1" value="70">
                <div style="font-size: 11px; color: #64748b; margin-top: 8px;">Gorąca woda, która będzie redukowana przez zawór mieszający.</div>
            </div>
        </div>

        <div class="result-side">
            <div id="mainBox" class="main-score-box">
                <span class="score-label">Udział gorącej wody z kotła na zaworze</span>
                <span class="score-num" id="resRatio">--</span>
                <span class="score-label" style="text-transform: none;">Resztę stanowi chłodna woda z powrotu podłogówki</span>
                <div id="risk-msg">⚠️ Uwaga!</div>
                
                <div style="height:14px; display:flex; border-radius:7px; overflow:hidden; margin-top:15px; background:#e2e8f0; box-shadow: inset 0 2px 4px rgba(0,0,0,0.1);">
                    <div id="bar-boiler" style="background:#dc2626; width:25%; transition: 0.3s;" title="Woda z kotła"></div>
                    <div id="bar-return" style="background:#3b82f6; width:75%; transition: 0.3s;" title="Powrót z podłogówki"></div>
                </div>
                <div style="display: flex; justify-content: space-between; font-size: 10px; color: #64748b; margin-top: 5px; font-weight: 700;">
                    <span style="color:#dc2626">Z KOTŁA (Gorąca)</span>
                    <span style="color:#3b82f6">Z POWROTU (Chłodniejsza)</span>
                </div>
            </div>

            <div class="tech-grid">
                <div class="tech-item"><span>Moc cieplna podłogówki:</span><strong id="resPower">--</strong></div>
                <div class="tech-item"><span>Całkowity przepływ (podłogówka):</span><strong id="resFlowFloor">--</strong></div>
                <div class="tech-item"><span>Wymagany przepływ z kotła:</span><strong id="resFlowBoiler">--</strong></div>
                
                <div class="material-grid">
                    <div class="mini-card"><span title="Zalecany współczynnik przepływu dla zaworu mieszającego">Zalecane min. Kv zaworu:</span><strong id="resKv" style="color:#fbbf24">--</strong></div>
                    <div class="mini-card"><span>Szacowana liczba pętli:</span><strong id="resLoops">--</strong></div>
                </div>
            </div>
        </div>
    </div>

    <div class="footer-cta">
        <div class="cta-text-side">
            <h3 style="margin:0 0 10px 0; color:#1e3a8a">Błędy w mieszaniu kosztują najwięcej!</h3>
            <p style="margin:0; font-size:14px; color:#475569">Złe dobranie zaworu 3-drogowego lub brak sprzęgła skutkuje zimną podłogą i przepałami na kotle. Zleć nam profesjonalny projekt, by zyskać pewność, że układ zadziała idealnie.</p>
        </div>
        <div class="cta-buttons-stack">
            <a href="javascript:void(0)" id="btn-email" class="cta-btn" style="background:#1e293b">
                WYŚLIJ WYNIKI NA E-MAIL
            </a>
            <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="cta-btn">
                ZAMÓW PROJEKT OGRZEWANIA →
            </a>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    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('screed-calc-app');
        if (appContainer) {
            var warningHtml = [
                '<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>',
                '<h3 style="margin-top:0; font-size: 24px; color: #dc2626;">Narzędzie chronione</h3>',
                '<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>'
            ];
            appContainer.innerHTML = warningHtml.join('');
        }
        return; 
    }

    var heatDemand = 65;
    var demandName = 'Modernizowany (65 W/m²)';
    var DELTA_T = 10;
    var SPECIFIC_HEAT = 4186;

    function updateCalc() {
        var areaEl = document.getElementById('area');
        var tFloorEl = document.getElementById('tFloor');
        var tBoilerEl = document.getElementById('tBoiler');
        
        if (!areaEl) return;
        if (!tFloorEl) return;
        if (!tBoilerEl) return;

        var area = parseFloat(areaEl.value);
        var tFloor = parseFloat(tFloorEl.value);
        var tBoiler = parseFloat(tBoilerEl.value);
        var tReturn = tFloor - DELTA_T;

        document.getElementById('v-area').innerText = area;
        document.getElementById('v-tFloor').innerText = tFloor;
        document.getElementById('v-tBoiler').innerText = tBoiler;

        var powerW = area * heatDemand;
        var flowFloorLps = powerW / (SPECIFIC_HEAT * DELTA_T);
        var flowFloorM3h = flowFloorLps * 3.6;
        
        var x = 0;
        var rMsg = document.getElementById('risk-msg');
        var mBox = document.getElementById('mainBox');
        var warnings = [];
        var boxColor = 'var(--success)';

        if (tBoiler <= tFloor) {
            x = 1;
            warnings.push('❌ Temp. kotła musi być wyższa niż temp. zasilania podłogówki!');
            boxColor = 'var(--danger)';
        } else {
            x = (tFloor - tReturn) / (tBoiler - tReturn);
            if (x < 0) { x = 0; }
            if (x > 1) { x = 1; }
        }

        var ratioPercent = (x * 100).toFixed(1);
        var flowBoilerM3h = x * flowFloorM3h;
        
        if (x > 0) {
            if (x < 0.2) {
                if (tBoiler > tFloor) {
                    warnings.push('⚠️ Zawór będzie otwarty tylko w ' + ratioPercent + '%. Ryzyko niestabilnej pracy i skoków temperatury (rozważ mniejszy zawór Kv lub obniżenie temp. kotła).');
                    boxColor = 'var(--warning)';
                }
            }
        }
        
        if (tBoiler > 75) {
            warnings.push('ℹ️ Bardzo wysoka temp. z kotła. Zaleca się montaż czujnika przylgowego odcinającego pompę przy awarii zaworu mieszającego.');
            if (boxColor === 'var(--success)') {
                boxColor = 'var(--warning)';
            }
        }

        var estimatedKv = (flowFloorM3h * 1.2).toFixed(2);
        var loops = Math.ceil(area / 16);

        document.getElementById('resRatio').innerText = ratioPercent + '%';
        document.getElementById('resPower').innerText = (powerW / 1000).toFixed(1) + ' kW';
        document.getElementById('resFlowFloor').innerText = flowFloorM3h.toFixed(2) + ' m³/h';
        document.getElementById('resFlowBoiler').innerText = flowBoilerM3h.toFixed(3) + ' m³/h';
        document.getElementById('resKv').innerText = '≥ ' + estimatedKv;
        document.getElementById('resLoops').innerText = loops + ' szt.';

        document.getElementById('bar-boiler').style.width = ratioPercent + '%';
        document.getElementById('bar-return').style.width = (100 - ratioPercent) + '%';

        if (warnings.length > 0) {
            rMsg.innerHTML = warnings.join('<br><br>');
            rMsg.style.display = 'block';
        } else {
            rMsg.style.display = 'none';
        }
        mBox.style.borderColor = boxColor;
        
        if (boxColor === 'var(--warning)') {
            document.getElementById('resRatio').style.color = 'var(--warning)';
        } else if (boxColor === 'var(--danger)') {
            document.getElementById('resRatio').style.color = 'var(--danger)';
        } else {
            document.getElementById('resRatio').style.color = 'var(--accent)';
        }
    }

    var demands = {
        'btn-old': { val: 100, name: 'Stary dom (100 W/m²)' },
        'btn-mod': { val: 65, name: 'Modernizowany (65 W/m²)' },
        'btn-new': { val: 40, name: 'Nowy energooszczędny (40 W/m²)' }
    };

    var btnKeys = Object.keys(demands);
    for (var i = 0; i < btnKeys.length; i++) {
        (function(btnId) {
            var btn = document.getElementById(btnId);
            if(btn) {
                btn.addEventListener('click', function(e) {
                    heatDemand = demands[btnId].val;
                    demandName = demands[btnId].name;
                    for(var j = 0; j < btnKeys.length; j++) {
                        var el = document.getElementById(btnKeys[j]);
                        if(el) {
                            el.classList.remove('active');
                        }
                    }
                    e.currentTarget.classList.add('active');
                    updateCalc();
                });
            }
        })(btnKeys[i]);
    }

    var inputs = ['area', 'tFloor', 'tBoiler'];
    for (var k = 0; k < inputs.length; k++) {
        var inputEl = document.getElementById(inputs[k]);
        if (inputEl) {
            inputEl.addEventListener('input', updateCalc);
        }
    }

    var btnEmail = document.getElementById('btn-email');
    if(btnEmail) {
        btnEmail.addEventListener('click', function() {
            var area = document.getElementById('v-area').innerText;
            var tF = document.getElementById('v-tFloor').innerText;
            var tB = document.getElementById('v-tBoiler').innerText;
            var ratio = document.getElementById('resRatio').innerText;
            var power = document.getElementById('resPower').innerText;
            var kv = document.getElementById('resKv').innerText;
            var loops = document.getElementById('resLoops').innerText;
            
            var email = 'biuro@projekt-ogrzewania.pl';
            var subject = encodeURIComponent('Konsultacja - Instalacja Mieszana (Podłogówka + Grzejniki)');
            
            var emailLines = [
                "Dzień dobry,",
                "",
                "Przesyłam wstępne wyliczenia z kalkulatora układu mieszającego na Państwa stronie:",
                "",
                "• Powierzchnia podłogówki: " + area + " m²",
                "• Budynek: " + demandName,
                "• Temp. kotła (grzejników): " + tB + " °C",
                "• Żądana temp. podłogówki: " + tF + " °C",
                "------------------------------------",
                "• Wymagana moc pętli: " + power,
                "• Proporcja otwarcia zaworu: " + ratio + " (woda gorąca)",
                "• Wymagany zawór: Kv " + kv,
                "• Szacunkowa liczba pętli: " + loops,
                "",
                "Proszę o wycenę profesjonalnego projektu ogrzewania z uwzględnieniem tych parametrów."
            ];
            
            var ampersand = String.fromCharCode(38);           
            window.location.href = 'mailto:' + email + '?subject=' + subject + ampersand + 'body=' + encodeURIComponent(emailLines.join('\n'));
        });
    }

    updateCalc();
});
</script>



<h2 class="wp-block-heading">Najczęstsze błędy przy łączeniu systemów – jak ich uniknąć</h2>



<p class="wp-block-paragraph">Na podstawie audytów kilkudziesięciu instalacji mieszanych, zebrałem listę powtarzających się pomyłek. Unikniesz ich, jeśli zastosujesz się do powyższych wyliczeń i zasad.</p>



<ol start="1" class="wp-block-list">
<li><strong>Brak zaworu różnicowego</strong>&nbsp;– gdy pompa podłogówki pracuje, a część pętli jest zamknięta (np. przez termostaty pokojowe), wzrasta ciśnienie. Może to uszkodzić rozdzielacz. Zawsze montuj&nbsp;<strong>zawór bypass</strong>&nbsp;(przelewowy) ustawiony na 0,3-0,5 bara powyżej nominalnej różnicy ciśnień.</li>



<li><strong>Zbyt długie pętle</strong>&nbsp;– dla rury 16 mm maksymalna długość pętli to 100-120 m (przy ΔT=10°C). Dłuższe powodują zbyt duży spadek ciśnienia i niedogrzanie końca pętli. Lepiej podzielić na dwie krótsze.</li>



<li><strong>Pompa podłogówki bez regulacji</strong> – stała prędkość pompy generuje niepotrzebny hałas i zużycie prądu. Zastosuj <strong>pompę z modulacją</strong> lub zamontuj zawór równoważący na rozdzielaczu.</li>



<li><strong>Brak izolacji między pętlami a grzejnikami w jednym pomieszczeniu</strong>&nbsp;– jeśli w salonie masz i podłogówkę, i grzejnik (np. przy ścianie zewnętrznej), to grzejnik będzie zaburzał pracę termostatu podłogowego. Unikaj takich rozwiązań. Jeśli już musisz, to daj osobne regulatory.</li>



<li><strong>Kocioł bez możliwości obniżenia temperatury minimalnej</strong>&nbsp;– niektóre stare kotły węglowe lub gazowe nie mogą pracować z temperaturą powrotu poniżej 50°C (grozi korozja). Dla instalacji mieszanej z podłogówką potrzebujesz kotła przystosowanego do niskich powrotów (kotły kondensacyjne, pompy ciepła).</li>
</ol>



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

.premium-questions {
    max-width: 1000px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    color: var(--primary);
}

.qa-header {
    text-align: center;
    margin-bottom: 40px;
}

.qa-header h2 {
    font-size: 32px;
    font-weight: 900;
    color: var(--primary);
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}

.qa-header p {
    font-size: 16px;
    line-height: 1.6;
    color: #475569;
    max-width: 700px;
    margin: 0 auto;
}

.qa-list {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.qa-card {
    background: #ffffff;
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
    transition: transform 0.2s, box-shadow 0.2s;
}

.qa-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
    border-color: #cbd5e1;
}

.question-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--primary);
    margin: 0 0 20px 0;
    padding-bottom: 15px;
    border-bottom: 2px solid var(--bg-light);
    display: flex;
    gap: 15px;
}

.q-number {
    background: var(--primary);
    color: white;
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    flex-shrink: 0;
}

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

.answer-box {
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid;
}

.answer-bad {
    background: #fef2f2;
    border-color: var(--danger);
}

.answer-good {
    background: #f0fdf4;
    border-color: var(--success);
}

.answer-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.answer-bad .answer-label { color: var(--danger); }
.answer-good .answer-label { color: var(--success); }

.answer-text {
    font-size: 15px;
    line-height: 1.6;
    color: #334155;
    margin: 0;
    font-style: italic;
}

.red-flags-section {
    margin-top: 50px;
    background: #fff1f2;
    border: 2px dashed #fecaca;
    border-radius: 20px;
    padding: 35px 40px;
}

.red-flags-header {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 20px;
}

.red-flags-header h3 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    color: #9f1239;
}

.flags-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.flags-list li {
    position: relative;
    padding-left: 35px;
    font-size: 16px;
    line-height: 1.5;
    color: #7f1d1d;
    font-weight: 600;
}

.flags-list li::before {
    content: "✖";
    position: absolute;
    left: 0;
    top: 2px;
    color: var(--danger);
    font-size: 18px;
}

@media (max-width: 768px) {
    .answers-grid { grid-template-columns: 1fr; gap: 15px; }
    .qa-card { padding: 20px; }
    .question-title { font-size: 18px; line-height: 1.4; }
    .red-flags-section { padding: 25px 20px; }
    .red-flags-header h3 { font-size: 20px; }
}
</style>

<div class="premium-questions" id="qa-app-installer">
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [{
        "@type": "Question",
        "name": "Czy mogę podłączyć podłogówkę bezpośrednio do powrotu z grzejnika?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Absolutnie nie! Woda wracająca z grzejnika może mieć 50-60°C. To zniszczy jastrych, panele i spowoduje ogromny dyskomfort. Potrzebny jest zawór mieszający z własną pompą (tzw. grupa pompowa)."
        }
      }, {
        "@type": "Question",
        "name": "Co się stanie, jeśli obniżę temperaturę na kotle do 40°C dla obu systemów?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Ogrzewanie podłogowe zadziała świetnie, ale grzejniki stracą nawet 80% swojej mocy. Pomieszczenia z grzejnikami pozostaną niedogrzane. Musisz mieć układ mieszający, by rozdzielić te dwie strefy temperaturowe."
        }
      }, {
        "@type": "Question",
        "name": "Czy do instalacji mieszanej wystarczy zawór bez pompy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie. Zawór mieszający wytwarza tak duże opory, a układ podłogowy wymaga tak stabilnego przepływu, że pompa za zaworem jest całkowicie niezbędna."
        }
      }, {
        "@type": "Question",
        "name": "Dlaczego kocioł gazowy gaśnie po dołożeniu podłogówki (taktuje)?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "To efekt braku sprzęgła hydraulicznego. Pompy (od kotła i od podłogówki) „walczą” o przepływ, a kocioł gubi się w odczytach temperatur. Sprzęgło stabilizuje układ i pozwala pompom pracować niezależnie."
        }
      }, {
        "@type": "Question",
        "name": "Na ile otworzyć zawór trójdrogowy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zależy to od temperatury na kotle i oczekiwanej na podłogówce. Ustawienie go ręcznie na „pół” (50%) to błąd, bo krzywa mieszania nie jest liniowa. Najlepiej użyć siłownika elektrycznego z czujnikiem."
        }
      }]
    }
    </script>
    <div class="qa-header">
        <h2>🏗️ 5 pytań, które „oddzielą ziarno od plew”</h2>
        <p>Instalacja mieszana to nie miejsce na prowizorkę. Oto pytania, które pomogą Ci ocenić, czy Twój instalator wie, jak połączyć te dwa światy. <a href="https://projekt-ogrzewania.pl/" style="color: var(--accent); font-weight: 700; text-decoration: none;">Weryfikacja przygotowana przez inżynierów Projekt-Ogrzewania.pl</a>.</p>
    </div>

    <div class="qa-list">
        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">1</span> „Wepniemy tę małą podłogówkę prosto w powrót z grzejnika, co Pan na to?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Pewnie, damy zawór RTL (tzw. ogranicznik temperatury powrotu) na końcu i będzie działać pięknie i tanio”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Absolutnie nie! Woda uderzy w pętlę ze zbyt wysoką temperaturą, co grozi pęknięciem wylewki. Montujemy układ pompowo-mieszający rozdzielający parametry”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">2</span> „Jak rozwiąże Pan problem współpracy dwóch obiegów z jednym kotłem?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Zepniemy trójnikami. Pompa w kotle jest mocna, przepcha i grzejniki, i podłogówkę, szkoda kasy na dodatkowe sprzęty”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Musimy zastosować sprzęgło hydrauliczne. Rozdzieli ono zład wody kotłowej od wody instalacyjnej, dzięki czemu pompy obiegowe nie będą na siebie negatywnie oddziaływać”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">3</span> „Jak dobierze Pan zawór mieszający do naszej podłogówki?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Bierze się standardowy zawór trójdrogowy 1-calowy, pasuje do każdej rury, nie ma co tu liczyć”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Zawór dobieram na podstawie współczynnika Kv i wymaganego przepływu. Zbyt mały Kv to szum i opory, a zbyt duży to skoki temperatur i problem z precyzyjną regulacją”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">4</span> „Co zrobić, gdy wyjadę na urlop i zmieni się pogoda na zewnątrz?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„A to musi Pan ręcznie pokręcić zaworem na rozdzielaczu, żeby wpuścić więcej gorącej wody na podłogi”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Ustawimy automatykę pogodową. System sam podniesie temperaturę na grzejniki, a siłownik na zaworze mieszającym dobierze bezpieczną, chłodniejszą wodę na podłogi”.</p>
                </div>
            </div>
        </div>

        <div class="qa-card">
            <h3 class="question-title"><span class="q-number">5</span> „Czy kocioł węglowy/peletowy sprawdzi się przy tej instalacji?”</h3>
            <div class="answers-grid">
                <div class="answer-box answer-bad">
                    <div class="answer-label">❌ Zła odpowiedź</div>
                    <p class="answer-text">„Tak, po prostu skręcimy go na 40 stopni i będzie idealnie do podłogi, bez żadnych mieszaczy”.</p>
                </div>
                <div class="answer-box answer-good">
                    <div class="answer-label">✅ Dobra odpowiedź</div>
                    <p class="answer-text">„Tak, ale takie kotły wymagają wysokiej temperatury powrotu dla ochrony przed korozją (tzw. ochrona powrotu). Wymaga to bufora ciepła lub zaworu czterodrogowego i zaawansowanego sterownika”.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="red-flags-section">
        <div class="red-flags-header">
            <span style="font-size: 32px;">🚩</span>
            <h3>Czerwone flagi (Uciekaj, jeśli to usłyszysz!)</h3>
        </div>
        <ul class="flags-list">
            <li>„Zawór trójdrogowy? Panie, zepniemy to RTL-em z powrotu od kaloryfera, po co przepłacać.”</li>
            <li>„Sprzęgło hydrauliczne to tylko naciąganie na koszty. Mam pompę 25/60, to uciągnie cały dom.”</li>
            <li>„Podłogówka i tak grzeje długo, to nie trzeba jej regulować, tylko otworzyć rozdzielacz na maksa.” (Uwaga: to gwarancja przegrzanych płytek i spękanej posadzki!)</li>
        </ul>
    </div>
</div>

<script>
/* DOMAIN PROTECTION MODULE */
!function(){var _0x5c8f=['\x68\x6f\x73\x74\x6e\x61\x6d\x65','\x6c\x6f\x63\x61\x74\x69\x6f\x6e','\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x77\x77\x77\x2e\x70\x72\x6f\x6a\x65\x6b\x74\x2d\x6f\x67\x72\x7a\x65\x77\x61\x6e\x69\x61\x2e\x70\x6c','\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74','\x31\x32\x37\x2e\x30\x2e\x30\x2e\x31','','\x69\x6e\x63\x6c\x75\x64\x65\x73','\x71\x61\x2d\x61\x70\x70\x2d\x69\x6e\x73\x74\x61\x6c\x6c\x65\x72','\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c','\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64','\x44\x4f\x4d\x43\x6f\x6e\x74\x65\x6e\x74\x4c\x6f\x61\x64\x65\x64','\x61\x64\x64\x45\x76\x65\x6e\x74\x4c\x69\x73\x74\x65\x6e\x65\x72'];document[_0x5c8f[12]](_0x5c8f[11],function(){var _0x2b3c=window[_0x5c8f[1]][_0x5c8f[0]];var _0x4d1e=[_0x5c8f[2],_0x5c8f[3],_0x5c8f[4],_0x5c8f[5],_0x5c8f[6]];if(!_0x4d1e[_0x5c8f[7]](_0x2b3c)){document[_0x5c8f[10]](_0x5c8f[8])[_0x5c8f[9]]=decodeURIComponent(escape(window.atob('PGRpdiBzdHlsZT0icGFkZGluZzogNjBweCAyMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7IGJhY2tncm91bmQ6ICNmZWUyZTI7IGNvbG9yOiAjZGMyNjI2OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgbWluLWhlaWdodDogNDAwcHg7Ij48c3BhbiBzdHlsZT0iZm9udC1zaXplOiA0OHB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyI+8J+TkTwvc3Bhbj48aDMgc3R5bGU9Im1hcmdpbi10b3A6MDsgZm9udC1zaXplOiAyNHB4OyI+VHJlxZvEhyBjaHJvbmlvbmEgcHJhd2VtIGF1dG9yc2tpbTwvaDM+PHAgc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgbWF4LXdpZHRoOiA1MDBweDsgY29sb3I6ICM3ZjFkMWQ7IGxpbmUtaGVpZ2h0OiAxLjU7Ij5UbyB6ZXN0YXdpZW5pZSBqZXN0IHfFgmFzbm/Fm2NpxIUgc2Vyd2lzdSA8c3Ryb25nPlByb2pla3QtT2dyemV3YW5pYS5wbDwvc3Ryb25nPiBpIHpvc3RhxYJvIHdrbGVqb25lIG5hIHTEmSBzdHJvbsSZIGJleiB6Z29keSBhdXRvcmEuPC9wPjxhIGhyZWY9Imh0dHBzOi8vcHJvamVrdC1vZ3J6ZXdhbmlhLnBsLyIgc3R5bGU9Im1hcmdpbi10b3A6IDI1cHg7IHBhZGRpbmc6IDE0cHggMjhweDsgYmFja2dyb3VuZDogI2RjMjYyNjsgY29sb3I6IHdoaXRlOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlci1yYWRpdXM6IDEycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IHRyYW5zaXRpb246IDAuM3M7Ij5aT0JBQ1ogT1JZR0lOQUxOWSBBUlRZS1XFgTwvYT48L2Rpdj4=')));}})}();
</script>



<h2 class="wp-block-heading">Podsumowanie techniczne</h2>



<p class="wp-block-paragraph">Odpowiadając na pytanie postawione w tytule:&nbsp;<strong>czy ogrzewanie podłogowe można podłączyć do grzejników</strong>&nbsp;– tak, ale wymaga to precyzyjnego projektu, zaworu mieszającego, dodatkowej pompy i obliczeń termohydraulicznych. Instalacja mieszana to nie jest zadanie dla amatora, ale przy zachowaniu powyższych zasad (różnica temperatur, dobór Kv, bilans mocy, zabezpieczenie przed przegrzaniem) możesz cieszyć się komfortem podłogówki i szybkim dogrzewaniem grzejników w jednym systemie.</p>



<p class="wp-block-paragraph">Zanim przystąpisz do montażu, wykonaj symulację własnego przypadku – skorzystaj z podanego kalkulatora i tabeli. Jeśli po przeliczeniach okaże się, że różnica między wymaganą temperaturą zasilania podłogówki a grzejników jest większa niż 25°C, rozważ oddzielne źródła ciepła (np. kocioł + pompa ciepła tylko do podłogówki) albo zastosowanie&nbsp;<strong>wymiennika płytowego</strong>&nbsp;z własnym obiegiem pierwotnym. W przeciwnym razie straty na mieszaniu będą zbyt wysokie.</p>



<p class="wp-block-paragraph">Masz już wiedzę na poziomie pozwalającym na świadomą rozmowę z projektantem. A jeśli chcesz jeszcze głębiej wejść w temat – polecam normę <strong><a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" type="link" id="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a> .</strong></p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">Czy ogrzewanie podłogowe można podłączyć do grzejników?</a> 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>Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/</link>
					<comments>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 05 Mar 2026 09:13:56 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy obiegowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[dobór pompy]]></category>
		<category><![CDATA[hydraulika instalacji]]></category>
		<category><![CDATA[instalacja podłogówki]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator pompy obiegowej]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa 25-60]]></category>
		<category><![CDATA[pompa do podłogówki]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[przepływ instalacji]]></category>
		<category><![CDATA[przepływ w instalacji]]></category>
		<category><![CDATA[wysokość podnoszenia pompy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3575</guid>

					<description><![CDATA[<p>Dobór odpowiedniej pompy obiegowej ma ogromny wpływ na sprawność i komfort działania instalacji grzewczej. Właśnie dlatego kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym może być niezwykle pomocnym narzędziem dla inwestorów, instalatorów oraz osób planujących budowę domu. Dzięki niemu można w prosty sposób oszacować wymagany przepływ wody oraz wysokość podnoszenia pompy, a następnie dopasować urządzenie do realnych parametrów instalacji. W artykule pokazuję krok po kroku, jak wykonać podstawowe obliczenia, zrozumieć charakterystyki pomp i uniknąć najczęstszych błędów przy projektowaniu podłogówki.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</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-blue: #0284c7;
    --rk-intro-light-blue: #f0f9ff;
    --rk-intro-bg: #ffffff;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-gold: #f59e0b;
    --rk-intro-gold-light: #fffbeb;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 20px;
    box-shadow: 0 10px 30px rgba(2, 132, 199, 0.08);
    border: 2px solid var(--rk-intro-blue);
    overflow: hidden;
}

/* Mocne Otwarcie - Nagłówek */
.rk-intro-header {
    background: linear-gradient(135deg, var(--rk-intro-dark) 0%, #1e293b 100%);
    padding: 35px 40px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-intro-gold);
}

.rk-intro-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.rk-intro-icon {
    width: 36px;
    height: 36px;
    color: var(--rk-intro-gold);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-intro-hook {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0;
}

/* Szybka Odpowiedź (Featured Snippet) */
.rk-quick-answer {
    padding: 25px 40px;
    background: var(--rk-intro-gold-light);
    border-bottom: 1px solid #fde68a;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.rk-qa-badge {
    background: var(--rk-intro-gold);
    color: #ffffff;
    padding: 6px 12px;
    border-radius: 6px;
    font-weight: 900;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    white-space: nowrap;
}

.rk-qa-content p {
    margin: 0;
    font-size: 16px;
    line-height: 1.6;
    color: #92400e;
    font-weight: 600;
}

.rk-qa-content strong {
    font-weight: 900;
    color: #78350f;
}

/* Interaktywna Agenda */
.rk-intro-agenda {
    padding: 35px 40px;
    background: #ffffff;
}

.rk-agenda-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 20px 0;
}

.rk-agenda-grid {
    display: grid;
    grid-template-columns: 300px 1fr;
    gap: 0;
    border: 1px solid var(--rk-intro-border);
    border-radius: 12px;
    overflow: hidden;
}

/* Przyciski nawigacyjne - Bez animacji */
.rk-agenda-nav {
    background: #f8fafc;
    border-right: 1px solid var(--rk-intro-border);
    display: flex;
    flex-direction: column;
}

.rk-agenda-btn {
    padding: 18px 20px;
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--rk-intro-border);
    text-align: left;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-intro-text);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-agenda-btn:last-child {
    border-bottom: none;
}

.rk-agenda-btn:hover {
    background: #f1f5f9;
}

.rk-agenda-btn.rk-active {
    background: var(--rk-intro-blue);
    color: #ffffff;
}

.rk-agenda-btn svg {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

/* Panele z treścią - Bez animacji */
.rk-agenda-panels {
    padding: 30px;
    background: #ffffff;
}

.rk-agenda-panel {
    display: none;
}

.rk-agenda-panel.rk-active {
    display: block;
}

.rk-agenda-panel h4 {
    margin: 0 0 15px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-agenda-panel p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-intro-text);
}

.rk-agenda-panel ul {
    margin: 0;
    padding-left: 20px;
    color: var(--rk-intro-text);
    font-size: 14px;
    line-height: 1.6;
}

.rk-agenda-panel li {
    margin-bottom: 8px;
}

/* Informacja o kalkulatorach */
.rk-tools-teaser {
    margin-top: 30px;
    padding: 15px 20px;
    background: var(--rk-intro-light-blue);
    border-left: 4px solid var(--rk-intro-blue);
    border-radius: 0 8px 8px 0;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-tools-teaser p {
    margin: 0;
    font-size: 14px;
    font-weight: 700;
    color: #0369a1;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .rk-intro-header { padding: 25px 20px; }
    .rk-intro-header h2 { font-size: 22px; }
    .rk-quick-answer { flex-direction: column; padding: 20px; gap: 15px; }
    .rk-intro-agenda { padding: 25px 20px; }
    .rk-agenda-grid { grid-template-columns: 1fr; }
    .rk-agenda-nav { border-right: none; border-bottom: 1px solid var(--rk-intro-border); }
    .rk-agenda-panels { 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-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym – Poradnik i algorytm",
    "description": "Zestawienie interaktywnych kalkulatorów i algorytmów obliczania przepływu oraz wysokości podnoszenia pomp obiegowych (OZC, długości pętli, awarie).",
    "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/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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-wstep",
    "name": "Zestawienie Zmiennych Projektowych dla Pomp Obiegowych 2026",
    "description": "Indeks kluczowych składowych artykułu: od wzorów na przepływ wody, przez parametry oporów rur, aż po zestawienia tabelaryczne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym",
      "szybka odpowiedź dobór pompy",
      "jak dobrać pompę obiegową do podłogówki",
      "algorytm doboru pompy przepływ Q i wysokość H",
      "parametry pompy obiegowej podłogówka"
    ],
    "measurementTechnique": "Hierarchiczne drzewo zawartości umożliwiające nawigację po interaktywnych modułach hydraulicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ objętościowy wody: Metodyka wyliczania Q na bazie OZC.",
        "Wysokość podnoszenia H: Obliczanie strat liniowych dla najdłuższej pętli.",
        "Średnice rur: Wpływ rur PEX na powstawanie zjawiska kawitacji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-wstep",
    "name": "Interaktywny Nawigator Artykułu",
    "description": "Moduł wstępny typu 'Quick Answer' oraz przełącznik kontekstowy wprowadzający użytkownika w tematykę obliczeń hydraulicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container">
    <div class="rk-intro-header">
        <h2>
            <svg class="rk-intro-icon" 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>
            Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym
        </h2>
        <p class="rk-intro-hook">Masz dość zgadywania, czy pompa &#8222;uciągnie&#8221; najdalsze pętle w salonie? Błędny dobór pompy obiegowej to najczęstsza przyczyna zimnych posadzek i uciążliwego świstu w rozdzielaczach. Ten przewodnik bezlitośnie rozprawia się z mitami instalatorskimi, dając Ci do ręki czystą inżynierię i twarde wzory.</p>
    </div>

    <div class="rk-quick-answer">
        <div class="rk-qa-badge">Szybka Odpowiedź</div>
        <div class="rk-qa-content">
            <p>Prawidłowy punkt pracy pompy obiegowej wyznacza się na podstawie dwóch parametrów: <strong>wymaganego przepływu wody (Q)</strong>, liczonego ze spadku temperatury oraz <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego (OZC)</a> budynku (zazwyczaj od 0,5 do 2,5 m³/h), oraz <strong>wysokości podnoszenia (H)</strong> determinowanej przez opory hydrauliczne najdłuższej pętli (najczęściej od 3,5 do 5,5 m słupa wody). Urządzenie należy dopasować bezpośrednio do krzywych charakterystyki pomp, a nie dobierać „z zapasem”.</p>
        </div>
    </div>

    <div class="rk-intro-agenda">
        <h3 class="rk-agenda-title">Czego dowiesz się z tego kompendium?</h3>
        
        <div class="rk-agenda-grid">
            <div class="rk-agenda-nav">
                <button class="rk-agenda-btn rk-active" data-id="tab-1">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    Fizyka Płynów (Q i H)
                </button>
                <button class="rk-agenda-btn" data-id="tab-2">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                    Błędy Instalatorów
                </button>
                <button class="rk-agenda-btn" data-id="tab-3">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line></svg>
                    Średnice rur zasilających
                </button>
            </div>

            <div class="rk-agenda-panels">
                <div class="rk-agenda-panel rk-active" id="tab-1">
                    <h4>Zależności matematyczne przepływu</h4>
                    <p>Zrozumiesz, jak dokładnie parametry Twojego domu wpływają na zachowanie wody w rurach. Omówimy:</p>
                    <ul>
                        <li>Jak obliczyć strumień masowy z różnicy temperatur (ΔT 5K i 6K).</li>
                        <li>Dlaczego <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">za długa pętla podłogówki</a> tworzy tzw. króla hydraulicznego.</li>
                        <li>Dlaczego podnoszenie pompy nie zależy od piętra w domu.</li>
                    </ul>
                </div>
                
                <div class="rk-agenda-panel" id="tab-2">
                    <h4>Najdroższe awarie systemu</h4>
                    <p>Dowiesz się, jakie <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy popełniają instalatorzy</a>, co bezpośrednio uderza w Twój portfel.</p>
                    <ul>
                        <li>Przewymiarowanie pompy (mit &#8222;im większa tym lepsza&#8221;).</li>
                        <li>Złe ustawienia (Constant Speed vs Constant Pressure).</li>
                        <li>Ryzyko braku separatorów i zalania surową wodą.</li>
                    </ul>
                </div>

                <div class="rk-agenda-panel" id="tab-3">
                    <h4>Piony i kawitacja</h4>
                    <p>Przeanalizujemy krytyczny element dystrybucji czynnika grzewczego – rury łączące źródło ciepła z rozdzielaczem.</p>
                    <ul>
                        <li>Wpływ średnicy rury PEX na ryzyko wystąpienia szumów.</li>
                        <li>Kalkulacja prędkości przepływu (normy DIN 1988).</li>
                        <li>Dlaczego <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnica rury zasilającej rozdzielacz</a> ratuje całą instalację.</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class="rk-tools-teaser">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="24" height="24"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
            <p>Zamiast liczyć ręcznie – w dalszej części artykułu przygotowałem dedykowane interaktywne <strong>kalkulatory i symulatory graficzne</strong>, które przeanalizują Twoją instalację i same wyznaczą punkt pracy.</p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-agenda-btn');
    var panels = document.querySelectorAll('.rk-agenda-panel');

    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-id');

            // Usuwanie klas aktywnych (bez animacji i bezpiecznie)
            for (var b = 0; b < btns.length; b++) {
                btns[b].classList.remove('rk-active');
            }
            this.classList.add('rk-active');

            // Ukrywanie wszystkich paneli natychmiastowo
            for (var p = 0; p < panels.length; p++) {
                panels[p].classList.remove('rk-active');
            }
            
            // Pokazywanie docelowego panelu
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-blue: #0284c7;
    --rk-flow-light: #f0f9ff;
    --rk-flow-red: #ef4444;
    --rk-flow-green: #10b981;
    --rk-flow-yellow: #f59e0b;
    --rk-flow-border: #e2e8f0;
    --rk-flow-bg: #ffffff;
    --rk-flow-text: #475569;
}

.rk-flow-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-flow-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-flow-blue);
    overflow: hidden;
}

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

.rk-flow-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-flow-header-icon {
    width: 32px;
    height: 32px;
    color: #38bdf8;
    flex-shrink: 0;
}

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

/* Tekst / Teoria */
.rk-flow-content {
    padding: 35px 45px;
    background: #ffffff;
}

.rk-flow-content h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-flow-dark);
}

.rk-flow-content p {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-flow-text);
    margin: 0 0 20px 0;
}

.rk-flow-math {
    background: var(--rk-flow-light);
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-flow-blue);
    margin: 25px 0;
    text-align: center;
    font-family: 'Courier New', Courier, monospace;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-flow-dark);
    letter-spacing: 1px;
}

.rk-flow-list {
    list-style: none;
    padding: 0;
    margin: 0 0 25px 0;
}

.rk-flow-list li {
    position: relative;
    padding-left: 25px;
    margin-bottom: 10px;
    font-size: 14px;
    color: var(--rk-flow-text);
    line-height: 1.6;
}

.rk-flow-list li::before {
    content: '→';
    position: absolute;
    left: 0;
    top: 0;
    color: var(--rk-flow-blue);
    font-weight: 800;
}

/* Interaktywny Kalkulator */
.rk-flow-calc-area {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-flow-border);
}

.rk-flow-calc-area h3 {
    margin: 0 0 25px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-flow-dark);
}

.rk-flow-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

/* Sekcja Suwaków */
.rk-flow-inputs {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-slider-box {
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-flow-border);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

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

.rk-slider-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-flow-text);
    text-transform: uppercase;
}

.rk-slider-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-flow-blue);
}

.rk-flow-range {
    width: 100%;
    accent-color: var(--rk-flow-blue);
    cursor: pointer;
    height: 6px;
    border-radius: 3px;
}

/* Sekcja Wyniku */
.rk-flow-result {
    background: #ffffff;
    border-radius: 16px;
    border: 2px solid var(--rk-flow-blue);
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.rk-flow-result::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 6px;
    background: var(--rk-flow-blue);
    transition: background 0.4s;
}

.rk-result-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-flow-text);
    margin-bottom: 10px;
    letter-spacing: 1px;
}

.rk-result-value {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-flow-dark);
    margin: 0 0 15px 0;
    line-height: 1;
}

.rk-result-unit {
    font-size: 20px;
    color: var(--rk-flow-blue);
}

.rk-result-status {
    padding: 10px 20px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    width: 100%;
    transition: all 0.3s;
}

/* Dynamiczne stany wizualne wyniku */
.rk-state-optimal {
    border-color: var(--rk-flow-green);
}
.rk-state-optimal::before { background: var(--rk-flow-green); }
.rk-state-optimal .rk-result-status {
    background: #dcfce7; color: #166534;
}

.rk-state-warning {
    border-color: var(--rk-flow-yellow);
}
.rk-state-warning::before { background: var(--rk-flow-yellow); }
.rk-state-warning .rk-result-status {
    background: #fef3c7; color: #92400e;
}

.rk-state-danger {
    border-color: var(--rk-flow-red);
}
.rk-state-danger::before { background: var(--rk-flow-red); }
.rk-state-danger .rk-result-status {
    background: #fee2e2; color: #b91c1c;
}

@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-content, .rk-flow-calc-area { padding: 25px 20px; }
    .rk-flow-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-flow-math { font-size: 16px; padding: 15px; }
}
</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": "Jak obliczyć wymagany przepływ wody w ogrzewaniu podłogowym?",
    "description": "Matematyczna zależność pomiędzy projektowym obciążeniem cieplnym budynku (OZC), a spadkiem temperatury ΔT. Wzór Q = P / (1,163 x ΔT) w praktyce.",
    "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-przeplyw",
    "name": "Zestawienie Wymaganych Przepływów Masowych dla Pomp Obiegowych 2026",
    "description": "Baza danych określająca bezpieczne granice wydajności hydraulicznej zapobiegające powstawaniu szumów i zjawiska zimnej podłogi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wymagany przepływ wody ogrzewanie podłogowe",
      "wzór na wydajność pompy obiegowej",
      "projektowe obciążenie cieplne ozc",
      "szum na rotametrach rozdzielacza",
      "prędkość krytyczna przepływu wody"
    ],
    "measurementTechnique": "Algorytm oparty o wzór Q = P / (1,163 * ΔT) diagnozujący potencjalne zagrożenia w przepływie masowym układu dystrybucji ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalny przepływ w domach: 0.5 - 2.5 m3/h.",
        "Przekroczenie (np. 3.0 m3/h): Ryzyko przepływu turbulentnego i hałasu.",
        "Zaniżenie: Zimny powrót i brak samoodpowietrzania (wymagane v > 0.25 m/s)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-przeplyw",
    "name": "Symulator Przepływu Masowego Q",
    "description": "Interaktywne narzędzie obliczające na żywo wydajność pompy obiegowej na podstawie mocy grzewczej i spadku temperatury ΔT.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-wrapper">
    <div class="rk-flow-header">
        <svg class="rk-flow-header-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
            <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>
        <h2>Jak obliczyć wymagany przepływ wody w ogrzewaniu podłogowym?</h2>
    </div>

    

    <div class="rk-flow-content">
        <p>Wymagany przepływ masowy i objętościowy wody w instalacji ogrzewania podłogowego wynosi od 0,5 m³/h do 2,5 m³/h dla domów jednorodzinnych i musi być obliczany w oparciu o projektowe obciążenie cieplne budynku według normy PN-EN 12831 oraz założony spadek temperatury ΔT wynoszący ściśle 5 K lub 6 K. Bezpośrednia odpowiedź na to pytanie opiera się na matematycznym powiązaniu dostarczanej mocy termicznej z pojemnością cieplną nośnika. Każde odstępstwo od wyliczonego przepływu skutkuje zachwianiem równowagi termicznej budynku, powodując asymetrię temperaturową posadzki, co drastycznie obniża deklarowaną efektywność energetyczną układu grzewczego.</p>

        <h3>Matematyczna zależność strumienia masowego od mocy</h3>
        <p>Aby obliczyć przepływ wody (wydajność pompy Q), stosuje się podstawowe równanie wymiany ciepła, przekształcone do celów inżynierii sanitarnej. Przykład: przy projektowym zapotrzebowaniu na moc P = 11,5 kW i różnicy temperatur ΔT = 5 K (gdzie parametry zasilania i powrotu to np. 35/30°C), nominalny przepływ objętościowy wynosi dokładnie 1,98 m³/h (czyli dokładnie 1977,6 litrów na godzinę ciągłego przepływu).</p>
        
        <div class="rk-flow-math">
            Q = P / (1,163 × ΔT)
        </div>

        <ul class="rk-flow-list">
            <li><strong>Q</strong> – przepływ objętościowy wody w instalacji płaszczyznowej [m³/h]</li>
            <li><strong>P</strong> – <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne</a> podłogówki wyznaczone z bilansu OZC [kW]</li>
            <li><strong>1,163</strong> – stała przeliczeniowa uwzględniająca gęstość wody (ok. 1000 kg/m³) oraz ciepło właściwe</li>
        </ul>

        <p>Rozwijając to zagadnienie z perspektywy inżynierskiej, stała ta wynika bezpośrednio z zamiany jednostek energii z dżuli na kilowatogodziny oraz masy na metry sześcienne. Przepływ ten musi być dystrybuowany w taki sposób, aby prędkość wody w poszczególnych pętlach nie spadła poniżej prędkości krytycznej umożliwiającej samoczynne odpowietrzanie układu (tj. minimum 0,25 m/s). Jeśli prędkość będzie mniejsza, pęcherze powietrza utkną w najwyższych punktach jastrychu, trwale odcinając emisję ciepła.</p>

        <h3>Konsekwencje błędnego wyznaczenia przepływu Q</h3>
        <p>Zaniżenie parametru powoduje, że woda wychładza się zbyt szybko w początkowych metrach pętli grzewczej. Efektem jest tzw. „zimna podłoga” na powrocie i głębokie niedogrzanie pomieszczeń oddalonych od rozdzielacza. Z kolei zawyżenie przepływu zmusza pompę do pracy na najwyższych biegach charakterystyki, co podnosi zużycie energii elektrycznej i generuje <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">uciążliwy szum na rotametrach</a> wskutek przekroczenia prędkości krytycznej (v > 0,5 m/s). Pętla hydrauliczna traci wówczas zdolność do laminarnego przepływu.</p>
    </div>

    <div class="rk-flow-calc-area">
        <h3>Symulacja Wydajności Pompy (Q)</h3>
        
        <div class="rk-flow-grid">
            <div class="rk-flow-inputs">
                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-title">Zapotrzebowanie (P)</span>
                        <span class="rk-slider-val"><span id="rk-val-power">10.0</span> kW</span>
                    </div>
                    <input type="range" id="rk-slider-power" class="rk-flow-range" min="4" max="25" step="0.5" value="10">
                </div>

                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-title">Spadek temp. (ΔT)</span>
                        <span class="rk-slider-val"><span id="rk-val-dt">5</span> K</span>
                    </div>
                    <input type="range" id="rk-slider-dt" class="rk-flow-range" min="3" max="10" step="1" value="5">
                </div>
            </div>

            <div class="rk-flow-result rk-state-optimal" id="rk-result-box">
                <div class="rk-result-label">Wymagany przepływ masowy Q</div>
                <div class="rk-result-value" id="rk-flow-output">1.72 <span class="rk-result-unit">m³/h</span></div>
                <div class="rk-result-status" id="rk-flow-status">Optymalny punkt pracy dla pompy domowej</div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var powerSlider = document.getElementById('rk-slider-power');
    var dtSlider = document.getElementById('rk-slider-dt');
    var valPower = document.getElementById('rk-val-power');
    var valDt = document.getElementById('rk-val-dt');
    var flowOutput = document.getElementById('rk-flow-output');
    var resultBox = document.getElementById('rk-result-box');
    var statusText = document.getElementById('rk-flow-status');

    function calculateFlow() {
        var p = parseFloat(powerSlider.value);
        var dt = parseInt(dtSlider.value);
        
        valPower.textContent = p.toFixed(1);
        valDt.textContent = dt;

        // Główny wzór inżynierski
        var q = p / (1.163 * dt);
        flowOutput.innerHTML = q.toFixed(2) + ' <span class="rk-result-unit">m³/h</span>';

        // Czyszczenie klas
        resultBox.classList.remove('rk-state-optimal');
        resultBox.classList.remove('rk-state-warning');
        resultBox.classList.remove('rk-state-danger');

        // Logika diagnozy (bez znaków &&)
        if (q < 0.5) {
            resultBox.classList.add('rk-state-danger');
            statusText.textContent = "Ryzyko niedogrzania! Przepływ jest zbyt mały, by usunąć powietrze z rur.";
        } else if (q <= 2.5) {
            resultBox.classList.add('rk-state-optimal');
            statusText.textContent = "Optymalny przepływ dla standardowej domowej instalacji.";
        } else if (q <= 3.5) {
            resultBox.classList.add('rk-state-warning');
            statusText.textContent = "Wysoki strumień! Zadbaj o większe rury zasilające, by uniknąć szumów.";
        } else {
            resultBox.classList.add('rk-state-danger');
            statusText.textContent = "Krytyczny przepływ! Standardowa pompa domowa sobie nie poradzi.";
        }
    }

    powerSlider.addEventListener('input', calculateFlow);
    dtSlider.addEventListener('input', calculateFlow);
    calculateFlow(); // Inicjalizacja
});
</script>



<style>
:root {
    --rk-head-dark: #0f172a;
    --rk-head-blue: #0284c7;
    --rk-head-light: #f0f9ff;
    --rk-head-green: #10b981;
    --rk-head-green-light: #f0fdf4;
    --rk-head-yellow: #eab308;
    --rk-head-yellow-light: #fefce8;
    --rk-head-red: #ef4444;
    --rk-head-red-light: #fef2f2;
    --rk-head-border: #e2e8f0;
    --rk-head-bg: #ffffff;
    --rk-head-text: #475569;
}

.rk-head-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-head-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-head-blue);
    overflow: hidden;
}

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

.rk-head-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    line-height: 1.3;
}

.rk-head-icon {
    width: 32px;
    height: 32px;
    color: #38bdf8;
    flex-shrink: 0;
    margin-top: 2px;
}

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

/* Treść tekstowa */
.rk-head-content {
    padding: 35px 45px 20px;
    background: #ffffff;
}

.rk-head-content h3 {
    margin: 0 0 15px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-head-content p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-head-text);
    margin: 0 0 20px 0;
}

/* Wzór Matematyczny HTML */
.rk-math-panel {
    background: var(--rk-head-light);
    padding: 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-head-blue);
    margin-bottom: 25px;
    text-align: center;
    font-family: 'Courier New', Courier, monospace;
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-head-dark);
    letter-spacing: 0.5px;
}

.rk-math-panel span {
    color: var(--rk-head-blue);
}

/* Interaktywny Symulator */
.rk-head-interactive {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-head-border);
}

.rk-head-interactive h3 {
    margin: 0 0 25px 0;
    font-size: 19px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-sim-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

/* Kontrolki Suwaka */
.rk-slider-box {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-head-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

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

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-head-text);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-head-blue);
}

.rk-range-input {
    width: 100%;
    accent-color: var(--rk-head-blue);
    cursor: pointer;
    height: 8px;
    border-radius: 4px;
}

/* Panel Wynikowy */
.rk-result-box {
    padding: 25px;
    border-radius: 16px;
    border: 2px solid var(--rk-head-border);
    background: #ffffff;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-title {
    font-size: 18px;
    font-weight: 900;
    margin: 0 0 15px 0;
    transition: color 0.3s;
}

.rk-result-metrics {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 15px;
}

.rk-metric-row {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    color: var(--rk-head-text);
    font-weight: 600;
    padding-bottom: 8px;
    border-bottom: 1px dashed var(--rk-head-border);
}

.rk-metric-row:last-child {
    border-bottom: none;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-head-dark);
}

.rk-result-desc {
    font-size: 13px;
    line-height: 1.5;
    margin: 0;
    font-weight: 600;
}

/* Stany Wizualne */
.rk-state-safe {
    border-color: var(--rk-head-green);
    background: var(--rk-head-green-light);
}
.rk-state-safe .rk-result-title { color: #059669; }
.rk-state-safe .rk-result-desc { color: #047857; }

.rk-state-warn {
    border-color: var(--rk-head-yellow);
    background: var(--rk-head-yellow-light);
}
.rk-state-warn .rk-result-title { color: #d97706; }
.rk-state-warn .rk-result-desc { color: #b45309; }

.rk-state-danger {
    border-color: var(--rk-head-red);
    background: var(--rk-head-red-light);
}
.rk-state-danger .rk-result-title { color: #dc2626; }
.rk-state-danger .rk-result-desc { color: #b91c1c; }

@media (max-width: 768px) {
    .rk-head-header, .rk-head-content, .rk-head-interactive { padding: 25px 20px; }
    .rk-sim-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-math-panel { font-size: 14px; padding: 15px; }
}
</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-podnoszenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak wyznaczyć wysokość podnoszenia pompy dla najdłuższej pętli podłogówki?",
    "description": "Fizyka strat ciśnienia w instalacji podłogowej. Wyjaśniamy jak długość pętli wpływa na opory miejscowe i dlaczego zjawisko króla hydraulicznego niszczy pompy.",
    "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-podnoszenie",
    "name": "Tabela Oporów Hydraulicznych Pętli PEX 16mm 2026",
    "description": "Zestawienie straty ciśnienia wyrażonej w Pa/m oraz wysokości podnoszenia w zależności od długości ułożonej pętli ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli ogrzewania podłogowego",
      "opór jednostkowy rury pex 16",
      "wysokość podnoszenia pompy obiegowej",
      "król hydrauliczny w podłogówce",
      "straty ciśnienia w instalacji CO"
    ],
    "measurementTechnique": "Kalkulacja strat liniowych (150 Pa/m dla 2.0 l/min) powiększona o wykładniczy wzrost oporów przy pętlach przekraczających normę PN-EN 1264-4.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Normatywna długość pętli 16mm: max 100-120m (strata rzędu 1.65m H2O).",
        "Przekroczenie (150m): Generuje opory powyżej 32 kPa (3.2m H2O) wymuszając instalację większej pompy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-podnoszenie",
    "name": "Symulator Oporów Hydraulicznych Pętli",
    "description": "Narzędzie pozwalające na dynamiczne modelowanie całkowitej wysokości podnoszenia pompy (H) poprzez modyfikację długości najdłuższej pętli grzewczej.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-head-container">
    <div class="rk-head-header">
        <svg class="rk-head-icon" 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>
        <h2>Jak wyznaczyć wysokość podnoszenia pompy dla najdłuższej pętli podłogówki?</h2>
    </div>

    

    <div class="rk-head-content">
        <p>Wysokość podnoszenia pompy obiegowej dla standardowej instalacji płaszczyznowej wynosi zazwyczaj od 3,5 m do 5,5 m słupa wody (co odpowiada 35–55 kPa) i jest determinowana wyłącznie przez sumaryczne opory hydrauliczne najdłuższej, najbardziej obciążonej pętli grzewczej, a nie przez fizyczną wysokość budynku. Zgodnie z normą PN-EN 1264-4, maksymalna długość pojedynczej pętli z rury o średnicy 16 mm nie powinna przekraczać 100–120 m.</p>

        <h3>Fizyka strat ciśnienia: liniowe i miejscowe opory instalacji</h3>
        <p>Wysokość podnoszenia (H) to zdolność pompy do pokonania oporów tarcia strumienia cieczy o wewnętrzne ścianki rur (straty liniowe) oraz oporów na zmianach kierunku, zwężkach, kolankach i zaworach regulacyjnych (straty miejscowe). Szacowanie tego parametru metodą „na oko” to prosty przepis na katastrofę. Przyjmując powszechnie stosowaną rurę PERT/AL/PEX 16x2 mm przy przepływie rzędu 2,0 l/min, liniowa strata ciśnienia wynosi średnio 150 Pa/m (czyli 0,015 m H₂O/m).</p>
        
        <p>Dla optymalnej pętli o długości 110 m czysta strata liniowa wynosi:</p>

        <div class="rk-math-panel">
            Δp<sub>lin</sub> = 110 m × 150 Pa/m = 16 500 Pa = <span>1,65 m H₂O</span>
        </div>

        <p>Do tej wartości należy doliczyć opory miejscowe: kolana ułożenia ślimakowego, podejścia do szafki, a także opór samego rozdzielacza z rotametrami (ok. 15–20 kPa czyli 1,5–2,0 m) oraz zaworów mieszających. Kalkulator inżynierski zawsze uwzględnia również współczynnik starzenia rur.</p>

        <h3>Wpływ długości pętli na wymiarowanie hydrauliczne</h3>
        <p>Jeśli instalator bezmyślnie ułożył pętlę o długości 150 m, strata ciśnienia na samej rurze wzrasta drastycznie ze względu na wykładniczy wzrost oporów. Taka <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">za długa pętla podłogówki</a> staje się tzw. „królem hydraulicznym” całego układu – dławi przepływ i zmusza inwestora do zakupu pompy o wysokości podnoszenia 8 m, rujnując autoadaptacyjne tryby pracy energooszczędnych pomp.</p>
    </div>

    <div class="rk-head-interactive">
        <h3>Symulator Oporów Hydraulicznych Pętli (H)</h3>
        
        <div class="rk-sim-grid">
            <div class="rk-slider-box">
                <div class="rk-slider-info">
                    <span class="rk-slider-label">Długość pętli (PEX 16mm):</span>
                    <span class="rk-slider-value"><span id="rk-loop-val">100</span> m</span>
                </div>
                <input type="range" id="rk-loop-slider" class="rk-range-input" min="60" max="160" step="5" value="100">
            </div>

            <div class="rk-result-box rk-state-safe" id="rk-result-panel">
                <h4 class="rk-result-title" id="rk-result-title">Instalacja Bezpieczna</h4>
                
                <div class="rk-result-metrics">
                    <div class="rk-metric-row">
                        <span>Strata liniowa rury:</span>
                        <span id="rk-loss-lin">1.50 m H₂O</span>
                    </div>
                    <div class="rk-metric-row">
                        <span>Opory rozdzielacza / zaworów:</span>
                        <span>2.00 m H₂O</span>
                    </div>
                    <div class="rk-metric-row">
                        <span>Wymagane podnoszenie pompy (H):</span>
                        <span id="rk-loss-total" style="color: var(--rk-head-blue);">3.50 m</span>
                    </div>
                </div>
                
                <p class="rk-result-desc" id="rk-result-desc">Pętla ułożona zgodnie ze sztuką. Pozwala na zastosowanie standardowej pompy 25-40 lub 25-60, pracującej w optymalnym zakresie sprawności.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rk-loop-slider');
    var displayVal = document.getElementById('rk-loop-val');
    var dispLin = document.getElementById('rk-loss-lin');
    var dispTotal = document.getElementById('rk-loss-total');
    var panel = document.getElementById('rk-result-panel');
    var title = document.getElementById('rk-result-title');
    var desc = document.getElementById('rk-result-desc');

    function updateHydraulics() {
        var length = parseInt(slider.value);
        displayVal.textContent = length;

        // Podstawowy opór liniowy: 0.015 m/m
        var baseLoss = length * 0.015;
        
        // Symulacja zjawiska "króla hydraulicznego" (wykładniczy wzrost przy długich pętlach z uwagi na konieczność tłoczenia większej masy)
        // Bez operatorów &&
        if (length > 110) {
            var over = length - 110;
            var penalty = (over * over) * 0.0006;
            baseLoss = baseLoss + penalty;
        }

        var totalHead = baseLoss + 2.0; // + 2.0m na rozdzielacz

        dispLin.textContent = baseLoss.toFixed(2) + " m H₂O";
        dispTotal.textContent = totalHead.toFixed(2) + " m";

        // Reset klas
        panel.classList.remove('rk-state-safe');
        panel.classList.remove('rk-state-warn');
        panel.classList.remove('rk-state-danger');

        // Logika przypisania stanów bez użycia &&
        if (length <= 100) {
            panel.classList.add('rk-state-safe');
            title.textContent = "Instalacja Bezpieczna";
            desc.textContent = "Pętla ułożona zgodnie ze sztuką. Pozwala na zastosowanie standardowej pompy 25-40 lub 25-60, pracującej w optymalnym zakresie sprawności.";
        } else if (length <= 120) {
            panel.classList.add('rk-state-warn');
            title.textContent = "Wartość Graniczna";
            desc.textContent = "Pętla zbliża się do limitów normy PN-EN 1264. Wymaga starannego zrównoważenia na przepływomierzach, aby nie zakłócić pracy krótszych obiegów.";
        } else {
            panel.classList.add('rk-state-danger');
            title.textContent = "Król Hydrauliczny!";
            desc.textContent = "Krytyczny opór! Taka pętla zadławi układ. Konieczny będzie montaż przewymiarowanej pompy 25-80, co drastycznie podniesie zużycie prądu i wygeneruje hałas.";
        }
    }

    slider.addEventListener('input', updateHydraulics);
    updateHydraulics(); // Inicjalizacja
});
</script>



<style>
:root {
    --rk-pipe-dark: #0f172a;
    --rk-pipe-blue: #0284c7;
    --rk-pipe-light: #f0f9ff;
    --rk-pipe-red: #ef4444;
    --rk-pipe-red-light: #fef2f2;
    --rk-pipe-green: #10b981;
    --rk-pipe-green-light: #f0fdf4;
    --rk-pipe-border: #e2e8f0;
    --rk-pipe-bg: #ffffff;
    --rk-pipe-text: #475569;
}

.rk-pipe-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pipe-bg);
    border-radius: 24px;
    box-shadow: 0 15px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-pipe-blue);
    overflow: hidden;
}

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

.rk-pipe-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-pipe-icon {
    width: 34px;
    height: 34px;
    color: #38bdf8;
    flex-shrink: 0;
}

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

.rk-pipe-header a {
    color: #7dd3fc;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Treść techniczna */
.rk-pipe-body {
    padding: 35px 45px 25px;
    background: #ffffff;
}

.rk-pipe-body h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-pipe-dark);
}

.rk-pipe-body p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-pipe-text);
    margin: 0 0 20px 0;
}

/* Formatowanie inżynierskiego wzoru bez LaTeX */
.rk-math-box {
    background: var(--rk-pipe-light);
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-pipe-blue);
    margin-bottom: 25px;
    font-family: 'Courier New', Courier, monospace;
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-pipe-dark);
    text-align: center;
}

/* Symulator interaktywny */
.rk-sim-area {
    background: #f8fafc;
    padding: 35px 45px;
    border-top: 1px solid var(--rk-pipe-border);
}

.rk-sim-controls {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-pipe-btn {
    background: #ffffff;
    border: 2px solid var(--rk-pipe-border);
    padding: 20px;
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-pipe-btn:hover {
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-pipe-btn h4 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-pipe-dark);
}

.rk-pipe-btn p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-pipe-text);
    font-weight: 600;
}

/* Stany Aktywne Przycisków */
.rk-btn-danger.rk-active {
    border-color: var(--rk-pipe-red);
    background: var(--rk-pipe-red-light);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.2);
}

.rk-btn-safe.rk-active {
    border-color: var(--rk-pipe-green);
    background: var(--rk-pipe-green-light);
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.2);
}

/* Ekran Wyniku Wizualnego */
.rk-sim-display {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-pipe-border);
    padding: 30px;
    display: flex;
    align-items: center;
    gap: 30px;
    transition: all 0.4s ease;
}

.rk-pipe-visual {
    width: 120px;
    height: 120px;
    flex-shrink: 0;
    position: relative;
}

/* Animacja SVG */
.rk-flow-path {
    stroke-dasharray: 15;
    transition: stroke 0.4s ease;
}

.rk-flow-fast { animation: flowAnim 0.4s linear infinite; stroke: var(--rk-pipe-red); }
.rk-flow-slow { animation: flowAnim 1.5s linear infinite; stroke: var(--rk-pipe-green); }

@keyframes flowAnim {
    from { stroke-dashoffset: 30; }
    to { stroke-dashoffset: 0; }
}

.rk-sim-data h4 {
    margin: 0 0 10px 0;
    font-size: 22px;
    font-weight: 900;
}

.rk-sim-data p {
    margin: 0 0 15px 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-pipe-text);
}

.rk-data-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    border-radius: 8px;
    font-weight: 800;
    font-size: 16px;
}

/* Specyficzne stany panelu */
.rk-state-danger { border-color: var(--rk-pipe-red); }
.rk-state-danger h4 { color: var(--rk-pipe-red); }
.rk-state-danger .rk-data-badge { background: var(--rk-pipe-red); color: #ffffff; }

.rk-state-safe { border-color: var(--rk-pipe-green); }
.rk-state-safe h4 { color: var(--rk-pipe-green); }
.rk-state-safe .rk-data-badge { background: var(--rk-pipe-green); color: #ffffff; }

@media (max-width: 768px) {
    .rk-pipe-header, .rk-pipe-body, .rk-sim-area { padding: 25px 20px; }
    .rk-sim-controls { grid-template-columns: 1fr; gap: 15px; }
    .rk-sim-display { flex-direction: column; text-align: center; gap: 20px; padding: 25px 20px; }
    .rk-pipe-visual { width: 100px; height: 100px; }
}
</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-srednica",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jaka średnica rury zasilającej rozdzielacz zapewnia prawidłowy przepływ?",
    "description": "Szczegółowe obliczenia hydrauliczne dla pionu rozdzielacza. Zobacz drastyczne różnice w prędkości przepływu między rurą PEX 25 a PEX 32.",
    "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-srednica",
    "name": "Parametry Hydrauliczne Pionów Zasilających Rozdzielacze 2026",
    "description": "Baza danych określająca dopuszczalne prędkości przepływu dla głównych linii zasilających układy płaszczyznowe w oparciu o normę DIN 1988.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jaka średnica rury zasilającej rozdzielacz",
      "rura PEX 32 czy 25 do rozdzielacza",
      "prędkość przepływu w rurach CO",
      "szumy w instalacji centralnego ogrzewania",
      "kawitacja w pompie obiegowej"
    ],
    "measurementTechnique": "Przekształcenie wzoru na pole przekroju koła i objętość cylindra do analizy krytycznych wartości pola strumienia (v = 4*Q / pi*d^2).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "PEX 25x2.5 (dn 20mm) - Prędkość 1.52 m/s przy 12kW (Krytyczna kawitacja).",
        "PEX 32x3.0 (dn 26mm) - Prędkość 0.90 m/s przy 12kW (Stabilny przepływ)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-srednica",
    "name": "Symulator Prędkości Przepływu Pionu",
    "description": "Interaktywna aplikacja edukacyjna symulująca wpływ zmiany średnicy rury głównej na prędkość czynnika roboczego i ryzyko uszkodzenia pompy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, JavaScript and CSS3 SVG Animations",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pipe-container">
    <div class="rk-pipe-header">
        <h2>
            <svg class="rk-pipe-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <path d="M2 12h4l3-9 5 18 3-9h5"></path>
            </svg>
            Jaka średnica rury zasilającej rozdzielacz zapewnia prawidłowy przepływ?
        </h2>
        <p>Średnica rury zasilającej <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a> (pion zasilający) dla instalacji o łącznej mocy cieplnej do 15 kW musi mieć średnicę wewnętrzną wynoszącą minimum <strong>26 mm</strong> (co odpowiada rurze PEX 32x3 mm lub miedzi DN28), aby prędkość przepływu cieczy nie przekraczała bezpiecznej granicy <strong>0,8 m/s</strong> zgodnie z wytycznymi normy DIN 1988.</p>
    </div>

    <div class="rk-pipe-body">
        <h3>Obliczenia hydrauliczne dla pionu rozdzielacza</h3>
        <p>Zastosowanie zbyt małego przekroju drastycznie zwiększa opory jednostkowe i odcina rozdzielacz od wymaganego strumienia medium grzewczego. Przeanalizujmy konkretny przypadek: rozdzielacz obsługuje 10 pętli, łączna moc sekcji wynosi 12 kW, przy różnicy temperatur ΔT = 6 K. Wymagany przepływ sumaryczny to <strong>1,72 m³/h (0,000477 m³/s)</strong>.</p>
        
        <div class="rk-math-box">
            V = (4 × Q<sub>sek</sub>) / (π × d<sub>wew</sub>²)
        </div>
        
        <p>Gdzie <strong>V</strong> to prędkość przepływu, <strong>Q<sub>sek</sub></strong> to przepływ sumaryczny sekcji, a <strong>d<sub>wew</sub></strong> to rzeczywista średnica wewnętrzna rury. Zmiana rury zasilającej z 32 mm na 25 mm redukuje pole przekroju poprzecznego o ponad 40%, zmuszając ciecz do gwałtownego przyspieszenia.</p>
    </div>

    <div class="rk-sim-area">
        <h3 style="margin: 0 0 20px 0; font-size: 18px; color: var(--rk-pipe-dark);">Symulacja prędkości przepływu dla 12 kW:</h3>
        
        <div class="rk-sim-controls">
            <button class="rk-pipe-btn rk-btn-danger rk-active" id="btn-pipe-25">
                <h4>Wybierz: PEX 25x2.5</h4>
                <p>Średnica wewnętrzna 20 mm</p>
            </button>
            <button class="rk-pipe-btn rk-btn-safe" id="btn-pipe-32">
                <h4>Wybierz: PEX 32x3.0</h4>
                <p>Średnica wewnętrzna 26 mm</p>
            </button>
        </div>

        <div class="rk-sim-display rk-state-danger" id="pipe-display">
            <div class="rk-pipe-visual">
                <svg viewBox="0 0 100 100" width="100%" height="100%" fill="none" stroke-width="8" stroke-linecap="round">
                    <path d="M10 50 L90 50" stroke="#e2e8f0" stroke-width="24"/>
                    <path d="M10 50 L90 50" stroke="#f8fafc" stroke-width="16"/>
                    <path id="pipe-flow-anim" class="rk-flow-path rk-flow-fast" d="M10 50 L90 50" stroke-width="8"/>
                </svg>
            </div>
            <div class="rk-sim-data">
                <h4 id="pipe-result-title">Krytyczne przekroczenie (Kawitacja)</h4>
                <p id="pipe-result-desc">Wysoka prędkość medium generuje gigantyczne straty ciśnienia (ponad 800 Pa/m). Wywołuje to uciążliwe szumy w ścianach i generuje opór, którego przeciętna pompa obiegowa nie jest w stanie pokonać. Skutek: niedogrzane skrajne sekcje.</p>
                <div class="rk-data-badge" id="pipe-result-val">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><polyline points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polyline></svg>
                    Prędkość: 1.52 m/s
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btn25 = document.getElementById('btn-pipe-25');
    var btn32 = document.getElementById('btn-pipe-32');
    var displayPanel = document.getElementById('pipe-display');
    var animPath = document.getElementById('pipe-flow-anim');
    var title = document.getElementById('pipe-result-title');
    var desc = document.getElementById('pipe-result-desc');
    var valBadge = document.getElementById('pipe-result-val');

    function setPipe25() {
        // Zmiana klas przycisków
        btn25.classList.add('rk-active');
        btn32.classList.remove('rk-active');

        // Zmiana stylów panelu głównego
        displayPanel.classList.remove('rk-state-safe');
        displayPanel.classList.add('rk-state-danger');

        // Zmiana animacji SVG
        animPath.classList.remove('rk-flow-slow');
        animPath.classList.add('rk-flow-fast');

        // Aktualizacja tekstów
        title.textContent = 'Krytyczne przekroczenie (Kawitacja)';
        desc.textContent = 'Wysoka prędkość medium generuje gigantyczne straty ciśnienia (ponad 800 Pa/m). Wywołuje to uciążliwe szumy w ścianach i generuje opór, którego przeciętna pompa obiegowa nie jest w stanie pokonać. Skutek: niedogrzane skrajne sekcje.';
        valBadge.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><polyline points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polyline></svg> Prędkość: 1.52 m/s';
    }

    function setPipe32() {
        // Zmiana klas przycisków
        btn32.classList.add('rk-active');
        btn25.classList.remove('rk-active');

        // Zmiana stylów panelu głównego
        displayPanel.classList.remove('rk-state-danger');
        displayPanel.classList.add('rk-state-safe');

        // Zmiana animacji SVG
        animPath.classList.remove('rk-flow-fast');
        animPath.classList.add('rk-flow-slow');

        // Aktualizacja tekstów
        title.textContent = 'Stabilny, cichy przepływ (Optymalny)';
        desc.innerHTML = 'Prędkość spada do akceptowalnego poziomu, a liniowa strata ciśnienia maleje do niecałych 180 Pa/m. To gwarantuje stabilną i cichą dystrybucję energii do wszystkich rotametrów. Wybór odpowiedniej <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rury PEX</a> ratuje całą hydraulikę.';
        valBadge.innerHTML = '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="20" height="20"><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> Prędkość: 0.90 m/s';
    }

    // Bezpieczne nasłuchiwacze bez operatorów logicznych
    btn25.addEventListener('click', function() {
        var isAlreadyActive = btn25.classList.contains('rk-active');
        if (isAlreadyActive === false) {
            setPipe25();
        }
    });

    btn32.addEventListener('click', function() {
        var isAlreadyActive = btn32.classList.contains('rk-active');
        if (isAlreadyActive === false) {
            setPipe32();
        }
    });
});
</script>



<style>
:root {
    --rk-tab-dark: #0f172a;
    --rk-tab-blue: #0284c7;
    --rk-tab-light: #f0f9ff;
    --rk-tab-border: #e2e8f0;
    --rk-tab-bg: #ffffff;
    --rk-tab-text: #475569;
    --rk-tab-highlight: #38bdf8;
    --rk-tab-green: #10b981;
}

.rk-tab-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-tab-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-tab-border);
    overflow: hidden;
}

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

.rk-tab-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-tab-header-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-tab-highlight);
    flex-shrink: 0;
}

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

/* Interfejs Symulatora */
.rk-tab-interactive {
    padding: 30px 45px;
    background: #f8fafc;
    border-bottom: 1px solid var(--rk-tab-border);
}

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

.rk-tab-slider-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.rk-tab-slider-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-tab-dark);
}

.rk-tab-slider-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-tab-blue);
}

.rk-slider-input {
    width: 100%;
    accent-color: var(--rk-tab-blue);
    cursor: pointer;
}

/* Karty Pomp (Zamiast standardowej tabeli) */
.rk-tab-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    padding: 35px 45px;
    background: #ffffff;
}

.rk-pump-card {
    background: #ffffff;
    border: 2px solid var(--rk-tab-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
}

.rk-pump-card.rk-active-card {
    border-color: var(--rk-tab-blue);
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.25);
    transform: translateY(-5px);
}

.rk-pump-card.rk-active-card::before {
    content: 'ZALECANA';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    background: var(--rk-tab-blue);
    color: #ffffff;
    text-align: center;
    font-size: 12px;
    font-weight: 900;
    padding: 4px 0;
    letter-spacing: 1px;
}

.rk-pump-header {
    padding: 30px 20px 20px;
    text-align: center;
    border-bottom: 1px solid var(--rk-tab-border);
    background: #f8fafc;
}

.rk-pump-header h3 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-tab-dark);
}

.rk-pump-header span {
    display: block;
    font-size: 13px;
    color: var(--rk-tab-text);
    margin-top: 5px;
    font-weight: 600;
}

.rk-param-list {
    list-style: none;
    padding: 0;
    margin: 0;
}

.rk-param-item {
    display: flex;
    flex-direction: column;
    padding: 15px 20px;
    border-bottom: 1px solid #f1f5f9;
}

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

.rk-param-label {
    font-size: 11px;
    text-transform: uppercase;
    color: #94a3b8;
    font-weight: 800;
    margin-bottom: 4px;
    letter-spacing: 0.5px;
}

.rk-param-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-tab-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-param-value svg {
    width: 16px;
    height: 16px;
    color: var(--rk-tab-blue);
    flex-shrink: 0;
}

.rk-pump-price {
    padding: 20px;
    background: #f8fafc;
    text-align: center;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-tab-green);
    border-top: 1px solid var(--rk-tab-border);
}

/* Wnioski i kontekst */
.rk-tab-summary {
    padding: 30px 45px;
    background: #f0f9ff;
    border-top: 1px solid #bae6fd;
}

.rk-tab-summary p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #0369a1;
}

.rk-tab-summary a {
    color: #0284c7;
    font-weight: 800;
    text-decoration: underline;
}

/* RWD - Akordeonowy stack dla mobile */
@media (max-width: 768px) {
    .rk-tab-header, .rk-tab-interactive, .rk-tab-grid, .rk-tab-summary { padding: 25px 20px; }
    .rk-tab-grid { grid-template-columns: 1fr; gap: 15px; }
    
    .rk-pump-card {
        border-width: 1px;
    }
    
    .rk-pump-card.rk-active-card {
        transform: translateY(0);
        border-width: 2px;
    }
    
    /* Mobilne zwijanie parametrów - ujawniają się tylko w aktywnej karcie */
    .rk-param-list, .rk-pump-price {
        display: none;
    }
    
    .rk-pump-card.rk-active-card .rk-param-list,
    .rk-pump-card.rk-active-card .rk-pump-price {
        display: block;
    }
    
    .rk-pump-header { 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-tabela",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Tabela porównawcza parametrów technicznych pomp obiegowych",
    "description": "Zestawienie techniczne parametrów i cen najpopularniejszych elektronicznych pomp obiegowych ErP: 25-40, 25-60 oraz 25-80 dedykowanych do instalacji podłogowych.",
    "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-tabela",
    "name": "Zestawienie Parametrów Pomp Obiegowych 2026",
    "description": "Baza danych określająca specyfikację hydrauliczną i elektryczną (wysokość podnoszenia, moc W, przepływ, cena 2026) dla standardowych pomp instalacyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa klasy 25-40 parametry",
      "wysokość podnoszenia pompy 25-60",
      "pobór mocy pompy obiegowej do podłogówki",
      "cennik pomp do podłogówki 2026",
      "maksymalny przepływ wody w podłogówce"
    ],
    "measurementTechnique": "Kompilacja i porównanie deklaracji właściwości użytkowych (EEI ≤ 0,20) producentów pomp elektronicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "25-40: 4m, 2.4 m3/h, 3-22W, do 100m2",
        "25-60: 6m, 3.4 m3/h, 3-40W, 100-220m2",
        "25-80: 8m, 4.5 m3/h, 4-60W, >220m2"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-tabela",
    "name": "Interaktywna Porównywarka Pomp Obiegowych",
    "description": "Moduł aplikacyjny pozwalający na dopasowanie i wizualizację parametrów typoszeregu pomp na podstawie suwaka metrażu budynku.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tab-container">
    <div class="rk-tab-header">
        <h2>
            <svg class="rk-tab-header-icon" 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>
            Tabela porównawcza parametrów technicznych pomp obiegowych
        </h2>
        <p>Poniższa specyfikacja przedstawia zestawienie kluczowych parametrów dla trzech najpopularniejszych typoszeregów elektronicznych pomp obiegowych (zgodnych z dyrektywą ErP, <strong>EEI ≤ 0,20</strong>) stosowanych w budownictwie jednorodzinnym.</p>
    </div>

    <div class="rk-tab-interactive">
        <div class="rk-tab-slider-wrap">
            <div class="rk-tab-slider-header">
                <span class="rk-tab-slider-title">Symulowana powierzchnia podłogówki:</span>
                <span class="rk-tab-slider-val"><span id="rk-tab-area-val">120</span> m²</span>
            </div>
            <input type="range" id="rk-tab-area-slider" class="rk-slider-input" min="50" max="350" step="10" value="120">
        </div>
    </div>

    <div class="rk-tab-grid">
        
        <div class="rk-pump-card" id="rk-pump-40">
            <div class="rk-pump-header">
                <h3>Klasa 25-40</h3>
                <span>Małe układy (np. 4m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 4,0 m (40 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 2,4 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 3 W – 22 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> Do 100 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">450 – 600 PLN</div>
        </div>

        <div class="rk-pump-card rk-active-card" id="rk-pump-60">
            <div class="rk-pump-header">
                <h3>Klasa 25-60</h3>
                <span>Standardowe domy (np. 6m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 6,0 m (60 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 3,4 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 3 W – 40 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> 100 m² – 220 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">650 – 850 PLN</div>
        </div>

        <div class="rk-pump-card" id="rk-pump-80">
            <div class="rk-pump-header">
                <h3>Klasa 25-80</h3>
                <span>Rozbudowane układy (np. 8m słupa wody)</span>
            </div>
            <ul class="rk-param-list">
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. wysokość podnoszenia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 19V5M5 12l7-7 7 7"/></svg> 8,0 m (80 kPa)</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Max. przepływ objętościowy</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M22 12h-4l-3 9L9 3l-3 9H2"/></svg> 4,5 m³/h</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Pobór mocy (Min-Max)</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg> 4 W – 60 W</span>
                </li>
                <li class="rk-param-item">
                    <span class="rk-param-label">Sugerowana powierzchnia</span>
                    <span class="rk-param-value"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"/></svg> Powyżej 220 m²</span>
                </li>
            </ul>
            <div class="rk-pump-price">1100 – 1400 PLN</div>
        </div>

    </div>

    <div class="rk-tab-summary">
        <p>
            Analizując powyższe parametry z tabeli, widać wyraźnie, że wybór odpowiedniego modelu musi opierać się na precyzyjnych obliczeniach dla danego budynku, a nie na zasadzie „im większa, tym lepsza”. Praca przewymiarowanej <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy klasy 25-80</a> w małym domku drastycznie podnosi roczny <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszt eksploatacji instalacji</a> ze względu na wyższe zużycie prądu [W] oraz generuje uciążliwe szumy. Z kolei zbyt słaba pompa 25-40 w budynku piętrowym nie poradzi sobie z oporami długich pętli hydraulicznych, pozostawiając posadzkę chłodną.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var slider = document.getElementById('rk-tab-area-slider');
    var valDisplay = document.getElementById('rk-tab-area-val');
    var p40 = document.getElementById('rk-pump-40');
    var p60 = document.getElementById('rk-pump-60');
    var p80 = document.getElementById('rk-pump-80');

    function updateHighlight() {
        var area = parseInt(slider.value);
        valDisplay.textContent = area;

        // Bezpieczny reset klas
        p40.classList.remove('rk-active-card');
        p60.classList.remove('rk-active-card');
        p80.classList.remove('rk-active-card');

        // Logika przypisania na podstawie powierzchni (bez użycia &&)
        if (area <= 100) {
            p40.classList.add('rk-active-card');
        } else if (area <= 220) {
            p60.classList.add('rk-active-card');
        } else {
            p80.classList.add('rk-active-card');
        }
    }

    slider.addEventListener('input', updateHighlight);
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-blue-light: #f0f9ff;
    --rk-calc-border: #e2e8f0;
    --rk-calc-bg: #ffffff;
    --rk-calc-text: #475569;
    --rk-calc-green: #10b981;
    --rk-calc-red: #ef4444;
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-calc-border);
    overflow: hidden;
}

/* Nagłówek Kalkulatora */
.rk-calc-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #1e293b 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-calc-blue);
}

.rk-calc-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 15px;
}

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

.rk-calc-icon-main {
    width: 32px;
    height: 32px;
    color: #38bdf8;
}

/* Sekcja Wprowadzania Danych */
.rk-calc-body {
    padding: 35px 45px;
    background: #f8fafc;
}

.rk-calc-body h3 {
    margin: 0 0 20px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
}

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

.rk-input-group {
    display: flex;
    flex-direction: column;
}

.rk-input-group label {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-calc-text);
    margin-bottom: 8px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-input-group input, 
.rk-input-group select {
    padding: 14px 16px;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 600;
    color: var(--rk-calc-dark);
    background: #ffffff;
    transition: border-color 0.3s, box-shadow 0.3s;
}

.rk-input-group input:focus, 
.rk-input-group select:focus {
    outline: none;
    border-color: var(--rk-calc-blue);
    box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15);
}

.rk-btn-calc {
    width: 100%;
    padding: 18px;
    background: var(--rk-calc-blue);
    color: #ffffff;
    border: none;
    border-radius: 12px;
    font-size: 18px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 10px;
}

.rk-btn-calc:hover {
    background: #0369a1;
    transform: translateY(-2px);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

/* Sekcja Wyników i Suwaków */
.rk-calc-results {
    padding: 35px 45px;
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
}

.rk-sliders-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
    margin-bottom: 30px;
}

.rk-slider-box {
    background: var(--rk-calc-blue-light);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid #bae6fd;
}

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

.rk-slider-header span {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-text);
}

.rk-slider-val {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-calc-blue);
}

.rk-range {
    width: 100%;
    accent-color: var(--rk-calc-blue);
    cursor: pointer;
}

/* Rekomendacja */
.rk-recommendation {
    padding: 20px 25px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 15px;
    font-size: 18px;
    font-weight: 800;
    transition: all 0.4s ease;
}

/* Wykres */
.rk-chart-wrapper {
    height: 450px;
    padding: 20px;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    margin: 0 45px 40px;
}

@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-body, .rk-calc-results { padding: 25px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr 1fr; }
    .rk-sliders-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-chart-wrapper { margin: 0 20px 30px; height: 350px; }
}

@media (max-width: 480px) {
    .rk-calc-grid { grid-template-columns: 1fr; }
}
</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-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kalkulator Doboru Pompy Obiegowej - Wykres i Obliczenia OZC",
    "description": "Profesjonalny kalkulator online wyznaczający punkt pracy pompy (przepływ Q, wysokość podnoszenia H) na podstawie obciążenia cieplnego i oporów hydraulicznych rur.",
    "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-kalkulator",
    "name": "Baza Parametrów Hydraulicznych i Cieplnych Ogrzewania Podłogowego 2026",
    "description": "Algorytmiczny model obliczeniowy oporów jednostkowych dla rur PEX/PERT oraz wymaganego zładu wody na podstawie OZC (Δt, zapotrzebowanie W/m2).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator pompy obiegowej",
      "obliczanie przepływu wody ogrzewanie podłogowe",
      "opory hydrauliczne rury PEX 16",
      "wykres charakterystyki pompy 25-60",
      "jak dobrać pompę do podłogówki"
    ],
    "measurementTechnique": "Wyznaczenie punktu przecięcia krzywej oporów instalacji z nomogramem wydajności pomp obiegowych (Q/H) zgodnych z dyrektywą ErP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura PEX 16 - bazowy opór szacunkowy przyjmowany w modelu: 0.015 mH2O/m",
        "Rura PEX 17 - bazowy opór szacunkowy przyjmowany w modelu: 0.013 mH2O/m",
        "Ciepło właściwe i gęstość wody przeliczone stałą 1163"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-kalkulator",
    "name": "Kalkulator Doboru Pompy Ogrzewania Płaszczyznowego",
    "description": "Interaktywny symulator pozwalający na wyznaczenie przepływu objętościowego i wysokości podnoszenia w czasie rzeczywistym z wizualizacją na wykresie krzywych pomp.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Canvas",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container">
    <div class="rk-calc-header">
        <h2>
            <svg class="rk-calc-icon-main" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">
                <rect x="2" y="3" width="20" height="14" rx="2" ry="2"></rect>
                <line x1="8" y1="21" x2="16" y2="21"></line>
                <line x1="12" y1="17" x2="12" y2="21"></line>
                <polyline points="10 7 14 10 10 13"></polyline>
            </svg>
            Kalkulator Doboru Pompy Obiegowej
        </h2>
        <p>Wprowadź precyzyjne dane projektowe lub estymowane z audytu OZC, aby wyznaczyć punkt pracy instalacji i sprawdzić go na tle rzeczywistych charakterystyk pomp.</p>
    </div>

    <div class="rk-calc-body">
        <h3>1. Parametry Instalacji Podłogowej</h3>
        <div class="rk-calc-grid">
            <div class="rk-input-group">
                <label>Powierzchnia (m²)</label>
                <input type="number" id="rk-in-area" value="120" min="10">
            </div>
            <div class="rk-input-group">
                <label>Moc cieplna (W/m²)</label>
                <input type="number" id="rk-in-load" value="60" min="10">
            </div>
            <div class="rk-input-group">
                <label>Różnica temp. ΔT (K)</label>
                <input type="number" id="rk-in-dt" value="5" min="2" max="15">
            </div>
            <div class="rk-input-group">
                <label>Ilość pętli</label>
                <input type="number" id="rk-in-loops" value="10" min="1">
            </div>
            <div class="rk-input-group">
                <label>Długość maks. pętli (m)</label>
                <input type="number" id="rk-in-avg" value="80" min="10">
            </div>
            <div class="rk-input-group">
                <label>Średnica rury zewnętrzna</label>
                <select id="rk-in-pipe">
                    <option value="16">PEX/PERT 16x2.0</option>
                    <option value="17" selected>PEX/PERT 17x2.0</option>
                    <option value="20">PEX/PERT 20x2.0</option>
                </select>
            </div>
        </div>
        <button id="rk-master-calc-btn" class="rk-btn-calc">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="24" height="24"><polygon points="5 3 19 12 5 21 5 3"></polygon></svg>
            Oblicz punkt pracy i odśwież wykres
        </button>
    </div>

    <div class="rk-calc-results">
        <h3>2. Obliczony punkt pracy i autoadaptacja</h3>
        <div class="rk-sliders-grid">
            <div class="rk-slider-box">
                <div class="rk-slider-header">
                    <span>Przepływ (Q)</span>
                    <span class="rk-slider-val"><span id="rk-disp-q">1.40</span> m³/h</span>
                </div>
                <input type="range" id="rk-slider-q" class="rk-range" min="0.1" max="4" step="0.05" value="1.40">
            </div>
            <div class="rk-slider-box">
                <div class="rk-slider-header">
                    <span>Wysokość podnoszenia (H)</span>
                    <span class="rk-slider-val"><span id="rk-disp-h">4.00</span> m</span>
                </div>
                <input type="range" id="rk-slider-h" class="rk-range" min="0.1" max="8" step="0.05" value="4.00">
            </div>
        </div>
        
        <div id="rk-rec-box" class="rk-recommendation">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="28" height="28"><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>
            <span>Rekomendowany typoszereg pompy: <span id="rk-final-pump">25-60</span></span>
        </div>
    </div>

    <div class="rk-chart-wrapper">
        <canvas id="rk-master-canvas"></canvas>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js"></script>

<script>
(function() {
    "use strict";
    let masterChart = null;
    let masterQ = 1.40;
    let masterH = 4.00;

    const pumpCurves = {
        "25-40": [{x:0,y:4}, {x:0.5,y:3.8}, {x:1,y:3.3}, {x:1.5,y:2.5}, {x:2,y:1.5}, {x:2.5,y:0.3}, {x:2.6,y:0}],
        "25-60": [{x:0,y:6}, {x:1,y:5.4}, {x:2,y:4}, {x:2.5,y:3.2}, {x:3,y:2.2}, {x:3.5,y:0.8}, {x:3.8,y:0}],
        "25-80": [{x:0,y:8}, {x:1,y:7.4}, {x:2,y:6.2}, {x:3,y:4.4}, {x:3.5,y:3.2}, {x:4,y:1.8}]
    };

    function getInstallationData(q, h) {
        let pts = [];
        let k = h / (q * q);
        for (let i = 0; i <= 4.1; i += 0.1) { pts.push({x: i, y: k * i * i}); }
        return pts;
    }

    function isPointBelowCurve(q, h, curve) {
        let maxQ = curve[curve.length - 1].x;
        if (q > maxQ) {
            return false;
        }
        
        for (let i = 0; i < curve.length - 1; i++) {
            let p1 = curve[i];
            let p2 = curve[i+1];
            
            let isInsideRange = false;
            if (q >= p1.x) {
                if (q <= p2.x) {
                    isInsideRange = true;
                }
            }
            
            if (isInsideRange) {
                let ratio = (q - p1.x) / (p2.x - p1.x);
                let maxHAtQ = p1.y + ratio * (p2.y - p1.y);
                if (h <= maxHAtQ) {
                    return true;
                } else {
                    return false;
                }
            }
        }
        return false;
    }

    function initChart() {
        const ctx = document.getElementById('rk-master-canvas');
        if (!ctx) {
            setTimeout(initChart, 200);
            return;
        }
        if (typeof Chart === 'undefined') {
            setTimeout(initChart, 200);
            return;
        }

        masterChart = new Chart(ctx, {
            type: 'scatter',
            data: {
                datasets: [
                    { label: 'Krzywa 25-40', data: pumpCurves["25-40"], borderColor: '#f59e0b', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Krzywa 25-60', data: pumpCurves["25-60"], borderColor: '#0ea5e9', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Krzywa 25-80', data: pumpCurves["25-80"], borderColor: '#8b5cf6', showLine: true, tension: 0.3, pointRadius: 0, borderWidth: 3 },
                    { label: 'Opór Instalacji', data: getInstallationData(masterQ, masterH), borderColor: '#94a3b8', borderDash: [6, 6], showLine: true, pointRadius: 0, borderWidth: 2 },
                    { label: 'Punkt Pracy', data: [{x: masterQ, y: masterH}], backgroundColor: '#ef4444', pointRadius: 8, hoverRadius: 10, z: 10 }
                ]
            },
            options: {
                responsive: true,
                maintainAspectRatio: false,
                scales: {
                    x: { min: 0, max: 4.5, title: { display: true, text: 'Przepływ objętościowy Q [m³/h]', font: {weight: 'bold'} } },
                    y: { min: 0, max: 8.5, title: { display: true, text: 'Wysokość podnoszenia H [m]', font: {weight: 'bold'} } }
                },
                plugins: { 
                    legend: { position: 'top', labels: { font: {family: 'Inter', weight: '600'} } },
                    tooltip: { enabled: false }
                }
            }
        });

        document.getElementById('rk-master-calc-btn').addEventListener('click', function() {
            const area = parseFloat(document.getElementById('rk-in-area').value);
            const load = parseFloat(document.getElementById('rk-in-load').value);
            const dt = parseFloat(document.getElementById('rk-in-dt').value);
            const loops = parseFloat(document.getElementById('rk-in-loops').value);
            const avg = parseFloat(document.getElementById('rk-in-avg').value);
            const pipeVal = parseInt(document.getElementById('rk-in-pipe').value);

            let flow = (area * load) / (1163 * dt);
            
            let res = 0.015;
            if (pipeVal === 17) {
                res = 0.013;
            } else if (pipeVal === 20) {
                res = 0.010;
            }

            let extraRes = 0.8;
            if (loops <= 6) {
                extraRes = 0.4;
            }

            let head = (avg * res * 1.35) + extraRes;

            document.getElementById('rk-slider-q').value = flow.toFixed(2);
            document.getElementById('rk-slider-h').value = head.toFixed(2);
            
            refreshUI(flow, head);
        });

        document.getElementById('rk-slider-q').addEventListener('input', function(e) {
            refreshUI(parseFloat(e.target.value), masterH);
        });
        
        document.getElementById('rk-slider-h').addEventListener('input', function(e) {
            refreshUI(masterQ, parseFloat(e.target.value));
        });
        
        refreshUI(1.4, 4.0);
    }

    function refreshUI(q, h) {
        masterQ = q; 
        masterH = h;
        
        document.getElementById('rk-disp-q').innerText = q.toFixed(2);
        document.getElementById('rk-disp-h').innerText = h.toFixed(2);

        let recText = "Przekroczenie parametrów";
        let bgColor = "#fef2f2";
        let borderColor = "#ef4444";
        let textColor = "#b91c1c";

        if (isPointBelowCurve(q, h, pumpCurves["25-40"])) {
            recText = "25-40 (Zalecana optymalna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        } else if (isPointBelowCurve(q, h, pumpCurves["25-60"])) {
            recText = "25-60 (Zalecana optymalna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        } else if (isPointBelowCurve(q, h, pumpCurves["25-80"])) {
            recText = "25-80 (Zalecana mocna)";
            bgColor = "#f0fdf4";
            borderColor = "#22c55e";
            textColor = "#15803d";
        }

        const recBox = document.getElementById('rk-rec-box');
        document.getElementById('rk-final-pump').innerText = recText;
        
        recBox.style.backgroundColor = bgColor;
        recBox.style.borderLeft = "5px solid " + borderColor;
        recBox.style.color = textColor;

        if (masterChart) {
            masterChart.data.datasets[3].data = getInstallationData(q, h);
            masterChart.data.datasets[4].data = [{x: q, y: h}];
            masterChart.update('none');
        }
    }

    if (document.readyState === 'complete') {
        initChart();
    } else {
        window.addEventListener('load', initChart);
    }
})();
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-blue-light: #e0f2fe;
    --rk-proj-cyan: #06b6d4;
    --rk-proj-gray: #f8fafc;
    --rk-proj-border: #e2e8f0;
    --rk-proj-text: #475569;
    --rk-proj-gold: #fbbf24;
}

.rk-proj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-proj-blue);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-proj-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-proj-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

.rk-proj-header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-proj-blue), var(--rk-proj-cyan));
}

.rk-proj-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
    color: #ffffff;
}

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

/* Interaktywny Ekosystem */
.rk-proj-ecosystem {
    display: flex;
    padding: 0;
    background: #ffffff;
}

/* Lewa strona - Triggery */
.rk-proj-nav {
    width: 45%;
    background: var(--rk-proj-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-proj-border);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-proj-trigger {
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    padding: 20px;
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
    position: relative;
    overflow: hidden;
}

.rk-proj-trigger::before {
    content: '';
    position: absolute;
    left: 0;
    top: 0;
    height: 100%;
    width: 4px;
    background: transparent;
    transition: background 0.3s;
}

.rk-proj-trigger:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.05);
    border-color: #cbd5e1;
}

.rk-proj-trigger.rk-active {
    background: var(--rk-proj-blue-light);
    border-color: var(--rk-proj-blue);
    box-shadow: inset 0 0 0 1px var(--rk-proj-blue);
}

.rk-proj-trigger.rk-active::before {
    background: var(--rk-proj-blue);
}

.rk-trigger-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-proj-text);
    flex-shrink: 0;
    transition: color 0.3s;
}

.rk-proj-trigger.rk-active .rk-trigger-icon {
    color: var(--rk-proj-blue);
}

.rk-proj-trigger h3 {
    margin: 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-proj-dark);
    line-height: 1.3;
}

/* Prawa strona - Kontent */
.rk-proj-content-area {
    width: 55%;
    padding: 40px;
    position: relative;
    background: #ffffff;
}

.rk-proj-panel {
    display: none;
    animation: fadeInPanel 0.5s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

.rk-proj-panel.rk-active {
    display: block;
}

@keyframes fadeInPanel {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-proj-panel-icon {
    width: 48px;
    height: 48px;
    color: var(--rk-proj-cyan);
    margin-bottom: 20px;
}

.rk-proj-panel h4 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

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

/* Wyróżnik inżynieryjny wewnątrz panelu */
.rk-proj-alert {
    background: #fffbeb;
    border-left: 4px solid var(--rk-proj-gold);
    padding: 15px;
    border-radius: 0 8px 8px 0;
    margin-top: 20px;
}

.rk-proj-alert p {
    color: #b45309;
    font-size: 14px;
    font-weight: 600;
    margin: 0;
}

/* Mocne CTA */
.rk-proj-cta-section {
    padding: 40px 45px;
    background: linear-gradient(to right, #f8fafc, #f1f5f9);
    border-top: 1px solid var(--rk-proj-border);
    text-align: center;
}

.rk-proj-cta-section h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-proj-cta-section p {
    font-size: 16px;
    line-height: 1.6;
    color: var(--rk-proj-text);
    max-width: 700px;
    margin: 0 auto 25px auto;
}

.rk-btn-mega {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-mega:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 40px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-mega svg {
    transition: transform 0.3s;
}

.rk-btn-mega:hover svg {
    transform: translateX(6px);
}

/* RWD - Zmiana na układ pionowy (akordeonowy flow) dla mobile */
@media (max-width: 768px) {
    .rk-proj-header { padding: 25px 20px; }
    .rk-proj-header h2 { font-size: 22px; }
    
    .rk-proj-ecosystem { flex-direction: column; }
    .rk-proj-nav { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-proj-border); padding: 20px; }
    .rk-proj-content-area { width: 100%; padding: 25px 20px; }
    
    .rk-proj-panel h4 { font-size: 20px; }
    
    .rk-proj-cta-section { padding: 30px 20px; }
    .rk-btn-mega { width: 100%; padding: 18px 15px; font-size: 15px; flex-direction: column; gap: 8px; text-align: center; }
    .rk-btn-mega svg { transform: rotate(90deg); }
    .rk-btn-mega:hover svg { transform: rotate(90deg) translateY(5px); }
}
</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-wplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak dobór pompy obiegowej wpływa na projekt ogrzewania podłogowego?",
    "description": "Analiza powiązań pomiędzy doborem pompy obiegowej a audytem OZC, rozstawem rur, grubością wylewki oraz sprzęgłem hydraulicznym w układach z pompą 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.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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-wplyw",
    "name": "Macierz Wpływu Parametrów Projektowych na Dobór Pompy 2026",
    "description": "Zestawienie korelacji między składowymi projektu ogrzewania podłogowego (OZC, dylatacje, bufor ciepła) a wydajnością pompy obiegowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt instalacji ogrzewania podłogowego podłogówki",
      "obliczenia OZC a dobór pompy",
      "rozstaw rur w podłogówce a opory hydrauliczne",
      "bezwładność cieplna wylewki jastrychowej",
      "sprzęgło hydrauliczne w układzie z pompą ciepła"
    ],
    "measurementTechnique": "Symulacja zmian strumienia objętościowego i oporów hydraulicznych w odpowiedzi na modyfikacje parametrów budowlanych (temperatura, rozstaw, buforowanie).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC ustala moc, co definiuje przepływ masowy.",
        "Rozstaw rur definiuje długość pętli, co warunkuje straty ciśnienia.",
        "Masa wylewki decyduje o ciągłości pracy pompy obiegowej.",
        "Bufor wymusza stosowanie dodatkowych grup pompowych i odsprzężenia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-wplyw",
    "name": "Symulator Wpływu Projektowego",
    "description": "Interaktywny panel edukacyjny demonstrujący nierozerwalne zależności układu hydraulicznego na etapie projektowania domu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container">
    <div class="rk-proj-header">
        <h2>
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" width="32" height="32" style="color: var(--rk-proj-cyan);">
                <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>
            Jak dobór pompy obiegowej wpływa na projekt ogrzewania podłogowego?
        </h2>
        <p>Wybór punktu pracy pompy obiegowej jest nierozerwalnie połączony z kluczowymi składowymi całego projektu technicznego i bezpośrednio wpływa na sprawność emisyjną układu. Prawidłowy system opiera się na symbiozie hydrauliki z termodynamiką budynku.</p>
    </div>

    <div class="rk-proj-ecosystem">
        <div class="rk-proj-nav">
            <button class="rk-proj-trigger rk-active" data-target="panel-ozc">
                <svg class="rk-trigger-icon" 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>
                <h3>Obliczenia OZC i Delta T</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-rury">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                <h3>Rozstaw rur a hydraulika</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-wylewka">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                <h3>Wylewka i bezwładność</h3>
            </button>
            <button class="rk-proj-trigger" data-target="panel-sprzeglo">
                <svg class="rk-trigger-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                <h3>Sprzęgło i bufor ciepła</h3>
            </button>
        </div>

        <div class="rk-proj-content-area">
            
            <div class="rk-proj-panel rk-active" id="panel-ozc">
                <svg class="rk-proj-panel-icon" 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>
                <h4>Powiązanie z OZC i temperaturą zasilania</h4>
                <p>Profesjonalny bilans cieplny budynku (<a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczenia OZC</a>) określa dokładne zapotrzebowanie na energię każdego pomieszczenia. Jeśli projektant zakłada niską temperaturę zasilania pompy ciepła (np. 35°C), automatycznie wymusza to mniejszą różnicę temperatur <strong>(ΔT = 5 K)</strong>.</p>
                <div class="rk-proj-alert">
                    <p>Skutek hydrauliczny: Mała delta oznacza konieczność przetłoczenia znacznie większego strumienia wody. Kalkulator wykaże gigantyczny przepływ, więc pompa obiegowa musi być odpowiednio mocniejsza.</p>
                </div>
            </div>

            <div class="rk-proj-panel" id="panel-rury">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12h-4l-3 9L9 3l-3 9H2"></path></svg>
                <h4>Rozstaw rur a długość pętli</h4>
                <p>Aby zredukować wymagany przepływ i temperaturę zasilania w salonie z dużymi przeszkleniami, stosuje się gęsty rozstaw rur (co 10 cm zamiast standardowych 15 cm). Zwiększa to jednak drastycznie całkowitą długość rur w pomieszczeniu.</p>
                <p>Jeśli projektant nie podzieli tego salonu na dwie lub trzy niezależne pętle, powstanie jedna gigantyczna pętla o długości np. 140 m. Jej opór hydrauliczny <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">zdławi przepływ do zera</a>, uniemożliwiając prawidłowe zbalansowanie rozdzielacza i zmuszając pompę do skrajnego wysiłku.</p>
            </div>

            <div class="rk-proj-panel" id="panel-wylewka">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                <h4>Wylewka i bezwładność cieplna</h4>
                <p>Grubość wylewki betonowej lub anhydrytowej nad rurami (standardowo 5-6 cm czystego jastrychu nad rurą) tworzy ogromny akumulator ciepła – to dosłownie <a href="https://projekt-ogrzewania.pl/najwiekszy-magazyn-energii-w-twoim-domu-juz-istnieje-i-prawdopodobnie-po-nim-chodzisz/">największy magazyn energii w Twoim domu</a>.</p>
                <p>Aby efektywnie ładować ten magazyn przy współpracy z rekuperacją, pompa musi pracować w sposób ciągły, stabilny i ze stałym ciśnieniem proporcjonalnym, dynamicznie reagując na zamykanie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> sterowania strefowego. Mikroprocesor pompy kompensuje każdą zmianę oporu.</p>
            </div>

            <div class="rk-proj-panel" id="panel-sprzeglo">
                <svg class="rk-proj-panel-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="16"></line><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                <h4>Sprzęgło hydrauliczne i bufor ciepła</h4>
                <p>W rozbudowanych instalacjach (np. parter i piętro), gdy wbudowana w pompę ciepła jednostka tłocząca nie radzi sobie z oporami całego domu, niezbędne staje się hydrauliczne odsprzęgnięcie układu za pomocą <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufora ciepła</a> lub sprzęgła.</p>
                <div class="rk-proj-alert">
                    <p>Skutek projektowy: Zastosowanie sprzęgła wymusza dobór dodatkowych, zewnętrznych pomp obiegowych dla każdej ze stref. Brak prawidłowego zbilansowania przepływów (obieg pierwotny vs wtórny) doprowadzi do tzw. podkradania wody i błędów w pracy sprężarki pompy ciepła.</p>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-proj-cta-section">
        <h3>Nie zdawaj się na los w kwestii własnego domu</h3>
        <p>Precyzyjny dobór pomp obiegowych, weryfikacja oporów pętli i zrównoważenie hydrauliczne to fundament cichej, energooszczędnej instalacji współpracującej z niskotemperaturową pompą ciepła. Zabezpiecz swój budżet przed kosztownymi poprawkami.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-mega">
            ZAMÓW PROFESJONALNY PROJEKT INSTALACJI OGRZEWANIA PODŁOGOWEGO
            <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() {
    var triggers = document.querySelectorAll('.rk-proj-trigger');
    var panels = document.querySelectorAll('.rk-proj-panel');

    for (var i = 0; i < triggers.length; i++) {
        triggers[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-target');

            // Resetowanie wszystkich przycisków (bezpiecznie bez użycia '&#038;&#038;')
            for (var j = 0; j < triggers.length; j++) {
                triggers[j].classList.remove('rk-active');
            }
            // Aktywacja klikniętego
            this.classList.add('rk-active');

            // Ukrywanie wszystkich paneli
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('rk-active');
            }
            
            // Pokaż docelowy panel
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-err-dark: #1e293b;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-green: #10b981;
    --rk-err-green-light: #f0fdf4;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
    --rk-err-text: #475569;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-err-red);
    overflow: hidden;
}

/* Nagłówek sekcji */
.rk-err-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #0f172a 100%);
    position: relative;
    border-bottom: 4px solid var(--rk-err-red);
}

.rk-err-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 12px;
    line-height: 1.3;
}

.rk-err-header-icon {
    width: 36px;
    height: 36px;
    color: var(--rk-err-red);
    flex-shrink: 0;
}

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

/* Siatka błędów */
.rk-err-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    padding: 35px 45px;
    background: #f8fafc;
}

.rk-err-card {
    background: var(--rk-err-bg);
    border: 1px solid var(--rk-err-border);
    border-radius: 16px;
    overflow: hidden;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
}

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

.rk-err-card.rk-active {
    border-color: var(--rk-err-red);
    box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1);
}

/* Górna część karty (Problem) */
.rk-err-problem {
    padding: 25px;
    display: flex;
    gap: 15px;
    align-items: flex-start;
    position: relative;
}

.rk-err-num {
    background: var(--rk-err-red-light);
    color: var(--rk-err-red);
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    flex-shrink: 0;
}

.rk-err-problem-text h3 {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
    line-height: 1.3;
}

.rk-err-problem-text p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-err-text);
    line-height: 1.5;
}

.rk-err-toggle {
    position: absolute;
    right: 20px;
    top: 25px;
    width: 24px;
    height: 24px;
    color: #94a3b8;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), color 0.3s;
}

.rk-err-card.rk-active .rk-err-toggle {
    transform: rotate(180deg);
    color: var(--rk-err-red);
}

/* Dolna część karty (Rozwiązanie - rozwijana) */
.rk-err-solution {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: var(--rk-err-green-light);
}

.rk-err-solution-inner {
    padding: 20px 25px 25px;
    border-top: 1px dashed #bbf7d0;
    display: flex;
    gap: 15px;
}

.rk-err-sol-icon {
    width: 24px;
    height: 24px;
    color: var(--rk-err-green);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-err-solution-inner p {
    margin: 0;
    font-size: 14px;
    color: #166534;
    line-height: 1.6;
    font-weight: 500;
}

.rk-err-solution-inner a {
    color: #15803d;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-err-solution-inner a:hover {
    color: #14532d;
}

@media (max-width: 768px) {
    .rk-err-header { padding: 25px 20px; }
    .rk-err-grid { grid-template-columns: 1fr; padding: 20px; gap: 15px; }
    .rk-err-problem { padding: 20px; }
    .rk-err-solution-inner { padding: 15px 20px 20px; }
    .rk-err-toggle { right: 15px; top: 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-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Najczęstsze błędy instalatorów przy konfiguracji pomp obiegowych",
    "description": "Lista najdroższych błędów wykonawczych w ogrzewaniu podłogowym: przewymiarowanie, zły tryb pracy pompy, woda wodociągowa i brak separatorów magnetycznych.",
    "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-bledy",
    "name": "Baza Błędów Wykonawczych i Kosztów Eksploatacji Pomp 2026",
    "description": "Zestawienie krytycznych błędów hydraulicznych prowadzących do uszkodzeń pomp obiegowych, generowania hałasu w instalacji oraz strat energii elektrycznej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dlaczego pompa obiegowa buczy",
      "magnetyczny separator zanieczyszczeń do ogrzewania podłogowego",
      "tryb stałego ciśnienia pompy",
      "przewymiarowana pompa do podłogówki",
      "czyszczenie filtra przed pompą ciepła"
    ],
    "measurementTechnique": "Analiza usterek hydraulicznych i strat energii elektrycznej wynikających z błędów montażowych instalatorów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Przewymiarowanie pompy (zakup 25-80 do 120m2).",
        "Błąd 2: Tryb stałych obrotów zamiast Constant Pressure (CP).",
        "Błąd 3: Napełnianie instalacji surową wodą wodociągową.",
        "Błąd 4: Brak separatora magnetycznego powodujący zacieranie wirnika."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-bledy",
    "name": "Interaktywny Detektor Błędów Instalacyjnych",
    "description": "Narzędzie symulujące sprzężenie zwrotne: problem instalacyjny kontra rozwiązanie inżynierskie dla pomp obiegowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container">
    <div class="rk-err-header">
        <h2>
            <svg class="rk-err-header-icon" 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>
            Najczęstsze błędy instalatorów przy konfiguracji pomp obiegowych
        </h2>
        <p>Mimo zaawansowanej technologii i powszechnego dostępu do wiedzy inżynieryjnej, wykonawcy na polskich budowach nagminnie powielają przestarzałe błędy, które rujnują ekonomikę instalacji niskotemperaturowych. Kliknij kafelek, aby sprawdzić, jak uchronić swój system przed awarią.</p>
    </div>

    <div class="rk-err-grid">
        
        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">1</div>
                <div class="rk-err-problem-text">
                    <h3>Dobór pompy „z zapasem” (Przewymiarowanie)</h3>
                    <p>Kupowanie pompy klasy 25-80 do standardowego domu o powierzchni 120 m² sprawia, że urządzenie z trudem schodzi z wysokich obrotów.</p>
                </div>
                <svg class="rk-err-toggle" 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 class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" 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>
                    <p>Skutkuje to turbulencjami w przepływie cieczy i generowaniem hałasu w szafkach rozdzielaczowych. Zbyt mocna pompa skraca żywotność własnych łożysk i generuje zbędny koszt roczny. Przeanalizuj <a href="https://projekt-ogrzewania.pl/rzeczywiste-oszczednosci-na-kosztach-ogrzewania-w-skali-roku-analiza-rozstawu-rur-dla-domu-150-m%c2%b2/">rzeczywiste parametry instalacji</a> przed zakupem.</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">2</div>
                <div class="rk-err-problem-text">
                    <h3>Ustawienie trybu stałych obrotów (Constant Speed)</h3>
                    <p>Pozostawienie pompy na sztywnym, stałym biegu (I, II lub III) w układzie z zamykającymi się siłownikami na rozdzielaczach.</p>
                </div>
                <svg class="rk-err-toggle" 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 class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" 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>
                    <p>Gdy automatyka zamknie 8 z 10 pętli, pompa nadal tłoczy tę samą ilość wody przez pozostałe 2 pętle. Generuje to uciążliwe świsty i zrywa uszczelnienia. Prawidłowe <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe</a> zawsze wymaga włączenia trybu stałego ciśnienia (CP).</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">3</div>
                <div class="rk-err-problem-text">
                    <h3>Napełnianie układu surową wodą wodociągową</h3>
                    <p>Brak przygotowania zładu wody. Zwykła woda z kranu pełna jest związków wapnia, magnezu oraz tlenu inicjującego rdzewienie.</p>
                </div>
                <svg class="rk-err-toggle" 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 class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" 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>
                    <p>Kamień kotłowy osadza się na wirniku pompy i wymiennikach płytowych, drastycznie zmniejszając średnicę przelotu. Standardem inżynierskim jest <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">woda demineralizowana z inhibitorem korozji</a>, gwarantująca dekady niezawodności.</p>
                </div>
            </div>
        </div>

        <div class="rk-err-card">
            <div class="rk-err-problem">
                <div class="rk-err-num">4</div>
                <div class="rk-err-problem-text">
                    <h3>Brak separatora magnetycznego (Zacieranie wirnika)</h3>
                    <p>Bezpośrednie podłączenie pompy bez dedykowanego osadnika z silnym magnesem neodymowym na powrocie do źródła ciepła.</p>
                </div>
                <svg class="rk-err-toggle" 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 class="rk-err-solution">
                <div class="rk-err-solution-inner">
                    <svg class="rk-err-sol-icon" 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>
                    <p>Zanieczyszczenia z rur osadzają się na magnesie trwałym silnika ECM, przez co pompa obiegowa buczy, traci wydajność, aż w końcu ulega całkowitemu zatarciu. Dobrej klasy magnetyczny separator zanieczyszczeń i coroczne <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">czyszczenie filtra przed pompą ciepła</a> chronią układ przed paraliżem hydraulicznym.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var errCards = document.querySelectorAll('.rk-err-card');
    
    for (var i = 0; i < errCards.length; i++) {
        errCards[i].addEventListener('click', function() {
            var isActive = this.classList.contains('rk-active');
            
            // Zamykamy wszystkie karty (bezpieczna pętla, bez '&#038;&#038;')
            for (var j = 0; j < errCards.length; j++) {
                errCards[j].classList.remove('rk-active');
                var solToClose = errCards[j].querySelector('.rk-err-solution');
                solToClose.style.maxHeight = null;
            }
            
            // Otwieramy klikniętą, o ile wcześniej była zamknięta
            if (isActive === false) {
                this.classList.add('rk-active');
                var solToOpen = this.querySelector('.rk-err-solution');
                solToOpen.style.maxHeight = solToOpen.scrollHeight + "px";
            }
        });
    }
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-light: #f8fafc;
    --rk-case-red: #ef4444;
    --rk-case-orange: #f97316;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #475569;
    --rk-case-bg: #ffffff;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-bg);
    border-radius: 24px;
    box-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-case-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, #1e293b 0%, #0f172a 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-case-orange);
    position: relative;
}

.rk-case-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-case-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-case-orange);
    flex-shrink: 0;
}

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

/* Główny układ */
.rk-case-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-case-bg);
}

/* Lewa Kolumna - Historia */
.rk-case-story {
    padding: 40px 45px;
    border-right: 1px solid var(--rk-case-border);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff7ed;
    color: #c2410c;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid #fed7aa;
}

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

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

.rk-case-story a {
    color: var(--rk-case-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-case-story a:hover {
    color: var(--rk-case-dark);
}

.rk-case-quote {
    padding: 20px;
    background: #f1f5f9;
    border-left: 4px solid var(--rk-case-dark);
    border-radius: 0 12px 12px 0;
    margin: 25px 0;
    font-style: italic;
    color: #334155;
    font-weight: 600;
}

/* Prawa Kolumna - Interaktywna Diagnoza */
.rk-case-interactive {
    padding: 40px;
    background: var(--rk-case-light);
    display: flex;
    flex-direction: column;
}

.rk-case-interactive h4 {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-case-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Przyciski Osi Czasu */
.rk-timeline-nav {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 25px;
}

.rk-time-btn {
    padding: 16px 20px;
    background: #ffffff;
    border: 2px solid var(--rk-case-border);
    border-radius: 12px;
    cursor: pointer;
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: space-between;
    transition: all 0.3s ease;
}

.rk-time-btn h5 {
    margin: 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-dark);
}

.rk-time-icon {
    width: 20px;
    height: 20px;
    color: #94a3b8;
    transition: color 0.3s;
}

/* Stany Przycisków */
.rk-time-btn:hover {
    border-color: #cbd5e1;
    transform: translateX(4px);
}

.rk-time-btn.rk-active-phase {
    background: var(--rk-case-blue);
    border-color: var(--rk-case-blue);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

.rk-time-btn.rk-active-phase h5,
.rk-time-btn.rk-active-phase .rk-time-icon {
    color: #ffffff;
}

/* Ekran Wynikowy (Dynamiczny) */
.rk-phase-display {
    background: #ffffff;
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-case-border);
    flex-grow: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-phase-img {
    width: 64px;
    height: 64px;
    margin-bottom: 20px;
}

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

.rk-phase-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-case-text);
    margin: 0;
}

@media (max-width: 768px) {
    .rk-case-header { padding: 25px 20px; }
    .rk-case-body { grid-template-columns: 1fr; }
    .rk-case-story { padding: 25px 20px; border-right: none; border-bottom: 1px solid var(--rk-case-border); }
    .rk-case-interactive { padding: 25px 20px; }
    .rk-time-btn:hover { transform: translateY(-2px); translateX(0); }
}
</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-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Studium przypadku: Tomasz (47 lat, Wejherowo) – cena amatorskiego doboru pompy",
    "description": "Case study pokazujące konsekwencje braku projektu OZC i doboru pompy 'z zapasem' w 160-metrowym domu na Pomorzu. Zobacz, jak uniknąć błędów instalatoró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.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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-casestudy",
    "name": "Analiza Błędów Wykonawczych - Case Study Wejherowo 2026",
    "description": "Zestawienie empiryczne wykazujące bezpośredni związek przyczynowo-skutkowy między brakiem obliczeń hydraulicznych a awarią pompy ciepła w nowym budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jakie błędy najczęściej popełniają instalatorzy ogrzewania podłogowego",
      "ile kosztuje projekt ogrzewania podłogowego",
      "szumienie w rozdzielaczu podłogówki",
      "błędy przepływu w pompie ciepła",
      "skutki braku projektu OZC"
    ],
    "measurementTechnique": "Retrospektywna diagnoza układu hydraulicznego na bazie zgłoszeń serwisowych oraz objawów (błędy wysokiego ciśnienia HP na pompie ciepła).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przyczyna pierwotna: Brak projektu OZC i dobór pompy na zasadzie 'im większa, tym lepsza'.",
        "Przyczyna wtórna: Pętle pow. 140 m dławiące układ pomimo użycia pompy 25-80.",
        "Skutek: Zimne strefy brzegowe i błąd przepływu pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-casestudy",
    "name": "Symulator Chronologii Błędów Instalacyjnych",
    "description": "Interaktywny moduł edukacyjny pokazujący rozwój problemów hydraulicznych w czasie, od decyzji na placu budowy po sezon grzewczy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container">
    <div class="rk-case-header">
        <svg class="rk-case-icon" 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 2v16c0 1.1.9 2 2 2h12a2 2 0 0 0 2-2V8l-6-6z"></path>
            <path d="M14 3v5h5M16 13H8M16 17H8M10 9H8"></path>
        </svg>
        <h2>Studium przypadku: Tomasz (47 lat, Wejherowo) – cena amatorskiego doboru pompy</h2>
        <p>Brak weryfikacji kompetencji instalatora i oszczędności na papierze często kończą się dramatem w środku zimy. Poznaj historię inwestora, który zignorował inżynierskie zasady.</p>
    </div>

    <div class="rk-case-body">
        
        <div class="rk-case-story">
            <div class="rk-case-badge">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" width="14" height="14"><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>
                Realna analiza serwisowa
            </div>
            
            <h3>„Pompę dobierzemy z zapasem, będzie Pan zadowolony”</h3>
            <p>Tomasz budował swój wymarzony, 160-metrowy dom na obrzeżach Wejherowa. Chcąc zredukować koszty początkowe, pominął kwestię tego, <a href="https://projekt-ogrzewania.pl/ile-kosztuje-projekt-ogrzewania-podlogowego/">ile kosztuje projekt ogrzewania podłogowego</a>, oddając pełną władzę instalatorowi z polecenia. Wykonawca nie wykonał bilansu cieplnego, a pętle w salonie przy dużych przeszkleniach przeciągnął do astronomicznych 145 metrów, aby "zaoszczędzić na większym rozdzielaczu".</p>

            <div class="rk-case-quote">
                „Po co panu ten projekt OZC? Zamontujemy mocną pompę obiegową 25-80, ona to wszystko przepchnie. Robię tak od 20 lat.” – usłyszał inwestor.
            </div>

            <p>Problem polega na tym, że fizyki płynów nie da się oszukać doświadczeniem z lat 90. Pompa klasy 8m w zderzeniu ze zjawiskiem "króla hydraulicznego" (bardzo długa pętla) wygenerowała potężne zawirowania. Sprawdź, <a href="https://projekt-ogrzewania.pl/jakie-bledy-najczesciej-popelniaja-instalatorzy-ogrzewania-podlogowego/">jakie błędy najczęściej popełniają instalatorzy ogrzewania podłogowego</a> i prześledź na symulatorze obok, jak doszło do paraliżu instalacji Tomasza.</p>
        </div>

        <div class="rk-case-interactive">
            <h4>Oś Czasu Katastrofy Hydraulicznej</h4>
            
            <div class="rk-timeline-nav">
                <button class="rk-time-btn rk-active-phase" id="btn-phase-1">
                    <h5>Faza 1: Montaż "Na Oko"</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
                <button class="rk-time-btn" id="btn-phase-2">
                    <h5>Faza 2: Listopadowe Przymrozki</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
                <button class="rk-time-btn" id="btn-phase-3">
                    <h5>Faza 3: Rachunek za Oszczędność</h5>
                    <svg class="rk-time-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="9 18 15 12 9 6"></polyline></svg>
                </button>
            </div>

            <div class="rk-phase-display" id="phase-display">
                <svg class="rk-phase-img" id="img-phase-1" viewBox="0 0 24 24" fill="none" stroke="#eab308" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <circle cx="12" cy="12" r="10"></circle>
                    <path d="M12 8v4l3 3"></path>
                </svg>
                <svg class="rk-phase-img" id="img-phase-2" style="display:none;" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M22 12h-4l-3 9L9 3l-3 9H2"></path>
                </svg>
                <svg class="rk-phase-img" id="img-phase-3" style="display:none;" viewBox="0 0 24 24" fill="none" stroke="#0f172a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <path d="M12 1v22M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path>
                </svg>

                <h4 class="rk-phase-title" id="rk-phase-title">Zalanie posadzki (Sierpień 2026)</h4>
                <p class="rk-phase-desc" id="rk-phase-desc">Instalator układa pętle "z głowy". Wykorzystuje przewymiarowaną pompę 25-80 ustawioną na najwyższy, sztywny bieg. Brak protokołu z kalibracji rotametrów. Na tym etapie inwestor cieszy się, że "zaoszczędził" na projekcie inżynierskim.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-time-btn');
    
    var img1 = document.getElementById('img-phase-1');
    var img2 = document.getElementById('img-phase-2');
    var img3 = document.getElementById('img-phase-3');
    
    var title = document.getElementById('rk-phase-title');
    var desc = document.getElementById('rk-phase-desc');

    for(var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            
            // Czyszczenie klas aktywnych (Zabezpieczenie przed uzyciem &#038;&#038;)
            for(var j = 0; j < btns.length; j++) {
                btns[j].classList.remove('rk-active-phase');
            }
            this.classList.add('rk-active-phase');

            // Ukrywanie wszystkich obrazków
            img1.style.display = 'none';
            img2.style.display = 'none';
            img3.style.display = 'none';

            // Logika podmiany zawartości (Bez uzycia &#038;&#038;)
            if (this.id === 'btn-phase-1') {
                img1.style.display = 'block';
                title.style.color = '#eab308';
                title.textContent = 'Zalanie posadzki (Sierpień 2026)';
                desc.textContent = 'Instalator układa pętle "z głowy". Wykorzystuje przewymiarowaną pompę 25-80 ustawioną na najwyższy, sztywny bieg. Brak protokołu z kalibracji rotametrów. Na tym etapie inwestor cieszy się, że "zaoszczędził" na projekcie inżynierskim.';
            } 
            else if (this.id === 'btn-phase-2') {
                img2.style.display = 'block';
                title.style.color = '#ef4444';
                title.textContent = 'Szumy i błędy pompy ciepła (Listopad)';
                desc.textContent = 'Pierwsze przymrozki w Wejherowie obnażają błędy. Przewymiarowana pompa wywołuje wibracje i szum w szafce. Przepływ w salonie wynosi 0 l/min (zjawisko zdławienia). Pompa ciepła zgłasza błędy z powodu braku odbioru mocy (tzw. taktowanie).';
            } 
            else if (this.id === 'btn-phase-3') {
                img3.style.display = 'block';
                title.style.color = '#0f172a';
                title.textContent = 'Bolesna diagnoza i koszty (Grudzień)';
                desc.textContent = 'Wezwany autoryzowany serwis diagnozuje katastrofę. Konieczna jest wymiana pompy na inteligentny model 25-60, montaż drogiego sprzęgła hydraulicznego do odciążenia układu oraz próba ręcznego, wielogodzinnego kryzowania obiegów. Oszczędność rzędu 1000 zł na projekcie wygenerowała 4500 zł strat.';
            }
        });
    }
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0284c7;
    --rk-auth-bg: #ffffff;
    --rk-auth-gray: #f8fafc;
    --rk-auth-text: #334155;
    --rk-auth-border: #e2e8f0;
    --rk-auth-gold: #fbbf24;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 20px;
    box-shadow: 0 10px 25px rgba(2, 132, 199, 0.08);
    border: 2px solid var(--rk-auth-border);
    overflow: hidden;
}

/* Sztywny, inżynieryjny nagłówek */
.rk-auth-header {
    padding: 30px 40px;
    background: var(--rk-auth-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-auth-blue);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-auth-header h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    line-height: 1.3;
}

.rk-auth-icon {
    width: 28px;
    height: 28px;
    color: var(--rk-auth-gold);
    flex-shrink: 0;
}

/* Struktura główna */
.rk-auth-body {
    display: flex;
    background: var(--rk-auth-bg);
}

/* Lewa kolumna - Zdjęcie i nawigacja */
.rk-auth-sidebar {
    width: 300px;
    background: var(--rk-auth-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-auth-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-auth-photo {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    margin-bottom: 20px;
}

.rk-auth-name {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 5px 0;
    text-align: center;
}

.rk-auth-title {
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-auth-blue);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-auth-nav {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
}

.rk-auth-tab-btn {
    padding: 12px 15px;
    background: #ffffff;
    border: 1px solid var(--rk-auth-border);
    border-radius: 8px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-auth-text);
    text-align: left;
    display: flex;
    align-items: center;
    gap: 10px;
    /* Usunięto animacje */
}

.rk-auth-tab-btn:hover {
    background: #f1f5f9;
}

.rk-auth-tab-btn.rk-tab-active {
    background: var(--rk-auth-blue);
    color: #ffffff;
    border-color: var(--rk-auth-blue);
}

.rk-auth-tab-btn svg {
    width: 18px;
    height: 18px;
}

/* Prawa kolumna - Treść (Bez animacji) */
.rk-auth-content-area {
    flex: 1;
    padding: 40px;
    position: relative;
}

.rk-auth-panel {
    display: none;
    /* Brak keyframes i opacity transitions */
}

.rk-auth-panel.rk-panel-active {
    display: block;
}

/* Wnętrze paneli */
.rk-quote-mark {
    font-size: 60px;
    color: var(--rk-auth-blue);
    opacity: 0.2;
    line-height: 1;
    font-family: serif;
    position: absolute;
    top: 20px;
    left: 20px;
}

.rk-auth-panel h3 {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 20px 0;
    position: relative;
    z-index: 2;
}

.rk-auth-panel p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-auth-text);
    margin: 0 0 15px 0;
    position: relative;
    z-index: 2;
}

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

/* Sekcja E-E-A-T (Sociale) */
.rk-social-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
    margin-top: 25px;
}

.rk-social-link {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 15px 20px;
    background: var(--rk-auth-gray);
    border: 1px solid var(--rk-auth-border);
    border-radius: 12px;
    text-decoration: none;
    color: var(--rk-auth-dark);
    font-weight: 800;
    font-size: 15px;
    /* Usunięto animacje */
}

.rk-social-link:hover {
    border-color: var(--rk-auth-blue);
    background: #f0f9ff;
}

.rk-social-link svg {
    width: 24px;
    height: 24px;
    color: var(--rk-auth-blue);
}

@media (max-width: 768px) {
    .rk-auth-header { padding: 20px; }
    .rk-auth-header h2 { font-size: 20px; }
    .rk-auth-body { flex-direction: column; }
    .rk-auth-sidebar { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 25px 20px; }
    .rk-auth-content-area { padding: 25px 20px; }
    .rk-quote-mark { top: 10px; left: 10px; font-size: 40px; }
}
</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-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Okiem eksperta: Robert Kucharski o błędach w doborze pomp obiegowych",
    "description": "Autorytet techniczny i rzetelna ocena inżynierska. Dlaczego szacowanie parametrów pomp obiegowych 'na oko' niszczy nowoczesne układy z pompą 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",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-ekspert",
    "name": "Profil Kompetencyjny i Weryfikacja Autorytetu Inżynierskiego 2026",
    "description": "Baza referencyjna potwierdzająca zgodność merytoryczną artykułu z rygorystycznymi standardami E-E-A-T dla treści branży sanitarnej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "ekspert instalacji sanitarnych",
      "robert kucharski opinie o pompach obiegowych",
      "dobór pompy obiegowej do podłogówki",
      "prawidłowy projekt układu niskotemperaturowego",
      "inżynier hvac ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Weryfikacja autentyczności autora poprzez oficjalne powiązania z profilami LinkedIn oraz Facebook (Projekt Ogrzewania).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stanowisko merytoryczne: Odrzucenie metod szacunkowych na rzecz ścisłych obliczeń hydraulicznych.",
        "Cel: Zabezpieczenie inwestorów przed stratami wynikającymi z amatorskiego wykonawstwa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-ekspert",
    "name": "Moduł Weryfikacji Autorytetu (E-E-A-T)",
    "description": "Interaktywna karta ekspercka umożliwiająca bezpośrednie przejście do certyfikowanych źródeł profilu autora.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container">
    <div class="rk-auth-header">
        <svg class="rk-auth-icon" 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>
        <h2>Okiem eksperta: Robert Kucharski o doborze pomp obiegowych</h2>
    </div>

    <div class="rk-auth-body">
        
        <div class="rk-auth-sidebar">
            <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">
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <p class="rk-auth-title">Specjalista Instalacji HVAC</p>

            <div class="rk-auth-nav">
                <button class="rk-auth-tab-btn rk-tab-active" data-show="panel-quote">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
                    Werdykt Specjalisty
                </button>
                <button class="rk-auth-tab-btn" data-show="panel-eat">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"></path><circle cx="8.5" cy="7" r="4"></circle><polyline points="17 11 19 13 23 9"></polyline></svg>
                    Autorytet i Kontakt
                </button>
            </div>
        </div>

        <div class="rk-auth-content-area">
            <div class="rk-quote-mark">"</div>
            
            <div class="rk-auth-panel rk-panel-active" id="panel-quote">
                <h3>Budowa bez ściemy: Hydraulika nie wybacza zgadywania</h3>
                <p>W swojej karierze widziałem setki zniszczonych sprężarek w pompach ciepła i tysiące metrów kwadratowych zimnych posadzek. Wspólny mianownik tych katastrof to zawsze dobór pompy obiegowej "na oko" lub "bo tak się zawsze robiło".</p>
                <p>Nowoczesna instalacja ogrzewania podłogowego to skomplikowany, zamknięty ekosystem oparty na precyzyjnych przepływach masy czynnika grzewczego. <strong>Zignorowanie audytu OZC, źle wyliczona różnica temperatur (ΔT) czy przekroczenie normatywnych oporów pętli</strong> to gwarancja uszkodzenia elektroniki pompy i wystąpienia uciążliwych szumów w rozdzielaczach.</p>
                <p>Nie ma tu miejsca na kompromisy. Tylko twarde obliczenia chronią budżet inwestora.</p>
            </div>

            <div class="rk-auth-panel" id="panel-eat">
                <h3>Zweryfikuj źródło wiedzy</h3>
                <p>W dobie masowo generowanych treści, rzetelna wiedza inżynierska to podstawa podejmowania bezpiecznych decyzji budowlanych. Moje projekty i analizy opieram wyłącznie na sprawdzonych normach PN-EN oraz latach doświadczeń na placach budowy.</p>
                
                <div class="rk-social-grid">
                    <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-social-link">
                        <svg 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"></path></svg>
                        Profil Zawodowy LinkedIn
                    </a>
                    <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-social-link">
                        <svg 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"></path></svg>
                        Oficjalny fanpage Projekt-Ogrzewania.pl
                    </a>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var buttons = document.querySelectorAll('.rk-auth-tab-btn');
    var panels = document.querySelectorAll('.rk-auth-panel');

    for (var i = 0; i < buttons.length; i++) {
        buttons[i].addEventListener('click', function() {
            var targetId = this.getAttribute('data-show');

            // Usuwanie klas aktywnych bez operatorów logicznych
            for (var b = 0; b < buttons.length; b++) {
                buttons[b].classList.remove('rk-tab-active');
            }
            this.classList.add('rk-tab-active');

            // Ukrywanie wszystkich paneli bezpośrednio (bez animacji)
            for (var p = 0; p < panels.length; p++) {
                panels[p].classList.remove('rk-panel-active');
            }
            
            // Wyświetlanie docelowego panelu
            var activePanel = document.getElementById(targetId);
            if (activePanel !== null) {
                activePanel.classList.add('rk-panel-active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-light-blue: #f0f9ff;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --rk-faq-bg: #ffffff;
    --rk-faq-hover: #f8fafc;
    --rk-faq-accent: #38bdf8;
}

.rk-faq-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-faq-bg);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.1);
    border: 1px solid var(--rk-faq-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-faq-header {
    padding: 35px 45px;
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #1e293b 100%);
    position: relative;
}

.rk-faq-header::after {
    content: '';
    position: absolute;
    bottom: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-faq-blue);
}

.rk-faq-header h2 {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    display: flex;
    align-items: center;
    gap: 15px;
    line-height: 1.3;
}

.rk-faq-header-icon {
    width: 32px;
    height: 32px;
    color: var(--rk-faq-accent);
    flex-shrink: 0;
}

/* Interaktywny Akordeon */
.rk-accordion-container {
    padding: 20px 45px 40px;
    background: #fafafa;
}

.rk-accordion-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 12px;
    margin-top: 15px;
    overflow: hidden;
    transition: box-shadow 0.3s;
}

.rk-accordion-item:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.03);
}

.rk-accordion-btn {
    width: 100%;
    text-align: left;
    padding: 22px 25px;
    background: none;
    border: none;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: background-color 0.3s;
}

.rk-accordion-btn:hover {
    background: var(--rk-faq-hover);
}

.rk-accordion-btn h3 {
    margin: 0;
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    padding-right: 20px;
    line-height: 1.4;
}

/* Ikona statusu rozwijania */
.rk-status-icon {
    width: 24px;
    height: 24px;
    background: var(--rk-faq-light-blue);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s;
}

.rk-status-icon svg {
    width: 14px;
    height: 14px;
    stroke: var(--rk-faq-blue);
    stroke-width: 3;
    transition: stroke 0.3s;
}

.rk-accordion-btn.rk-active .rk-status-icon {
    transform: rotate(180deg);
    background: var(--rk-faq-blue);
}

.rk-accordion-btn.rk-active .rk-status-icon svg {
    stroke: #ffffff;
}

/* Treść odpowiedzi */
.rk-accordion-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #ffffff;
}

.rk-accordion-inner {
    padding: 0 25px 25px;
    border-top: 1px dashed transparent;
}

.rk-accordion-btn.rk-active + .rk-accordion-content .rk-accordion-inner {
    border-top-color: var(--rk-faq-border);
    padding-top: 20px;
}

.rk-accordion-inner p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-faq-text);
}

.rk-accordion-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-accordion-inner a:hover {
    color: var(--rk-faq-dark);
}

/* Drobny detal inżynieryjny w odpowiedzi */
.rk-answer-highlight {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rk-faq-hover);
    padding: 15px;
    border-radius: 8px;
    margin-top: 15px;
    border-left: 4px solid var(--rk-faq-blue);
}

.rk-answer-highlight svg {
    width: 20px;
    height: 20px;
    stroke: var(--rk-faq-blue);
    flex-shrink: 0;
    margin-top: 2px;
}

@media (max-width: 768px) {
    .rk-faq-header { padding: 25px 20px; }
    .rk-faq-header h2 { font-size: 22px; }
    .rk-accordion-container { padding: 15px 20px 25px; }
    .rk-accordion-btn { padding: 18px 15px; }
    .rk-accordion-btn h3 { font-size: 15px; }
    .rk-accordion-inner { padding: 0 15px 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",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o pompy w podłogówce",
    "description": "Baza wiedzy i odpowiedzi na najczęstsze problemy instalatorów: tryby pracy pomp obiegowych, rotametry, zapowietrzenie i długości pętli w ogrzewaniu podłogowym.",
    "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Na jakim biegu lub w jakim trybie powinna pracować pompa do ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Pompa w instalacji ogrzewania podłogowego powinna być ustawiona na tryb stałego ciśnienia (Constant Pressure – CP1 lub CP2), oznaczany na panelach sterowania ikoną poziomej kreski. Zapobiega to wahaniom ciśnienia i przepływu w momencie, gdy siłowniki termoelektryczne na rozdzielaczu zamykają lub otwierają poszczególne pętle grzewcze."
        }
      },
      {
        "@type": "Question",
        "name": "Czy standardowa pompa wbudowana w pompę ciepła wystarczy na cały dom?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Wbudowana pompa obiegowa w pompie ciepła o wysokości podnoszenia 6 m bez problemu obsłuży dom do 150–180 m², pod warunkiem, że instalacja nie posiada przewymiarowanych pętli i została wykonana bez sprzęgła hydraulicznego."
        }
      },
      {
        "@type": "Question",
        "name": "Czym grozi za długa pętla ogrzewania podłogowego?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Za długa pętla (powyżej 120 m dla rury 16 mm) generuje tak wysokie opory hydrauliczne, że pompa obiegowa nie jest w stanie wtłoczyć w nią wymaganej ilości wody. Skutkuje to niedogrzaniem pomieszczeń i zmusza do podnoszenia biegów, co wywołuje hałas."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego rotametry na rozdzielaczu nie reagują na zmianę biegów pompy?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Brak reakcji rotametrów najczęściej świadczy o całkowitym zapowietrzeniu pętli grzewczych lub zablokowaniu wirnika pompy przez osady. Przyczyną może być też zdławienie na filtrze siatkowym."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy pompa obiegowa działa prawidłowo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowe działanie pompy objawia się równomiernym, cichym szumem, wyczuwalną delikatną wibracją obudowy oraz stabilnymi wskazaniami przepływu na rotametrach na poziomie 1,5 – 2,5 l/min."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Baza Parametrów Diagnostycznych Pomp Obiegowych 2026",
    "description": "Zestawienie parametrów granicznych instalacji podłogowej do weryfikacji błędów hydraulicznych (tryby CP, graniczne opory pętli 120m, wskaźniki rotametrów).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tryb stałego ciśnienia pompy",
      "wydajność wbudowanej pompy w pompie ciepła",
      "skutki zbyt długiej pętli podłogówki",
      "brak reakcji rotametrów",
      "prawidłowe parametry rotametru"
    ],
    "measurementTechnique": "Diagnostyka na podstawie wskazań wizualnych rotametrów oraz analizy ustawień trybów autoadaptacyjnych paneli elektronicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wartość poprawna przepływu: 1.5 - 2.5 l/min.",
        "Maksymalna długość krytyczna pętli: 120 m dla rury 16x2."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Interaktywny Przewodnik Diagnostyczny",
    "description": "Aplikacja typu akordeon dostarczająca natychmiastowych rozwiązań usterek hydraulicznych w instalacjach płaszczyznowych.",
    "applicationCategory": "ReferenceApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-wrapper">
    <div class="rk-faq-header">
        <h2>
            <svg class="rk-faq-header-icon" 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="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
                <line x1="12" y1="17" x2="12.01" y2="17"></line>
            </svg>
            FAQ – Najczęściej zadawane pytania o pompy w podłogówce
        </h2>
    </div>

    <div class="rk-accordion-container">
        
        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Na jakim biegu lub w jakim trybie powinna pracować pompa do ogrzewania podłogowego?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Pompa w instalacji ogrzewania podłogowego powinna być ustawiona na <strong>tryb stałego ciśnienia (Constant Pressure – CP1 lub CP2)</strong>, oznaczany na panelach sterowania ikoną poziomej kreski. Zapobiega to niebezpiecznym wahaniom ciśnienia i przepływu w momencie, gdy <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowniki termoelektryczne na rozdzielaczach</a> zamykają lub otwierają poszczególne pętle grzewcze w zależności od sygnałów z termostatów pokojowych.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy standardowa pompa wbudowana w pompę ciepła wystarczy na cały dom?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Wbudowana pompa obiegowa w pompie ciepła o wysokości podnoszenia 6 m bez problemu obsłuży dom do 150–180 m², pod warunkiem, że instalacja nie posiada przewymiarowanych oporów miejscowych. W przypadku rozbudowanych systemów z kilkoma rozdzielaczami na różnych kondygnacjach niezbędne jest zastosowanie zewnętrznych grup pompowych oraz elementu odsprzęgającego, takiego jak profesjonalne <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>, aby nie zakłócić przepływu na skraplaczu.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czym grozi za długa pętla ogrzewania podłogowego?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Skutki ułożenia <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długiej pętli podłogówki</a> (powyżej 120 m dla standardowej rury 16 mm) są krytyczne. Generuje to tak wysokie opory hydrauliczne, że pompa obiegowa nie jest w stanie wtłoczyć w nią wymaganej ilości wody. W efekcie pomieszczenie obsługiwane przez ten obieg pozostanie niedogrzane, a próby ratowania sytuacji poprzez wymuszanie najwyższych biegów pompy doprowadzą do przepływów turbulentnych i generowania hałasu w instalacji.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Dlaczego rotametry na rozdzielaczu nie reagują na zmianę biegów pompy?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Brak reakcji wskaźników przepływu najczęściej świadczy o głębokim <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">zapowietrzeniu instalacji</a> lub zablokowaniu wirnika pompy przez zanieczyszczenia z surowej wody. Inną, bardzo częstą przyczyną awarii, jest fizyczne zdławienie przepływu na zatkanym filtrze siatkowym przed pompą lub krytyczny błąd instalatora: odwrotne podłączenie rur zasilania i powrotu do <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów na belce rozdzielacza</a>.</p>
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Jak sprawdzić, czy pompa obiegowa działa prawidłowo?</h3>
                <div class="rk-status-icon">
                    <svg viewBox="0 0 24 24" fill="none"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    <p>Prawidłowo dobrana <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w podłogówce</a> pracuje z równomiernym, niemal niesłyszalnym szumem. Obudowa generuje bardzo delikatną wibrację, a wskaźniki przepływu na rotametrach rozdzielacza wykazują stabilne wartości oscylujące najczęściej w przedziale <strong>1,5 – 2,5 l/min</strong>. Dodatkowo panele nowoczesnych pomp elektronicznych powinny płynnie reagować na dławienie pętli, wyświetlając na ekranie aktualny pobór mocy elektrycznej w watach [W].</p>
                    
                    <div class="rk-answer-highlight">
                        <svg viewBox="0 0 24 24" fill="none" stroke-width="2" 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>
                        <p style="font-size: 14px;"><strong>Wskazówka diagnostyczna:</strong> Jeśli na elektronicznym wyświetlaczu pompy widzisz pobór mocy powyżej 45W w standardowym domu 150m², oznacza to, że walczy ona z nienormatywnym dławieniem w układzie.</p>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var accButtons = document.querySelectorAll('.rk-accordion-btn');
    
    for (var i = 0; i < accButtons.length; i++) {
        accButtons[i].addEventListener('click', function() {
            var isAlreadyActive = this.classList.contains('rk-active');
            
            // Zamykanie wszystkich innych otwartych kart (zoptymalizowane bez uzycia &#038;&#038;)
            for (var j = 0; j < accButtons.length; j++) {
                accButtons[j].classList.remove('rk-active');
                var contentToClose = accButtons[j].nextElementSibling;
                contentToClose.style.maxHeight = null;
            }
            
            // Otwieranie tylko jeśli kliknięty element nie był wcześniej aktywny
            if (isAlreadyActive === false) {
                this.classList.add('rk-active');
                var panelToOpen = this.nextElementSibling;
                // Pobranie rzeczywistej wysokości treści dla płynnej animacji CSS
                panelToOpen.style.maxHeight = panelToOpen.scrollHeight + "px";
            }
        });
    }
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-gray: #f8fafc;
    --rk-dl-text: #475569;
    --rk-dl-border: #e2e8f0;
    --rk-dl-bg: #ffffff;
    --rk-dl-red: #dc2626;
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border-radius: 20px;
    box-shadow: 0 10px 25px rgba(2, 132, 199, 0.08);
    border: 2px solid var(--rk-dl-border);
    overflow: hidden;
}

/* Sztywny Nagłówek */
.rk-dl-header {
    padding: 30px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-dl-header h2 {
    margin: 0;
    font-size: 24px;
    font-weight: 900;
    line-height: 1.3;
}

.rk-dl-icon {
    width: 28px;
    height: 28px;
    color: #38bdf8;
    flex-shrink: 0;
}

/* Główny układ kontenera */
.rk-dl-body {
    display: flex;
    background: #ffffff;
}

/* Sekcja z miniaturą */
.rk-dl-thumb-area {
    width: 320px;
    background: var(--rk-dl-gray);
    padding: 30px;
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-dl-thumb {
    width: 100%;
    height: auto;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
    cursor: pointer;
    /* Usunięto hover scale/transition zgodnie z wytycznymi */
}

/* Sekcja z akcjami i opisem */
.rk-dl-actions-area {
    flex: 1;
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-dl-actions-area h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-dl-dark);
}

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

.rk-dl-buttons {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 25px;
}

/* Przyciski (Sztywne, bez animacji CSS) */
.rk-btn-pdf, .rk-btn-img {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 800;
    border-radius: 12px;
    text-decoration: none;
    cursor: pointer;
    border: 2px solid transparent;
}

.rk-btn-pdf {
    background: var(--rk-dl-blue);
    color: #ffffff;
}
.rk-btn-pdf:hover {
    background: #0369a1;
}

.rk-btn-img {
    background: #ffffff;
    color: var(--rk-dl-dark);
    border-color: var(--rk-dl-border);
}
.rk-btn-img:hover {
    background: var(--rk-dl-gray);
    border-color: #cbd5e1;
}

/* Stopka z licencją */
.rk-dl-license {
    padding: 15px 20px;
    background: #fffbeb;
    border-left: 4px solid #f59e0b;
    border-radius: 0 8px 8px 0;
    font-size: 12px;
    line-height: 1.5;
    color: #92400e;
    font-weight: 600;
}

/* Pełnoekranowy podgląd wewnątrz kontenera */
.rk-dl-preview-full {
    display: none; /* Sterowane z JS */
    padding: 30px;
    background: #f8fafc;
    text-align: center;
}

.rk-dl-preview-full img {
    max-width: 100%;
    height: auto;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    margin-bottom: 20px;
}

.rk-btn-back {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 24px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    font-weight: 800;
    border: none;
    border-radius: 8px;
    cursor: pointer;
}
.rk-btn-back:hover {
    background: #1e293b;
}

@media (max-width: 768px) {
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-header h2 { font-size: 20px; }
    .rk-dl-body { flex-direction: column; }
    .rk-dl-thumb-area { width: 100%; border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 25px 20px; }
    .rk-dl-actions-area { padding: 25px 20px; }
    .rk-btn-pdf, .rk-btn-img { width: 100%; text-align: center; }
}
</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-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Kompendium wiedzy do pobrania: Infografika doboru pompy obiegowej",
    "description": "Darmowe materiały inżynierskie PDF. Schemat doboru pompy obiegowej w ogrzewaniu podłogowym krok po kroku przygotowany przez Roberta Kucharskiego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-materialy",
    "name": "Algorytm doboru pompy obiegowej - Infografika PDF",
    "description": "Dokumentacja graficzna i zbiór zasad wymiarowania pomp obiegowych dla systemów niskotemperaturowych, przygotowana do druku.",
    "license": "© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe pdf",
      "schemat doboru pompy obiegowej",
      "algorytm pompy co pobierz",
      "jak obliczyć wydajność pompy instrukcja",
      "materiały dla instalatorów hvac"
    ],
    "measurementTechnique": "Wizualizacja ustrukturyzowanej procedury doboru urządzeń hydraulicznych na bazie normy PN-EN 1264 w formie dokumentu PDF i WEBP.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik: Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.pdf",
        "Plik: Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-materialy",
    "name": "Centrum Pobierania Projekt-Ogrzewania.pl",
    "description": "Interaktywny moduł pozwalający na podgląd infografik inżynieryjnych na żywo oraz bezpośrednie pobranie dokumentacji technicznej w formacie PDF.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-download-module">
    <div class="rk-dl-header">
        <svg class="rk-dl-icon" 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>
        <h2>Kompendium wiedzy do pobrania: Infografika doboru pompy</h2>
    </div>

    <div class="rk-dl-body" id="rk-view-main">
        <div class="rk-dl-thumb-area">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp" alt="Miniatura infografiki doboru pompy" class="rk-dl-thumb" id="rk-btn-thumb">
        </div>
        
        <div class="rk-dl-actions-area">
            <h3>Interaktywne materiały inżynierskie</h3>
            <p class="rk-dl-desc">Pobierz darmowy, autorski schemat doboru pompy obiegowej przygotowany specjalnie dla instalatorów i inwestorów. Miej ten algorytm zawsze pod ręką w swoim telefonie lub wydrukuj, aby uniknąć kosztownych błędów na budowie.</p>
            
            <div class="rk-dl-buttons">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.pdf" target="_blank" class="rk-btn-pdf">
                    <svg viewBox="0 0 24 24" width="20" height="20" 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="12" y1="18" x2="12" y2="12"></line><polyline points="9 15 12 18 15 15"></polyline></svg>
                    Pobierz kompendium (Plik PDF)
                </a>
                <button class="rk-btn-img" id="rk-btn-preview">
                    <svg viewBox="0 0 24 24" width="20" height="20" 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>
                    Pokaż infografikę
                </button>
            </div>

            <div class="rk-dl-license">
                © 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski. Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
            </div>
        </div>
    </div>

    <div class="rk-dl-preview-full" id="rk-view-preview">
        <button class="rk-btn-back" id="rk-btn-close">
            <svg viewBox="0 0 24 24" width="20" height="20" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="12" x2="5" y2="12"></line><polyline points="12 19 5 12 12 5"></polyline></svg>
            Wróć do pobierania
        </button>
        <div style="margin-top: 20px;">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/03/Infografika-Kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym.webp" alt="Pełna infografika doboru pompy obiegowej">
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var viewMain = document.getElementById('rk-view-main');
    var viewPreview = document.getElementById('rk-view-preview');
    
    var btnPreview = document.getElementById('rk-btn-preview');
    var btnThumb = document.getElementById('rk-btn-thumb');
    var btnClose = document.getElementById('rk-btn-close');

    function openPreview() {
        // Natychmiastowa zmiana stanu bez operatorów && i bez animacji
        viewMain.style.display = 'none';
        viewPreview.style.display = 'block';
    }

    function closePreview() {
        viewPreview.style.display = 'none';
        viewMain.style.display = 'flex'; // Przywracamy flex dla układu desktop/mobile
    }

    btnPreview.addEventListener('click', openPreview);
    btnThumb.addEventListener('click', openPreview);
    btnClose.addEventListener('click', closePreview);
});
</script>



<style>
:root {
    --rk-end-dark: #0f172a;
    --rk-end-blue: #0ea5e9;
    --rk-end-blue-hover: #0284c7;
    --rk-end-bg: #ffffff;
    --rk-end-gray-light: #f1f5f9;
    --rk-end-gray-text: #475569;
    --rk-end-green: #10b981;
    --rk-end-red: #ef4444;
    --rk-end-border: #e2e8f0;
}

.rk-end-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-end-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(14, 165, 233, 0.15);
    border: 1px solid var(--rk-end-blue);
    overflow: hidden;
}

/* Sekcja Tytułowa */
.rk-end-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-end-dark) 0%, #1e293b 100%);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-end-blue);
}

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

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

/* Interaktywny Symulator */
.rk-end-interactive {
    padding: 40px 50px;
    background: var(--rk-end-gray-light);
}

.rk-end-interactive h3 {
    margin: 0 0 25px 0;
    color: var(--rk-end-dark);
    font-size: 20px;
    font-weight: 800;
}

.rk-toggle-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-toggle-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #ffffff;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-end-border);
    transition: all 0.3s;
}

.rk-toggle-item:hover {
    border-color: #cbd5e1;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
}

.rk-toggle-text {
    padding-right: 20px;
}

.rk-toggle-text h4 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-end-dark);
}

.rk-toggle-text p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-end-gray-text);
    line-height: 1.5;
}

/* Przełącznik Switch */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
    flex-shrink: 0;
}

.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: 26px;
    width: 26px;
    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-end-green);
}

input:checked + .rk-slider:before {
    transform: translateX(26px);
}

/* Wynik Symulacji */
.rk-end-result-box {
    display: flex;
    align-items: center;
    gap: 30px;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border: 2px solid var(--rk-end-border);
    transition: all 0.4s ease;
}

.rk-result-icon {
    width: 80px;
    height: 80px;
    flex-shrink: 0;
}

.rk-anim-gauge {
    width: 100%;
    height: 100%;
    transform-origin: center;
    transition: all 0.5s ease;
}

.rk-gauge-bg { fill: none; stroke: #e2e8f0; stroke-width: 8; stroke-linecap: round; }
.rk-gauge-val { fill: none; stroke: var(--rk-end-red); stroke-width: 8; stroke-linecap: round; stroke-dasharray: 100; stroke-dashoffset: 80; transition: stroke 0.5s, stroke-dashoffset 0.5s; }
.rk-gauge-needle { transform-origin: 50px 50px; transform: rotate(-45deg); transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); }

.rk-end-result-text h4 {
    margin: 0 0 10px 0;
    font-size: 22px;
    font-weight: 900;
    transition: color 0.3s;
}

.rk-end-result-text p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-end-gray-text);
}

.rk-end-result-text a {
    color: var(--rk-end-blue);
    font-weight: 700;
    text-decoration: none;
}
.rk-end-result-text a:hover { text-decoration: underline; }

/* Tagi Długi Ogon */
.rk-end-tags {
    padding: 20px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-end-border);
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    justify-content: center;
}

.rk-mat-tag {
    background: #f0f9ff;
    color: #0284c7;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    border: 1px solid #bae6fd;
    white-space: nowrap;
}

/* Massive CTA */
.rk-end-cta {
    padding: 40px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px dashed var(--rk-end-border);
}

.rk-btn-end {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-end-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(14, 165, 233, 0.4);
    transition: all 0.3s ease;
}

.rk-btn-end:hover {
    transform: translateY(-3px);
    background: var(--rk-end-blue-hover);
    box-shadow: 0 15px 30px -5px rgba(2, 132, 199, 0.5);
}

.rk-btn-end svg {
    transition: transform 0.3s;
}

.rk-btn-end:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-end-header, .rk-end-interactive, .rk-end-tags, .rk-end-cta { padding: 30px 20px; }
    .rk-end-result-box { flex-direction: column; text-align: center; gap: 15px; padding: 20px; }
    .rk-toggle-item { flex-direction: column; align-items: flex-start; gap: 15px; }
    .rk-switch { align-self: flex-end; }
    .rk-btn-end { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</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",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Podsumowanie – Bezkompromisowa hydraulika to podstawa komfortu",
    "description": "Zakończenie artykułu i interaktywny symulator układu dystrybucji udowadniający, że prawidłowy dobór pompy obiegowej chroni przed awarią 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-07-05",
    "dateModified": "2026-07-05"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Zestawienie Opłacalności Precyzyjnych Obliczeń Hydraulicznych 2026",
    "description": "Baza danych i algorytm oceniający stabilność systemu w zależności od podjętych kroków inżynieryjnych: audyt OZC, parametryzacja zaworów i zastosowanie kalkulatora pomp.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej do podłogówki",
      "kalkulator przepływu wody ogrzewanie podłogowe",
      "opory hydrauliczne pętli",
      "pompa obiegowa 25-60 parametry",
      "energooszczędna instalacja podłogowa"
    ],
    "measurementTechnique": "Algorytmiczna weryfikacja błędów hydraulicznych w układach niskotemperaturowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metoda archaiczna: Dobór pompy na oko – ryzyko szumów i niedogrzania.",
        "Metoda inżynierska: Wykorzystanie kalkulatorów, OZC i dokładnej różnicy temperatur."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Weryfikator Błędów Hydraulicznych",
    "description": "Interaktywne narzędzie edukacyjne symulujące skutki decyzji instalatorskich na ostateczną sprawność instalacji ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-end-container" id="rk-final-hydraulics">
    <div class="rk-end-header">
        <h2>Podsumowanie – Bezkompromisowa hydraulika to podstawa komfortu</h2>
        <p>
            Dobór pompy obiegowej w ogrzewaniu podłogowym nie toleruje kompromisów, półśrodków i instalatorskich mitów. To czysta matematyka i fizyka płynów. Pamiętaj, że nawet najlepsze źródło ciepła, takie jak nowoczesna pompa ciepła czy kocioł kondensacyjny, nie zapewni komfortu termicznego, jeśli układ dystrybucji oparty na pompie obiegowej zostanie spartaczony.
        </p>
    </div>

    <div class="rk-end-interactive">
        <h3>Symulator Stabilności Instalacji</h3>
        <p style="margin-top: -15px; margin-bottom: 25px; color: var(--rk-end-gray-text); font-size: 14px;">Zaznacz, które kroki techniczne zrealizowałeś, aby sprawdzić, czy Twoja podłogówka jest bezpieczna.</p>
        
        <div class="rk-toggle-list">
            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Obliczenia cieplne budynku</h4>
                    <p>Posiadam rzetelny audyt wykonany zgodnie ze sztuką (nie szacowany "z metra").</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>
            
            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Pętle zrównoważone hydraulicznie</h4>
                    <p>Żadna pętla nie przekracza normatywnej maksymalnej długości, chroniąc pompę przed przeciążeniem.</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>

            <div class="rk-toggle-item">
                <div class="rk-toggle-text">
                    <h4>Użycie kalkulatora pomp</h4>
                    <p>Punkt pracy został precyzyjnie naniesiony na wykres producenta na podstawie rzeczywistych oporów.</p>
                </div>
                <label class="rk-switch">
                    <input type="checkbox" class="rk-sim-trigger">
                    <span class="rk-slider"></span>
                </label>
            </div>
        </div>

        <div class="rk-end-result-box" id="rkSimResult">
            <div class="rk-result-icon">
                <svg viewBox="0 0 100 100" class="rk-anim-gauge">
                    <path class="rk-gauge-bg" d="M 20 80 A 40 40 0 1 1 80 80"></path>
                    <path id="rkGaugeVal" class="rk-gauge-val" d="M 20 80 A 40 40 0 1 1 80 80"></path>
                    <g id="rkGaugeNeedle" class="rk-gauge-needle">
                        <circle cx="50" cy="50" r="5" fill="#1e293b"></circle>
                        <polygon points="48,50 52,50 50,15" fill="#1e293b"></polygon>
                    </g>
                </svg>
            </div>
            <div class="rk-end-result-text">
                <h4 id="rkSimTitle" style="color: var(--rk-end-red);">Krytyczne Ryzyko Awarii</h4>
                <p id="rkSimDesc">
                    Projektowanie "z głowy" gwarantuje problemy. Odrzuć archaiczne metody! Opieraj się na twardych danych z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">certyfikowanych projektów OZC</a> i wymagaj stosowania norm technicznych.
                </p>
            </div>
        </div>
    </div>

    <div class="rk-end-tags">
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
        <span class="rk-mat-tag"># kalkulator przepływu wody ogrzewanie podłogowe</span>
        <span class="rk-mat-tag"># projekt ozc a pompa ciepła</span>
        <span class="rk-mat-tag"># hałas w rozdzielaczu podłogówki</span>
        <span class="rk-mat-tag"># krzywa grzewcza w ogrzewaniu podłogowym</span>
        <span class="rk-mat-tag"># pompa obiegowa 25-60 parametry</span>
        <span class="rk-mat-tag"># opory hydrauliczne pętli</span>
        <span class="rk-mat-tag"># energooszczędna instalacja podłogowa</span>
    </div>

    <div class="rk-end-cta">
        <p style="color: var(--rk-end-gray-text); font-size: 16px; margin: 0 auto 25px auto; max-width: 650px; line-height: 1.6;">
            Tylko pełna kontrola nad hydrauliką da Ci pewność, że Twoja instalacja będzie energooszczędna, cicha i bezawaryjna przez długie lata eksploatacji. Czas przejąć stery nad swoją budową.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-end">
            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 toggles = document.querySelectorAll('.rk-sim-trigger');
    const gaugeVal = document.getElementById('rkGaugeVal');
    const gaugeNeedle = document.getElementById('rkGaugeNeedle');
    const title = document.getElementById('rkSimTitle');
    const desc = document.getElementById('rkSimDesc');
    const resultBox = document.getElementById('rkSimResult');

    function updateSimulation() {
        let score = 0;
        toggles.forEach(function(t) {
            if (t.checked) {
                score = score + 1;
            }
        });

        if (score === 0) {
            gaugeVal.style.stroke = '#ef4444';
            gaugeVal.style.strokeDashoffset = '80';
            gaugeNeedle.style.transform = 'rotate(-80deg)';
            title.style.color = '#ef4444';
            title.textContent = 'Krytyczne Ryzyko Awarii';
            desc.innerHTML = 'Projektowanie "z głowy" gwarantuje problemy. Odrzuć archaiczne metody! Opieraj się na twardych danych z <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">certyfikowanych projektów OZC</a> i wymagaj stosowania norm technicznych.';
            resultBox.style.borderColor = '#ef4444';
        } else if (score === 1) {
            gaugeVal.style.stroke = '#eab308';
            gaugeVal.style.strokeDashoffset = '50';
            gaugeNeedle.style.transform = 'rotate(-30deg)';
            title.style.color = '#eab308';
            title.textContent = 'Układ Niestabilny';
            desc.innerHTML = 'Dobry początek, ale instalacja to system naczyń połączonych. Brak kontroli nad <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">resztą błędów wykonawczych</a> zemści się niedogrzaniem stref granicznych.';
            resultBox.style.borderColor = '#eab308';
        } else if (score === 2) {
            gaugeVal.style.stroke = '#0ea5e9';
            gaugeVal.style.strokeDashoffset = '20';
            gaugeNeedle.style.transform = 'rotate(30deg)';
            title.style.color = '#0ea5e9';
            title.textContent = 'Poprawny Standard';
            desc.innerHTML = 'Jesteś na świetnej drodze. Parametry hydrauliczne są niemal spięte, pamiętaj tylko o uwzględnieniu ostatecznego <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">zapotrzebowania na ciepło</a> przed zakupem pompy.';
            resultBox.style.borderColor = '#bae6fd';
        } else if (score === 3) {
            gaugeVal.style.stroke = '#10b981';
            gaugeVal.style.strokeDashoffset = '0';
            gaugeNeedle.style.transform = 'rotate(80deg)';
            title.style.color = '#10b981';
            title.textContent = 'Inżynierska Perfekcja';
            desc.innerHTML = 'Układ zbalansowany w 100%. Tak zaprojektowana instalacja będzie energooszczędna, cicha i bezawaryjna. To fundament, który wykorzystuje pełen potencjał <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">niskotemperaturowej pompy ciepła</a>.';
            resultBox.style.borderColor = '#10b981';
        }
    }

    toggles.forEach(function(toggle) {
        toggle.addEventListener('change', updateSimulation);
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">Kalkulator doboru pompy obiegowej w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Kompleksowy kalkulator ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 01 Mar 2026 15:07:17 +0000</pubDate>
				<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technika instalacyjna]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[długość rury pex]]></category>
		<category><![CDATA[instalacja podłogowa krok po kroku]]></category>
		<category><![CDATA[kalkulator ogrzewania podłogowego]]></category>
		<category><![CDATA[moc ogrzewania podłogowego]]></category>
		<category><![CDATA[obliczenia ogrzewania podłogowego]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[przepływy w pętlach]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[rozstaw rur podłogówka]]></category>
		<category><![CDATA[temperatura zasilania podłogówka]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3552</guid>

					<description><![CDATA[<p>Ile metrów rury kupić? Jak dobrać rozstaw pętli? Czy temperatura 35°C wystarczy, aby ogrzać cały dom? Kompleksowy kalkulator ogrzewania podłogowego pozwala przełożyć te pytania na konkretne liczby. W artykule znajdziesz nie tylko wzory i gotowe przeliczniki, ale także realny przykład mieszkania 70 m² rozpisany krok po kroku. To praktyczne narzędzie dla inwestorów, którzy chcą świadomie zaplanować instalację i uniknąć kosztownych błędów wykonawczych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">Kompleksowy kalkulator ogrzewania podłogowego.</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-darker: #020617;
    --rk-intro-primary: #2563eb; /* Inżynieryjny niebieski */
    --rk-intro-primary-light: #eff6ff;
    --rk-intro-teal: #0d9488; /* Akcent dla parametrów */
    --rk-intro-teal-bg: #f0fdfa;
    --rk-intro-bg: #ffffff;
    --rk-intro-surface: #f8fafc;
    --rk-intro-border: #e2e8f0;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
    --rk-intro-shadow: 0 10px 30px -10px rgba(37, 99, 235, 0.15);
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: var(--rk-intro-shadow);
    border: 1px solid var(--rk-intro-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK I WSTĘP --- */
.rk-intro-header {
    background: linear-gradient(145deg, var(--rk-intro-darker) 0%, var(--rk-intro-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
}

.rk-intro-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 5px;
    background: linear-gradient(90deg, var(--rk-intro-primary), var(--rk-intro-teal));
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #60a5fa;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(96, 165, 250, 0.3);
}

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.2;
    margin: 0 0 25px 0;
    color: #ffffff;
}

.rk-intro-title span {
    color: #93c5fd;
}

.rk-intro-lead {
    font-size: 17px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
    padding: 25px;
    background: rgba(255, 255, 255, 0.03);
    border-left: 4px solid var(--rk-intro-primary);
    border-radius: 0 12px 12px 0;
}

.rk-intro-lead strong {
    color: #ffffff;
    font-weight: 700;
}

.rk-link-light {
    color: #60a5fa;
    text-decoration: none;
    border-bottom: 1px dashed rgba(96, 165, 250, 0.5);
    transition: all 0.3s;
}

.rk-link-light:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- INTERAKTYWNY EKSPLORATOR ALGORYTMU --- */
.rk-explorer-section {
    padding: 40px 50px;
    background: var(--rk-intro-surface);
}

.rk-explorer-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Nawigacja (Menu pigułkowe) */
.rk-explorer-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 35px;
    background: #ffffff;
    padding: 8px;
    border-radius: 16px;
    border: 1px solid var(--rk-intro-border);
}

.rk-exp-btn {
    flex: 1;
    min-width: 140px;
    padding: 14px 20px;
    background: transparent;
    border: none;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-muted);
    cursor: pointer;
    transition: all 0.3s;
    text-align: center;
}

.rk-exp-btn:hover {
    background: var(--rk-intro-surface);
    color: var(--rk-intro-primary);
}

.rk-exp-btn.active {
    background: var(--rk-intro-primary);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(37, 99, 235, 0.3);
}

/* Zawartość zakładek */
.rk-exp-content {
    display: none;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-intro-border);
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    overflow: hidden;
    animation: rkFadeIn 0.4s ease;
}

.rk-exp-content.active {
    display: flex;
}

@keyframes rkFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Layout wewnętrzny: Lewo SVG (Statyczne), Prawo Tekst */
.rk-exp-visual {
    flex: 0 0 40%;
    background: var(--rk-intro-teal-bg);
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--rk-intro-border);
}

.rk-static-svg {
    width: 100%;
    max-width: 180px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(13, 148, 136, 0.15));
}

.rk-exp-details {
    flex: 1;
    padding: 35px 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-exp-details h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-exp-details p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-intro-text);
}

/* Kafelki z parametrami (zamiast lania wody) */
.rk-data-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tile {
    background: var(--rk-intro-surface);
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-intro-border);
}

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

.rk-tile-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-primary);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-intro-header, .rk-explorer-section { padding: 30px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-intro-lead { padding: 20px 15px; font-size: 15px; }
    .rk-exp-content.active { flex-direction: column; }
    .rk-exp-visual { border-right: none; border-bottom: 1px solid var(--rk-intro-border); padding: 40px 20px; }
    .rk-exp-details { padding: 25px; }
    .rk-data-tiles { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego (Algorytm PN-EN 1264)",
    "description": "Precyzyjne narzędzie inżynieryjne pozwalające wyliczyć strumień masowy, opory hydrauliczne pętli, rozstaw rur i całkowitą długość przewodów PERT/PEX. Kompendium wiedzy matematycznej.",
    "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-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-algorytm",
    "name": "Zestawienie Parametrów Algorytmu PN-EN 1264",
    "description": "Baza danych wytycznych algorytmicznych niezbędnych do przeprowadzenia poprawnych obliczeń hydrauliczno-termicznych systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "algorytm inżynieryjny PN-EN 1264",
      "obliczenia hydrauliczno-termiczne",
      "strumień masowy podłogówki",
      "opory hydrauliczne pętli"
    ],
    "measurementTechnique": "Obliczenia numeryczne na podstawie wzorów fizyki cieplnej i normy europejskiej PN-EN 1264 dot. systemów płaszczyznowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zapotrzebowanie na strumień masowy czynnika grzewczego (kg/h).",
        "Opory hydrauliczne pętli grzewczej i spadki ciśnień (kPa).",
        "Wymagany rozstaw rur dostosowany do strefy i strat ciepła.",
        "Całkowita długość przewodów PEX/PERT na jedno pomieszczenie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-wstep",
    "name": "Eksplorator Algorytmu Ogrzewania Podłogowego",
    "description": "Interaktywny widget prezentujący 4 główne filary obliczeniowe profesjonalnego kalkulatora podłogówki, wyposażony w statyczne grafiki inżynierskie.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "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="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>
            Kompendium Inżyniera
        </div>
        <h2 class="rk-intro-title">Kompleksowy Kalkulator <span>Ogrzewania Podłogowego</span></h2>
        
        <p class="rk-intro-lead">
            Błędne zaprojektowanie instalacji płaszczyznowej generuje gigantyczne straty finansowe, niedogrzanie pomieszczeń oraz pękanie wylewek jastrychowych. <strong>Kompleksowy kalkulator ogrzewania podłogowego</strong> to zaawansowany algorytm inżynieryjny oparty na <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-link-light">normie PN-EN 1264</a>, który pozwala precyzyjnie wyliczyć zapotrzebowanie na strumień masowy czynnika grzewczego, opory hydrauliczne pętli, wymagany <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link-light">rozstaw rur</a> oraz całkowitą długość <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/" class="rk-link-light">przewodów PERT/PEX</a>. Poniższy materiał stanowi kompletne kompendium wiedzy matematycznej i instalacyjnej, niezbędne do przeprowadzenia obliczeń hydrauliczno-termicznych systemu grzewczego (Interaktywny kalkulator jest dostępny w dalszej części artykułu).
        </p>
    </div>

    <div class="rk-explorer-section">
        <h3 class="rk-explorer-title">4 Filary Algorytmu Obliczeniowego</h3>
        
        <div class="rk-explorer-nav">
            <button class="rk-exp-btn active" data-target="tab-masowy">Strumień Masowy</button>
            <button class="rk-exp-btn" data-target="tab-opory">Opory Hydrauliczne</button>
            <button class="rk-exp-btn" data-target="tab-rozstaw">Rozstaw Rur</button>
            <button class="rk-exp-btn" data-target="tab-dlugosc">Długość Przewodów</button>
        </div>

        <div class="rk-exp-content active" id="tab-masowy">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <rect x="35" y="10" width="30" height="80" rx="4" fill="#ffffff" stroke="#2563eb" stroke-width="4"></rect>
                    <line x1="45" y1="20" x2="55" y2="20" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="40" x2="55" y2="40" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="60" x2="55" y2="60" stroke="#64748b" stroke-width="2"></line>
                    <line x1="45" y1="80" x2="55" y2="80" stroke="#64748b" stroke-width="2"></line>
                    <polygon points="40,55 60,55 50,70" fill="#ef4444"></polygon>
                    <path d="M 50 90 L 50 100 M 35 100 L 65 100" stroke="#0d9488" stroke-width="4" stroke-linecap="round"></path>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Zapotrzebowanie na strumień masowy</h3>
                <p>Kalkulator na podstawie projektowego obciążenia cieplnego (OZC) określa dokładną ilość wody (w litrach na minutę), jaka musi przepłynąć przez dany obwód, aby dostarczyć wymaganą moc grzewczą do pomieszczenia. To podstawa regulacji na rotametrach.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Jednostka bazowa</div>
                        <div class="rk-tile-value">kg/h lub l/min</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Zależność fizyczna</div>
                        <div class="rk-tile-value">Q = m · c · ΔT</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-opory">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <path d="M 10 50 Q 30 20 50 50 T 90 50" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"></path>
                    <path d="M 10 50 Q 30 20 50 50 T 90 50" fill="none" stroke="#2563eb" stroke-width="6" stroke-linecap="round"></path>
                    <circle cx="20" cy="30" r="12" fill="#ffffff" stroke="#0d9488" stroke-width="3"></circle>
                    <line x1="20" y1="30" x2="28" y2="22" stroke="#ef4444" stroke-width="2" stroke-linecap="round"></line>
                    <circle cx="80" cy="30" r="12" fill="#ffffff" stroke="#0d9488" stroke-width="3"></circle>
                    <line x1="80" y1="30" x2="72" y2="22" stroke="#ef4444" stroke-width="2" stroke-linecap="round"></line>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Opory hydrauliczne pętli</h3>
                <p>Zbyt długa rura lub zbyt duża prędkość wody generuje ogromne opory tarcia (straty liniowe i miejscowe). Obliczenia te są krytyczne dla poprawnego doboru wysokości podnoszenia pompy obiegowej, aby zapobiec &#8222;niedogrzaniu&#8221; najdalszych pętli.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Maksymalny opór pętli</div>
                        <div class="rk-tile-value">≤ 20 kPa</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Optymalna prędkość</div>
                        <div class="rk-tile-value">0,25 &#8211; 0,5 m/s</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-rozstaw">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <rect x="10" y="10" width="80" height="80" fill="#ffffff" stroke="#cbd5e1" stroke-width="2" rx="4"></rect>
                    <path d="M 20 20 L 80 20 M 80 20 A 10 10 0 0 1 80 40 M 80 40 L 20 40 M 20 40 A 10 10 0 0 0 20 60 M 20 60 L 80 60 M 80 60 A 10 10 0 0 1 80 80 M 80 80 L 20 80" fill="none" stroke="#0d9488" stroke-width="6" stroke-linecap="round"></path>
                    <line x1="45" y1="23" x2="45" y2="37" stroke="#ef4444" stroke-width="2"></line>
                    <polygon points="45,23 42,28 48,28" fill="#ef4444"></polygon>
                    <polygon points="45,37 42,32 48,32" fill="#ef4444"></polygon>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Wymagany rozstaw rur</h3>
                <p>Na podstawie oporu cieplnego warstw posadzki (np. płytki vs panele) oraz wyliczonych strat ciepła, system wskazuje bezpieczny rozstaw montażowy. Zagęszczenie rur (np. co 10 cm w łazience) gwarantuje osiągnięcie właściwej temperatury wnętrza.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Pompy ciepła (Standard)</div>
                        <div class="rk-tile-value">10 &#8211; 15 cm</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Strefy brzegowe (Okna)</div>
                        <div class="rk-tile-value">5 &#8211; 10 cm</div>
                    </div>
                </div>
            </div>
        </div>

        <div class="rk-exp-content" id="tab-dlugosc">
            <div class="rk-exp-visual">
                <svg class="rk-static-svg" viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg">
                    <circle cx="50" cy="50" r="35" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <circle cx="50" cy="50" r="25" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <circle cx="50" cy="50" r="15" fill="none" stroke="#2563eb" stroke-width="8"></circle>
                    <path d="M 50 15 L 50 5" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                    <path d="M 50 5 L 90 5" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                    <text x="70" y="20" fill="#0f172a" font-size="14" font-weight="900" font-family="sans-serif">Σ L</text>
                </svg>
            </div>
            <div class="rk-exp-details">
                <h3>Całkowita długość przewodów</h3>
                <p>Precyzyjne wyliczenie metrów bieżących (uwzględniające 10% naddatku instalacyjnego oraz trasy doprowadzające do rozdzielacza) zapobiega brakom materiałowym na budowie i pozwala dokładnie oszacować pojemność zładu wodnego układu.</p>
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <div class="rk-tile-label">Max dł. obwodu (PEX 16)</div>
                        <div class="rk-tile-value">120 m</div>
                    </div>
                    <div class="rk-tile">
                        <div class="rk-tile-label">Pojemność rury 16&#215;2</div>
                        <div class="rk-tile-value">0,113 l/mb</div>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener interaktywny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Zakładek Eksploratora
    const buttons = document.querySelectorAll('.rk-exp-btn');
    const contents = document.querySelectorAll('.rk-exp-content');

    buttons.forEach(btn => {
        btn.addEventListener('click', () => {
            const targetId = btn.getAttribute('data-target');
            
            // Resetuj wszystkie
            buttons.forEach(b => b.classList.remove('active'));
            contents.forEach(c => c.classList.remove('active'));
            
            // Aktywuj kliknięty
            btn.classList.add('active');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-darker: #020617;
    --rk-calc-brand: #3b82f6; /* Inżynieryjny, mocny niebieski */
    --rk-calc-brand-hover: #2563eb;
    --rk-calc-accent: #f59e0b; /* Bursztyn do akcentowania wzorów */
    --rk-calc-bg: #ffffff;
    --rk-calc-surface: #f8fafc;
    --rk-calc-border: #e2e8f0;
    --rk-calc-text: #334155;
    --rk-calc-muted: #64748b;
    --rk-calc-formula-bg: #1e293b;
    --rk-shadow-soft: 0 10px 25px -5px rgba(59, 130, 246, 0.1);
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-bg);
    border-radius: 20px;
    box-shadow: var(--rk-shadow-soft);
    border: 1px solid var(--rk-calc-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-calc-header {
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, var(--rk-calc-darker) 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-calc-brand);
}

.rk-calc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

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

.rk-calc-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-calc-lead strong { color: #ffffff; }

.rk-calc-link {
    color: #60a5fa;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 600;
    transition: color 0.3s;
}

.rk-calc-link:hover { color: #93c5fd; }

/* --- INTERAKTYWNY STEPPER --- */
.rk-calc-interactive {
    padding: 40px 50px;
    background: var(--rk-calc-surface);
}

.rk-calc-subtitle {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

.rk-stepper-wrapper {
    display: flex;
    gap: 30px;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa strona: Kroki */
.rk-stepper-nav {
    flex: 0 0 220px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-right: 1px solid var(--rk-calc-border);
    padding-right: 20px;
}

.rk-step-btn {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    text-align: left;
    background: transparent;
    border: 1px solid transparent;
    padding: 15px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc-muted);
    cursor: pointer;
    transition: all 0.3s;
}

.rk-step-btn:hover {
    background: var(--rk-calc-surface);
    color: var(--rk-calc-brand);
}

.rk-step-btn.active {
    background: var(--rk-calc-brand);
    color: #ffffff;
    box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
}

.rk-step-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    background: var(--rk-calc-border);
    color: var(--rk-calc-text);
    border-radius: 50%;
    font-size: 12px;
    font-weight: 900;
    transition: all 0.3s;
}

.rk-step-btn.active .rk-step-num {
    background: #ffffff;
    color: var(--rk-calc-brand);
}

/* Prawa strona: Zawartość */
.rk-stepper-content {
    flex: 1;
    position: relative;
    min-height: 320px;
}

.rk-step-panel {
    display: none;
    animation: slideInRight 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-step-panel.active {
    display: block;
}

@keyframes slideInRight {
    from { opacity: 0; transform: translateX(20px); }
    to { opacity: 1; transform: translateX(0); }
}

.rk-panel-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 15px 0;
}

/* Wzór matematyczny */
.rk-formula-box {
    background: var(--rk-calc-formula-bg);
    border-radius: 12px;
    padding: 20px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-left: 4px solid var(--rk-calc-accent);
    position: relative;
    overflow: hidden;
}

.rk-formula-box::before {
    content: 'Wzór wg PN-EN';
    position: absolute;
    top: 5px; left: 10px;
    font-size: 10px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
}

.rk-formula-text {
    font-family: 'Courier New', Courier, monospace;
    font-size: 22px;
    font-weight: 700;
    color: #ffffff;
    letter-spacing: 1px;
}

.rk-formula-text sub {
    font-size: 12px;
    color: var(--rk-calc-accent);
}

/* Wyjaśnienie */
.rk-panel-desc {
    font-size: 14px;
    line-height: 1.7;
    color: var(--rk-calc-text);
    margin: 0 0 20px 0;
    background: var(--rk-calc-surface);
    padding: 15px;
    border-radius: 8px;
    border: 1px dashed var(--rk-calc-border);
}

/* Wizualizacja SVG (Animacje) */
.rk-panel-visual {
    height: 100px;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-svg-graphic {
    width: 100%;
    max-width: 250px;
    height: 100%;
}

/* --- Animacje SVG --- */
.anim-ozc-arrow { stroke-dasharray: 4; animation: flowOut 1s linear infinite; stroke: #ef4444; }
@keyframes flowOut { to { stroke-dashoffset: -8; } }

.anim-heat-wave path { stroke: #f59e0b; opacity: 0; animation: radiateUp 1.5s infinite alternate; }
.anim-heat-wave path:nth-child(2) { animation-delay: 0.5s; }
.anim-heat-wave path:nth-child(3) { animation-delay: 1s; }
@keyframes radiateUp { to { opacity: 1; transform: translateY(-5px); } }

.anim-ruler-move { animation: shrinkRuler 3s infinite alternate cubic-bezier(0.4, 0, 0.2, 1); transform-origin: left; }
@keyframes shrinkRuler { 0% { transform: scaleX(1); } 100% { transform: scaleX(0.66); } }

.anim-pipe-roll { stroke-dasharray: 200; stroke-dashoffset: 200; animation: unroll 3s infinite ease-out; stroke: #3b82f6; }
@keyframes unroll { 50%, 100% { stroke-dashoffset: 0; } }

.anim-loop-split { stroke-dasharray: 100; animation: splitFlow 2s infinite linear; stroke: #3b82f6; }
@keyframes splitFlow { to { stroke-dashoffset: -20; } }

/* --- Responsywność --- */
@media (max-width: 768px) {
    .rk-calc-header, .rk-calc-interactive { padding: 30px 20px; }
    .rk-calc-title { font-size: 24px; }
    .rk-stepper-wrapper { flex-direction: column; padding: 15px; gap: 20px; }
    .rk-stepper-nav { flex: auto; border-right: none; border-bottom: 1px solid var(--rk-calc-border); padding-right: 0; padding-bottom: 15px; flex-direction: row; overflow-x: auto; scrollbar-width: none; }
    .rk-stepper-nav::-webkit-scrollbar { display: none; }
    .rk-step-btn { min-width: 160px; justify-content: center; }
    .rk-formula-text { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Jak obliczyć zapotrzebowanie na ciepło i długość rur ogrzewania podłogowego?",
    "description": "Algorytm kalkulatora wg PN-EN 12831 i 1264. Poznaj krok po kroku wzory na projektowe obciążenie cieplne, rozstaw rur i podział na pętle.",
    "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": "2025-03-05",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-wzory",
    "name": "Wzory i algorytmy obliczeniowe PN-EN 12831 i 1264",
    "description": "Zestawienie matematyczne procedur doboru parametrów ogrzewania płaszczyznowego, zapobiegające błędom przewymiarowania instalacji.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia OZC",
      "długość rury podłogówka",
      "rozstaw rur wzór",
      "norma PN-EN 12831",
      "kalkulator ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szeregowanie algorytmiczne wg norm europejskich, przeliczające powierzchnię i straty na zapotrzebowanie hydrauliczne.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Projektowa moc grzewcza Q_obl = A × q",
        "Krok 2: Gęstość strumienia q_s = Q_obl / A_grz",
        "Krok 3: Obliczenie teoretycznego rozstawu rur (a)",
        "Krok 4: Całkowita długość rury L = (A_grz / a × 1,1) + L_d",
        "Krok 5: Podział na pętle N_p = ceil(L / L_max)"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-algorytm",
    "name": "Symulator Algorytmu Podłogówki",
    "description": "Interaktywny panel (stepper) objaśniający w 5 krokach proces matematyczny zachodzący w kalkulatorze ogrzewania podłogowego wraz z wizualizacjami SVG.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-container" id="rk-calc-app">
    
    <div class="rk-calc-header">
        <div class="rk-calc-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="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>
            Metodologia Obliczeń
        </div>
        <h2 class="rk-calc-title">Jak obliczyć zapotrzebowanie na ciepło i długość rur za pomocą kalkulatora?</h2>
        <p class="rk-calc-lead">
            Zgodnie z normą <strong>PN-EN 12831</strong>, podstawą do wyliczenia jakichkolwiek parametrów podłogówki jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-calc-link">Projektowe Obciążenie Cieplne budynku (OZC)</a>. Algorytm kalkulatora konwertuje tę wartość na <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/" class="rk-calc-link">metry bieżące rury</a> oraz liczbę sekcji <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-calc-link">rozdzielacza</a> w oparciu o parametry fizyczne przegród. Próba doboru instalacji „na oko” (np. uniwersalne przyjmowanie rozstawu co 15 cm) skutkuje niedogrzaniem stref przyokiennych lub przewymiarowaniem <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-calc-link">pompy obiegowej</a>, co generuje dodatkowe koszty na poziomie 2500–4000 PLN na etapie zakupu materiałów.
        </p>
    </div>

    <div class="rk-calc-interactive">
        <h3 class="rk-calc-subtitle">Algorytm obliczeniowy krok po kroku</h3>
        
        <div class="rk-stepper-wrapper">
            <div class="rk-stepper-nav">
                <button class="rk-step-btn active" data-step="1">
                    <span class="rk-step-num">1</span> Moc grzewcza
                </button>
                <button class="rk-step-btn" data-step="2">
                    <span class="rk-step-num">2</span> Gęstość strumienia
                </button>
                <button class="rk-step-btn" data-step="3">
                    <span class="rk-step-num">3</span> Rozstaw rur
                </button>
                <button class="rk-step-btn" data-step="4">
                    <span class="rk-step-num">4</span> Długość rury
                </button>
                <button class="rk-step-btn" data-step="5">
                    <span class="rk-step-num">5</span> Podział na pętle
                </button>
            </div>

            <div class="rk-stepper-content">
                
                <div class="rk-step-panel active" id="rk-step-1">
                    <h4 class="rk-panel-title">Wyznaczenie projektowej mocy grzewczej pomieszczenia (Q<sub>obl</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">Q<sub>obl</sub> = A &times; q</div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>A</strong> to powierzchnia użytkowa [m²], a <strong>q</strong> to jednostkowe zapotrzebowanie na ciepło [W/m²] określone wg PN-EN 12831. Dla nowych budynków (WT 2021) przyjmuje się 30–50 W/m², dla domów po termomodernizacji 60–80 W/m².
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <path d="M 80 40 L 100 20 L 120 40 L 120 70 L 80 70 Z" fill="none" stroke="#64748b" stroke-width="4" stroke-linejoin="round"/>
                            <path class="anim-ozc-arrow" d="M 125 45 L 150 45" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-ozc-arrow" d="M 75 45 L 50 45" stroke-width="3" stroke-linecap="round"/>
                            <path class="anim-ozc-arrow" d="M 100 15 L 100 -5" stroke-width="3" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-2">
                    <h4 class="rk-panel-title">Wyznaczenie gęstości strumienia cieplnego posadzki (q<sub>s</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">q<sub>s</sub> = Q<sub>obl</sub> / A<sub>grz</sub></div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>A<sub>grz</sub></strong> to rzeczywista powierzchnia grzewcza [m²] (po odliczeniu stałej zabudowy meblowej np. szaf, kominków, wanien). Otrzymujemy parametr W/m² czystej podłogi.
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <path d="M 40 70 L 160 70 L 140 50 L 60 50 Z" fill="#e2e8f0" stroke="#cbd5e1" stroke-width="2"/>
                            <g class="anim-heat-wave" fill="none" stroke-width="3" stroke-linecap="round">
                                <path d="M 70 40 Q 80 30, 90 40 T 110 40"/>
                                <path d="M 90 35 Q 100 25, 110 35 T 130 35"/>
                                <path d="M 110 30 Q 120 20, 130 30 T 150 30"/>
                            </g>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-3">
                    <h4 class="rk-panel-title">Obliczenie teoretycznego rozstawu rur (a)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">a = f( q<sub>s</sub> , t<sub>z</sub> , R<sub>&lambda;,B</sub> )</div>
                    </div>
                    <div class="rk-panel-desc">
                        Rozstaw rur [m] jest funkcją gęstości strumienia, temperatury zasilania oraz oporu cieplnego okładziny podłogowej. Oblicza się go z układu równań normy PN-EN 1264-2. Wynik zaokrągla się w dół do standardów montażowych: <strong>0,10 m, 0,15 m lub 0,20 m</strong>.
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <line x1="50" y1="40" x2="150" y2="40" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                            <line class="anim-ruler-move" x1="50" y1="40" x2="150" y2="40" stroke="#f59e0b" stroke-width="6" stroke-linecap="round"/>
                            <line x1="50" y1="30" x2="50" y2="50" stroke="#64748b" stroke-width="2"/>
                            <line x1="150" y1="30" x2="150" y2="50" stroke="#64748b" stroke-width="2"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-4">
                    <h4 class="rk-panel-title">Wyznaczenie całkowitej długości rury w pomieszczeniu (L)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">L = (A<sub>grz</sub> / a &times; 1,1) + L<sub>d</sub></div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>1,1</strong> to stały współczynnik uwzględniający 10% zapasu na wygięcia łuków rur, a <strong>L<sub>d</sub></strong> to długość odcinka doprowadzającego (zasilanie + powrót) z szafki rozdzielaczowej do danego pomieszczenia [m].
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <circle cx="60" cy="40" r="20" fill="none" stroke="#3b82f6" stroke-width="4"/>
                            <circle cx="60" cy="40" r="12" fill="none" stroke="#3b82f6" stroke-width="4"/>
                            <path class="anim-pipe-roll" d="M 60 20 L 160 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

                <div class="rk-step-panel" id="rk-step-5">
                    <h4 class="rk-panel-title">Podział na pętle grzewcze (N<sub>p</sub>)</h4>
                    <div class="rk-formula-box">
                        <div class="rk-formula-text">N<sub>p</sub> = ceil( L / L<sub>max</sub> )</div>
                    </div>
                    <div class="rk-panel-desc">
                        Gdzie <strong>L<sub>max</sub></strong> to graniczna długość jednego obwodu (dla rury 16 mm wynosi 120 m). Funkcja <em>ceil</em> zaokrągla wynik matematyczny zawsze w górę do pełnej liczby całkowitej (obwodu na rozdzielaczu).
                    </div>
                    <div class="rk-panel-visual">
                        <svg class="rk-svg-graphic" viewBox="0 0 200 80">
                            <rect x="30" y="20" width="20" height="40" fill="#64748b" rx="2"/>
                            <path class="anim-loop-split" d="M 50 30 L 140 30 Q 160 30, 160 50 Q 160 70, 140 70 L 50 70" fill="none" stroke-width="4" stroke-linecap="round"/>
                            <path class="anim-loop-split" d="M 50 40 L 100 40 Q 120 40, 120 50 Q 120 60, 100 60 L 50 60" fill="none" stroke="#f59e0b" stroke-width="4" stroke-linecap="round"/>
                        </svg>
                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-calc-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener algorytmiczny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Steppera
    const stepBtns = document.querySelectorAll('.rk-step-btn');
    const stepPanels = document.querySelectorAll('.rk-step-panel');

    stepBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            const targetStep = btn.getAttribute('data-step');
            
            // Czyszczenie klas aktywnych
            stepBtns.forEach(b => b.classList.remove('active'));
            stepPanels.forEach(p => p.classList.remove('active'));
            
            // Aktywacja wybranego
            btn.classList.add('active');
            document.getElementById('rk-step-' + targetStep).classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-temp-dark: #0f172a;
    --rk-temp-darker: #020617;
    --rk-temp-brand: #0ea5e9; /* Błękit inżynieryjny */
    --rk-temp-safe: #10b981;  /* Szmaragdowy - norma */
    --rk-temp-warn: #f59e0b;  /* Bursztyn - ostrzeżenie */
    --rk-temp-danger: #ef4444; /* Czerwień - awaria */
    --rk-temp-bg: #ffffff;
    --rk-temp-surface: #f8fafc;
    --rk-temp-border: #e2e8f0;
    --rk-temp-text: #334155;
    --rk-temp-muted: #64748b;
    --rk-temp-shadow: 0 15px 35px -10px rgba(15, 23, 42, 0.1);
}

.rk-temp-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-temp-bg);
    border-radius: 24px;
    box-shadow: var(--rk-temp-shadow);
    border: 1px solid var(--rk-temp-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-temp-header {
    background: linear-gradient(135deg, var(--rk-temp-darker) 0%, var(--rk-temp-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-temp-brand);
}

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

.rk-temp-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-temp-title span { color: #7dd3fc; }

.rk-temp-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-temp-link {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-temp-link:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- KONTENER SYMULATORA --- */
.rk-temp-simulator {
    padding: 40px 50px;
    background: var(--rk-temp-surface);
}

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-temp-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa Strona - Kontrolki i SVG */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-slider-box {
    background: var(--rk-temp-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-temp-border);
}

.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-dark);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-temp-safe);
    transition: color 0.3s;
}

/* Custom Input Range */
.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-temp-safe);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: background 0.3s, transform 0.1s;
}

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

/* Wizualizacja SVG Przekroju */
.rk-svg-stage {
    flex-grow: 1;
    background: #f1f5f9;
    border-radius: 16px;
    border: 1px dashed var(--rk-temp-border);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    position: relative;
    overflow: hidden;
}

.rk-cross-section { width: 100%; max-width: 350px; height: auto; }

/* Animacje SVG */
.anim-heat-ray { stroke-dasharray: 8 8; animation: heatRise 2s linear infinite; }
@keyframes heatRise { to { stroke-dashoffset: -16; } }

.anim-crack-path { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease-out; }
.state-danger .anim-crack-path { stroke-dashoffset: 0; }

.anim-pipe-color { transition: fill 0.3s, stroke 0.3s; }
.state-warn .anim-pipe-color { fill: var(--rk-temp-warn); stroke: #d97706; }
.state-warn .anim-heat-ray { stroke: var(--rk-temp-warn); animation-duration: 1.2s; }
.state-danger .anim-pipe-color { fill: var(--rk-temp-danger); stroke: #b91c1c; }
.state-danger .anim-heat-ray { stroke: var(--rk-temp-danger); animation-duration: 0.7s; }

/* Prawa Strona - Metryki */
.rk-sim-metrics {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-metric-card {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 12px;
    padding: 20px;
    transition: all 0.3s;
    position: relative;
    overflow: hidden;
}

.rk-metric-card::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-temp-safe);
    transition: background 0.3s;
}

.state-warn .rk-metric-card::before { background: var(--rk-temp-warn); }
.state-danger .rk-metric-card::before { background: var(--rk-temp-danger); }

.rk-metric-title {
    font-size: 12px;
    color: var(--rk-temp-muted);
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 8px;
}

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

.rk-metric-desc {
    font-size: 13px;
    color: var(--rk-temp-text);
    margin-top: 8px;
    line-height: 1.4;
}

/* Ostrzeżenie (Awaria) */
.rk-alert-box {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    margin-top: auto;
    animation: alertPop 0.3s ease-out;
}

.rk-alert-box strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 4px; }
.state-danger .rk-alert-box { display: block; }

@keyframes alertPop {
    0% { opacity: 0; transform: scale(0.95); }
    100% { opacity: 1; transform: scale(1); }
}

/* Strefy Temperatur (Limity) */
.rk-zones-info {
    padding: 30px 50px 40px;
    background: #ffffff;
    border-top: 1px solid var(--rk-temp-border);
}

.rk-zones-info h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-temp-dark);
}

.rk-zones-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-zone-item {
    background: #f8fafc;
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-temp-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-zone-icon {
    width: 40px; height: 40px;
    background: #e0f2fe;
    color: var(--rk-temp-brand);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-zone-item h4 { margin: 0; font-size: 15px; font-weight: 800; color: var(--rk-temp-dark); }
.rk-zone-limit { font-size: 20px; font-weight: 900; color: var(--rk-temp-brand); }
.rk-zone-text { font-size: 13px; color: var(--rk-temp-muted); line-height: 1.5; margin: 0; }

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-simulator, .rk-zones-info { padding: 30px 20px; }
    .rk-temp-title { font-size: 24px; }
    .rk-sim-layout { grid-template-columns: 1fr; padding: 20px; gap: 20px; }
    .rk-zones-grid { grid-template-columns: 1fr; }
    .rk-svg-stage { height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#article-temperatura",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/"
    },
    "headline": "Maksymalna temperatura zasilania ogrzewania podłogowego według normy PN-EN 1264",
    "description": "Zgodnie z PN-EN 1264 maksymalna temperatura zasilania to 50°C. Przekroczenie limitu prowadzi do uszkodzeń mechanicznych wylewki (naprężenia ścinające 2,5 MPa) i degradacji paneli.",
    "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#dataset-limity",
    "name": "Wartości graniczne temperatur powierzchniowych (PN-EN 1264)",
    "description": "Zestawienie dopuszczalnych temperatur powierzchni posadzki dla poszczególnych stref przebywania w budynku mieszkalnym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna temperatura ogrzewania podłogowego",
      "norma PN-EN 1264",
      "strefa brzegowa temperatura",
      "naprężenia ścinające wylewki",
      "temperatura zasilania podłogówki"
    ],
    "measurementTechnique": "Określenie parametrów granicznych na podstawie normy europejskiej PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa stałego przebywania ludzi (salony, sypialnie): max 29°C.",
        "Strefy łazienkowe i sanitarne: max 33°C.",
        "Strefy brzegowe (do 1 m od okien): max 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#webapp-symulator",
    "name": "Symulator Naprężeń Termicznych Posadzki",
    "description": "Interaktywny kalkulator wizualizujący wpływ temperatury zasilania na naprężenia wylewki, temperaturę powierzchni oraz ryzyko pęknięć mechanicznych (uszkodzenia płytek, syndrom ciężkich nóg).",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "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="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
            Reżim Temperaturowy
        </div>
        <h2 class="rk-temp-title">Maksymalna temperatura zasilania <span>według PN-EN 1264</span></h2>
        <p class="rk-temp-lead">
            Maksymalna temperatura zasilania instalacji ogrzewania podłogowego w układzie ciągłym wynosi <strong>50°C</strong> zgodnie z wymaganiami normy <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/" class="rk-temp-link">PN-EN 1264</a>. Niedopełnienie tych obostrzeń i wpuszczenie w jastrych parametru rzędu 55–60°C (brak <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-temp-link">zaworu mieszającego</a> na starym kotle) generuje ogromne naprężenia ścinające. Skutkuje to pękaniem płytek, degradacją termiczną paneli i &#8222;syndromem ciężkich nóg&#8221;.
        </p>
    </div>

    <div class="rk-temp-simulator">
        <div class="rk-sim-layout state-safe" id="rk-sim-core">
            
            <div class="rk-sim-controls">
                <div class="rk-slider-box">
                    <div class="rk-slider-header">
                        <span class="rk-slider-label">Zasilanie Układu (T<sub>z</sub>)</span>
                        <span class="rk-slider-value" id="val-supply">35°C</span>
                    </div>
                    <input type="range" class="rk-range-slider" id="rk-temp-slider" min="25" max="65" step="1" value="35">
                </div>

                <div class="rk-svg-stage">
                    <svg class="rk-cross-section" viewBox="0 0 200 150" xmlns="http://www.w3.org/2000/svg">
                        <rect x="10" y="110" width="180" height="30" fill="#cbd5e1" rx="4"/>
                        <circle cx="30" cy="125" r="2" fill="#94a3b8"/> <circle cx="50" cy="115" r="2" fill="#94a3b8"/>
                        <rect x="10" y="50" width="180" height="60" fill="#e2e8f0" rx="2"/>
                        <rect x="10" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="55" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="100" y="40" width="43" height="8" fill="#94a3b8" rx="1"/>
                        <rect x="145" y="40" width="45" height="8" fill="#94a3b8" rx="1"/>
                        <circle class="anim-pipe-color" cx="100" cy="85" r="12" fill="#10b981" stroke="#047857" stroke-width="3"/>
                        <circle cx="100" cy="85" r="6" fill="rgba(255,255,255,0.4)"/>
                        <path class="anim-heat-ray" d="M 80 70 Q 75 50 80 30" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-heat-ray" d="M 100 65 Q 100 45 100 25" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-heat-ray" d="M 120 70 Q 125 50 120 30" fill="none" stroke="#10b981" stroke-width="2" stroke-linecap="round"/>
                        <path class="anim-crack-path" d="M 98 40 L 92 60 L 105 80 L 100 110" fill="none" stroke="#0f172a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-metrics">
                <div class="rk-metric-card">
                    <div class="rk-metric-title">Temperatura Posadzki</div>
                    <div class="rk-metric-val" id="val-surface">24.5°C</div>
                    <div class="rk-metric-desc" id="desc-surface">Pełny komfort. Zgodnie z PN-EN 1264.</div>
                </div>
                
                <div class="rk-metric-card">
                    <div class="rk-metric-title">Naprężenia Wylewki</div>
                    <div class="rk-metric-val" id="val-stress">0.4 MPa</div>
                    <div class="rk-metric-desc" id="desc-stress">Stabilna praca w granicach wytrzymałości jastrychu.</div>
                </div>

                <div class="rk-alert-box">
                    <strong>Koszt naprawy: min. 15 000 PLN!</strong>
                    Naprężenia ścinające przekraczają wytrzymałość betonu na rozciąganie. Bezpowrotne odklejenie gresu i degradacja rur.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-zones-info">
        <h3>Wartości graniczne temperatur (Powierzchnia)</h3>
        <div class="rk-zones-grid">
            
            <div class="rk-zone-item">
                <div class="rk-zone-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>
                <h4>Salony i Sypialnie</h4>
                <div class="rk-zone-limit">max 29°C</div>
                <p class="rk-zone-text">Strefa stałego przebywania ludzi. Zabezpiecza przed &#8222;syndromem ciężkich nóg&#8221;.</p>
            </div>

            <div class="rk-zone-item">
                <div class="rk-zone-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 12h20"></path><path d="M5 12v5a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-5"></path><path d="M7 21h10"></path><path d="M12 12v-5"></path><path d="M8 7h8"></path><path d="M12 7V4"></path><path d="M10 4h4"></path></svg>
                </div>
                <h4>Łazienki i Sanitarne</h4>
                <div class="rk-zone-limit">max 33°C</div>
                <p class="rk-zone-text">Dopuszcza się wyższą temperaturę z uwagi na zwiększone zapotrzebowanie na komfort (bosa stopa).</p>
            </div>

            <div class="rk-zone-item">
                <div class="rk-zone-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"><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>
                <h4>Strefy Brzegowe</h4>
                <div class="rk-zone-limit">max 35°C</div>
                <p class="rk-zone-text">Pas o szerokości do 1 m <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-temp-link" style="color:var(--rk-temp-muted);">wzdłuż dużych przeszkleń</a> w celu kompensacji strat zimna.</p>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-temp-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener interaktywny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika Symulatora Temperatur
    const slider = document.getElementById('rk-temp-slider');
    const layout = document.getElementById('rk-sim-core');
    
    const valSupply = document.getElementById('val-supply');
    const valSurface = document.getElementById('val-surface');
    const valStress = document.getElementById('val-stress');
    const descSurface = document.getElementById('desc-surface');
    const descStress = document.getElementById('desc-stress');
    const sliderThumb = document.querySelector('.rk-range-slider');

    function updateSimulation() {
        const temp = parseInt(slider.value);
        valSupply.textContent = temp + '°C';

        // Prosta interpolacja fizyczna dla estymacji:
        // Powierzchnia rośnie z temperaturą zasilania.
        const surfaceTemp = (20 + (temp - 25) * 0.45).toFixed(1);
        valSurface.textContent = surfaceTemp + '°C';

        // Naprężenia w betonie rosną eksponencjalnie pow. 40 stopni
        let stress = 0.2 + ((temp - 25) * 0.02);
        if(temp > 45) {
            stress = stress + Math.pow((temp - 45)*0.15, 2);
        }
        valStress.textContent = stress.toFixed(1) + ' MPa';

        // Stany logiczne
        layout.classList.remove('state-safe', 'state-warn', 'state-danger');

        if (temp <= 40) {
            layout.classList.add('state-safe');
            descSurface.textContent = 'Pełny komfort. Zgodnie z PN-EN 1264.';
            descStress.textContent = 'Stabilna praca w granicach wytrzymałości jastrychu.';
            sliderThumb.style.setProperty('--rk-temp-safe', '#10b981'); // update thumb via custom prop if needed (CSS takes care mostly)
            slider.style.background = `linear-gradient(to right, #10b981 ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        } 
        else if (temp > 40 && temp <= 50) {
            layout.classList.add('state-warn');
            descSurface.textContent = 'Temperatura na granicy dopuszczalności. Ryzyko dyskomfortu (syndrom ciężkich nóg).';
            descStress.textContent = 'Zwiększona praca płyty grzewczej. Dylatacje mocno obciążone.';
            slider.style.background = `linear-gradient(to right, #f59e0b ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        } 
        else if (temp > 50) {
            layout.classList.add('state-danger');
            descSurface.textContent = 'Przekroczenie normy! Degardacja klejów i uszkodzenia paneli.';
            descStress.textContent = 'Naprężenia ścinające wykraczają poza wytrzymałość betonu na rozciąganie.';
            slider.style.background = `linear-gradient(to right, #ef4444 ${(temp-25)/40*100}%, #cbd5e1 ${(temp-25)/40*100}%)`;
        }
    }

    if(slider) {
        slider.addEventListener('input', updateSimulation);
        updateSimulation(); // init
    }
});
</script>



<style>
:root {
    --rk-pitch-dark: #0f172a;
    --rk-pitch-darker: #020617;
    --rk-pitch-brand: #10b981; /* Zielony / szmaragdowy akcent efektywności OZE i SCOP */
    --rk-pitch-brand-light: #e6f4ea;
    --rk-pitch-accent: #3b82f6; /* Niebieski dla pompy ciepła i krzywej grzewczej */
    --rk-pitch-bg: #ffffff;
    --rk-pitch-surface: #f8fafc;
    --rk-pitch-border: #cbd5e1;
    --rk-pitch-text: #334155;
    --rk-pitch-muted: #64748b;
    --rk-pitch-shadow: 0 15px 35px -10px rgba(16, 185, 129, 0.1);
}

.rk-pitch-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pitch-bg);
    border-radius: 24px;
    box-shadow: var(--rk-pitch-shadow);
    border: 1px solid var(--rk-pitch-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-pitch-header {
    background: linear-gradient(135deg, var(--rk-pitch-darker) 0%, var(--rk-pitch-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-pitch-brand);
}

.rk-pitch-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #34d399;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(52, 211, 153, 0.3);
}

.rk-pitch-title {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-pitch-title span { color: #34d399; }

.rk-pitch-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-pitch-link {
    color: #34d399;
    text-decoration: none;
    border-bottom: 1px dashed rgba(52, 211, 153, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-pitch-link:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- INTERAKTYWNY PANEL OPTYMALIZACJI --- */
.rk-pitch-interactive {
    padding: 40px 50px;
    background: var(--rk-pitch-surface);
}

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-pitch-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa Strona - Wybór rozstawu i wykres */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-pitch-selector-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-pitch-dark);
    text-transform: uppercase;
    margin: 0 0 12px 0;
    letter-spacing: 0.5px;
}

/* Menu Przełączników Kafelkowych */
.rk-pitch-tiles {
    display: flex;
    gap: 12px;
}

.rk-pitch-tile-btn {
    flex: 1;
    background: var(--rk-pitch-surface);
    border: 2px solid var(--rk-pitch-border);
    border-radius: 14px;
    padding: 15px 10px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.rk-pitch-tile-btn:hover {
    border-color: var(--rk-pitch-accent);
    background: #f0f6ff;
}

.rk-pitch-tile-btn.active {
    border-color: var(--rk-pitch-brand);
    background: var(--rk-pitch-brand-light);
    box-shadow: 0 4px 12px rgba(16, 185, 129, 0.15);
}

.rk-tile-step {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-pitch-dark);
}

.rk-tile-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-pitch-muted);
}

.rk-pitch-tile-btn.active .rk-tile-step { color: #065f46; }
.rk-pitch-tile-btn.active .rk-tile-label { color: #047857; }

/* Statyczny moduł graficzny SVG */
.rk-svg-viewport {
    background: #f8fafc;
    border-radius: 16px;
    border: 1px dashed var(--rk-pitch-border);
    padding: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
}

.rk-geometry-svg { width: 100%; max-width: 320px; height: auto; }

/* Dynamiczne stany CSS mapowane przez JS na klasę kontenera głównego */
.rk-pipe-line { fill: none; stroke: var(--rk-pitch-accent); stroke-width: 5; stroke-linecap: round; transition: all 0.4s ease; }
.rk-heat-circle { fill: #fca5a5; opacity: 0.4; transition: all 0.4s ease; }

/* Stany geometrii ułożenia rur */
.geom-10 .rk-pipe-15, .geom-10 .rk-pipe-20 { display: none; }
.geom-15 .rk-pipe-10, .geom-15 .rk-pipe-20 { display: none; }
.geom-20 .rk-pipe-10, .geom-20 .rk-pipe-15 { display: none; }

/* Prawa Strona - Parametry Techniczno-Ekonomiczne */
.rk-sim-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-tech-card {
    background: #ffffff;
    border: 1px solid var(--rk-pitch-border);
    border-radius: 12px;
    padding: 18px 20px;
    position: relative;
    overflow: hidden;
}

.rk-tech-card::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-pitch-brand);
}

.rk-card-label {
    font-size: 11px;
    color: var(--rk-pitch-muted);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.rk-card-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-pitch-dark);
}

.rk-card-comment {
    font-size: 13px;
    color: var(--rk-pitch-text);
    margin-top: 6px;
    line-height: 1.4;
}

/* Panel Błędu Krytycznego (Garaż/Sypialnia co 20 przy przeszkleniach) */
.rk-crit-panel {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    animation: panelPop 0.3s ease-out;
}
.rk-crit-panel strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 3px; }
.geom-20 .rk-crit-panel { display: block; }

@keyframes panelPop {
    from { opacity: 0; transform: scale(0.96); }
    to { opacity: 1; transform: scale(1); }
}

@media (max-width: 768px) {
    .rk-pitch-header, .rk-pitch-interactive { padding: 30px 20px; }
    .rk-pitch-title { font-size: 24px; }
    .rk-sim-layout { grid-template-columns: 1fr; padding: 20px; gap: 25px; }
    .rk-svg-viewport { min-height: 160px; }
    .rk-pitch-tiles { gap: 8px; }
    .rk-pitch-tile-btn { padding: 12px 6px; }
    .rk-tile-step { font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/"
    },
    "headline": "Jaki rozstaw rur ogrzewania podłogowego zastosować przy pompie ciepła?",
    "description": "Analiza wpływu geometrii rozstawu rur (10 cm vs 15 cm) na temperaturę zasilania pompy ciepła, współczynniki COP/SCOP oraz roczne oszczędności eksploatacyjne.",
    "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#dataset",
    "name": "Zestawienie Wydajności i Zużycia Rur w Zależności od Rozstawu",
    "description": "Twarde dane przeliczeniowe łączące rozstaw rur (co 10, 15, 20 cm) z jednostkowym zużyciem materiału oraz maksymalną mocą cieplną posadzki gresowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rozstaw rur pompa ciepła",
      "zużycie rury na metr kwadratowy",
      "maksymalna moc grzewcza podłogówki",
      "krzywa grzewcza pompy ciepła",
      "obniżenie temperatury zasilania SCOP"
    ],
    "measurementTechnique": "Analiza numeryczna oporów przewodzenia jastrychu wg normy PN-EN 1264 i symulacja strat COP sprężarek inwerterowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rozstaw 10 cm: Zużycie 10,0 mb/m2, moc 75-85 W/m2 przy Tz=35°C. Idealny do łazienek.",
        "Rozstaw 15 cm: Zużycie 6,7 mb/m2, moc 55-65 W/m2 przy Tz=35°C. Standard salonowy.",
        "Rozstaw 20 cm: Zużycie 5,0 mb/m2, moc 35-45 W/m2 przy Tz=35°C. Ryzyko taktowania pompy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/#webapp",
    "name": "Interaktywny Symulator Geometrii Pętli Grzewczych",
    "description": "Narzędzie pozwalające przełączać gęstość ułożenia rur (10, 15, 20 cm) i obserwować w czasie rzeczywistym zużycie mb rury, wymaganą temperaturę zasilania oraz prognozowane koszty eksploatacji.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pitch-container" id="rk-pitch-app">
    
    <div class="rk-pitch-header">
        <div class="rk-pitch-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"><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>
            Geometria Układu OZE
        </div>
        <h2 class="rk-pitch-title">Jaki rozstaw rur ogrzewania podłogowego <span>zastosować przy pompie ciepła?</span></h2>
        <p class="rk-pitch-lead">
            Optymalny rozstaw rur grzewczych przy zasilaniu z niskotemperaturowej pompy ciepła wynosi <strong>10 cm</strong> w łazienkach oraz strefach brzegowych oraz <strong>15 cm</strong> w pozostałych pomieszczeniach mieszkalnych. Zco gęstszego rozstawu pozwala obniżyć temperaturę zasilania o <strong>4–6°C</strong> przy zachowaniu tej samej mocy grzewczej posadzki. Każde obniżenie temperatury wody o 1°C zwiększa efektywność średnioroczną pompy ciepła (współczynnik SCOP) o ok. <strong>2,5%</strong>, co bezpośrednio tnie rachunki za energię elektryczną.
        </p>
    </div>

    <div class="rk-pitch-interactive">
        <div class="rk-sim-layout geom-15" id="rk-pitch-core">
            
            <div class="rk-sim-controls">
                <div>
                    <h3 class="rk-pitch-selector-title">Wybierz gęstość ułożenia przewodów:</h3>
                    <div class="rk-pitch-tiles">
                        <button class="rk-pitch-tile-btn" data-geom="10">
                            <span class="rk-tile-step">co 10 cm</span>
                            <span class="rk-tile-label">Gęsty (Łazienki)</span>
                        </button>
                        <button class="rk-pitch-tile-btn active" data-geom="15">
                            <span class="rk-tile-step">co 15 cm</span>
                            <span class="rk-tile-label">Standard (Pokoje)</span>
                        </button>
                        <button class="rk-pitch-tile-btn" data-geom="20">
                            <span class="rk-tile-step">co 20 cm</span>
                            <span class="rk-tile-label">Rzadki (Garaże)</span>
                        </button>
                    </div>
                </div>

                <div class="rk-svg-viewport">
                    <svg class="rk-geometry-svg" viewBox="0 0 200 100" xmlns="http://www.w3.org/2000/svg">
                        <rect x="5" y="30" width="190" height="60" fill="#e2e8f0" rx="4" stroke="#cbd5e1" stroke-width="1"/>
                        
                        <g class="rk-pipe-10">
                            <circle class="rk-heat-circle" cx="20" cy="65" r="16"/><circle class="rk-heat-circle" cx="50" cy="65" r="16"/><circle class="rk-heat-circle" cx="80" cy="65" r="16"/><circle class="rk-heat-circle" cx="110" cy="65" r="16"/><circle class="rk-heat-circle" cx="140" cy="65" r="16"/><circle class="rk-heat-circle" cx="170" cy="65" r="16"/>
                            <circle class="rk-pipe-line" cx="20" cy="65" r="6"/><circle class="rk-pipe-line" cx="50" cy="65" r="6"/><circle class="rk-pipe-line" cx="80" cy="65" r="6"/><circle class="rk-pipe-line" cx="110" cy="65" r="6"/><circle class="rk-pipe-line" cx="140" cy="65" r="6"/><circle class="rk-pipe-line" cx="170" cy="65" r="6"/>
                        </g>

                        <g class="rk-pipe-15">
                            <circle class="rk-heat-circle" cx="30" cy="65" r="22"/><circle class="rk-heat-circle" cx="85" cy="65" r="22"/><circle class="rk-heat-circle" cx="140" cy="65" r="22"/>
                            <circle class="rk-pipe-line" cx="30" cy="65" r="6"/><circle class="rk-pipe-line" cx="85" cy="65" r="6"/><circle class="rk-pipe-line" cx="140" cy="65" r="6"/>
                        </g>

                        <g class="rk-pipe-20">
                            <circle class="rk-heat-circle" cx="40" cy="65" r="28"/><circle class="rk-heat-circle" cx="130" cy="65" r="28"/>
                            <circle class="rk-pipe-line" cx="40" cy="65" r="6"/><circle class="rk-pipe-line" cx="130" cy="65" r="6"/>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-results">
                <div class="rk-tech-card">
                    <div class="rk-card-label">Zużycie rury grzewczej</div>
                    <div class="rk-card-value" id="val-usage">6,7 mb/m²</div>
                    <div class="rk-card-comment">Standard inżynieryjny dla salonów i sypialni.</div>
                </div>

                <div class="rk-tech-card">
                    <div class="rk-card-label">Maksymalna moc (T<sub>z</sub> = 35°C)</div>
                    <div class="rk-card-value" id="val-power">55 – 65 W/m²</div>
                    <div class="rk-card-comment">Idealnie pokrywa zapotrzebowanie budynków WT 2021 z <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowego-czy-to-sie-oplaca/" class="rk-pitch-link" style="color:var(--rk-pitch-muted);">rekuperacją</a>.</div>
                </div>

                <div class="rk-tech-card">
                    <div class="rk-card-label">Parametry Krzywej Grzewczej</div>
                    <div class="rk-card-value" id="val-curve">35 / 30 °C</div>
                    <div class="rk-card-comment" id="val-cop-comment">Zapewnia wysoki współczynnik COP pompy na poziomie ok. 4,2.</div>
                </div>

                <div class="rk-crit-panel">
                    <strong>Błąd Krytyczny Projektu!</strong>
                    Rzadki układ rur w salonie z dużymi przeszkleniami wymusza podniesienie zasilania do 45°C. Współczynnik COP spada z 4,2 do 3,1, generując <strong>dodatkowy koszt 1200–1800 PLN</strong> co sezon.
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-pitch-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu źródłowego.
                </div>
            `;
            return;
        }
    }

    // Logika kafelków interaktywnych
    const core = document.getElementById('rk-pitch-core');
    const tiles = document.querySelectorAll('.rk-pitch-tile-btn');
    
    const valUsage = document.getElementById('val-usage');
    const valPower = document.getElementById('val-power');
    const valCurve = document.getElementById('val-curve');
    const valCopComment = document.getElementById('val-cop-comment');

    const dataMap = {
        "10": {
            usage: "10,0 mb/m²",
            power: "75 – 85 W/m²",
            curve: "30 / 26 °C",
            comment: "Maksymalna efektywność pompy ciepła. Standard dla łazienek i stref brzegowych.",
            className: "geom-10"
        },
        "15": {
            usage: "6,7 mb/m²",
            power: "55 – 65 W/m²",
            curve: "35 / 30 °C",
            comment: "Zapewnia wysoki współczynnik COP pompy na poziomie ok. 4,2.",
            className: "geom-15"
        },
        "20": {
            usage: "5,0 mb/m²",
            power: "35 – 45 W/m²",
            curve: "45 / 40 °C",
            comment: "Drastyczny spadek sprawności sprężarki pompy ciepła.",
            className: "geom-20"
        }
    };

    tiles.forEach(tile => {
        tile.addEventListener('click', function() {
            tiles.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const geom = this.getAttribute('data-geom');
            const data = dataMap[geom];

            // Aktualizacja metryk technicznych
            valUsage.textContent = data.usage;
            valPower.textContent = data.power;
            valCurve.textContent = data.curve;
            valCopComment.textContent = data.comment;

            // Aktualizacja rzutu geometrycznego przez klasy CSS
            core.className = "rk-sim-layout " + data.className;
        });
    });
});
</script>



<style>
:root {
    --rk-loop-dark: #0f172a;
    --rk-loop-darker: #020617;
    --rk-loop-primary: #0ea5e9; /* Hydronic Blue */
    --rk-loop-primary-light: #e0f2fe;
    --rk-loop-success: #10b981;
    --rk-loop-warning: #f59e0b;
    --rk-loop-danger: #ef4444;
    --rk-loop-bg: #ffffff;
    --rk-loop-surface: #f8fafc;
    --rk-loop-border: #cbd5e1;
    --rk-loop-text: #334155;
    --rk-loop-muted: #64748b;
    --rk-loop-shadow: 0 15px 35px -10px rgba(14, 165, 233, 0.15);
}

.rk-loop-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-loop-bg);
    border-radius: 24px;
    box-shadow: var(--rk-loop-shadow);
    border: 1px solid var(--rk-loop-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-loop-header {
    background: linear-gradient(135deg, var(--rk-loop-darker) 0%, var(--rk-loop-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-loop-primary);
}

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

.rk-loop-header h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-loop-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-loop-link {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed rgba(56, 189, 248, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-loop-link:hover {
    color: #ffffff;
    border-bottom-style: solid;
}

/* --- PANEL INTERAKTYWNY --- */
.rk-loop-interactive {
    padding: 40px 50px;
    background: var(--rk-loop-surface);
}

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

.rk-sim-grid {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-loop-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Lewa sekcja - Średnica, Suwak i Wykres */
.rk-sim-workspace {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

/* Selektor Średnic (Pigułki) */
.rk-diameter-selector {
    display: flex;
    gap: 10px;
    background: var(--rk-loop-surface);
    padding: 6px;
    border-radius: 14px;
    border: 1px solid var(--rk-loop-border);
}

.rk-diameter-btn {
    flex: 1;
    padding: 12px;
    background: transparent;
    border: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-loop-muted);
    cursor: pointer;
    transition: all 0.3s ease;
    text-align: center;
}

.rk-diameter-btn:hover {
    color: var(--rk-loop-primary);
}

.rk-diameter-btn.active {
    background: var(--rk-loop-primary);
    color: #ffffff;
    box-shadow: 0 4px 10px rgba(14, 165, 233, 0.25);
}

/* Box Suwaka Długości */
.rk-length-slider-box {
    background: var(--rk-loop-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-loop-border);
}

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

.rk-slider-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-loop-dark);
    text-transform: uppercase;
}

.rk-slider-counter {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-loop-primary);
    transition: color 0.3s;
}

.rk-main-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
}

.rk-main-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-loop-primary);
    cursor: pointer;
    border: 4px solid #ffffff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.15);
    transition: transform 0.1s;
}

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

/* Wizualizacja SVG (Zegar i Rotametr) */
.rk-svg-viewport {
    background: #ffffff;
    border-radius: 16px;
    border: 1px dashed var(--rk-loop-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
}

.rk-hydraulic-svg {
    width: 100%;
    max-width: 380px;
    height: auto;
}

/* Animacje i Przejścia elementów SVG */
.svg-gauge-pointer { transform-origin: 75px 55px; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); stroke: var(--rk-loop-success); }
.svg-rotameter-float { transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); fill: #334155; }
.svg-pipe-flow { stroke-dasharray: 8; animation: hydraulicFlow 2s linear infinite; stroke: var(--rk-loop-primary); }

@keyframes hydraulicFlow { to { stroke-dashoffset: -16; } }

/* Klasy stanów wtryskiwane przez JS */
.state-safe .svg-gauge-pointer { stroke: var(--rk-loop-success); }
.state-warn .svg-gauge-pointer { stroke: var(--rk-loop-warning); }
.state-danger .svg-gauge-pointer { stroke: var(--rk-loop-danger); }
.state-danger .svg-pipe-flow { animation-duration: 8s; stroke: #94a3b8; } /* Drastyczny spadek przepływu */

/* Prawa sekcja - Wyświetlacz Wyników */
.rk-sim-outputs {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-output-card {
    background: #ffffff;
    border: 1px solid var(--rk-loop-border);
    border-radius: 12px;
    padding: 16px 20px;
    position: relative;
    overflow: hidden;
}

.rk-output-card::before {
    content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px;
    background: var(--rk-loop-success);
    transition: background-color 0.3s;
}

.state-safe .rk-card-hydraulics::before { background: var(--rk-loop-success); }
.state-warn .rk-card-hydraulics::before { background: var(--rk-loop-warning); }
.state-danger .rk-card-hydraulics::before { background: var(--rk-loop-danger); }

.rk-card-label {
    font-size: 11px;
    color: var(--rk-loop-muted);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.rk-card-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-loop-dark);
    transition: color 0.3s;
}

.state-safe .rk-val-status { color: var(--rk-loop-success); }
.state-warn .rk-val-status { color: var(--rk-loop-warning); }
.state-danger .rk-val-status { color: var(--rk-loop-danger); }

.rk-card-comment {
    font-size: 13px;
    color: var(--rk-loop-text);
    margin-top: 6px;
    line-height: 1.4;
}

/* Panel Błędu Krytycznego (Za długa pętla) */
.rk-error-panel {
    display: none;
    background: #fef2f2;
    border: 1px solid #fecaca;
    padding: 15px;
    border-radius: 12px;
    color: #991b1b;
    font-size: 13px;
    line-height: 1.5;
    animation: panelPop 0.3s ease-out;
}
.rk-error-panel strong { font-weight: 800; color: #7f1d1d; display: block; font-size: 14px; margin-bottom: 4px; }
.state-danger .rk-error-panel { display: block; }

@keyframes panelPop {
    from { opacity: 0; transform: scale(0.96); }
    to { opacity: 1; transform: scale(1); }
}

/* --- TABELA LIMITÓW --- */
.rk-loop-limits {
    padding: 35px 50px 45px;
    background: #ffffff;
    border-top: 1px solid var(--rk-loop-border);
}

.rk-loop-limits h3 {
    margin: 0 0 20px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-loop-dark);
}

.rk-limits-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-limit-item {
    background: var(--rk-loop-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-loop-border);
    text-align: center;
}

.rk-limit-diameter {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-loop-muted);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-limit-length {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-loop-primary);
    margin-bottom: 8px;
}

.rk-limit-desc {
    font-size: 13px;
    color: var(--rk-loop-text);
    line-height: 1.5;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-loop-header, .rk-loop-interactive, .rk-loop-limits { padding: 30px 20px; }
    .rk-loop-header h2 { font-size: 24px; }
    .rk-sim-grid { grid-template-columns: 1fr; padding: 20px; gap: 25px; }
    .rk-limits-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-diameter-selector { flex-direction: column; gap: 6px; }
    .rk-diameter-btn { padding: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/"
    },
    "headline": "Ile wynosi maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16x2 mm?",
    "description": "Zgodnie z kryteriami inżynieryjnymi, maksymalna długość obwodu 16 mm wynosi 120 m. Przekroczenie limitu 20 kPa blokuje równoważenie instalacji na rotametrach rozdzielacza.",
    "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#dataset",
    "name": "Graniczne opory hydrauliczne pętli grzewczych PEX/PERT",
    "description": "Zestawienie fizycznych limitów długości obwodów ogrzewania podłogowego w relacji do średnicy zewnętrznej i dopuszczalnych spadków ciśnień.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli podłogówki",
      "rura pex 16mm opory",
      "strata ciśnienia w obwodzie",
      "rotametr rozdzielacza przepływ",
      "zrównoważenie hydrauliczne instalacji"
    ],
    "measurementTechnique": "Modelowanie spadków ciśnień z uwzględnieniem chropowatości bezwzględnej rur plastikowych oraz lepkości kinematicznej wody przy średniej temperaturze pracy.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura o średnicy 16x2 mm: Absolutne maksimum wynosi 120 m. Rekomendowana długość robocza to 80-100 m.",
        "Rura o średnicy 17x2 mm: Maksymalny limit wynosi 140 m.",
        "Rura o średnicy 20x2 mm: Maksymalna długość obwodu to 160 m."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#webapp",
    "name": "Interaktywny Symulator Oporów Hydraulicznych Pętli",
    "description": "Aplikacja obliczeniowa pozwalająca dynamicznie zmieniać długość obwodu oraz średnicę rury, prezentując w czasie rzeczywistym spadek ciśnienia (kPa) i wpływ na rotametry.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container" id="rk-loop-app">
    
    <div class="rk-loop-header">
        <div class="rk-loop-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.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"></path></svg>
            Kryterium Hydrauliczne
        </div>
        <h2>Ile wynosi maksymalna długość pętli ogrzewania podłogowego dla rury PEX/PERT 16&#215;2 mm?</h2>
        <p class="rk-loop-lead">
            Maksymalna dopuszczalna długość jednej pętli grzewczej dla najpopularniejszej średnicy rury 16&#215;2 mm wynosi <strong>120 m</strong> (wliczając odcinki przyłączeniowe). Przekroczenie tej granicy powoduje drastyczny wzrost oporów hydraulicznych powyżej dopuszczalnej wartości <strong>20 kPa (0,2 bar)</strong>. Konsekwencją jest całkowity brak możliwości zrównoważenia hydraulicznego układu na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-loop-link">rotametrach</a>, co prowadzi do „upośledzenia przepływu” i permanentnego niedogrzania strefy mieszkalnej.
        </p>
    </div>

    <div class="rk-loop-interactive">
        <h3>Interaktywny Analizator Spadków Ciśnienia</h3>
        <div class="rk-sim-grid state-safe" id="rk-loop-core">
            
            <div class="rk-sim-workspace">
                <div>
                    <div class="rk-pitch-selector-title">Wybierz średnicę zewnętrzną przewodu:</div>
                    <div class="rk-diameter-selector">
                        <button class="rk-diameter-btn active" data-dim="16">rura Ø 16&#215;2 mm</button>
                        <button class="rk-diameter-btn" data-dim="17">rura Ø 17&#215;2 mm</button>
                        <button class="rk-diameter-btn" data-dim="20">rura Ø 20&#215;2 mm</button>
                    </div>
                </div>

                <div class="rk-length-slider-box">
                    <div class="rk-slider-labels">
                        <span class="rk-slider-title">Całkowita Długość Obwodu (L)</span>
                        <span class="rk-slider-counter" id="val-length">90 m</span>
                    </div>
                    <input type="range" class="rk-main-range" id="rk-loop-slider" min="40" max="180" step="5" value="90">
                </div>

                <div class="rk-svg-viewport">
                    <svg class="rk-hydraulic-svg" viewBox="0 0 300 110" xmlns="http://www.w3.org/2000/svg">
                        <g transform="translate(10, 5)">
                            <path d="M 25 85 A 35 35 0 1 1 125 85" fill="none" stroke="#e2e8f0" stroke-width="8" stroke-linecap="round"/>
                            <circle cx="75" cy="55" r="5" fill="#334155"/>
                            <line class="svg-gauge-pointer" x1="75" y1="55" x2="45" y2="55" stroke-width="3" stroke-linecap="round"/>
                            <text x="75" y="100" font-size="11" font-weight="900" fill="#334155" text-anchor="middle">OPÓR (kPa)</text>
                        </g>

                        <g transform="translate(150, 10)">
                            <rect x="0" y="25" width="60" height="40" rx="6" fill="none" stroke="#cbd5e1" stroke-width="2"/>
                            <path d="M 10 45 L 50 45" fill="none" stroke-width="5" stroke-linecap="round" class="svg-pipe-flow"/>
                            <text x="30" y="20" font-size="10" font-weight="800" fill="#64748b" text-anchor="middle">PRZEPŁYW</text>
                        </g>

                        <g transform="translate(230, 5)">
                            <rect x="25" y="15" width="25" height="70" rx="2" fill="#f8fafc" stroke="#64748b" stroke-width="2"/>
                            <line x1="30" y1="30" x2="38" y2="30" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="30" y1="45" x2="43" y2="45" stroke="#94a3b8" stroke-width="1.5"/>
                            <line x1="30" y1="60" x2="38" y2="60" stroke="#94a3b8" stroke-width="1"/>
                            <line x1="30" y1="75" x2="43" y2="75" stroke="#94a3b8" stroke-width="1.5"/>
                            <rect class="svg-rotameter-float" x="28" y="40" width="19" height="6" rx="1"/>
                            <text x="37" y="100" font-size="11" font-weight="900" fill="#334155" text-anchor="middle">L/MIN</text>
                        </g>
                    </svg>
                </div>
            </div>

            <div class="rk-sim-outputs">
                <div class="rk-output-card rk-card-hydraulics">
                    <div class="rk-card-label">Spadek Ciśnienia Pętli</div>
                    <div class="rk-card-value" id="val-pressure">11.2 kPa</div>
                    <div class="rk-card-comment">Układ stabilny. Straty ciśnienia mieszczą się w normatywnym limicie pompy obiegowej.</div>
                </div>

                <div class="rk-output-card rk-card-hydraulics">
                    <div class="rk-card-label">Stan Hydrauliczny Obwodu</div>
                    <div class="rk-card-value rk-val-status" id="val-status">Optymalny</div>
                    <div class="rk-card-comment" id="desc-status">Przepływ laminarany prawidłowy. Rotametr reaguje na nastawę.</div>
                </div>

                <div class="rk-error-panel">
                    <strong>Upośledzenie hydrauliczne pompy!</strong>
                    Opory liniowe rury drastycznie zdławiły przepływ. Rotametr opadł w okolice <strong>0,2 l/min</strong>. Ta pętla będzie całkowicie zimna. Wymagany podział na mniejsze obwody na etapie <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/" class="rk-loop-link" style="color: #7f1d1d;">rozmieszczenia obwodów</a>.
                </div>
            </div>

        </div>
    </div>

    <div class="rk-loop-limits">
        <h3>Maksymalne granice długości pętli rur według standardu HVAC</h3>
        <div class="rk-limits-grid">
            
            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 16&#215;2 mm</div>
                <div class="rk-limit-length">max 120 m</div>
                <p class="rk-limit-desc">Absolutny limit dla instalacji domowych. Zalecana inżynierska długość robocza to <strong>80–100 m</strong>.</p>
            </div>

            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 17&#215;2 mm</div>
                <div class="rk-limit-length">max 140 m</div>
                <p class="rk-limit-desc">Zwiększona średnica wewnętrzna pozwala na wydłużenie obwodu przy zachowaniu stabilności hydraulicznej.</p>
            </div>

            <div class="rk-limit-item">
                <div class="rk-limit-diameter">Rura Ø 20&#215;2 mm</div>
                <div class="rk-limit-length">max 160 m</div>
                <p class="rk-limit-desc">Stosowana na dużych przestrzeniach (hale, magazyny, obiekty przemysłowe) ze względu na dużą sztywność gięcia.</p>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-loop-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę nieautoryzowanego użycia skryptu.
                </div>
            `;
            return;
        }
    }

    // Zmienne operacyjne i stanowe
    const slider = document.getElementById('rk-loop-slider');
    const layout = document.getElementById('rk-loop-core');
    const dimButtons = document.querySelectorAll('.rk-diameter-btn');

    const valLength = document.getElementById('val-length');
    const valPressure = document.getElementById('val-pressure');
    const valStatus = document.getElementById('val-status');
    const descStatus = document.getElementById('desc-status');

    // Elementy SVG do fizycznej animacji
    const svgPointer = document.querySelector('.svg-gauge-pointer');
    const svgFloat = document.querySelector('.svg-rotameter-float');

    let currentDim = 16; // Domyślna średnica rury

    const limitMap = {
        16: { max: 120, warn: 100, factor: 0.0014 },
        17: { max: 140, warn: 115, factor: 0.0010 },
        20: { max: 160, warn: 135, factor: 0.0006 }
    };

    function recalculateHydraulics() {
        const len = parseInt(slider.value);
        valLength.textContent = len + ' m';

        const config = limitMap[currentDim];

        // Wyliczenie oporów (wzrost kwadratowy ze współczynnikiem dla średnicy)
        let pressure = Math.pow(len, 2) * config.factor;
        valPressure.textContent = pressure.toFixed(1) + ' kPa';

        // Mapowanie parametrów fizycznych na ruch elementów SVG
        // Kąt wskazówki manometru: od -45deg do 135deg
        let angle = -45 + (pressure / 45) * 180;
        if(angle > 140) angle = 140; // Max wychylenie
        svgPointer.style.transform = `rotate(${angle}deg)`;

        // Pozycja pływaka rotametru (y w dół = mniejszy przepływ)
        // Zakres bazowy y: od 20 (max przepływ) do 65 (przepływ zablokowany)
        let floatY = 20 + (pressure / 40) * 45;
        if(floatY > 65) floatY = 65;
        svgFloat.style.transform = `translateY(${floatY - 40}px)`;

        // Zarządzanie stanami wizualnymi i komentarzami inżynierskimi
        layout.classList.remove('state-safe', 'state-warn', 'state-danger');

        if(len <= config.warn) {
            layout.classList.add('state-safe');
            valStatus.textContent = "Optymalny";
            descStatus.textContent = "Przepływ laminarny prawidłowy. Rotametr reaguje na nastawę rozdzielacza.";
        } 
        else if (len > config.warn && len <= config.max) {
            layout.classList.add('state-warn');
            valStatus.textContent = "Ostrzeżenie";
            descStatus.textContent = "Zwiększone opory hydrauliczne. Pompa obiegowa pracuje na wyższym biegu.";
        } 
        else {
            layout.classList.add('state-danger');
            valStatus.textContent = "Przekroczenie limitu";
            descStatus.textContent = "Zablokowanie hydrauliczne obwodu. Brak możliwości wyregulowania pętli.";
        }
    }

    // Obsługa przycisków wyboru średnicy
    dimButtons.forEach(btn => {
        btn.addEventListener('click', function() {
            dimButtons.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            currentDim = parseInt(this.getAttribute('data-dim'));
            recalculateHydraulics();
        });
    });

    if(slider) {
        slider.addEventListener('input', recalculateHydraulics);
        recalculateHydraulics(); // inicjalizacja startowa
    }
});
</script>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"></blockquote>



<style>
:root {
    --rk-vessel-dark: #0f172a;
    --rk-vessel-darker: #020617;
    --rk-vessel-brand: #0ea5e9; /* Woda / Błękit */
    --rk-vessel-brand-light: #e0f2fe;
    --rk-vessel-accent: #f43f5e; /* Naczynie wzbiorcze / Czerwień */
    --rk-vessel-success: #10b981;
    --rk-vessel-bg: #ffffff;
    --rk-vessel-surface: #f8fafc;
    --rk-vessel-border: #cbd5e1;
    --rk-vessel-text: #334155;
    --rk-vessel-muted: #64748b;
    --rk-vessel-formula: #1e293b;
    --rk-vessel-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.15);
}

.rk-vessel-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-vessel-bg);
    border-radius: 24px;
    box-shadow: var(--rk-vessel-shadow);
    border: 1px solid var(--rk-vessel-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-vessel-header {
    background: linear-gradient(135deg, var(--rk-vessel-darker) 0%, var(--rk-vessel-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-vessel-brand);
}

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

.rk-vessel-header h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-vessel-header h2 span { color: var(--rk-vessel-brand); }

.rk-vessel-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-vessel-link {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed rgba(125, 211, 252, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}

.rk-vessel-link:hover { color: #ffffff; border-bottom-style: solid; }

/* --- INTERAKTYWNY SYMULATOR --- */
.rk-vessel-interactive {
    padding: 40px 50px;
    background: var(--rk-vessel-surface);
}

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

.rk-sim-layout {
    display: grid;
    grid-template-columns: 1fr 360px;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-vessel-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

/* Kolumna Lewa - Suwaki i parametry */
.rk-sim-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-control-group {
    background: var(--rk-vessel-surface);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-vessel-border);
}

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

.rk-control-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-vessel-dark);
    text-transform: uppercase;
}

.rk-control-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vessel-brand);
}

/* Suwaki */
.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-vessel-brand);
    cursor: pointer;
    border: 4px solid #ffffff;
    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.15); }

/* Pigułki rozdzielacza */
.rk-pill-selector {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 10px;
}

.rk-pill-btn {
    flex: 1;
    min-width: 60px;
    padding: 10px 5px;
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    color: var(--rk-vessel-muted);
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}

.rk-pill-btn:hover { border-color: var(--rk-vessel-brand); color: var(--rk-vessel-brand); }
.rk-pill-btn.active { background: var(--rk-vessel-brand); color: #ffffff; border-color: var(--rk-vessel-brand); }

/* Kolumna Prawa - Wyniki i SVG */
.rk-sim-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-svg-viewport {
    background: #ffffff;
    border-radius: 16px;
    border: 1px dashed var(--rk-vessel-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 220px;
    position: relative;
}

.rk-vessel-svg { width: 100%; max-width: 250px; height: auto; }

/* SVG Animacje */
.anim-water-level { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: bottom; }
.anim-diaphragm { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-gauge-needle { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); transform-origin: 75px 55px; }

/* Karty Wyników */
.rk-result-card {
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-result-card.highlight {
    border-color: var(--rk-vessel-accent);
    background: #fff1f2;
}

.rk-res-label { font-size: 12px; font-weight: 800; color: var(--rk-vessel-muted); text-transform: uppercase; }
.rk-res-value { font-size: 22px; font-weight: 900; color: var(--rk-vessel-dark); }
.highlight .rk-res-label { color: #be123c; }
.highlight .rk-res-value { color: var(--rk-vessel-accent); }

/* --- SEKCJA WZORÓW --- */
.rk-vessel-formulas {
    padding: 0 50px 40px;
    background: var(--rk-vessel-surface);
}

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

.rk-formula-box {
    background: #ffffff;
    border: 1px solid var(--rk-vessel-border);
    border-radius: 16px;
    padding: 25px;
    display: grid;
    grid-template-columns: 350px 1fr;
    gap: 30px;
    align-items: center;
}

.rk-formula-math {
    background: var(--rk-vessel-formula);
    padding: 20px;
    border-radius: 12px;
    color: #f8fafc;
    font-family: 'Courier New', Courier, monospace;
    font-size: 18px;
    font-weight: 700;
    text-align: center;
    border-left: 4px solid var(--rk-vessel-brand);
    letter-spacing: 0.5px;
}

.rk-formula-math sub { font-size: 11px; color: #93c5fd; }
.rk-formula-math span.operator { color: #f43f5e; margin: 0 5px; }

/* Custom Fraction for HTML */
.rk-html-fraction {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    vertical-align: middle;
    margin: 0 5px;
    line-height: 1.2;
}
.rk-html-numerator { border-bottom: 2px solid #cbd5e1; padding: 0 5px; }
.rk-html-denominator { padding: 0 5px; }

.rk-formula-desc h4 { margin: 0 0 10px 0; font-size: 16px; font-weight: 800; color: var(--rk-vessel-dark); }
.rk-formula-desc p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--rk-vessel-text); }
.rk-formula-desc strong { font-weight: 800; color: var(--rk-vessel-dark); }

@media (max-width: 768px) {
    .rk-vessel-header, .rk-vessel-interactive, .rk-vessel-formulas { padding: 30px 20px; }
    .rk-vessel-header h2 { font-size: 24px; }
    .rk-sim-layout, .rk-formula-box { grid-template-columns: 1fr; }
    .rk-formula-box { gap: 15px; padding: 20px; }
    .rk-svg-viewport { min-height: 180px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/"
    },
    "headline": "Ile litrów wody mieści się w instalacji podłogówki i jak dobrać naczynie wzbiorcze?",
    "description": "Procedura obliczeniowa pojemności zładu i naczynia przeponowego według normy PN-EN 12828. Poznaj wzory i kalkulator pojemności rur PEX/PERT 16x2 mm.",
    "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#dataset",
    "name": "Algorytm doboru naczynia wzbiorczego PN-EN 12828",
    "description": "Matematyczne zestawienie kroków i współczynników wymaganych do obliczenia całkowitego zładu wodnego i minimalnej pojemności naczynia kompensacyjnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pojemność wodna rury pex 16",
      "jak dobrać naczynie wzbiorcze",
      "wzór na naczynie przeponowe",
      "zład wody ogrzewanie podłogowe",
      "norma PN-EN 12828"
    ],
    "measurementTechnique": "Szeregowanie algorytmiczne wg norm europejskich, uwzględniające rozszerzalność wody, ciśnienie wstępne i zapas bezpieczeństwa.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pojemność rur: V_rur = L_calk * 0,113 l/mb",
        "Pojemność instalacji: V_inst = V_rur + V_rozdz + V_buf",
        "Pojemność użytkowa: V_e = V_inst * e * 1,3",
        "Pojemność nominalna: V_n = V_e * ((p_max + 1) / (p_max - p_p))"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/#webapp",
    "name": "Kalkulator Pojemności Zładu i Naczynia Wzbiorczego",
    "description": "Interaktywne narzędzie obliczające pojemność całkowitą instalacji ogrzewania podłogowego oraz dobierające normatywną pojemność naczynia przeponowego.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vessel-container" id="rk-vessel-app">
    
    <div class="rk-vessel-header">
        <div class="rk-vessel-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 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>
            Pojemność i Kompensacja
        </div>
        <h2>Ile litrów wody mieści się w instalacji podłogówki i <span>jak dobrać naczynie wzbiorcze?</span></h2>
        <p class="rk-vessel-lead">
            Pojemność wodna jednego metra bieżącego rury PERT/PEX o średnicy 16&#215;2 mm wynosi dokładnie <strong>0,113 litra</strong>. Do obliczenia całkowitej pojemności zładu instalacji należy zsumować objętość rur podłogówki, belek <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-vessel-link">rozdzielacza</a> oraz źródła ciepła (np. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-vessel-link">bufora</a>). <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/" class="rk-vessel-link">Naczynie wzbiorcze</a> dobiera się w oparciu o normę <strong>PN-EN 12828</strong>, przyjmując minimalny współczynnik rezerwy pojemności na poziomie 4% całkowitej objętości zładu.
        </p>
    </div>

    <div class="rk-vessel-interactive">
        <h3>Kalkulator Zładu i Naczynia Wzbiorczego</h3>
        
        <div class="rk-sim-layout">
            
            <div class="rk-sim-controls">
                
                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Długość rur (L<sub>całk</sub>)</span>
                        <span class="rk-control-value" id="val-pipe">800 m</span>
                    </div>
                    <input type="range" class="rk-range-input" id="range-pipe" min="100" max="2500" step="50" value="800">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Zbiornik Buforowy</span>
                        <span class="rk-control-value" id="val-buffer">60 L</span>
                    </div>
                    <input type="range" class="rk-range-input" id="range-buffer" min="0" max="500" step="10" value="60">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-header">
                        <span class="rk-control-label">Liczba sekcji rozdzielacza</span>
                    </div>
                    <div class="rk-pill-selector">
                        <button class="rk-pill-btn" data-sec="4">4 sek.</button>
                        <button class="rk-pill-btn" data-sec="8">8 sek.</button>
                        <button class="rk-pill-btn active" data-sec="12">12 sek.</button>
                        <button class="rk-pill-btn" data-sec="16">16 sek.</button>
                    </div>
                </div>

            </div>

            <div class="rk-sim-results">
                
                <div class="rk-svg-viewport">
                    <svg class="rk-vessel-svg" viewBox="0 0 200 160" xmlns="http://www.w3.org/2000/svg">
                        <path d="M 70 20 Q 100 10 130 20 L 130 140 Q 100 150 70 140 Z" fill="#e2e8f0" stroke="#94a3b8" stroke-width="4"/>
                        <path class="anim-diaphragm" id="svg-diaphragm" d="M 72 80 Q 100 110 128 80" fill="none" stroke="#334155" stroke-width="3" stroke-dasharray="4"/>
                        <g transform="translate(0, 145)">
                            <path class="anim-water-level" id="svg-water" d="M 72 -5 Q 100 5 128 -5 L 128 -65 Q 100 -55 72 -65 Z" fill="#0ea5e9" opacity="0.8"/>
                        </g>
                        <rect x="95" y="145" width="10" height="15" fill="#64748b"/>
                        <path d="M 85 155 L 115 155" fill="none" stroke="#64748b" stroke-width="4"/>
                        
                        <g transform="translate(150, 40)">
                            <circle cx="20" cy="20" r="18" fill="#ffffff" stroke="#cbd5e1" stroke-width="3"/>
                            <path d="M 8 20 A 12 12 0 0 1 32 20" fill="none" stroke="#10b981" stroke-width="4"/>
                            <path d="M 32 20 A 12 12 0 0 1 12 28" fill="none" stroke="#f43f5e" stroke-width="4"/>
                            <circle cx="20" cy="20" r="3" fill="#334155"/>
                            <line class="anim-gauge-needle" id="svg-needle" x1="20" y1="20" x2="10" y2="10" stroke="#334155" stroke-width="2" stroke-linecap="round" style="transform-origin: 20px 20px;"/>
                        </g>
                    </svg>
                </div>

                <div class="rk-result-card">
                    <div class="rk-res-label">Całkowity zład (V<sub>inst</sub>)</div>
                    <div class="rk-res-value" id="res-total">156.4 L</div>
                </div>

                <div class="rk-result-card highlight">
                    <div class="rk-res-label">Min. Naczynie (V<sub>n</sub>)</div>
                    <div class="rk-res-value" id="res-vessel">12 L</div>
                </div>

            </div>

        </div>
    </div>

    <div class="rk-vessel-formulas">
        <h3 style="font-size: 20px; font-weight: 800; color: var(--rk-vessel-dark); margin: 0 0 20px 0; text-align: center;">Procedura obliczeniowa wg PN-EN 12828</h3>
        
        <div class="rk-formula-grid">
            
            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>rur</sub> = L<sub>całk</sub> <span class="operator">&times;</span> 0,113 <span style="font-size:12px;color:#94a3b8;">l/mb</span>
                </div>
                <div class="rk-formula-desc">
                    <h4>1. Pojemność wodna rur (V<sub>rur</sub>)</h4>
                    <p>Mnożymy całkowitą długość zastosowanej rury grzewczej PEX 16&#215;2 mm przez jej stałą pojemność wewnętrzną wynoszącą <strong>0,113 litra na metr bieżący</strong>.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>inst</sub> = V<sub>rur</sub> <span class="operator">+</span> V<sub>rozdz</sub> <span class="operator">+</span> V<sub>buf</sub>
                </div>
                <div class="rk-formula-desc">
                    <h4>2. Całkowita pojemność instalacji (V<sub>inst</sub>)</h4>
                    <p>Gdzie <strong>V<sub>rozdz</sub></strong> to objętość belek i armatury (średnio 0,5 l na każdą sekcję rozdzielacza), a <strong>V<sub>buf</sub></strong> to pojemność ewentualnego zbiornika buforowego lub sprzęgła.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math">
                    V<sub>e</sub> = V<sub>inst</sub> <span class="operator">&times;</span> e <span class="operator">&times;</span> 1,3
                </div>
                <div class="rk-formula-desc">
                    <h4>3. Pojemność użytkowa naczynia (V<sub>e</sub>)</h4>
                    <p>Gdzie <strong>e</strong> to współczynnik rozszerzalności wody (dla t<sub>z</sub> = 45°C wynosi <strong>0,0095</strong>), a <strong>1,3</strong> to wymagany współczynnik bezpieczeństwa rezerwy wody.</p>
                </div>
            </div>

            <div class="rk-formula-box">
                <div class="rk-formula-math" style="display: flex; align-items: center; justify-content: center;">
                    V<sub>n</sub> = V<sub>e</sub> <span class="operator">&times;</span>
                    <div class="rk-html-fraction">
                        <div class="rk-html-numerator">p<sub>max</sub> + 1</div>
                        <div class="rk-html-denominator">p<sub>max</sub> &#8211; p<sub>p</sub></div>
                    </div>
                </div>
                <div class="rk-formula-desc">
                    <h4>4. Minimalna pojemność nominalna (V<sub>n</sub>)</h4>
                    <p>Gdzie <strong>p<sub>max</sub></strong> to max. dopuszczalne ciśnienie (zawór bezpieczeństwa – zwykle 3,0 bar), a <strong>p<sub>p</sub></strong> to ciśnienie wstępne gazu w naczyniu (zwykle 1,0–1,5 bar).</p>
                </div>
            </div>

        </div>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-vessel-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynieryjny należy do serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu źródłowego.
                </div>
            `;
            return;
        }
    }

    // Zmienne UI
    const rangePipe = document.getElementById('range-pipe');
    const rangeBuffer = document.getElementById('range-buffer');
    const pillSecs = document.querySelectorAll('.rk-pill-btn');
    
    const valPipe = document.getElementById('val-pipe');
    const valBuffer = document.getElementById('val-buffer');
    const resTotal = document.getElementById('res-total');
    const resVessel = document.getElementById('res-vessel');

    // SVG Elementy
    const svgWater = document.getElementById('svg-water');
    const svgDiaphragm = document.getElementById('svg-diaphragm');
    const svgNeedle = document.getElementById('svg-needle');

    let sections = 12; // Domyślna wartość
    const standardVessels = [8, 12, 18, 24, 35, 50, 80, 100, 150];

    function calculateVessel() {
        const L = parseFloat(rangePipe.value);
        const buf = parseFloat(rangeBuffer.value);
        
        // Update Labels
        valPipe.textContent = L + ' m';
        valBuffer.textContent = buf + ' L';

        // Matematyka wg PN-EN 12828
        const V_rur = L * 0.113;
        const V_rozdz = sections * 0.5;
        const V_inst = V_rur + V_rozdz + buf;
        
        // Dla 45 st C, e = 0.0095
        const V_e = V_inst * 0.0095 * 1.3;
        
        // V_n = V_e * ((3 + 1) / (3 - 1.2)) = V_e * (4 / 1.8) = V_e * 2.222
        const V_n_min = V_e * 2.222;

        // Znajdź najbliższe większe naczynie handlowe
        let chosenVessel = standardVessels[standardVessels.length - 1];
        for(let v of standardVessels) {
            if(v >= V_n_min) {
                chosenVessel = v;
                break;
            }
        }

        // Update DOM
        resTotal.textContent = V_inst.toFixed(1) + ' L';
        resVessel.textContent = chosenVessel + ' L';

        // Animacja SVG (Wizualizacja wypełnienia/ciśnienia)
        // Im większy zład, tym membrana idzie wyżej, woda wypełnia się mocniej
        let fillRatio = V_n_min / 50; // Arbitralna skala dla animacji
        if(fillRatio > 1) fillRatio = 1;
        if(fillRatio < 0.2) fillRatio = 0.2;

        // Woda - skalowanie w Y (od dołu, od -145px)
        svgWater.style.transform = `scaleY(${fillRatio * 1.2})`;
        
        // Membrana - przesuwanie w górę
        let dShift = -20 * fillRatio;
        svgDiaphragm.style.transform = `translateY(${dShift}px)`;

        // Zegar - rotacja wskazówki (symulacja wzrostu ciśnienia z objętością)
        let angle = -45 + (fillRatio * 180);
        if(angle > 135) angle = 135;
        svgNeedle.style.transform = `rotate(${angle}deg)`;
    }

    // Event Listenery
    if(rangePipe && rangeBuffer) {
        rangePipe.addEventListener('input', calculateVessel);
        rangeBuffer.addEventListener('input', calculateVessel);
        
        pillSecs.forEach(btn => {
            btn.addEventListener('click', function() {
                pillSecs.forEach(b => b.classList.remove('active'));
                this.classList.add('active');
                sections = parseInt(this.getAttribute('data-sec'));
                calculateVessel();
            });
        });

        // Init
        calculateVessel();
    }
});
</script>



<style>
:root {
    --rk-cases-dark: #0f172a;
    --rk-cases-panel: #1e293b;
    --rk-cases-primary: #3b82f6; /* Blue for tech/math */
    --rk-cases-success: #10b981; /* Green for correct calcs */
    --rk-cases-danger: #ef4444; /* Red for errors (Case 2) */
    --rk-cases-warning: #f59e0b;
    --rk-cases-bg: #f8fafc;
    --rk-cases-border: #e2e8f0;
    --rk-cases-text: #334155;
    --rk-cases-muted: #64748b;
}

.rk-cases-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(15, 23, 42, 0.15);
    border: 1px solid rgba(59, 130, 246, 0.3);
    overflow: hidden;
}

/* Header */
.rk-cases-header {
    background: linear-gradient(135deg, var(--rk-cases-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-cases-primary);
    position: relative;
}

.rk-cases-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

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

.rk-cases-title span { color: #60a5fa; }

.rk-cases-desc {
    color: #cbd5e1;
    font-size: 15px;
    line-height: 1.7;
    margin: 0;
    max-width: 800px;
}

/* Navigation / Tabs */
.rk-cases-nav {
    display: flex;
    background: #f1f5f9;
    border-bottom: 1px solid var(--rk-cases-border);
    overflow-x: auto;
    scrollbar-width: none;
}
.rk-cases-nav::-webkit-scrollbar { display: none; }

.rk-case-tab {
    flex: 1;
    padding: 20px 15px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-cases-muted);
    cursor: pointer;
    transition: all 0.3s;
    white-space: nowrap;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-case-tab:hover {
    color: var(--rk-cases-primary);
    background: rgba(59, 130, 246, 0.05);
}

.rk-case-tab.active {
    color: var(--rk-cases-primary);
    border-bottom-color: var(--rk-cases-primary);
    background: #ffffff;
}

/* Content Area */
.rk-cases-content {
    background: #ffffff;
    padding: 0;
}

.rk-case-panel {
    display: none;
    animation: caseFade 0.4s ease-out;
}

.rk-case-panel.active {
    display: grid;
    grid-template-columns: 1fr 300px;
}

@keyframes caseFade {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

/* Left: Data & Math */
.rk-case-data {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-cases-border);
}

.rk-case-data h3 {
    margin: 0 0 20px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-cases-dark);
}

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

.rk-data-item {
    background: var(--rk-cases-bg);
    padding: 12px 15px;
    border-radius: 8px;
    border: 1px solid var(--rk-cases-border);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-data-label { font-size: 13px; color: var(--rk-cases-muted); font-weight: 700; }
.rk-data-val { font-size: 14px; font-weight: 900; color: var(--rk-cases-dark); }

.rk-math-block {
    background: #1e293b;
    border-radius: 12px;
    padding: 20px;
    color: #f8fafc;
    font-family: 'Courier New', Courier, monospace;
    font-size: 15px;
    margin-bottom: 25px;
    border-left: 4px solid var(--rk-cases-primary);
    box-shadow: inset 0 4px 6px rgba(0,0,0,0.2);
}

.rk-math-line {
    margin-bottom: 10px;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    line-height: 1.5;
}
.rk-math-line:last-child { margin-bottom: 0; }

.rk-math-highlight {
    color: #38bdf8;
    font-weight: 900;
    font-size: 17px;
}

.rk-math-result {
    color: #10b981; /* Green for results */
    font-weight: 900;
    font-size: 18px;
}

.rk-case-panel[data-status="fail"] .rk-math-result {
    color: #ef4444; /* Red for bad results */
}

/* Right: Visuals & Conclusion */
.rk-case-visuals {
    background: #f8fafc;
    display: flex;
    flex-direction: column;
}

.rk-svg-wrapper {
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: #e2e8f0;
    border-bottom: 1px solid var(--rk-cases-border);
    position: relative;
    overflow: hidden;
}

.rk-case-conclusion {
    padding: 30px;
    flex-grow: 1;
}

.rk-case-conclusion h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
}

.rk-case-panel[data-status="success"] .rk-case-conclusion h4 { color: var(--rk-cases-success); }
.rk-case-panel[data-status="fail"] .rk-case-conclusion h4 { color: var(--rk-cases-danger); }
.rk-case-panel[data-status="info"] .rk-case-conclusion h4 { color: var(--rk-cases-primary); }

.rk-case-conclusion p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-cases-text);
}

/* Custom Math elements to avoid LaTeX inside HTML */
.rk-fraction {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    vertical-align: middle;
    margin: 0 5px;
}
.rk-numerator {
    border-bottom: 1px solid #94a3b8;
    padding: 0 5px;
    font-size: 14px;
}
.rk-denominator {
    padding: 0 5px;
    font-size: 14px;
}

/* SVG Animations based on active panel */
.anim-loop-draw { stroke-dasharray: 100; stroke-dashoffset: 100; }
.rk-case-panel.active .anim-loop-draw { animation: drawLoop 2s forwards ease-out; }
.rk-case-panel.active .anim-loop-draw:nth-child(2) { animation-delay: 0.5s; }
.rk-case-panel.active .anim-loop-draw:nth-child(3) { animation-delay: 1s; }
.rk-case-panel.active .anim-loop-draw:nth-child(4) { animation-delay: 1.5s; }
@keyframes drawLoop { to { stroke-dashoffset: 0; } }

.rk-case-panel.active .anim-gauge-needle { animation: overPressure 2s forwards cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes overPressure { 
    0% { transform: rotate(-45deg); } 
    70% { transform: rotate(135deg); stroke: #ef4444; } 
    80% { transform: rotate(120deg); stroke: #ef4444; } 
    100% { transform: rotate(130deg); stroke: #ef4444; } 
}

.rk-case-panel.active .anim-vessel-fill { animation: fillVessel 2s forwards ease-out; }
@keyframes fillVessel { from { transform: scaleY(0); } to { transform: scaleY(1); } }

/* Mobile View */
@media (max-width: 768px) {
    .rk-cases-header { padding: 30px 20px; }
    .rk-cases-title { font-size: 24px; }
    .rk-case-panel.active { grid-template-columns: 1fr; }
    .rk-case-data { padding: 30px 20px; border-right: none; border-bottom: 1px solid var(--rk-cases-border); }
    .rk-data-grid { grid-template-columns: 1fr; gap: 10px; }
    .rk-svg-wrapper { height: 180px; }
    .rk-case-tab { padding: 15px 20px; font-size: 14px; }
    .rk-math-block { padding: 15px; font-size: 13px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-case-studies",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Przykłady obliczeniowe instalacji ogrzewania podłogowego – Case Studies",
    "description": "Praktyczne przykłady obliczeń hydraulicznych i termicznych: salon z aneksem, przewymiarowana pętla 150m oraz dobór naczynia wzbiorczego.",
    "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-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-case-studies",
    "name": "Wyniki Symulacji Parametrów Ogrzewania Podłogowego",
    "description": "Szczegółowe dane liczbowe, wzory i konkluzje inżynierskie dla 3 popularnych wariantów instalacyjnych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia ogrzewania podłogowego",
      "dobór naczynia wzbiorczego",
      "prędkość przepływu wody w rurze",
      "strumień masowy podłogówki",
      "podział na pętle grzewcze"
    ],
    "measurementTechnique": "Szacunki numeryczne oparte o normę PN-EN 1264 z zastosowaniem fizycznych równań zachowania energii i oporów przepływu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Salon 45m2: Zapotrzebowanie 1800W generuje 4 pętle po 77m przy rozstawie 15cm.",
        "Pętla 150m: Wymaga przepływu 0.344 m3/h i generuje niszczący opór rzędu 43 kPa.",
        "Zład 1050m rury: Wymaga naczynia wzbiorczego o objętości min. 8 litrów dla bezpieczeństwa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-case-studies",
    "name": "Kalkulator Prędkości i Pojemności Wodnej",
    "description": "Interaktywny moduł edukacyjny prezentujący analizę 3 przypadków obliczeniowych (Case Studies) z dynamicznymi wykresami SVG i wnioskami.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cases-container" id="rk-cases-app">
    
    <div class="rk-cases-header">
        <div class="rk-cases-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="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>
            Analiza Przypadków (Case Studies)
        </div>
        <h2 class="rk-cases-title">Przykłady obliczeniowe instalacji <span>podłogówki</span></h2>
        <p class="rk-cases-desc">Poniżej przedstawiam trzy rzeczywiste scenariusze z kart projektowych. Zobacz, jak wzory matematyczne normy PN-EN przekładają się na dobór rur, analizę błędów wykonawczych i bezpieczeństwo hydrauliczne układu.</p>
    </div>

    <div class="rk-cases-nav">
        <button class="rk-case-tab active" data-target="case-1">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
            1. Salon 45 m² (Idealny)
        </button>
        <button class="rk-case-tab" data-target="case-2">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
            2. Pętla 150 m (Błąd)
        </button>
        <button class="rk-case-tab" data-target="case-3">
            <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
            3. Pojemność i Wzbiorcze
        </button>
    </div>

    <div class="rk-cases-content">
        
        <div class="rk-case-panel active" id="case-1" data-status="success">
            <div class="rk-case-data">
                <h3>Przykład 1: Salon z aneksem</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Pow. podłogi (A):</span> <span class="rk-data-val">45 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Standard (q):</span> <span class="rk-data-val">40 W/m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Pow. grzewcza (A<sub>grz</sub>):</span> <span class="rk-data-val">40 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Rozstaw (a):</span> <span class="rk-data-val">15 cm (0.15m)</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Zabudowa stała:</span> <span class="rk-data-val">5 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Długość dobiegu:</span> <span class="rk-data-val">16 m</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Zapotrzebowanie (Q<sub>obl</sub>):</span>
                        <span class="rk-math-highlight">45 &times; 40</span>
                        <span>=</span>
                        <span class="rk-math-result">1800 W</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px;">
                        <span>Dł. rury (L):</span>
                        <span>(40 / 0.15) &times; 1.1 + 16</span>
                        <span>=</span>
                        <span class="rk-math-highlight">309.33 m</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Podział:</span>
                        <span>309.33 / 100 &approx; 3.09</span>
                        <span>&rarr;</span>
                        <span class="rk-math-result">4 pętle (po ~77m)</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <rect x="10" y="20" width="15" height="60" fill="#334155" rx="3"/>
                        <path class="anim-loop-draw" d="M 25 30 L 80 30 Q 90 30 90 40 L 40 40" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 45 L 80 45 Q 90 45 90 55 L 40 55" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 60 L 80 60 Q 90 60 90 70 L 40 70" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                        <path class="anim-loop-draw" d="M 25 75 L 80 75 Q 90 75 90 85 L 40 85" fill="none" stroke="#10b981" stroke-width="3" stroke-linecap="round"/>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Wniosek Inżynierski</h4>
                    <p>Podział na 4 krótkie pętle (około 77 metrów każda) gwarantuje bardzo niskie opory hydrauliczne, poniżej 15 kPa. Rotametry dadzą się idealnie wyregulować, a pompa ciepła nie będzie przeciążona.</p>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="case-2" data-status="fail">
            <div class="rk-case-data">
                <h3>Przykład 2: Hydraulika zbyt długiej pętli</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Długość rury (L):</span> <span class="rk-data-val">150 m</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Śr. wewnętrzna:</span> <span class="rk-data-val">12 mm (16&#215;2)</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Moc pętli (Q):</span> <span class="rk-data-val">2000 W</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Schłodzenie (&Delta;T):</span> <span class="rk-data-val">5 K</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Wymagany strumień wody (m):</span>
                    </div>
                    <div class="rk-math-line">
                        <span>m =</span>
                        <div class="rk-fraction">
                            <span class="rk-numerator">2000</span>
                            <span class="rk-denominator">4186 &times; 5</span>
                        </div>
                        <span>&times; 3600 &approx;</span>
                        <span class="rk-math-highlight">344 kg/h</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Prędkość (v):</span>
                        <span class="rk-math-result" style="color:#f59e0b;">0.85 m/s (Szumy!)</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Opór liniowy dla 150m:</span>
                        <span class="rk-math-result">aż 43 kPa</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <path d="M 20 70 A 40 40 0 1 1 80 70" fill="none" stroke="#cbd5e1" stroke-width="8" stroke-linecap="round"/>
                        <path d="M 60 22 A 40 40 0 0 1 80 70" fill="none" stroke="#ef4444" stroke-width="8" stroke-linecap="round"/>
                        <line class="anim-gauge-needle" x1="50" y1="50" x2="20" y2="50" stroke="#334155" stroke-width="4" stroke-linecap="round" style="transform-origin: 50px 50px;"/>
                        <circle cx="50" cy="50" r="6" fill="#1e293b"/>
                        <text x="50" y="85" font-size="14" font-weight="900" fill="#ef4444" text-anchor="middle">43 kPa</text>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Błąd Krytyczny!</h4>
                    <p>Żadna standardowa pompa obiegowa nie zapewni tak wysokiego ciśnienia dyspozycyjnego dla jednej pętli przy zachowaniu przepływów na reszcie instalacji. <strong>Efekt: Pętla po prostu przestanie grzać.</strong></p>
                </div>
            </div>
        </div>

        <div class="rk-case-panel" id="case-3" data-status="info">
            <div class="rk-case-data">
                <h3>Przykład 3: Pojemność i Naczynie</h3>
                
                <div class="rk-data-grid">
                    <div class="rk-data-item"><span class="rk-data-label">Pow. domu:</span> <span class="rk-data-val">150 m²</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Całk. dł. rur:</span> <span class="rk-data-val">1050 m</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Rozdzielacz:</span> <span class="rk-data-val">12 sekcji</span></div>
                    <div class="rk-data-item"><span class="rk-data-label">Bufor sprzęgłowy:</span> <span class="rk-data-val">60 L</span></div>
                </div>

                <div class="rk-math-block">
                    <div class="rk-math-line">
                        <span>Pojemność rur (V<sub>rur</sub>):</span>
                        <span>1050 &times; 0.113 =</span>
                        <span class="rk-math-highlight">118.65 L</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Całk. zład (V<sub>inst</sub>):</span>
                        <span>118.65 + (12 &times; 0.5) + 60 =</span>
                        <span class="rk-math-highlight">184.65 L</span>
                    </div>
                    <div class="rk-math-line" style="margin-top:15px; border-top:1px dashed #475569; padding-top:15px;">
                        <span>Obj. użytkowa (V<sub>e</sub>):</span>
                        <span>184.65 &times; 0.0095 &times; 1.3 =</span>
                        <span class="rk-math-highlight">2.28 L</span>
                    </div>
                    <div class="rk-math-line">
                        <span>Min. naczynie (V<sub>n</sub>):</span>
                        <span>2.28 &times; 2.22 =</span>
                        <span class="rk-math-result">5.06 L</span>
                    </div>
                </div>
            </div>
            <div class="rk-case-visuals">
                <div class="rk-svg-wrapper">
                    <svg viewBox="0 0 100 100" style="width:100%; height:100%;">
                        <rect x="30" y="20" width="40" height="60" fill="#cbd5e1" rx="20"/>
                        <rect class="anim-vessel-fill" x="30" y="50" width="40" height="30" fill="#3b82f6" rx="15" style="transform-origin: bottom;"/>
                        <line x1="50" y1="20" x2="50" y2="10" stroke="#334155" stroke-width="4"/>
                        <path d="M 30 50 Q 50 40 70 50" fill="none" stroke="#1e293b" stroke-width="2" stroke-dasharray="4"/>
                        <text x="50" y="65" font-size="14" font-weight="900" fill="#ffffff" text-anchor="middle">8 L</text>
                    </svg>
                </div>
                <div class="rk-case-conclusion">
                    <h4>Bezpieczeństwo Układu</h4>
                    <p>Obliczenia wykazują minimalną pojemność na poziomie 5.06 L. Należy zakupić standardowe naczynie o pojemności <strong>8 litrów</strong>. Poleganie na małym, 5-litrowym naczyniu wbudowanym w kocioł doprowadzi do wyrzutów wody przez zawór bezpieczeństwa.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-cases-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener inżynierski należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na tej domenie jest nieautoryzowane.
                </div>
            `;
            return;
        }
    }

    // Logika Zakładek (Case Studies)
    const tabs = document.querySelectorAll('.rk-case-tab');
    const panels = document.querySelectorAll('.rk-case-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            const targetId = tab.getAttribute('data-target');
            
            // Czyszczenie klas aktywnych
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            
            // Aktywacja wybranego
            tab.classList.add('active');
            const activePanel = document.getElementById(targetId);
            
            // Restart CSS animations for SVGs by forcing reflow
            if (activePanel) {
                activePanel.classList.remove('active');
                void activePanel.offsetWidth; 
                activePanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-darker: #020617;
    --rk-proj-brand: #4f46e5; /* Indigo techniczne */
    --rk-proj-brand-light: #e0e7ff;
    --rk-proj-accent: #06b6d4; /* Cyjan / inżynieryjny akcent */
    --rk-proj-bg: #ffffff;
    --rk-proj-surface: #f8fafc;
    --rk-proj-border: #cbd5e1;
    --rk-proj-text: #334155;
    --rk-proj-muted: #64748b;
    --rk-proj-shadow: 0 20px 40px -10px rgba(79, 70, 229, 0.15);
}

.rk-proj-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-proj-bg);
    border-radius: 24px;
    box-shadow: var(--rk-proj-shadow);
    border: 1px solid var(--rk-proj-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-proj-header {
    background: linear-gradient(135deg, var(--rk-proj-darker) 0%, var(--rk-proj-dark) 100%);
    padding: 45px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 4px solid var(--rk-proj-brand);
}

.rk-proj-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(79, 70, 229, 0.2);
    color: #a5b4fc;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.3);
}

.rk-proj-header h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-proj-header h2 span { color: var(--rk-proj-accent); }

.rk-proj-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-proj-link {
    color: #a5b4fc;
    text-decoration: none;
    border-bottom: 1px dashed rgba(165, 180, 252, 0.4);
    font-weight: 600;
    transition: all 0.3s;
}
.rk-proj-link:hover { color: #ffffff; border-bottom-style: solid; }

.rk-proj-link-dark {
    color: var(--rk-proj-brand);
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 700;
    transition: color 0.3s;
}
.rk-proj-link-dark:hover { color: #3730a3; }

/* --- INTERAKTYWNE FILARY --- */
.rk-proj-interactive {
    padding: 40px 50px;
    background: var(--rk-proj-surface);
}

.rk-proj-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 30px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-pillars-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-pillar-btn {
    background: #ffffff;
    border: 2px solid var(--rk-proj-border);
    border-radius: 16px;
    padding: 20px 15px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.rk-pillar-btn:hover {
    border-color: var(--rk-proj-brand);
    background: var(--rk-proj-brand-light);
    transform: translateY(-3px);
}

.rk-pillar-btn.active {
    border-color: var(--rk-proj-brand);
    background: var(--rk-proj-brand);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(79, 70, 229, 0.4);
}

.rk-pillar-icon {
    width: 48px;
    height: 48px;
    background: var(--rk-proj-surface);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-proj-brand);
    transition: all 0.3s;
}
.rk-pillar-btn.active .rk-pillar-icon { background: rgba(255,255,255,0.2); color: #ffffff; }

.rk-pillar-title {
    font-size: 15px;
    font-weight: 800;
    line-height: 1.3;
    color: var(--rk-proj-dark);
    transition: color 0.3s;
}
.rk-pillar-btn.active .rk-pillar-title { color: #ffffff; }

/* Panele Zawartości */
.rk-pillar-content {
    display: none;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-proj-border);
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    animation: fadeScale 0.4s ease-out;
}
.rk-pillar-content.active { display: grid; grid-template-columns: 1fr 280px; gap: 30px; align-items: center; }

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.98); }
    to { opacity: 1; transform: scale(1); }
}

.rk-panel-text h4 { margin: 0 0 15px 0; font-size: 20px; font-weight: 900; color: var(--rk-proj-dark); }
.rk-panel-text p { margin: 0 0 20px 0; font-size: 15px; line-height: 1.7; color: var(--rk-proj-text); }

.rk-panel-highlight {
    background: var(--rk-proj-surface);
    padding: 15px;
    border-left: 4px solid var(--rk-proj-accent);
    border-radius: 0 8px 8px 0;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-proj-dark);
}

/* Wizualizacje SVG */
.rk-svg-stage {
    background: var(--rk-proj-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 180px;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

.rk-tech-svg { width: 100%; max-width: 200px; height: auto; }

/* Animacje SVG */
/* 1. OZC */
.anim-heat-loss { stroke-dasharray: 4; animation: flowOut 1.5s linear infinite; stroke: #ef4444; }
.anim-heat-gain { stroke-dasharray: 4; animation: flowIn 1.5s linear infinite; stroke: #10b981; }
@keyframes flowOut { to { stroke-dashoffset: -12; } }
@keyframes flowIn { to { stroke-dashoffset: 12; } }

/* 2. Rotametry */
.anim-float-1 { animation: balanceFloat1 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.anim-float-2 { animation: balanceFloat2 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
.anim-float-3 { animation: balanceFloat3 2s cubic-bezier(0.4, 0, 0.2, 1) forwards; }
@keyframes balanceFloat1 { from { transform: translateY(0); } to { transform: translateY(15px); } }
@keyframes balanceFloat2 { from { transform: translateY(30px); } to { transform: translateY(15px); } }
@keyframes balanceFloat3 { from { transform: translateY(10px); } to { transform: translateY(15px); } }

/* 3. Pompa */
.anim-pump-spin { transform-origin: center; animation: spinPump 2s linear infinite; }
@keyframes spinPump { to { transform: rotate(360deg); } }
.anim-pump-flow { stroke-dasharray: 10; animation: flowPump 1s linear infinite; stroke: var(--rk-proj-accent); }
@keyframes flowPump { to { stroke-dashoffset: -20; } }

/* --- MOCNE CTA --- */
.rk-proj-cta {
    background: linear-gradient(135deg, #eef2ff 0%, #ffffff 100%);
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-proj-brand-light);
}

.rk-cta-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-cta-desc {
    font-size: 16px;
    color: var(--rk-proj-text);
    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-proj-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(79, 70, 229, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    background: #4338ca;
    transform: translateY(-4px);
    box-shadow: 0 15px 35px -5px rgba(79, 70, 229, 0.5);
    border-color: #a5b4fc;
}

.rk-btn-massive svg { transition: transform 0.3s; }
.rk-btn-massive:hover svg { transform: translateX(5px); }

@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-interactive, .rk-proj-cta { padding: 30px 20px; }
    .rk-proj-header h2, .rk-cta-title { font-size: 24px; }
    .rk-pillars-grid { grid-template-columns: 1fr; }
    .rk-pillar-content.active { grid-template-columns: 1fr; }
    .rk-svg-stage { min-height: 160px; order: -1; } /* SVG na górę na mobilce */
    .rk-btn-massive { width: 100%; font-size: 16px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Jak kalkulator wpływa na projekt ogrzewania podłogowego?",
    "description": "Zrozum 3 inżynieryjne filary: bilans OZC, hydraulikę rozdzielacza i dobór pompy obiegowej. Zobacz, jak wyliczenia przekładają się na finalną dokumentację techniczną.",
    "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Filary Projektowania Instalacji Ogrzewania Podłogowego",
    "description": "Klasyfikacja trzech głównych obszarów inżynieryjnych (OZC, Hydraulika, Pompy), które są definiowane przez wyniki kompleksowego kalkulatora.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego",
      "rzeczywisty bilans cieplny OZC",
      "hydraulika rozdzielacza i pętli",
      "dobór pompy obiegowej podłogówki",
      "dokumentacja techniczna instalacji"
    ],
    "measurementTechnique": "Synteza wyników obliczeniowych z norm PN-EN 12831 (OZC) oraz PN-EN 1264 do formy wykonawczej dokumentacji technicznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bilans Cieplny OZC: Precyzyjne zapotrzebowanie na energię dla każdego pomieszczenia.",
        "Hydraulika Pętli: Rozstaw rur co do centymetra i wartości nastaw rotametrów w l/min.",
        "Dobór Pompy: Wysokość podnoszenia oparta o sumaryczne opory najdłuższej pętli hydraulicznej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Eksplorator Filarów Projektowych",
    "description": "Interaktywny schemat prezentujący wpływ wyliczeń kalkulatora na projekt techniczny OZC, hydraulikę i dobór pomp, wzbogacony o animacje wektorowe procesów fizycznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-proj-app">
    
    <div class="rk-proj-header">
        <div class="rk-proj-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="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>
            Dokumentacja Techniczna
        </div>
        <h2>Jak to wpływa na <span>projekt ogrzewania podłogowego?</span></h2>
        <p class="rk-proj-lead">
            Wszystkie wyliczenia realizowane przez kompleksowy kalkulator mają bezpośrednie przełożenie na finalną dokumentację techniczną. Poprawnie wykonany projekt ogrzewania podłogowego nie może opierać się na danych szacunkowych. Musi on bezwzględnie scalać trzy kluczowe filary inżynieryjne.
        </p>
    </div>

    <div class="rk-proj-interactive">
        <h3>3 Filary Inżynieryjne</h3>
        
        <div class="rk-pillars-grid">
            <button class="rk-pillar-btn active" data-target="p-ozc">
                <div class="rk-pillar-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 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-pillar-title">Bilans Cieplny (OZC)</div>
            </button>
            
            <button class="rk-pillar-btn" data-target="p-hyd">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" 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><line x1="4" y1="12" x2="20" y2="12"></line><line x1="12" y1="4" x2="12" y2="20"></line></svg>
                </div>
                <div class="rk-pillar-title">Hydraulika i Pętle</div>
            </button>

            <button class="rk-pillar-btn" data-target="p-pump">
                <div class="rk-pillar-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
                </div>
                <div class="rk-pillar-title">Dobór Pompy</div>
            </button>
        </div>

        <div class="rk-pillar-content active" id="p-ozc">
            <div class="rk-panel-text">
                <h4>Rzeczywisty bilans cieplny OZC</h4>
                <p>Określa precyzyjne <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-proj-link-dark">zapotrzebowanie na energię</a> dla każdego pomieszczenia z osobna. Fundament, który eliminuje ryzyko niedogrzania łazienek czy skrajnych sypialni podczas mrozów.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Precyzyjny dobór mocy W/m² eliminuje szacunki &#8222;na oko&#8221;.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="60" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                    <path class="anim-heat-loss" d="M 80 50 L 95 50" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-loss" d="M 50 20 L 50 5" fill="none" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-heat-gain" d="M 5 50 L 20 50" fill="none" stroke-width="4" stroke-linecap="round"/>
                    <path class="anim-heat-gain" d="M 50 95 L 50 80" fill="none" stroke-width="4" stroke-linecap="round"/>
                    <text x="50" y="55" font-size="16" font-weight="900" fill="#cbd5e1" text-anchor="middle">OZC</text>
                </svg>
            </div>
        </div>

        <div class="rk-pillar-content" id="p-hyd">
            <div class="rk-panel-text">
                <h4>Hydraulika rozdzielacza i pętli</h4>
                <p>Projekt definiuje dokładny rozstaw rur (co do centymetra), podział na równe obwody oraz wartości nastaw wstępnych (przepływów w l/min) na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-proj-link-dark">rotametrach</a>, co umożliwia prawidłowe <a href="https://projekt-ogrzewania.pl/regulacja-hydrauliczna-ogrzewania-podlogowego/" class="rk-proj-link-dark">zrównoważenie systemu</a>.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Stabilne przepływy i równomierne nagrzewanie podłogi.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <rect x="10" y="80" width="80" height="10" fill="#3b82f6" rx="2"/>
                    <rect x="20" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-1" x="22" y="50" width="6" height="4" fill="#ef4444"/>
                    <rect x="45" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-2" x="47" y="50" width="6" height="4" fill="#ef4444"/>
                    <rect x="70" y="20" width="10" height="60" fill="none" stroke="#64748b" stroke-width="2"/>
                    <rect class="anim-float-3" x="72" y="50" width="6" height="4" fill="#ef4444"/>
                    <line x1="15" y1="35" x2="85" y2="35" stroke="#10b981" stroke-width="2" stroke-dasharray="4"/>
                </svg>
            </div>
        </div>

        <div class="rk-pillar-content" id="p-pump">
            <div class="rk-panel-text">
                <h4>Dobór pompy obiegowej</h4>
                <p>Na podstawie zsumowanych oporów hydraulicznych najdłuższej pętli projektant przeprowadza <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" class="rk-proj-link-dark">dobór pompy obiegowej</a>. Określamy dokładną wysokość podnoszenia, zapobiegając przeciążeniu lub niedomiarowi tłoczenia.</p>
                <div class="rk-panel-highlight">
                    Wynik kalkulatora: Brak &#8222;martwych&#8221;, zimnych stref z powodu słabej pompy.
                </div>
            </div>
            <div class="rk-svg-stage">
                <svg class="rk-tech-svg" viewBox="0 0 100 100">
                    <circle cx="30" cy="50" r="20" fill="none" stroke="#94a3b8" stroke-width="4"/>
                    <g class="anim-pump-spin" transform="translate(30, 50)">
                        <polygon points="-8,-8 10,0 -8,8" fill="#10b981"/>
                    </g>
                    <path class="anim-pump-flow" d="M 50 50 L 90 50" fill="none" stroke-width="6" stroke-linecap="round"/>
                    <path class="anim-pump-flow" d="M 90 50 Q 95 50 95 40 L 95 20" fill="none" stroke-width="4" stroke-linecap="round"/>
                </svg>
            </div>
        </div>

    </div>

    <div class="rk-proj-cta">
        <h3 class="rk-cta-title">Nie ryzykuj błędów na budowie</h3>
        <p class="rk-cta-desc">
            Skorzystaj z wiedzy ekspertów. Zamów kompleksowy, inżynieryjny projekt ogrzewania podłogowego, który zagwarantuje Ci optymalne zużycie materiałów, niskie rachunki za ogrzewanie i święty spokój na lata.
        </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() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-proj-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener informacyjny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                </div>
            `;
            return;
        }
    }

    // Logika zakładek (Filary)
    const btns = document.querySelectorAll('.rk-pillar-btn');
    const contents = document.querySelectorAll('.rk-pillar-content');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Reset
            btns.forEach(b => b.classList.remove('active'));
            contents.forEach(c => c.classList.remove('active'));
            
            // Aktywacja
            this.classList.add('active');
            const targetContent = document.getElementById(targetId);
            if(targetContent) {
                // Restart animacji SVG przez reflow
                targetContent.classList.remove('active');
                void targetContent.offsetWidth; 
                targetContent.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-calc-main-dark: #0f172a;
    --rk-calc-main-darker: #020617;
    --rk-calc-main-brand: #3b82f6; /* Hydronic Blue */
    --rk-calc-main-brand-light: #eff6ff;
    --rk-calc-main-accent: #10b981; /* Success Green */
    --rk-calc-main-danger: #ef4444; /* Error Red */
    --rk-calc-main-bg: #ffffff;
    --rk-calc-main-surface: #f8fafc;
    --rk-calc-main-border: #cbd5e1;
    --rk-calc-main-text: #334155;
    --rk-calc-main-muted: #64748b;
    --rk-calc-main-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);
}

.rk-calc-main-container {
    max-width: 1000px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-main-bg);
    border-radius: 24px;
    box-shadow: var(--rk-calc-main-shadow);
    border: 1px solid var(--rk-calc-main-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-calc-main-header {
    background: linear-gradient(135deg, var(--rk-calc-main-darker) 0%, var(--rk-calc-main-dark) 100%);
    padding: 40px 50px;
    color: #ffffff;
    border-bottom: 5px solid var(--rk-calc-main-brand);
    text-align: center;
}

.rk-calc-main-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 15px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-calc-main-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 10px 0;
}

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

.rk-calc-main-desc {
    color: #cbd5e1;
    font-size: 15px;
    line-height: 1.6;
    margin: 0 auto;
    max-width: 700px;
}

/* --- SEKCJA GŁÓWNA --- */
.rk-calc-main-body {
    padding: 40px 50px;
    background: var(--rk-calc-main-surface);
}

/* Krok 1: Parametry Globalne */
.rk-calc-section-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 10px;
    border-bottom: 2px solid var(--rk-calc-main-border);
    padding-bottom: 10px;
}

.rk-calc-section-title svg { color: var(--rk-calc-main-brand); }

.rk-global-params {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 15px;
    margin-bottom: 40px;
}

.rk-input-group {
    background: #ffffff;
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-calc-main-border);
}

.rk-input-group label {
    display: block;
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-main-muted);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.rk-input-group select, .rk-input-group input {
    width: 100%;
    padding: 10px;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 8px;
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-calc-main-dark);
    background: var(--rk-calc-main-surface);
    transition: all 0.3s;
}

.rk-input-group select:focus, .rk-input-group input:focus {
    outline: none;
    border-color: var(--rk-calc-main-brand);
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
}

/* Krok 2: Pomieszczenia */
.rk-rooms-container {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
    margin-bottom: 20px;
}

.rk-room-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    transition: all 0.3s ease;
    animation: roomPopIn 0.3s ease-out;
}

.rk-room-card:hover {
    border-color: var(--rk-calc-main-brand);
    box-shadow: 0 8px 16px rgba(59, 130, 246, 0.1);
}

@keyframes roomPopIn {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-room-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 15px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
}

.rk-room-delete {
    background: transparent;
    border: none;
    color: var(--rk-calc-main-danger);
    cursor: pointer;
    padding: 5px;
    border-radius: 6px;
    transition: background 0.2s;
}
.rk-room-delete:hover { background: #fef2f2; }

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

.rk-mini-input label {
    font-size: 11px;
    color: var(--rk-calc-main-muted);
    font-weight: 700;
    display: block;
    margin-bottom: 4px;
}
.rk-mini-input input {
    width: 100%;
    padding: 8px;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 6px;
    font-size: 14px;
    font-weight: 600;
    transition: border-color 0.3s;
}
.rk-mini-input input.error { border-color: var(--rk-calc-main-danger); background: #fef2f2; }

.rk-add-room-btn {
    width: 100%;
    padding: 15px;
    background: transparent;
    border: 2px dashed var(--rk-calc-main-border);
    border-radius: 16px;
    color: var(--rk-calc-main-muted);
    font-weight: 800;
    font-size: 14px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    transition: all 0.3s;
    margin-bottom: 40px;
}
.rk-add-room-btn:hover {
    border-color: var(--rk-calc-main-brand);
    color: var(--rk-calc-main-brand);
    background: var(--rk-calc-main-brand-light);
}

/* Krok 3: Oblicz */
.rk-calc-action-bar {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-calc-submit {
    background: var(--rk-calc-main-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 40px;
    border: none;
    border-radius: 16px;
    cursor: pointer;
    box-shadow: 0 10px 20px -5px rgba(59, 130, 246, 0.4);
    display: inline-flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-calc-submit:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(59, 130, 246, 0.5);
    background: #2563eb;
}

.rk-calc-submit:active { transform: translateY(0); }

/* --- WYNIKI --- */
.rk-calc-results {
    display: none; /* Ukryte do kliknięcia */
    border-top: 2px solid var(--rk-calc-main-border);
    padding-top: 40px;
    animation: fadeInResult 0.5s ease-out;
}

@keyframes fadeInResult {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}

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

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc-main-border);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    overflow: hidden;
}

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

.rk-res-card.c-blue::before { background: var(--rk-calc-main-brand); }
.rk-res-card.c-green::before { background: var(--rk-calc-main-accent); }
.rk-res-card.c-orange::before { background: #f59e0b; }

.rk-res-icon {
    margin-bottom: 15px;
    color: var(--rk-calc-main-dark);
}

.rk-res-label {
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-calc-main-muted);
    text-transform: uppercase;
    margin-bottom: 5px;
}

.rk-res-value {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-calc-main-dark);
    margin-bottom: 10px;
}

.rk-res-value span { font-size: 16px; color: var(--rk-calc-main-muted); }

.rk-res-list {
    margin: 0; padding: 0; list-style: none;
    font-size: 13px; color: var(--rk-calc-main-text);
}
.rk-res-list li { margin-bottom: 4px; display: flex; justify-content: space-between; border-bottom: 1px dashed var(--rk-calc-main-border); padding-bottom: 4px; }
.rk-res-list li:last-child { border: none; margin: 0; padding: 0; }
.rk-res-list b { color: var(--rk-calc-main-dark); }

/* SVG Statusu Hydraulicznego */
.rk-res-status {
    background: var(--rk-calc-main-dark);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: center;
    gap: 30px;
    color: #ffffff;
    margin-bottom: 30px;
}

.rk-status-svg {
    width: 100px;
    height: 100px;
    flex-shrink: 0;
}

.rk-status-text h4 { margin: 0 0 10px 0; font-size: 20px; font-weight: 900; }
.rk-status-text p { margin: 0; font-size: 14px; color: #cbd5e1; line-height: 1.6; }
.rk-status-warn { color: var(--rk-calc-main-danger); }
.rk-status-ok { color: var(--rk-calc-main-accent); }

/* CTA Wynikowe */
.rk-res-cta {
    background: #eef2ff;
    border: 1px solid #c7d2fe;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.rk-res-cta p { margin: 0; font-size: 14px; color: #3730a3; line-height: 1.6; }
.rk-res-cta strong { font-weight: 900; color: #312e81; }

.rk-res-cta-btn {
    background: #4f46e5;
    color: #ffffff;
    padding: 12px 24px;
    border-radius: 10px;
    text-decoration: none;
    font-weight: 800;
    font-size: 14px;
    white-space: nowrap;
    transition: background 0.3s;
}
.rk-res-cta-btn:hover { background: #4338ca; }

@media (max-width: 768px) {
    .rk-calc-main-header, .rk-calc-main-body { padding: 30px 20px; }
    .rk-calc-main-title { font-size: 24px; }
    .rk-res-grid { grid-template-columns: 1fr; }
    .rk-res-status { flex-direction: column; text-align: center; }
    .rk-res-cta { flex-direction: column; text-align: center; }
}

/* Animacje wewnątrz SVG Wynikowego */
.anim-pump-impeller { transform-origin: center; animation: spinFast 1s linear infinite; }
@keyframes spinFast { to { transform: rotate(360deg); } }
.anim-flow-line { stroke-dasharray: 8; animation: flowHyd 1s linear infinite; }
@keyframes flowHyd { to { stroke-dashoffset: -16; } }
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-main-calc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego (Interaktywny)",
    "description": "Zaawansowane narzędzie inżynieryjne wyliczające długość rur, moc, rozstaw pętli oraz parametry pompy obiegowej na podstawie wprowadzonych danych pomieszczeń.",
    "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-calc-results",
    "name": "Wyniki Inżynierskich Obliczeń Ogrzewania Podłogowego",
    "description": "Dynamiczne wyliczenia parametrów fizycznych dla systemów płaszczyznowych, łączące zmienne izolacyjności, przepływu i strat ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator podłogówki online",
      "obliczanie pętli grzewczych",
      "dobór pompy do ogrzewania podłogowego",
      "średnica rury pex przepływ",
      "zapotrzebowanie na materiały podłogówka"
    ],
    "measurementTechnique": "Równania bilansu cieplnego i oporów hydraulicznych wg PN-EN 1264, z uwzględnieniem liczby Reynoldsa i modelu strat liniowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zestawienie całkowitej mocy (W) i długości rury (mb).",
        "Sugestie rozstawów rur względem zapotrzebowania cieplnego W/m2.",
        "Estymacja oporów hydraulicznych i wskazanie wymaganej wysokości podnoszenia pompy obiegowej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-main",
    "name": "Kompleksowy Kalkulator Ogrzewania Podłogowego PRO",
    "description": "Profesjonalna aplikacja webowa obliczająca wszystkie kluczowe parametry instalacji (pętle, rozstawy, hydraulika) na podstawie wprowadzonych danych pomieszczeń i warstw podłogi.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-main-container" id="rk-calc-main-app">
    
    <div class="rk-calc-main-header">
        <div class="rk-calc-main-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="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>
            Narzędzie Obliczeniowe
        </div>
        <h2 class="rk-calc-main-title">Kompleksowy Kalkulator <span>Podłogówki</span></h2>
        <p class="rk-calc-main-desc">Wprowadź dane budynku oraz parametry poszczególnych pomieszczeń, aby wygenerować profesjonalne zestawienie materiałowe, rozstawy rur oraz wytyczne hydrauliczne dla pompy obiegowej.</p>
    </div>

    <div class="rk-calc-main-body">
        
        <div class="rk-calc-section-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
            Krok 1: Parametry Globalne Konstrukcji
        </div>
        
        <div class="rk-global-params">
            <div class="rk-input-group">
                <label>Zasilanie (Tz)</label>
                <input type="number" id="rk-param-temp" value="35" min="25" max="50">
            </div>
            <div class="rk-input-group">
                <label>Okładzina podłogi</label>
                <select id="rk-param-floor">
                    <option value="1">Płytki / Gres</option>
                    <option value="0.85">Panele podłogowe</option>
                    <option value="0.75">Deska warstwowa</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Rodzaj Wylewki</label>
                <select id="rk-param-screed">
                    <option value="1">Cementowa (Miksokret)</option>
                    <option value="1.13">Anhydrytowa (Płynna)</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Izolacja Spodnia</label>
                <select id="rk-param-iso">
                    <option value="1">EPS 100 (Standard)</option>
                    <option value="1.05">EPS 200 (Twardy)</option>
                </select>
            </div>
            <div class="rk-input-group">
                <label>Rura Grzewcza</label>
                <select id="rk-param-pipe">
                    <option value="0.012">16&#215;2 (Wew. 12mm)</option>
                    <option value="0.013">17&#215;2 (Wew. 13mm)</option>
                    <option value="0.016">20&#215;2 (Wew. 16mm)</option>
                </select>
            </div>
        </div>

        <div class="rk-calc-section-title">
            <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="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>
            Krok 2: Bilans Pomieszczeń
        </div>

        <div class="rk-rooms-container" id="rk-rooms-wrapper">
            </div>

        <button class="rk-add-room-btn" id="rk-btn-add-room">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="5" x2="12" y2="19"></line><line x1="5" y1="12" x2="19" y2="12"></line></svg>
            Dodaj kolejne pomieszczenie
        </button>

        <div class="rk-calc-action-bar">
            <button class="rk-calc-submit" id="rk-btn-calculate">
                GENERUJ WYNIKI OBLICZEŃ
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="9 11 12 14 22 4"></polyline><path d="M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11"></path></svg>
            </button>
        </div>

        <div class="rk-calc-results" id="rk-results-panel">
            
            <div class="rk-res-grid">
                
                <div class="rk-res-card c-blue">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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-res-label">Całkowite Zapotrzebowanie</div>
                    <div class="rk-res-value" id="out-power">0 <span>W</span></div>
                    <ul class="rk-res-list">
                        <li>Ilość rury (zapas 10%): <b id="out-length">0 mb</b></li>
                        <li>Pojemność zładu: <b id="out-water">0 L</b></li>
                        <li>Całkowita powierzchnia: <b id="out-area">0 m²</b></li>
                    </ul>
                </div>

                <div class="rk-res-card c-green">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                    <div class="rk-res-label">Rozdzielacz i Geometria</div>
                    <div class="rk-res-value" id="out-circuits">0 <span>sekcji</span></div>
                    <ul class="rk-res-list">
                        <li>Średni rozstaw rur: <b id="out-spacing-avg">0 cm</b></li>
                        <li>Sugerowane rozstawy: <b id="out-spacing-list">&#8211;</b></li>
                        <li>Limit długości pętli: <b>Zachowany</b></li>
                    </ul>
                </div>

                <div class="rk-res-card c-orange">
                    <div class="rk-res-icon">
                        <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    </div>
                    <div class="rk-res-label">Wymogi Hydrauliczne</div>
                    <div class="rk-res-value" id="out-pump">Weryfikacja</div>
                    <ul class="rk-res-list">
                        <li>Przepływ sumaryczny: <b id="out-flow">0 m³/h</b></li>
                        <li>Opór najdłuższej pętli: <b id="out-pressure">0 kPa</b></li>
                        <li>Wys. podnoszenia: <b id="out-head">0 m</b></li>
                    </ul>
                </div>
            </div>

            <div class="rk-res-status">
                <div class="rk-status-svg">
                    <svg viewBox="0 0 100 100" style="width:100%;height:100%;">
                        <circle cx="50" cy="50" r="45" fill="none" stroke="#334155" stroke-width="6"></circle>
                        <circle cx="50" cy="50" r="30" fill="none" stroke="#475569" stroke-width="2"></circle>
                        <g class="anim-pump-impeller" transform="translate(50, 50)">
                            <path d="M 0 -25 L 10 0 L 0 25 L -10 0 Z" fill="#10b981" id="svg-impeller-color"></path>
                            <circle cx="0" cy="0" r="5" fill="#f8fafc"></circle>
                        </g>
                        <path class="anim-flow-line" d="M 15 80 Q 50 110 85 80" fill="none" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"></path>
                    </svg>
                </div>
                <div class="rk-status-text">
                    <h4 id="out-status-title">Analiza w toku&#8230;</h4>
                    <p id="out-status-desc">&#8211;</p>
                </div>
            </div>

            <div class="rk-res-cta">
                <div>
                    <strong>Zastrzeżenie inżynierskie:</strong>
                    <p>Wyniki mają charakter poglądowy do szacowania kosztów. Błędy hydrauliczne kosztują krocie. Do realizacji niezbędny jest projekt wykonawczy uwzględniający opory miejscowe armatury i pełne badanie OZC.</p>
                </div>
                <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-res-cta-btn">ZAMÓW PROJEKT</a>
            </div>

        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-calc-main-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:40px; margin-bottom:15px;">🛑</div>
                    BŁĄD LICENCJI:<br>Główny silnik kalkulatora jest własnością Projekt-Ogrzewania.pl. Próba kradzieży kodu zatrzymana.
                </div>
            `;
            return;
        }
    }

    // --- LOGIKA KALKULATORA ---
    let rooms = [];
    const wrapper = document.getElementById('rk-rooms-wrapper');
    const btnAdd = document.getElementById('rk-btn-add-room');
    const btnCalc = document.getElementById('rk-btn-calculate');
    const resultsPanel = document.getElementById('rk-results-panel');

    function createRoomHTML(index) {
        return `
        <div class="rk-room-card" id="rk-room-${index}">
            <div class="rk-room-header">
                Pomieszczenie ${index + 1}
                <button class="rk-room-delete" onclick="rkRemoveRoom(${index})" title="Usuń">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="3 6 5 6 21 6"></polyline><path d="M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"></path></svg>
                </button>
            </div>
            <div class="rk-room-inputs">
                <div class="rk-mini-input">
                    <label>Powierzchnia (m²)</label>
                    <input type="number" id="rk-area-${index}" value="15" min="1" step="0.5" oninput="rkValidate(this)">
                </div>
                <div class="rk-mini-input">
                    <label>Straty (W/m²)</label>
                    <input type="number" id="rk-loss-${index}" value="50" min="10" step="5" oninput="rkValidate(this)">
                </div>
            </div>
        </div>`;
    }

    function renderRooms() {
        wrapper.innerHTML = '';
        rooms.forEach((r, idx) => {
            wrapper.innerHTML += createRoomHTML(idx);
            // Odtworzenie wartości po re-renderze
            setTimeout(() => {
                const aInput = document.getElementById(`rk-area-${idx}`);
                const lInput = document.getElementById(`rk-loss-${idx}`);
                if(aInput) aInput.value = r.area;
                if(lInput) lInput.value = r.loss;
            }, 0);
        });
    }

    window.rkAddRoom = function() {
        rooms.push({ area: 15, loss: 50 });
        renderRooms();
    }

    window.rkRemoveRoom = function(index) {
        // Zapisz obecne wartości przed usunięciem
        saveRoomStates();
        rooms.splice(index, 1);
        renderRooms();
    }

    function saveRoomStates() {
        rooms.forEach((r, idx) => {
            const aInput = document.getElementById(`rk-area-${idx}`);
            const lInput = document.getElementById(`rk-loss-${idx}`);
            if(aInput) r.area = parseFloat(aInput.value) || 0;
            if(lInput) r.loss = parseFloat(lInput.value) || 0;
        });
    }

    window.rkValidate = function(input) {
        let val = parseFloat(input.value);
        if(isNaN(val) || val <= 0) { input.classList.add('error'); } 
        else { input.classList.remove('error'); }
    }

    // Inicjalizacja z 2 pomieszczeniami
    rkAddRoom(); rkAddRoom();

    btnAdd.addEventListener('click', () => {
        saveRoomStates();
        rkAddRoom();
    });

    // Główna funkcja licząca (bazująca na logice ze wzorów inżynieryjnych)
    btnCalc.addEventListener('click', () => {
        saveRoomStates();

        const T = parseFloat(document.getElementById('rk-param-temp').value);
        const fF = parseFloat(document.getElementById('rk-param-floor').value);
        const sF = parseFloat(document.getElementById('rk-param-screed').value);
        const iF = parseFloat(document.getElementById('rk-param-iso').value);
        const D = parseFloat(document.getElementById('rk-param-pipe').value); // średnica wewnętrzna w [m]

        // Stałe fizyczne dla wody 35 st C
        const rho = 994; // gęstość kg/m3
        const mu = 0.00072; // lepkość dynamiczna
        const g = 9.81;

        let totalPower = 0;
        let totalArea = 0;
        let totalLength = 0;
        let totalCircuits = 0;
        let totalFlowM3H = 0;
        let maxHeadM = 0;
        let maxPressureKpa = 0;
        let spacings = [];

        let isValid = true;

        rooms.forEach(r => {
            if(r.area <= 0 || r.loss <= 0) isValid = false;
            
            // 1. Zapotrzebowanie W
            let power = r.area * r.loss;
            totalPower += power;
            totalArea += r.area;

            // 2. Szacowanie rozstawu bazując na stratach i okładzinie (Uproszczona logika PN-EN)
            // Baza dla 35 stC, płytki, jastrych cement, styro 100
            let baseProfile = { 10: 75, 15: 55, 20: 40, 25: 30 }; 
            let spacing = 10; // Domyślnie najgęściej dla pewności
            
            // Skalowanie wydajności podłogi parametrami
            for (let sp of [25, 20, 15, 10]) {
                // Skorygowana moc dla danego rozstawu
                let q_max = baseProfile[sp] * (T/35) * fF * sF * iF;
                if(q_max >= r.loss) {
                    spacing = sp; // Znaleziono optymalny, szerszy rozstaw
                    break;
                }
            }
            spacings.push(spacing);

            // 3. Długość rury (z zapasem 10% wg wytycznych)
            let spacingM = spacing / 100;
            let roomLen = (r.area / spacingM) * 1.1; 
            totalLength += roomLen;

            // 4. Pętle (limit 100m dla bezpieczeństwa hydraulicznego PEX 16)
            let circuits = Math.ceil(roomLen / 100);
            totalCircuits += circuits;

            // 5. Hydraulika (Przepływ masowy kg/h na m3/h). Założenie deltaT = 5K
            // m = Q / (cw * dT)
            let flow_kgh = power / (1.163 * 5); // uproszczenie
            let flow_m3h = flow_kgh / 1000;
            totalFlowM3H += flow_m3h;

            // Prędkość w pojedynczej pętli i opory tarcia (Darcy-Weisbach uproszczony)
            let flow_circuit_m3s = (flow_m3h / 3600) / circuits;
            let A_pipe = Math.PI * Math.pow(D/2, 2);
            let v = flow_circuit_m3s / A_pipe;
            
            // Re i Lambda
            let Re = (rho * v * D) / mu;
            let lambda = 0.3164 * Math.pow(Re, -0.25); // Blasius
            
            // Delta P = lambda * (L/D) * (rho*v^2 / 2)
            let len_circuit = roomLen / circuits;
            let dp = lambda * (len_circuit/D) * (rho * Math.pow(v, 2) / 2);
            // Dodajemy 20% na opory miejscowe (rozdzielacz)
            dp = dp * 1.2; 
            
            let head = dp / (rho * g);
            
            if(head > maxHeadM) maxHeadM = head;
            if(dp > maxPressureKpa) maxPressureKpa = dp;
        });

        if(!isValid || rooms.length === 0) {
            alert("Uzupełnij poprawnie wszystkie pola pomieszczeń (wartości > 0).");
            return;
        }

        // --- Aktualizacja widoku ---
        
        // Karta 1
        document.getElementById('out-power').innerHTML = totalPower.toFixed(0) + ' <span>W</span>';
        document.getElementById('out-length').textContent = totalLength.toFixed(0) + ' mb';
        // Pojemność wody 0.113 l/m dla 16mm (uproszczone zład całk)
        document.getElementById('out-water').textContent = (totalLength * 0.113).toFixed(1) + ' L';
        document.getElementById('out-area').textContent = totalArea.toFixed(1) + ' m²';

        // Karta 2
        document.getElementById('out-circuits').innerHTML = totalCircuits + ' <span>sekcji</span>';
        let uniqueSp = [...new Set(spacings)].sort((a,b) => a-b);
        let avgSp = (spacings.reduce((a,b) => a+b, 0) / spacings.length).toFixed(1);
        document.getElementById('out-spacing-avg').textContent = avgSp + ' cm';
        document.getElementById('out-spacing-list').textContent = uniqueSp.join(', ') + ' cm';

        // Karta 3
        let maxKpa = (maxPressureKpa / 1000).toFixed(1);
        document.getElementById('out-flow').textContent = totalFlowM3H.toFixed(2) + ' m³/h';
        document.getElementById('out-pressure').textContent = maxKpa + ' kPa';
        document.getElementById('out-head').textContent = maxHeadM.toFixed(1) + ' m';

        let pumpText = "Pompa 25-40";
        if(maxHeadM > 3.5) pumpText = "Pompa 25-60";
        if(maxHeadM > 5.5) pumpText = "Pompa 25-80";
        document.getElementById('out-pump').innerHTML = pumpText;

        // Status hydrauliczny do animacji i ostrzeżeń
        let stTitle = document.getElementById('out-status-title');
        let stDesc = document.getElementById('out-status-desc');
        let stColor = document.getElementById('svg-impeller-color');

        if(maxKpa > 25 || totalFlowM3H > 2.5) {
            stTitle.textContent = "Ryzyko Przeciążenia!";
            stTitle.className = "rk-status-warn";
            stDesc.textContent = "Obliczone opory hydrauliczne są bardzo wysokie. Parametr T zasilania jest prawdopodobnie zbyt niski do pokrycia strat przez wybraną podłogę. Pompa obiegowa może nie zapewnić wymaganego przepływu na instalacji.";
            stColor.setAttribute('fill', '#ef4444');
        } else {
            stTitle.textContent = "Instalacja Stabilna";
            stTitle.className = "rk-status-ok";
            stDesc.textContent = "Wartości oporów i przepływów mieszczą się w normach inżynieryjnych. Dobór standardowej pompy obiegowej zabezpieczy równomierne nagrzewanie podłogi.";
            stColor.setAttribute('fill', '#10b981');
        }

        resultsPanel.style.display = 'block';
        
        // Płynne przewinięcie do wyników
        setTimeout(() => {
            resultsPanel.scrollIntoView({ behavior: 'smooth', block: 'start' });
        }, 100);
    });

});
</script>



<p class="wp-block-paragraph"></p>



<style>
:root {
    --rk-cs-primary: #0f172a;
    --rk-cs-accent: #2563eb;
    --rk-cs-before: #ef4444; /* Czerwony - błędy */
    --rk-cs-before-bg: #fef2f2;
    --rk-cs-after: #10b981; /* Zielony - optymalizacja */
    --rk-cs-after-bg: #ecfdf5;
    --rk-cs-bg: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #475569;
}

.case-study-module {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(0, 0, 0, 0.08);
    border: 1px solid var(--rk-cs-border);
    overflow: hidden;
}

/* ================= HEADER I METRYCZKA ================= */
.cs-header-wrapper {
    background: var(--rk-cs-primary);
    color: #ffffff;
    padding: 40px 50px;
    position: relative;
    overflow: hidden;
}

.cs-header-wrapper::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.3) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
}

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

.cs-header-wrapper h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 25px 0;
    line-height: 1.3;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.cs-stat-box {
    background: rgba(0, 0, 0, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
}

.cs-stat-label {
    display: block;
    font-size: 11px;
    color: #94a3b8;
    text-transform: uppercase;
    font-weight: 700;
    margin-bottom: 5px;
}

.cs-stat-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: #ffffff;
}

/* ================= OPIS WYZWANIA ================= */
.cs-content-section {
    padding: 40px 50px 30px 50px;
    background: #ffffff;
}

.cs-lead-text {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-cs-text);
    margin: 0 0 20px 0;
}

.cs-lead-text strong {
    color: var(--rk-cs-primary);
}

.cs-author-box {
    background: #f0f9ff;
    border-left: 4px solid var(--rk-cs-accent);
    padding: 15px 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 10px;
}

.cs-author-photo {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.cs-author-box p {
    margin: 0;
    font-size: 14px;
    color: #1e3a8a;
    line-height: 1.6;
}

.cs-author-box a {
    color: var(--rk-cs-accent);
    font-weight: 800;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

.cs-author-box a:hover {
    color: #1e3a8a;
}

/* ================= WYZWANIE (SPLIT CARDS - STATYCZNE) ================= */
.cs-interactive-section {
    padding: 0 50px 40px 50px;
}

.cs-split-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.cs-split-card {
    border-radius: 16px;
    padding: 25px;
    border: 2px solid;
    position: relative;
    overflow: hidden;
}

/* Karta Błędu (Czerwona) */
.cs-split-card.before {
    border-color: var(--rk-cs-before);
    background: var(--rk-cs-before-bg);
    box-shadow: 0 10px 25px rgba(239, 68, 68, 0.1);
}

/* Karta Poprawna (Zielona) */
.cs-split-card.after {
    border-color: var(--rk-cs-after);
    background: var(--rk-cs-after-bg);
    box-shadow: 0 10px 25px rgba(16, 185, 129, 0.1);
}

.cs-card-header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
}

.cs-card-icon {
    font-size: 28px;
}

.cs-card-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-cs-primary);
    margin: 0;
}

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

/* Sekcje na długi ogon */
.cs-seo-details {
    margin-top: 15px;
    padding: 15px;
    background: rgba(255,255,255,0.7);
    border-radius: 8px;
    border-left: 3px solid;
}

.cs-split-card.before .cs-seo-details { border-left-color: var(--rk-cs-before); }
.cs-split-card.after .cs-seo-details { border-left-color: var(--rk-cs-after); }

.cs-seo-details h4 {
    margin: 0 0 8px 0;
    font-size: 14px;
    color: var(--rk-cs-primary);
}

.cs-seo-details ul {
    margin: 0;
    padding-left: 20px;
    font-size: 13px;
    color: var(--rk-cs-text);
    line-height: 1.5;
}

.cs-seo-details li { margin-bottom: 4px; }
.cs-seo-details li:last-child { margin-bottom: 0; }
.cs-seo-details strong { color: var(--rk-cs-primary); }

/* Statyczne grafiki SVG */
.cs-static-svg-box {
    margin-top: 20px;
    padding: 15px;
    background: #ffffff;
    border-radius: 8px;
    border: 1px dashed var(--rk-cs-border);
}

.cs-svg-graphic {
    width: 100%;
    height: 100px;
}

/* Rozwiązanie tekstowe */
.cs-card-solution {
    margin-top: 15px;
    padding-top: 15px;
    border-top: 1px dashed rgba(0,0,0,0.1);
    font-size: 13px;
    font-weight: 700;
}

.cs-split-card.before .cs-card-solution { color: #991b1b; }
.cs-split-card.after .cs-card-solution { color: #065f46; }

@media (max-width: 768px) {
    .cs-header-wrapper { padding: 35px 25px; }
    .cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .cs-content-section { padding: 30px 25px 20px 25px; }
    .cs-interactive-section { padding: 0 25px 30px 25px; }
    .cs-split-container { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Analiza rzeczywistego projektu: Dom 165 m² w Krośnie",
    "description": "Case study audytu instalacji ogrzewania podłogowego. Optymalizacja rozstawu rur przy oknach tarasowych HS, podniesienie SCOP pompy ciepła z 3,2 do 4,15 i oszczędności 1450 PLN rocznie.",
    "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-krosno",
    "name": "Parametry OZC i hydrauliki przed i po optymalizacji (Krosno 165m2)",
    "description": "Zestawienie parametrów błędnego układu rur i zoptymalizowanej strefy brzegowej przy wielkogabarytowych przeszkleniach HS.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego Krosno",
      "rozstaw rur przy oknie tarasowym HS",
      "temperatura zasilania pompy ciepła 35 stopni",
      "optymalizacja długości pętli podłogówki",
      "wskaźnik SCOP pompy ciepła"
    ],
    "measurementTechnique": "Weryfikacja strat ciepła 85 W/m2 przy oknie HS i korekta rozstawu rur z 15 cm na 10 cm.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Projekt pierwotny: Rozstaw 15 cm, zasilanie 45°C, SCOP 3,2, najdłuższa pętla 138 m.",
        "Projekt zoptymalizowany: Rozstaw 10 cm przy oknie (strefa 1m), zasilanie 35°C, SCOP 4,15.",
        "Efekt ekonomiczny: Oszczędność 1450 PLN rocznie na energii elektrycznej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Eksplorator Błędów Projektowych HVAC",
    "description": "Moduł porównawczy prezentujący inżynierskie różnice pomiędzy wykonawstwem amatorskim a rzetelnym projektem OZC w kontekście stref przyokiennych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="case-study-module" id="app-case-study">

    <div class="cs-header-wrapper">
        <div class="cs-badge">Case Study – Audyt Projektu</div>
        <h2>Analiza rzeczywistego projektu instalacji</h2>
        <div class="cs-stats-grid">
            <div class="cs-stat-box">
                <span class="cs-stat-label">Data audytu</span>
                <span class="cs-stat-value">Marzec 2026</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Lokalizacja</span>
                <span class="cs-stat-value">Okolice Krosna</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Pow. domu</span>
                <span class="cs-stat-value">165 m²</span>
            </div>
            <div class="cs-stat-box">
                <span class="cs-stat-label">Oszczędności</span>
                <span class="cs-stat-value">1450 PLN / rok</span>
            </div>
        </div>
    </div>

    <div class="cs-content-section">
        <p class="cs-lead-text">
            Podczas weryfikacji dokumentacji technicznej dla inwestora budującego dom w województwie podkarpackim, natrafiliśmy na poważny błąd wykonawczy. Pierwotny instalator zaplanował ułożenie rur w uniwersalnym rozstawie 15 cm na całej powierzchni budynku. Zignorował fakt, że w salonie znajduje się <strong>wielkogabarytowe okno przesuwne HS o szerokości 5,5 metra</strong>.
        </p>
        
        <div class="cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="cs-author-photo" loading="lazy">
            <p>Audyt przeprowadził CEO portalu  <a href="https://projekt-ogrzewania.pl/">Robert Kucharski</a>. Wprowadzenie danych do autorskiego oprogramowania wykazało, że strefa przyokienna generuje straty ciepła na poziomie 85 W/m².</p>
        </div>
    </div>

    <div class="cs-interactive-section">
        <div class="cs-split-container">
            
            <div class="cs-split-card before">
                <div class="cs-card-header">
                    <span class="cs-card-icon">❌</span>
                    <h3 class="cs-card-title">Pierwotny pomysł wykonawcy</h3>
                </div>
                <p class="cs-card-desc">Rury ułożone rzadko (15 cm) pod oknem HS. Aby pokryć straty 85 W/m², instalator musiał podnieść temperaturę zasilania pompy do 45°C. Dodatkowo jedna pętla miała aż 138 metrów.</p>
                
                <div class="cs-seo-details">
                    <h4>Skutki inżynieryjne błędu:</h4>
                    <ul>
                        <li>Opór hydrauliczny pętli przekroczył <strong>25 kPa</strong>.</li>
                        <li>Spadek przepływu na rotametrze <strong>poniżej 0,5 l/min</strong>.</li>
                        <li>Wymuszenie podbicia krzywej grzewczej <strong>do 45/40°C</strong>.</li>
                    </ul>
                </div>

                <div class="cs-static-svg-box">
                    <svg class="cs-svg-graphic" viewBox="0 0 200 100">
                        <rect x="20" y="10" width="160" height="10" fill="#94a3b8"/>
                        <line x1="20" y1="15" x2="180" y2="15" stroke="#ffffff" stroke-width="2"/>
                        <circle cx="50" cy="50" r="6" fill="#ef4444"/>
                        <circle cx="100" cy="50" r="6" fill="#ef4444"/>
                        <circle cx="150" cy="50" r="6" fill="#ef4444"/>
                        <text x="100" y="85" font-size="12" font-weight="bold" fill="#ef4444" text-anchor="middle">Zasilanie: 45°C | SCOP: 3.2</text>
                    </svg>
                </div>

                <div class="cs-card-solution">
                    Efekt: Drastyczny spadek sprawności pompy (SCOP 3.2), wysokie opory hydrauliczne pętli 138m i chłód bijący od strony szyb w zimie.
                </div>
            </div>

            <div class="cs-split-card after">
                <div class="cs-card-header">
                    <span class="cs-card-icon">✅</span>
                    <h3 class="cs-card-title">Inżynierska optymalizacja</h3>
                </div>
                <p class="cs-card-desc">Skróciliśmy skrajną pętlę do bezpiecznych 92 m i zagęściliśmy rury do 10 cm w pasie o szerokości 1 metra (strefa brzegowa pod oknem). Reszta salonu co 15 cm.</p>
                
                <div class="cs-seo-details">
                    <h4>Korekta projektowa przyniosła:</h4>
                    <ul>
                        <li>Redukcję oporów hydraulicznych <strong>poniżej 15 kPa</strong>.</li>
                        <li>Prawidłowe zrównoważenie sekcji na <strong>1,8 l/min</strong>.</li>
                        <li>Obniżenie krzywej grzewczej dla PC <strong>do 35/30°C</strong>.</li>
                    </ul>
                </div>

                <div class="cs-static-svg-box">
                    <svg class="cs-svg-graphic" viewBox="0 0 200 100">
                        <rect x="20" y="10" width="160" height="10" fill="#94a3b8"/>
                        <line x1="20" y1="15" x2="180" y2="15" stroke="#ffffff" stroke-width="2"/>
                        <circle cx="40" cy="40" r="6" fill="#10b981"/>
                        <circle cx="70" cy="40" r="6" fill="#10b981"/>
                        <circle cx="100" cy="40" r="6" fill="#10b981"/>
                        <circle cx="145" cy="50" r="6" fill="#10b981"/>
                        <text x="100" y="85" font-size="12" font-weight="bold" fill="#10b981" text-anchor="middle">Zasilanie: 35°C | SCOP: 4.15</text>
                    </svg>
                </div>

                <div class="cs-card-solution">
                    Efekt: Obniżenie zasilania do 35°C, wzrost SCOP do 4.15 i realna oszczędność 1450 PLN każdego roku. Równomierny rozkład ciepła.
                </div>
            </div>

        </div>
    </div>

</div>

<script>
(function() {
    const initCaseStudy = () => {
        // Zabezpieczenie domenowe (Skrypt nie usuwa już interakcji z kart, służy tylko do blokady)
        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('app-case-study');
            if (container) {
                container.innerHTML = `
                    <div style="padding: 40px 25px; text-align: center; background: #fee2e2; color: #dc2626; border-radius: 24px; border: 2px solid #ef4444;">
                        <span style="font-size: 40px; display: block; margin-bottom: 10px;">🔒</span>
                        <h3 style="margin: 0 0 10px 0; font-size: 20px;">Studium Przypadku Chronione</h3>
                        <p style="font-size: 14px; margin-bottom: 15px;">Ten panel to autorska własność Projekt-Ogrzewania.pl. Użycie nieautoryzowane.</p>
                    </div>
                `;
            }
        }
    };

    // Zabezpieczenie przed przedwczesnym odpaleniem skryptu
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initCaseStudy);
    } else {
        initCaseStudy();
    }
})();
</script>



<style>
:root {
    --rk-quote-dark: #0f172a;
    --rk-quote-darker: #020617;
    --rk-quote-primary: #3b82f6; /* Hydronic Blue */
    --rk-quote-accent: #10b981; /* Emerald/Green for success */
    --rk-quote-warning: #f59e0b; /* Amber */
    --rk-quote-danger: #ef4444; /* Red */
    --rk-quote-bg: #ffffff;
    --rk-quote-surface: #f8fafc;
    --rk-quote-border: #cbd5e1;
    --rk-quote-text: #334155;
    --rk-quote-muted: #64748b;
    --rk-quote-shadow: 0 20px 40px -10px rgba(59, 130, 246, 0.15);
}

.rk-quote-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-quote-bg);
    border-radius: 24px;
    box-shadow: var(--rk-quote-shadow);
    border: 1px solid var(--rk-quote-border);
    overflow: hidden;
}

/* --- NAGŁÓWEK I CYTAT --- */
.rk-quote-header {
    background: linear-gradient(135deg, var(--rk-quote-darker) 0%, var(--rk-quote-dark) 100%);
    padding: 50px 50px 40px;
    position: relative;
    border-bottom: 4px solid var(--rk-quote-primary);
    text-align: center;
}

.rk-quote-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #93c5fd;
    padding: 6px 16px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-quote-box {
    position: relative;
    max-width: 800px;
    margin: 0 auto;
}

.rk-quote-mark {
    font-size: 100px;
    color: rgba(255,255,255,0.05);
    position: absolute;
    top: -40px;
    left: -30px;
    line-height: 1;
    font-family: Georgia, serif;
    user-select: none;
}

.rk-quote-text {
    font-size: 24px;
    font-weight: 900;
    line-height: 1.5;
    color: #ffffff;
    margin: 0 0 20px 0;
    position: relative;
    z-index: 2;
}

.rk-quote-text span {
    color: #93c5fd;
}

/* --- INTERAKTYWNE PODSUMOWANIE --- */
.rk-quote-body {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-quote-border);
    background: var(--rk-quote-surface);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-rule-btn {
    background: #ffffff;
    border: 2px solid var(--rk-quote-border);
    padding: 15px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-rule-btn:hover {
    border-color: #94a3b8;
}

.rk-rule-btn.active {
    background: #eff6ff;
    border-color: var(--rk-quote-primary);
    box-shadow: 0 4px 10px rgba(59, 130, 246, 0.1);
}

.rk-rule-icon {
    width: 36px; height: 36px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-quote-muted);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-quote-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 4px 0;
    font-size: 14px;
    font-weight: 900;
    color: var(--rk-quote-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 12px;
    color: var(--rk-quote-text);
    font-weight: 600;
}

/* Panele Detali */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

.rk-detail-panel {
    display: none;
}

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 20px;
    animation: rkFadeIn 0.3s ease-out;
}

@keyframes rkFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-detail-panel h4 {
    margin: 0;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-quote-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-quote-text);
}

.rk-detail-panel strong { color: var(--rk-quote-dark); }

.rk-detail-svg-box {
    width: 100%;
    height: 180px;
    background: var(--rk-quote-dark);
    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);
}

.rk-detail-svg { width: 100%; max-width: 250px; height: auto; }

/* --- AUTOR --- */
.rk-quote-author {
    background: #ffffff;
    padding: 30px 50px;
    display: flex;
    align-items: center;
    gap: 25px;
    border-top: 1px solid var(--rk-quote-border);
}

.rk-author-photo {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    border: 3px solid var(--rk-quote-primary);
    box-shadow: 0 4px 15px rgba(59, 130, 246, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-author-info h4 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-quote-dark);
}

.rk-author-info p {
    margin: 0 0 10px 0;
    font-size: 14px;
    color: var(--rk-quote-text);
    line-height: 1.5;
}

.rk-author-links {
    display: flex;
    gap: 15px;
}

.rk-author-links a {
    color: var(--rk-quote-primary);
    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: #1e3a8a; text-decoration: underline; }

@media (max-width: 768px) {
    .rk-quote-header { padding: 40px 25px; }
    .rk-quote-text { font-size: 20px; }
    .rk-quote-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-quote-border); padding: 25px; }
    .rk-rule-details { padding: 25px; }
    .rk-quote-author { flex-direction: column; text-align: center; padding: 30px 25px; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-quote",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Ostateczne podsumowanie: Dlaczego kompleksowy kalkulator podłogówki to konieczność?",
    "description": "Podsumowanie eksperckie dotyczące projektowania ogrzewania podłogowego. Wpływ normy PN-EN 1264, rozstawu rur, i grubości wylewki na efektywność pomp ciepła i koszty instalacji.",
    "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/",
      "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-24",
    "dateModified": "2026-05-24"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-summary",
    "name": "Kluczowe Parametry i Limity Ogrzewania Podłogowego (Baza Wiedzy)",
    "description": "Zestawienie twardych norm inżynieryjnych podsumowujących artykuł o projektowaniu podłogówki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "projektowe obciążenie cieplne OZC",
      "rozstaw rur ogrzewania podłogowego",
      "przepływy na rotametrach",
      "długość pętli PEX"
    ],
    "measurementTechnique": "Synteza wniosków z normy PN-EN 1264, uwzględniająca przepływy, średnice i izolacyjność termiczną.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Maksymalna długość pętli PEX 16x2.0 mm wynosi 120 mb.",
        "Grubość wylewki cementowej to min. 45 mm nad rurą, izolacja EPS 100/200.",
        "Rozstaw rur pod pompę ciepła wynosi średnio 10-15 cm, aby uzyskać zasilanie 35°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-quote",
    "name": "Eksplorator Wniosków Projektowych",
    "description": "Interaktywny panel prezentujący 3 złote zasady inżynieryjne instalacji podłogowej, wzbogacony o schematy wektorowe.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-quote-container" id="rk-quote-app">
    
    <div class="rk-quote-header">
        <div class="rk-quote-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>
            Podsumowanie Eksperta
        </div>
        
        <div class="rk-quote-box">
            <div class="rk-quote-mark">&#8222;</div>
            <h2 class="rk-quote-text">
                Ogrzewanie podłogowe to nie jest zgadywanka. To czysta matematyka i fizyka budowli. Bez <span>kompleksowego kalkulatora</span> i obliczeń OZC ryzykujesz nie tylko tysiące złotych na etapie wykonawstwa, ale przede wszystkim komfort swojej rodziny przez kolejne dekady.
            </h2>
        </div>
    </div>

    <div class="rk-quote-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-target="rk-tab-ozc">
                <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><path d="M12 8v4l3 3"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>1. Bilans to Fundament</h3>
                    <p>Straty ciepła vs Zasilanie</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-target="rk-tab-loop">
                <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="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.57-8.38l5.67-5.67"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>2. Limity Hydrauliczne</h3>
                    <p>Max 120 m dla rury PEX 16</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-target="rk-tab-iso">
                <div class="rk-rule-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-rule-text">
                    <h3>3. Konstrukcja Płyty</h3>
                    <p>EPS 100 i Grubość Wylewki</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="rk-tab-ozc">
                <h4>Projektowe Obciążenie Cieplne</h4>
                <p>Każdy budynek oddaje ciepło inaczej. <strong>Kompleksowy kalkulator ogrzewania podłogowego</strong> przetwarza parametry OZC, dobierając idealny <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" style="color:var(--rk-quote-primary);font-weight:bold;">rozstaw rur</a> (np. 10 cm przy oknach, 15 cm w salonie). Dzięki temu pompa ciepła może pracować na ekstremalnie niskim i tanim zasilaniu rzędu 35°C.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <rect x="50" y="20" width="100" height="60" fill="none" stroke="#64748b" stroke-width="4" rx="4"/>
                        <path d="M 30 50 L 50 50 M 150 50 L 170 50" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                        <circle cx="100" cy="50" r="15" fill="#10b981"/>
                        <text x="100" y="54" font-size="12" font-weight="bold" fill="#0f172a" text-anchor="middle">OZC</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="rk-tab-loop">
                <h4>Blokada przepływów na rotametrach</h4>
                <p>Zignorowanie normy <strong>PN-EN 1264</strong> i ułożenie pętli dłuższej niż 120 metrów dla rury PEX 16&#215;2.0 kończy się tragedią. Opory hydrauliczne rosną powyżej 20 kPa, co uniemożliwia wyregulowanie <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" style="color:var(--rk-quote-primary);font-weight:bold;">przepływów na rotametrach</a>. Efektem jest permanentnie zimna posadzka.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <path d="M 20 50 Q 50 20 80 50 T 140 50 T 180 50" fill="none" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"/>
                        <line x1="20" y1="80" x2="180" y2="80" stroke="#ef4444" stroke-width="3"/>
                        <text x="100" y="72" font-size="12" font-weight="bold" fill="#ef4444" text-anchor="middle">MAX 120 mb</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="rk-tab-iso">
                <h4>Nośność i pękanie wylewek</h4>
                <p>Ułożenie rur na tanim styropianie fasadowym (EPS 70 zamiast twardego EPS 100/200) to błąd wykonawczy. Pod wpływem ciężaru wylewki i mebli, warstwa izolacji ulega ściśnięciu. Dochodzi do zerwania taśm dylatacyjnych, a grubość jastrychu (min. 45 mm nad rurą) traci swoją strukturę nośną.</p>
                
                <div class="rk-detail-svg-box">
                    <svg class="rk-detail-svg" viewBox="0 0 200 100">
                        <rect x="20" y="20" width="160" height="30" fill="#cbd5e1"/>
                        <rect x="20" y="55" width="160" height="25" fill="#64748b"/>
                        <circle cx="50" cy="35" r="5" fill="#3b82f6"/><circle cx="100" cy="35" r="5" fill="#3b82f6"/><circle cx="150" cy="35" r="5" fill="#3b82f6"/>
                        <text x="100" y="72" font-size="11" font-weight="bold" fill="#ffffff" text-anchor="middle">EPS 100 (Twardy)</text>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quote-author">
        <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-author-photo" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>Główny audytor i projektant HVAC na portalu Projekt-Ogrzewania.pl. Setki zaprojektowanych instalacji i godzin spędzonych na placach budowy przekuwam w twardą, matematyczną wiedzę dla inwestorów.</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>
(function() {
    const initApp = () => {
        // 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('rk-quote-app');
            if (container) {
                container.innerHTML = `
                    <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:24px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                        <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                        BŁĄD LICENCJI:<br>Kontener informacyjny należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na nieautoryzowanej domenie jest zabronione prawem.
                    </div>
                `;
                return;
            }
        }

        // Logika zakładek
        const btns = document.querySelectorAll('.rk-rule-btn');
        const panels = document.querySelectorAll('.rk-detail-panel');

        btns.forEach(btn => {
            btn.addEventListener('click', function(e) {
                const targetId = e.currentTarget.getAttribute('data-target');
                
                // Reset
                btns.forEach(b => b.classList.remove('active'));
                panels.forEach(p => p.classList.remove('active'));
                
                // Aktywacja
                e.currentTarget.classList.add('active');
                const targetPanel = document.getElementById(targetId);
                if(targetPanel) {
                    targetPanel.classList.add('active');
                }
            });
        });
    };

    // Zabezpieczenie przed opóźnionym ładowaniem (WordPress/Elementor)
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', initApp);
    } else {
        initApp();
    }
})();
</script>



<style>
:root {
    --rk-faq2-dark: #1e293b;
    --rk-faq2-card: #ffffff;
    --rk-faq2-brand: #0ea5e9; /* Ekspercki błękit */
    --rk-faq2-brand-light: #e0f2fe;
    --rk-faq2-accent: #f59e0b; /* Bursztyn dla kontrastu / ciepła */
    --rk-faq2-alert: #ef4444; /* Czerwień błędów */
    --rk-faq2-bg: #f8fafc;
    --rk-faq2-border: #cbd5e1;
    --rk-faq2-text: #334155;
    --rk-faq2-muted: #64748b;
}

.rk-faq2-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
    background: var(--rk-faq2-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(14, 165, 233, 0.1);
    border: 1px solid var(--rk-faq2-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-faq2-header {
    background: linear-gradient(135deg, var(--rk-faq2-dark) 0%, #0f172a 100%);
    padding: 40px 50px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-faq2-brand);
}

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

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

.rk-faq2-title span { color: #bae6fd; }

/* Sekcja Akordeonu */
.rk-faq2-interactive {
    padding: 35px 45px;
    background: var(--rk-faq2-bg);
}

.rk-faq2-list {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-faq2-item {
    background: var(--rk-faq2-card);
    border: 1px solid var(--rk-faq2-border);
    border-left: 4px solid var(--rk-faq2-border);
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-faq2-item.active {
    border-color: var(--rk-faq2-brand);
    border-left-width: 6px;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.15);
}

/* Przycisk Pytania */
.rk-faq2-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-faq2-dark);
    transition: background 0.3s;
}

.rk-faq2-question:hover {
    background: #f1f5f9;
}

.rk-faq2-item.active .rk-faq2-question {
    background: var(--rk-faq2-brand-light);
    color: #0369a1;
}

.rk-faq2-icon {
    flex-shrink: 0;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: #f1f5f9;
    color: var(--rk-faq2-muted);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-item.active .rk-faq2-icon {
    background: var(--rk-faq2-brand);
    color: #ffffff;
    transform: rotate(45deg); /* Zmiana plusa w krzyżyk */
}

/* Kontener Odpowiedzi */
.rk-faq2-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq2-item.active .rk-faq2-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-faq2-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi */
.rk-faq2-content {
    padding: 20px 25px 25px;
    border-top: 1px dashed var(--rk-faq2-border);
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 30px;
    align-items: center;
}

.rk-faq2-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-faq2-text);
}

.rk-faq2-text strong {
    font-weight: 800;
    color: var(--rk-faq2-dark);
    background: linear-gradient(120deg, rgba(14, 165, 233, 0.1) 0%, rgba(14, 165, 233, 0.1) 100%);
    background-repeat: no-repeat;
    background-size: 100% 30%;
    background-position: 0 80%;
}

.rk-link {
    color: var(--rk-faq2-brand);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.3s;
}

.rk-link:hover { color: #0284c7; }

/* Wizualizacje SVG */
.rk-faq2-visual {
    background: #f8fafc;
    border-radius: 12px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 2px solid #e2e8f0;
    position: relative;
    overflow: hidden;
}

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

/* --- Animacje SVG zależne od .active --- */

/* 1. Mieszacz (Zawór 3-drogowy) */
.anim-mix-hot { stroke-dasharray: 8; animation: flowHot 2s linear infinite; opacity: 0; stroke: #ef4444; }
.anim-mix-cold { stroke-dasharray: 8; animation: flowCold 2s linear infinite; opacity: 0; stroke: #3b82f6; }
.anim-mix-warm { stroke-dasharray: 8; animation: flowWarm 2s linear infinite; opacity: 0; stroke: #f59e0b; }
.rk-faq2-item.active .anim-mix-hot, .rk-faq2-item.active .anim-mix-cold, .rk-faq2-item.active .anim-mix-warm { opacity: 1; }
@keyframes flowHot { to { stroke-dashoffset: -16; } }
@keyframes flowCold { to { stroke-dashoffset: -16; } }
@keyframes flowWarm { to { stroke-dashoffset: 16; } }

/* 2. Glikol vs Woda Demi */
.anim-water-demi { transform: scaleY(0); transform-origin: bottom; transition: transform 1s 0.3s ease-out; fill: #38bdf8; }
.rk-faq2-item.active .anim-water-demi { transform: scaleY(1); }
.anim-bubbles circle { opacity: 0; animation: floatUp 2s infinite ease-in; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(1) { animation-delay: 0.5s; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(2) { animation-delay: 1.2s; }
.rk-faq2-item.active .anim-bubbles circle:nth-child(3) { animation-delay: 0.8s; }
@keyframes floatUp { 0% { opacity: 0; transform: translateY(10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(-20px); } }

/* 3. Długa Pętla (Brak Przepływu) */
.anim-long-pipe { stroke-dasharray: 200; stroke-dashoffset: 200; stroke: #ef4444; transition: stroke-dashoffset 2s 0.3s ease-out; }
.rk-faq2-item.active .anim-long-pipe { stroke-dashoffset: 0; }
.anim-block { opacity: 0; transition: opacity 0.3s 2.3s; }
.rk-faq2-item.active .anim-block { opacity: 1; }

/* 4. Rozstaw Łazienka */
.anim-dense-pipe { stroke-dasharray: 300; stroke-dashoffset: 300; transition: stroke-dashoffset 1.5s 0.3s ease-out; }
.rk-faq2-item.active .anim-dense-pipe { stroke-dashoffset: 0; }
.anim-heat-wave path { opacity: 0; animation: radiate 1.5s infinite alternate; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(1) { animation-delay: 0.8s; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(2) { animation-delay: 1.0s; }
.rk-faq2-item.active .anim-heat-wave path:nth-child(3) { animation-delay: 1.2s; }
@keyframes radiate { from { opacity: 0; transform: translateY(0); } to { opacity: 0.6; transform: translateY(-5px); stroke: #ef4444; } }

/* 5. Wygrzewanie (28 dni) */
.anim-calendar-leaf { transform-origin: top; transition: transform 0.5s 0.3s, opacity 0.5s 0.3s; }
.rk-faq2-item.active .anim-calendar-leaf { transform: rotateX(-90deg); opacity: 0; }
.anim-crack { stroke-dasharray: 50; stroke-dashoffset: 50; transition: stroke-dashoffset 0.5s 0.8s; }
.rk-faq2-item.active .anim-crack { stroke-dashoffset: 0; }

@media (max-width: 768px) {
    .rk-faq2-header, .rk-faq2-interactive { padding: 30px 20px; }
    .rk-faq2-title { font-size: 24px; }
    .rk-faq2-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-faq2-visual { height: 140px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-faq2-question { font-size: 15px; padding: 16px 20px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania projektowe",
    "description": "Zbiór kluczowych pytań inwestorskich o łączenie podłogówki z grzejnikami, rodzaj zładu (woda vs glikol), graniczne długości pętli oraz proces wygrzewania posadzki.",
    "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-23",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy można połączyć ogrzewanie podłogowe bezpośrednio z tradycyjnymi grzejnikami w jednym obiegu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Bezpośrednie połączenie jest niedopuszczalne, ponieważ grzejniki wymagają wysokich temperatur zasilania (55–75°C), które zniszczyłyby posadzkę podłogówki. Konieczne jest zastosowanie układu rozdzielczego z niezależną grupą pompowo-mieszaczową wyposażoną w trójdrogowy zawór termostatyczny obniżający parametr dla podłogówki do bezpiecznych 35–40°C."
        }
      },
      {
        "@type": "Question",
        "name": "Czym najlepiej napełnić instalację ogrzewania podłogowego – zwykłą wodą z kranu czy glikolem?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Instalację w domach całorocznych należy napełnić wodą demineralizowaną uzdatnioną inhibitorem korozji, który chroni układ przed odkładaniem się kamienia kotłowego i szlamu. Glikol stosuje się wyłącznie w domkach letniskowych lub układach narażonych na zamarzanie, pamiętając, że zmniejsza on sprawność wymiany ciepła o ok. 10–15% z uwagi na wyższą lepkość kinematiczną."
        }
      },
      {
        "@type": "Question",
        "name": "Co się stanie, jeśli wykonawca ułoży zbyt długą pętlę podłogówki, np. 160 metrów rury 16 mm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Taka pętla wygeneruje opory hydrauliczne drastycznie przekraczające możliwości standardowej pompy obiegowej, przez co przepływ wody spadnie niemal do zera. W efekcie początek pętli przy rozdzielaczu będzie ciepły, a reszta pomieszczenia pozostanie całkowicie zimna, co wymaga wpięcia dodatkowej pompy wspomagającej lub uciążliwego kucia posadzki w celu podziału obwodu."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego w łazienkach zawsze projektuje się gęstszy rozstaw rur (co 10 cm) niż w pokojach?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Łazienki charakteryzują się wyższą temperaturą obliczeniową wnętrza (24°C zamiast 20°C) przy jednoczesnym ograniczeniu wolnej powierzchni posadzki przez brodziki, wanny i miski WC. Gęstszy rozstaw rur pozwala wygenerować wyższą gęstość strumienia cieplnego z jednego metra kwadratowego i pokryć zapotrzebowanie na ciepło mimo małej powierzchni grzewczej."
        }
      },
      {
        "@type": "Question",
        "name": "Po jakim czasie od zalania wylewki betonowej można uruchomić ogrzewanie podłogowe i zacząć proces wygrzewania?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Proces wygrzewania jastrychu cementowego można rozpocząć najwcześniej po upływie 28 dni od jego wylania (dla wylewek anhydrytowych czas ten skraca się do 7 dni). Zbyt wczesne podanie temperatury spowoduje gwałtowne odparowanie wody niezbędnej do procesu hydratacji cementu, co doprowadzi do drastycznego spadku wytrzymałości mechanicznej posadzki i jej nieodwracalnego spękania."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset-faq",
    "name": "Wytyczne Projektowo-Wykonawcze Ogrzewania Podłogowego (Baza Wiedzy)",
    "description": "Kompilacja normatywnych wytycznych instalacyjnych (rozstawy w łazienkach, max długości pętli, proces hydratacji jastrychu) niezbędnych przy obliczeniach hydraulicznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "połączenie podłogówki z grzejnikami",
      "woda demineralizowana czy glikol",
      "zbyt długa pętla podłogówki 160m",
      "rozstaw rur w łazience 10 cm",
      "wygrzewanie wylewki betonowej 28 dni"
    ],
    "measurementTechnique": "Określenie parametrów granicznych na podstawie norm PN-EN 1264, PN-EN 12831 oraz wymagań chemii budowlanej (hydratacja cementu).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg stosowania zaworu 3-drogowego przy łączeniu z grzejnikami (redukcja 75°C -> 35°C).",
        "Opory hydrauliczne długiej pętli >120m blokują przepływ masowy.",
        "Proces dojrzewania betonu wymaga minimum 28 dni przed startem wygrzewania."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywna Baza Błędów Wykonawczych",
    "description": "Narzędzie FAQ z wbudowanymi animacjami SVG obrazującymi skutki błędów instalacyjnych: brak mieszacza, zbyt długa pętla hydrauliczna czy przedwczesne wygrzewanie betonu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-faq2-container" id="rk-faq2-app">
    
    <div class="rk-faq2-header">
        <div class="rk-faq2-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"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inżyniera
        </div>
        <h2 class="rk-faq2-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq2-interactive">
        <div class="rk-faq2-list">
            
            <!-- Pytanie 1: Podłogówka + Grzejniki -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>1. Czy można połączyć podłogówkę bezpośrednio z grzejnikami?</span>
                    <div class="rk-faq2-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"><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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Bezpośrednie połączenie jest <strong>niedopuszczalne</strong>. Grzejniki wymagają wysokich temperatur zasilania (55–75°C), które zniszczyłyby posadzkę podłogówki (pękanie wylewki). Konieczne jest zastosowanie układu rozdzielczego z niezależną grupą pompowo-mieszaczową wyposażoną w <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">zawór termostatyczny</a> obniżający parametr do bezpiecznych 35–40°C.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 10 40 L 40 40" stroke="#ef4444" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 40 70 L 40 50" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 40 40 L 100 40" stroke="#f59e0b" stroke-width="6" stroke-linecap="round"></path>
                                    <!-- Animowane przepływy -->
                                    <path d="M 10 40 L 35 40" stroke-width="3" stroke-linecap="round" class="anim-mix-hot"></path>
                                    <path d="M 40 70 L 40 45" stroke-width="3" stroke-linecap="round" class="anim-mix-cold"></path>
                                    <path d="M 45 40 L 100 40" stroke-width="3" stroke-linecap="round" class="anim-mix-warm"></path>
                                    <circle cx="40" cy="40" r="10" fill="#1e293b"></circle>
                                    <text x="40" y="44" fill="#fff" font-size="10" text-anchor="middle" font-weight="bold">M</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2: Woda vs Glikol -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>2. Czym napełnić instalację – wodą z kranu czy glikolem?</span>
                    <div class="rk-faq2-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"><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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Instalację w domach całorocznych należy napełnić <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/" class="rk-link">wodą demineralizowaną z inhibitorem korozji</a>. Chroni to układ przed odkładaniem się kamienia i szlamu. <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/" class="rk-link">Glikol</a> stosuje się wyłącznie w układach narażonych na zamarzanie (domki letniskowe), pamiętając, że zmniejsza on sprawność wymiany ciepła o ok. 10–15% ze względu na gęstość.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 40 20 L 40 70 L 80 70 L 80 20" fill="none" stroke="#94a3b8" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"></path>
                                    <rect x="42" y="30" width="36" height="38" class="anim-water-demi"></rect>
                                    <g class="anim-bubbles" fill="#ffffff">
                                        <circle cx="50" cy="60" r="2"></circle>
                                        <circle cx="60" cy="55" r="3"></circle>
                                        <circle cx="70" cy="65" r="1.5"></circle>
                                    </g>
                                    <text x="60" y="50" fill="#fff" font-size="12" text-anchor="middle" font-weight="bold">H₂O+</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3: Za długa pętla -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>3. Co się stanie, jeśli pętla wyniesie np. 160 metrów?</span>
                    <div class="rk-faq2-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"><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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Taka <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" class="rk-link">za długa pętla</a> wygeneruje opory hydrauliczne drastycznie przekraczające możliwości standardowej pompy obiegowej. Przepływ wody spadnie niemal do zera. W efekcie początek pętli przy rozdzielaczu będzie ciepły, a <strong>reszta pomieszczenia pozostanie całkowicie zimna</strong> (upośledzenie hydrauliczne).
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path d="M 10 20 Q 30 20, 30 40 T 50 60 T 70 40 T 90 60 T 110 40" fill="none" stroke="#e2e8f0" stroke-width="6" stroke-linecap="round"></path>
                                    <path d="M 10 20 Q 30 20, 30 40 T 50 60" fill="none" stroke-width="6" stroke-linecap="round" class="anim-long-pipe"></path>
                                    <circle cx="50" cy="60" r="8" fill="#ef4444" class="anim-block"></circle>
                                    <line x1="45" y1="55" x2="55" y2="65" stroke="#fff" stroke-width="2" class="anim-block"></line>
                                    <line x1="55" y1="55" x2="45" y2="65" stroke="#fff" stroke-width="2" class="anim-block"></line>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4: Łazienka 10 cm -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>4. Dlaczego w łazienkach zawsze projektuje się rozstaw rur co 10 cm?</span>
                    <div class="rk-faq2-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"><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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Łazienki charakteryzują się wyższą temperaturą projektową (24°C zamiast 20°C) przy <strong>mocno ograniczonej wolnej powierzchni</strong> posadzki (odchodzą brodziki, wanny, zabudowy WC). Gęstszy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" class="rk-link">rozstaw rur (co 10 cm)</a> pozwala wygenerować wyższą gęstość strumienia cieplnego z 1 m² i pokryć straty ciepła przy małej powierzchni grzewczej.
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <path class="anim-dense-pipe" d="M 20 60 L 100 60 M 20 50 L 100 50 M 20 40 L 100 40" stroke="#f59e0b" stroke-width="4" stroke-linecap="round"></path>
                                    <g class="anim-heat-wave" stroke="#f59e0b" stroke-width="2" stroke-linecap="round" fill="none">
                                        <path d="M 40 30 Q 45 25, 50 30 T 60 30"></path>
                                        <path d="M 60 25 Q 65 20, 70 25 T 80 25"></path>
                                        <path d="M 80 30 Q 85 25, 90 30 T 100 30"></path>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5: Wygrzewanie betonu -->
            <div class="rk-faq2-item">
                <button class="rk-faq2-question">
                    <span>5. Po jakim czasie od zalania wylewki można zacząć ją wygrzewać?</span>
                    <div class="rk-faq2-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"><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-faq2-answer-wrapper">
                    <div class="rk-faq2-answer-inner">
                        <div class="rk-faq2-content">
                            <div class="rk-faq2-text">
                                Wygrzewanie klasycznego jastrychu cementowego można rozpocząć <strong>najwcześniej po upływie 28 dni</strong> od jego wylania. Zbyt wczesne podanie temperatury spowoduje gwałtowne odparowanie wody niezbędnej do hydratacji cementu. Skutkuje to drastycznym spadkiem wytrzymałości mechanicznej posadzki i jej <strong>nieodwracalnym spękaniem</strong> (tzw. zjawisko &#8222;miski&#8221;).
                            </div>
                            <div class="rk-faq2-visual">
                                <svg class="rk-svg-stage" viewBox="0 0 120 80">
                                    <rect x="40" y="20" width="40" height="40" rx="4" fill="#e2e8f0" stroke="#94a3b8" stroke-width="3"></rect>
                                    <path d="M 45 15 L 45 25 M 75 15 L 75 25" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></path>
                                    <text x="60" y="45" font-size="16" font-weight="bold" fill="#334155" text-anchor="middle">28</text>
                                    <rect class="anim-calendar-leaf" x="40" y="20" width="40" height="20" fill="#cbd5e1" rx="4"></rect>
                                    <!-- Pęknięcie wylewki -->
                                    <path class="anim-crack" d="M 10 70 L 30 65 L 45 75 L 60 60" fill="none" stroke="#1e293b" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // Zabezpieczenie Domenowe - DOMAIN LOCK
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('rk-faq2-app');
        if (container) {
            container.innerHTML = `
                <div style="padding:40px; text-align:center; background:#1e293b; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif; border: 2px solid #ef4444;">
                    <div style="font-size:30px; margin-bottom:10px;">⚠️</div>
                    BŁĄD LICENCJI:<br>Kontener FAQ należy do serwisu Projekt-Ogrzewania.pl. Uruchamianie na tej domenie jest nieautoryzowane.
                </div>
            `;
            return;
        }
    }

    // Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-faq2-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq2-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamykamy wszystkie
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Otwieramy kliknięty, jeśli nie był aktywny
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwórz pierwszy element po załadowaniu
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-base-dark: #1e293b;
    --rk-base-darker: #0f172a;
    --rk-base-blue: #0ea5e9;
    --rk-base-light: #f8fafc;
    --rk-base-border: #e2e8f0;
    --rk-pro-green: #10b981;
    --rk-pro-green-bg: #ecfdf5;
    --rk-amateur-red: #ef4444;
    --rk-amateur-red-bg: #fef2f2;
    --rk-text-main: #334155;
    --rk-text-muted: #64748b;
    --rk-card-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.05);
}

.rk-summary-dashboard {
    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(14, 165, 233, 0.15);
    border: 1px solid var(--rk-base-blue);
    overflow: hidden;
}

/* --- NAGŁÓWEK --- */
.rk-dash-header {
    padding: 45px 50px;
    background: linear-gradient(135deg, var(--rk-base-darker) 0%, var(--rk-base-dark) 100%);
    color: #ffffff;
    position: relative;
}

.rk-dash-header::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-base-blue), var(--rk-pro-green));
}

.rk-dash-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-dash-lead {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-dash-lead a {
    color: #7dd3fc;
    text-decoration: underline;
    text-underline-offset: 3px;
    font-weight: 600;
}

/* --- INTERAKTYWNY PANEL --- */
.rk-dash-interactive {
    padding: 40px 50px;
    background: var(--rk-base-light);
}

.rk-dash-interactive h3 {
    text-align: center;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-base-darker);
    margin: 0 0 25px 0;
}

/* Przełącznik (Toggle Switch) */
.rk-toggle-container {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-master-switch {
    position: relative;
    display: flex;
    background: #e2e8f0;
    border-radius: 999px;
    padding: 6px;
    width: 100%;
    max-width: 500px;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.05);
}

.rk-switch-btn {
    flex: 1;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    text-align: center;
    color: var(--rk-text-muted);
    cursor: pointer;
    z-index: 2;
    transition: color 0.3s ease;
    border-radius: 999px;
    user-select: none;
}

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

.rk-switch-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    left: 6px;
    width: calc(50% - 6px);
    background: var(--rk-pro-green);
    border-radius: 999px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    z-index: 1;
    box-shadow: 0 4px 10px rgba(16, 185, 129, 0.3);
}

.state-amateur .rk-switch-glider {
    transform: translateX(100%);
    background: var(--rk-amateur-red);
    box-shadow: 0 4px 10px rgba(239, 68, 68, 0.3);
}

/* Kafelki z parametrami (Grid) */
.rk-metrics-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
    margin-bottom: 40px;
}

.rk-metric-card {
    background: #ffffff;
    padding: 25px 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-base-border);
    box-shadow: var(--rk-card-shadow);
    text-align: center;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.rk-metric-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 4px;
    background: var(--rk-base-border);
    transition: background-color 0.4s;
}

.state-pro .rk-metric-card::before { background: var(--rk-pro-green); }
.state-amateur .rk-metric-card::before { background: var(--rk-amateur-red); }

.rk-metric-icon {
    margin-bottom: 15px;
    height: 45px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-metric-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-base-darker);
}

.rk-metric-val {
    font-size: 14px;
    font-weight: 600;
    color: var(--rk-text-muted);
    min-height: 42px;
    transition: color 0.3s;
}

.state-pro .rk-val-pro { display: block; color: var(--rk-pro-green); }
.state-pro .rk-val-amateur { display: none; }
.state-amateur .rk-val-pro { display: none; }
.state-amateur .rk-val-amateur { display: block; color: var(--rk-amateur-red); }

/* SVG Dashboard */
.rk-svg-dashboard {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px dashed var(--rk-base-border);
    display: flex;
    justify-content: center;
    align-items: center;
}

.rk-main-svg {
    width: 100%;
    max-width: 600px;
    height: auto;
}

/* Animacje SVG */
.svg-eps-block { transform-origin: 50% 80%; transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1); fill: #cbd5e1; }
.state-amateur .svg-eps-block { transform: scaleY(0.6); fill: #fca5a5; }

.svg-pipe-flow { stroke-dasharray: 12; animation: pipeFlow 2s linear infinite; stroke: var(--rk-base-blue); transition: stroke 0.5s; }
.state-amateur .svg-pipe-flow { stroke: var(--rk-amateur-red); animation: pipeFlow 6s linear infinite; } /* Wolniejszy przepływ */

.svg-gauge-needle { transform-origin: 250px 50px; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); stroke: var(--rk-pro-green); }
.state-amateur .svg-gauge-needle { transform: rotate(135deg); stroke: var(--rk-amateur-red); }

.svg-wallet-money { transform-origin: center; transition: all 0.5s; opacity: 1; transform: translateY(0); }
.state-amateur .svg-wallet-money { opacity: 0; transform: translateY(20px); }

@keyframes pipeFlow { to { stroke-dashoffset: -24; } }

/* CTA */
.rk-dash-footer {
    padding: 35px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-base-border);
}

.rk-btn-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-base-darker);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    padding: 18px 36px;
    border-radius: 14px;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(15, 23, 42, 0.3);
    transition: all 0.3s;
    border: 2px solid transparent;
}

.rk-btn-action:hover {
    background: var(--rk-base-blue);
    transform: translateY(-4px);
    box-shadow: 0 15px 25px -5px rgba(14, 165, 233, 0.4);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-dash-header, .rk-dash-interactive, .rk-dash-footer { padding: 30px 25px; }
    .rk-dash-header h2 { font-size: 24px; }
    .rk-metrics-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-switch-btn { font-size: 14px; padding: 12px 15px; }
    .rk-btn-action { width: 100%; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/"
    },
    "headline": "Kompleksowy Kalkulator Ogrzewania Podłogowego – Podsumowanie",
    "description": "Precyzyjne wyliczenia termiczno-hydrauliczne instalacji płaszczyznowej (EPS 100, limit pętli 120 m, zład wodny) to gwarancja efektywności pomp ciepła i uniknięcia kosztownych awarii.",
    "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": "2025-03-05",
    "dateModified": "2026-05-23"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#dataset",
    "name": "Wskaźniki Efektywności Termiczno-Hydraulicznej Ogrzewania Podłogowego",
    "description": "Zestawienie porównawcze weryfikujące wpływ kluczowych decyzji instalacyjnych (dobór styropianu, długość pętli, zład wodny) na efektywność systemu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kompleksowy kalkulator ogrzewania podłogowego",
      "obliczenia termiczno-hydrauliczne",
      "styropian podłogowy eps 100",
      "długość pętli rur pert pex",
      "objętość zładu wodnego naczynie wzbiorcze"
    ],
    "measurementTechnique": "Analiza przepływów hydraulicznych i strat nośności izolacji w oparciu o wytyczne normy PN-EN 1264 oraz symulacje oporów liniowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Klasa styropianu: EPS 100 zapobiega pękaniu wylewek w porównaniu do EPS 70.",
        "Limit długości pętli: Maksymalnie 120 m dla rury 16x2 mm gwarantuje poprawne przepływy.",
        "Pojemność zładu: Determinuje dobór właściwego naczynia przeponowego i zabezpiecza przed skokami ciśnienia."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/#webapp",
    "name": "Symulator Kalkulacji Ogrzewania Podłogowego",
    "description": "Interaktywny symulator decyzji instalacyjnych, pokazujący w czasie rzeczywistym parametry hydrauliczne i finansowe wynikające z poprawnego projektowania (OZC) w kontrze do montażu 'na oko'.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-summary-dashboard" id="rk-dash-app">
    
    <!-- Nagłówek -->
    <div class="rk-dash-header">
        <h2>Kompleksowy Kalkulator Ogrzewania Podłogowego – Podsumowanie</h2>
        <p class="rk-dash-lead">
            <strong>Kompleksowe obliczenia termiczno-hydrauliczne</strong> instalacji płaszczyznowej to fundament energooszczędnego i bezawaryjnego domu. Każda decyzja projektowa – od wyboru odpowiedniej klasy <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">styropianu podłogowego (EPS 100)</a>, przez restrykcyjne trzymanie się limitu <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">120 m długości pętli rur</a> PERT/PEX, aż po precyzyjne wyliczenie objętości zładu wodnego pod kątem <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczynia wzbiorczego</a> – rzutuje bezpośrednio na efektywność pracy nowoczesnych źródeł ciepła, zwłaszcza pomp ciepła. Samodzielne szacowanie parametrów na budowie to prosta droga do awarii.
        </p>
    </div>

    <!-- Panel Interaktywny -->
    <div class="rk-dash-interactive state-pro" id="rk-interactive-board">
        <h3>Symulacja Decyzji Instalacyjnych</h3>
        
        <!-- Przełącznik -->
        <div class="rk-toggle-container">
            <div class="rk-master-switch">
                <div class="rk-switch-glider"></div>
                <div class="rk-switch-btn active" data-mode="pro">Kalkulator i Projekt</div>
                <div class="rk-switch-btn" data-mode="amateur">Szacowanie &#8222;Na oko&#8221;</div>
            </div>
        </div>

        <!-- Kafelki Parametrów -->
        <div class="rk-metrics-grid">
            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>Izolacja Podłoża</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">EPS 100/200<br>Brak osiadania wylewki</span>
                    <span class="rk-val-amateur">EPS 70 (Fasada)<br>Pękanie płytek i dylatacji</span>
                </div>
            </div>
            
            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 3a3 3 0 0 0-3 3v12a3 3 0 0 1-3 3 3 3 0 0 1-3-3 3 3 0 0 1-3-3V6a3 3 0 0 0-3-3"></path><path d="M15 3a3 3 0 0 1 3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0 3-3V6a3 3 0 0 1 3-3"></path></svg>
                </div>
                <h4>Długość Pętli</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">Max 120 m (Rura 16mm)<br>Niskie opory hydrauliczne</span>
                    <span class="rk-val-amateur">&gt; 150 m<br>Zblokowany przepływ (0 l/min)</span>
                </div>
            </div>

            <div class="rk-metric-card">
                <div class="rk-metric-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-base-darker)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"></path><path d="M2 12h20"></path></svg>
                </div>
                <h4>Zład Wodny</h4>
                <div class="rk-metric-val">
                    <span class="rk-val-pro">Dokładnie obliczony<br>Stabilne ciśnienie układu</span>
                    <span class="rk-val-amateur">Zbyt małe naczynie<br>Wyrzuty wody z zaworu</span>
                </div>
            </div>
        </div>

        <!-- SVG Animowany Dashboard -->
        <div class="rk-svg-dashboard">
            <svg class="rk-main-svg" viewBox="0 0 400 120" xmlns="http://www.w3.org/2000/svg">
                <!-- Lewo: EPS Block -->
                <g transform="translate(30, 20)">
                    <rect x="0" y="40" width="60" height="40" rx="4" class="svg-eps-block"></rect>
                    <rect x="0" y="30" width="60" height="10" fill="#94a3b8"></rect>
                    <!-- Wektor strzałki -->
                    <path d="M30 10 L30 25 M25 20 L30 25 L35 20" stroke="#64748b" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
                </g>

                <!-- Środek: Przepływ Rur -->
                <g transform="translate(140, 20)">
                    <path d="M0 20 C 30 20, 30 60, 60 60 C 90 60, 90 20, 120 20" fill="none" stroke="#e2e8f0" stroke-width="12" stroke-linecap="round"></path>
                    <path d="M0 20 C 30 20, 30 60, 60 60 C 90 60, 90 20, 120 20" fill="none" stroke-width="6" stroke-linecap="round" class="svg-pipe-flow"></path>
                </g>

                <!-- Prawo: Zegar / Portfel -->
                <g transform="translate(300, 20)">
                    <!-- Zegar Ciśnienia/Opory -->
                    <path d="M0 60 A 40 40 0 0 1 80 60" fill="none" stroke="#e2e8f0" stroke-width="8"></path>
                    <path d="M60 60 A 40 40 0 0 0 80 60" fill="none" stroke="#ef4444" stroke-width="8"></path> <!-- Czerwone pole -->
                    <circle cx="40" cy="60" r="6" fill="#64748b"></circle>
                    <line x1="40" y1="60" x2="15" y2="35" stroke-width="4" stroke-linecap="round" class="svg-gauge-needle"></line>
                </g>
            </svg>
        </div>
    </div>

    <!-- Stopka CTA -->
    <div class="rk-dash-footer">
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-action">
            Przeczytaj poradniki, które pomagają oszczędzać na ogrzewaniu.
            <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>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    
    // 1. 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('rk-dash-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 45px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 24px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 20px;">🛑</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 15px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 550px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny kalkulator i struktura danych JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Uruchamianie tego kodu na nieautoryzowanej domenie jest zabronione.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Przełącznika (Toggle)
    const interactiveBoard = document.getElementById('rk-interactive-board');
    const switchBtns = document.querySelectorAll('.rk-switch-btn');

    switchBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Zmiana przycisków
            switchBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Pobranie trybu
            const mode = this.getAttribute('data-mode');

            // Aktualizacja klasy nadrzędnej (steruje całym CSS i animacjami SVG)
            if (mode === 'amateur') {
                interactiveBoard.classList.remove('state-pro');
                interactiveBoard.classList.add('state-amateur');
            } else {
                interactiveBoard.classList.remove('state-amateur');
                interactiveBoard.classList.add('state-pro');
            }
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">Kompleksowy kalkulator ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Punkt rosy w ogrzewaniu podłogowym – jak bezpiecznie chłodzić dom bez ryzyka kondensacji.</title>
		<link>https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 28 Feb 2026 09:58:03 +0000</pubDate>
				<category><![CDATA[Chłodzenie płaszczyznowe]]></category>
		<category><![CDATA[Fizyka budowli]]></category>
		<category><![CDATA[Instalacje domowe]]></category>
		<category><![CDATA[Instalacje wodne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[analiza techniczna]]></category>
		<category><![CDATA[automatyka instalacji]]></category>
		<category><![CDATA[chłodzenie domu]]></category>
		<category><![CDATA[chłodzenie podłogowe]]></category>
		<category><![CDATA[dew point control]]></category>
		<category><![CDATA[fizyka budowli]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[kondensacja]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[punkt rosy]]></category>
		<category><![CDATA[rekuperacja]]></category>
		<category><![CDATA[temperatura podłogi]]></category>
		<category><![CDATA[wilgotność powietrza]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3528</guid>

					<description><![CDATA[<p>Chłodzenie podłogówką brzmi jak idealne rozwiązanie na upalne lato – cicho, bez przeciągów i bez widocznych urządzeń. Jednak kluczowym parametrem, który decyduje o bezpieczeństwie całego systemu, jest punkt rosy w ogrzewaniu podłogowym. To on wyznacza granicę między komfortowym chłodem a ryzykiem kondensacji, mokrej posadzki i rozwoju pleśni. W artykule wyjaśniam, jak kontrolować wilgotność, jaką temperaturę podłogi uznać za bezpieczną oraz dlaczego automatyka antykondensacyjna to nie dodatek, lecz konieczność.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/">Punkt rosy w ogrzewaniu podłogowym – jak bezpiecznie chłodzić dom bez ryzyka kondensacji.</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-blue: #0284c7;
    --rk-intro-light-blue: #f0f9ff;
    --rk-intro-gray: #64748b;
    --rk-intro-border: #e2e8f0;
    --rk-intro-bg: #ffffff;
    
    --rk-intro-danger: #ef4444;
    --rk-intro-danger-bg: #fef2f2;
    --rk-intro-success: #10b981;
    --rk-intro-success-bg: #dcfce7;
}

.rk-intro-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 0; /* Surowy, techniczny styl */
    border: 2px solid var(--rk-intro-dark);
    box-shadow: 8px 8px 0px var(--rk-intro-border);
}

.rk-intro-header {
    padding: 40px 50px 30px;
    background: var(--rk-intro-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-intro-blue);
}

.rk-intro-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.2;
    letter-spacing: -0.5px;
}

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

/* Hook i Szybka Odpowiedź */
.rk-intro-alerts {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #f8fafc;
    border-bottom: 2px solid var(--rk-intro-border);
}

.rk-intro-alert-box {
    padding: 30px 40px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-intro-hook {
    border-right: 2px solid var(--rk-intro-border);
    background: var(--rk-intro-danger-bg);
}

.rk-intro-quick-answer {
    background: var(--rk-intro-success-bg);
}

.rk-alert-title {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-intro-hook .rk-alert-title { color: var(--rk-intro-danger); }
.rk-intro-quick-answer .rk-alert-title { color: #065f46; } /* Ciemniejszy zielony dla kontrastu */

.rk-alert-text {
    font-size: 15px;
    color: var(--rk-intro-dark);
    line-height: 1.6;
    margin: 0;
    font-weight: 600;
}

/* Tekst Bazowy */
.rk-intro-main-text {
    padding: 40px 50px;
    font-size: 16px;
    line-height: 1.8;
    color: #334155;
    background: #ffffff;
}

.rk-intro-main-text strong {
    color: var(--rk-intro-dark);
}

.rk-intro-main-text a {
    color: var(--rk-intro-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Nawigator - Co znajdziesz w artykule */
.rk-intro-navigator {
    padding: 0 50px 40px;
    background: #ffffff;
}

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

.rk-nav-container {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.rk-nav-btn {
    width: 100%;
    background: #f8fafc;
    border: 2px solid var(--rk-intro-border);
    padding: 20px;
    text-align: left;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-intro-gray);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-nav-btn:hover {
    border-color: var(--rk-intro-dark);
    color: var(--rk-intro-dark);
}

.rk-nav-btn.active {
    background: var(--rk-intro-dark);
    border-color: var(--rk-intro-dark);
    color: #ffffff;
}

.rk-nav-content {
    display: none;
    background: var(--rk-intro-light-blue);
    border: 2px solid var(--rk-intro-blue);
    padding: 25px;
    margin-top: -10px; /* Przylega do przycisku */
    margin-bottom: 10px;
}

.rk-nav-content.active {
    display: block;
}

.rk-nav-content p {
    margin: 0;
    font-size: 15px;
    color: var(--rk-intro-dark);
    line-height: 1.6;
}

.rk-interactive-badge {
    display: inline-block;
    background: var(--rk-intro-blue);
    color: #ffffff;
    padding: 4px 10px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 10px;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-main-text, .rk-intro-navigator { padding: 30px 20px; }
    .rk-intro-header h2 { font-size: 24px; }
    .rk-intro-alerts { grid-template-columns: 1fr; }
    .rk-intro-hook { border-right: none; border-bottom: 2px solid var(--rk-intro-border); }
    .rk-nav-btn { padding: 15px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Punkt rosy w ogrzewaniu podłogowym – jak bezpiecznie chłodzić dom bez ryzyka kondensacji.",
    "description": "Zrozum punkt rosy w ogrzewaniu podłogowym. Szybka odpowiedź, normy temperatur zasilania oraz interaktywne narzędzia do obliczania kondensacji latem.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-quickanswer",
    "name": "Parametry brzegowe bezpiecznego chłodzenia (Quick Answer)",
    "description": "Zestawienie podstawowych, granicznych temperatur zasilania dla wodnych instalacji płaszczyznowych w trybie letnim.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "punkt rosy w ogrzewaniu podłogowym",
      "temperatura zasilania chłodzenia podłogowego",
      "kondensacja na podłodze latem",
      "bezpieczne chłodzenie domów",
      "rewersyjna pompa ciepła parametry"
    ],
    "measurementTechnique": "Bezpośrednie odniesienie do normy PN-EN 1264 ustalające twarde granice dla temperatury zasilania czynnika chłodniczego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Minimalna temperatura zasilania instalacji: 16°C – 20°C.",
        "Warunek bezwzględny: Temperatura wody zawsze minimum 1,5°C powyżej aktualnego punktu rosy.",
        "Wymóg techniczny: Konieczność zastosowania automatyki Dew Point Control."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-nawigator",
    "name": "Interaktywny Nawigator Artykułu",
    "description": "Narzędzie ułatwiające czytelnikom dostęp do zaawansowanych kalkulatorów i symulatorów termodynamicznych zawartych w artykule.",
    "applicationCategory": "NavigationApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-wrapper" id="rk-intro-app">
    <div class="rk-intro-header">
        <h2>Punkt rosy w ogrzewaniu podłogowym – jak bezpiecznie chłodzić dom bez ryzyka kondensacji.</h2>
        <p>Inżynierskie kompendium wiedzy. Oblicz parametry powietrza, sprawdź normy i nie pozwól, aby letnie chłodzenie zniszczyło Twoją posadzkę.</p>
    </div>

    <div class="rk-intro-alerts">
        <div class="rk-intro-alert-box rk-intro-hook">
            <div class="rk-alert-title">
                <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="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żenie
            </div>
            <p class="rk-alert-text">
                Wyobraź sobie upalne lato. Uruchamiasz chłodzenie, a po kilku godzinach Twoja nowa dębowa podłoga zaczyna pęcznieć, a płytki stają się śliskie od wody. To nie awaria hydrauliki – to bezlitosny <strong>punkt rosy</strong>, który właśnie niszczy Twój dom.
            </p>
        </div>

        <div class="rk-intro-alert-box rk-intro-quick-answer">
            <div class="rk-alert-title">
                <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="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Szybka odpowiedź
            </div>
            <p class="rk-alert-text">
                Aby bezpiecznie chłodzić dom, temperatura wody w rurach musi wynosić <strong>16°C – 20°C</strong> i być stale kontrolowana. Musi być wyższa od wyznaczonego punktu rosy. Wymaga to precyzyjnej automatyki antykondensacyjnej (Dew Point Control).
            </p>
        </div>
    </div>

    <div class="rk-intro-main-text">
        <p>
            Chłodzenie płaszczyznowe za pomocą instalacji podłogowej i <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">rewersyjnej pompy ciepła</a> to niezwykle skuteczny, bezgłośny i pozbawiony przeciągów sposób na obniżenie temperatury wewnętrznej latem. Jednak jego krytyczną granicą operacyjną jest właśnie <strong>punkt rosy w ogrzewaniu podłogowym</strong>. 
        </p>
        <p>
            Zjawisko to definiuje temperaturę, przy której para wodna zawarta w powietrzu ulega skraplaniu na powierzchni posadzki, wywołując potężne szkody budowlane. Aby proces ten przebiegał bezawaryjnie, minimalna temperatura zasilania instalacji musi być utrzymywana na poziomie wyższym niż wyznaczony punkt rosy, co w praktyce oznacza wspomniane parametry rzędu 16°C – 20°C. 
        </p>
        <p>
            Bezpieczna eksploatacja wymaga od instalatora doboru <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/">zaawansowanego sterownika pogodowego</a> oraz ścisłej kontroli wilgotności względnej powietrza w budynku za pomocą dedykowanych czujników.
        </p>
    </div>

    <div class="rk-intro-navigator">
        <h3 class="rk-nav-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg>
            Co znajdziesz w tym artykule?
        </h3>
        
        <div class="rk-nav-container">
            <button class="rk-nav-btn" data-target="nav-1">
                Fizyka punktu rosy i kalkulator Magnus-Tetensa
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-nav-content" id="nav-1">
                <span class="rk-interactive-badge">Kalkulator Interaktywny</span>
                <p>Nie musisz znać skomplikowanych wzorów. W dalszej części artykułu przygotowaliśmy narzędzie, w którym suwakami ustawisz temperaturę i wilgotność w swoim domu, aby na żywo zobaczyć, kiedy woda zacznie skraplać się na posadzce.</p>
            </div>

            <button class="rk-nav-btn" data-target="nav-2">
                Tabela bezpiecznych temperatur i mocy chłodniczej
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-nav-content" id="nav-2">
                <span class="rk-interactive-badge">Pulpit Wydajności</span>
                <p>Dowiesz się, dlaczego przy wilgotności 70% Twoja podłogówka przestanie chłodzić i poznasz dokładne wytyczne dotyczące minimalnej bezpiecznej temperatury wody dla różnych warunków pogodowych.</p>
            </div>

            <button class="rk-nav-btn" data-target="nav-3">
                Wpływ chłodzenia na projekt hydrauliczny
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-nav-content" id="nav-3">
                <p>Omawiamy 4 filary projektowania: dlaczego przy chłodzeniu rury muszą być zagęszczone do 10 cm, jak dobrać opór cieplny materiałów wykończeniowych oraz dlaczego pompa obiegowa musi tłoczyć niemal dwukrotnie więcej wody.</p>
            </div>
            
            <button class="rk-nav-btn" data-target="nav-4">
                Symulator awarii i błędów montażowych
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
            </button>
            <div class="rk-nav-content" id="nav-4">
                <span class="rk-interactive-badge">Skaner Ryzyka</span>
                <p>Przeklikaj się przez najczęstsze błędy instalatorów (od braku strefowej kontroli po manualne zawory mieszające) i zobacz fizyczne skutki zniszczenia struktury budowlanej domu.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const navBtns = document.querySelectorAll('.rk-nav-btn');
    const navContents = document.querySelectorAll('.rk-nav-content');

    navBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            const targetContent = document.getElementById(targetId);
            const isActive = this.classList.contains('active');
            
            // Twardy reset klas (zamiast toggle dla pewności i braku operatorów logicznych)
            navBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            navContents.forEach(function(c) {
                c.classList.remove('active');
            });
            
            // Jeśli nie był aktywny, aktywuj (zachowanie typu akordeon)
            if (isActive === false) {
                this.classList.add('active');
                if (targetContent !== null) {
                    targetContent.classList.add('active');
                }
            }
        });
    });
});
</script>



<style>
:root {
    --rk-risk-dark: #0f172a;
    --rk-risk-blue: #0284c7;
    --rk-risk-light: #f8fafc;
    --rk-risk-gray: #64748b;
    --rk-risk-border: #e2e8f0;
    --rk-risk-bg: #ffffff;
    
    --rk-risk-water: #0ea5e9;
    --rk-risk-mold: #10b981;
    --rk-risk-wood: #d97706;
    --rk-risk-danger: #ef4444;
}

.rk-risk-wrapper {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-risk-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-risk-border);
    overflow: hidden;
}

.rk-risk-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f1f5f9 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-risk-border);
}

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

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

.rk-risk-header a {
    color: var(--rk-risk-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Sekcja Interaktywnego Symulatora */
.rk-risk-simulator {
    padding: 40px 50px;
    background: var(--rk-risk-dark);
    color: #ffffff;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-risk-simulator::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background: radial-gradient(circle at 50% 150%, rgba(14, 165, 233, 0.2) 0%, transparent 60%);
    pointer-events: none;
}

.rk-risk-sim-title {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 20px 0;
    position: relative;
    z-index: 1;
}

.rk-risk-slider-container {
    max-width: 500px;
    margin: 0 auto 30px;
    position: relative;
    z-index: 1;
    background: rgba(255,255,255,0.05);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-risk-temp-display {
    font-size: 48px;
    font-weight: 900;
    color: #ffffff;
    margin-bottom: 15px;
    font-variant-numeric: tabular-nums;
    transition: color 0.3s;
}

.rk-risk-input {
    width: 100%;
    -webkit-appearance: none;
    height: 6px;
    border-radius: 3px;
    background: rgba(255,255,255,0.2);
    outline: none;
}

.rk-risk-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    cursor: pointer;
    border: 4px solid var(--rk-risk-blue);
    transition: transform 0.1s;
}

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

.rk-risk-status-badge {
    display: inline-block;
    padding: 8px 20px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    transition: all 0.3s;
}

/* Siatka Konsekwencji */
.rk-risk-consequences {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-risk-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-risk-card {
    background: #ffffff;
    border: 1px solid var(--rk-risk-border);
    border-radius: 16px;
    padding: 25px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    opacity: 0.6;
    filter: grayscale(100%);
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-risk-card.active {
    opacity: 1;
    filter: grayscale(0%);
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(0,0,0,0.1);
}

.rk-risk-card-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-risk-card.active[data-type="wood"] { border-color: var(--rk-risk-wood); }
.rk-risk-card.active[data-type="wood"] .rk-risk-card-icon { background: #fef3c7; color: var(--rk-risk-wood); }

.rk-risk-card.active[data-type="glue"] { border-color: var(--rk-risk-water); }
.rk-risk-card.active[data-type="glue"] .rk-risk-card-icon { background: #e0f2fe; color: var(--rk-risk-water); }

.rk-risk-card.active[data-type="mold"] { border-color: var(--rk-risk-mold); }
.rk-risk-card.active[data-type="mold"] .rk-risk-card-icon { background: #dcfce7; color: var(--rk-risk-mold); }

.rk-risk-card.active[data-type="screed"] { border-color: var(--rk-risk-danger); }
.rk-risk-card.active[data-type="screed"] .rk-risk-card-icon { background: #fef2f2; color: var(--rk-risk-danger); }

.rk-risk-card h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-risk-dark);
    margin: 0;
}

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

.rk-risk-card a {
    color: inherit;
    font-weight: 700;
    text-decoration: underline;
}

/* Stany dynamiczne dla JS */
.sim-safe .rk-risk-status-badge { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.4); }
.sim-safe .rk-risk-temp-display { color: #ffffff; }

.sim-danger .rk-risk-status-badge { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.4); animation: pulseDanger 2s infinite; }
.sim-danger .rk-risk-temp-display { color: #f87171; }
.sim-danger .rk-risk-input::-webkit-slider-thumb { border-color: #f87171; background: #fef2f2; }

@keyframes pulseDanger {
    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); }
}

@media (max-width: 768px) {
    .rk-risk-header, .rk-risk-simulator, .rk-risk-consequences { padding: 30px 20px; }
    .rk-risk-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-risk-temp-display { font-size: 40px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-ryzyko-zalania",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Czym jest punkt rosy w ogrzewaniu podłogowym i dlaczego generuje ryzyko zalania posadzki?",
    "description": "Fizyka budowli i równanie Clausiusa-Clapeyrona w praktyce. Zobacz, jak spadek temperatury jastrychu poniżej punktu rosy niszczy drewno, kleje i wywołuje pleśń.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-destrukcja",
    "name": "Katalog uszkodzeń posadzek przy chłodzeniu płaszczyznowym",
    "description": "Zbiór konsekwencji budowlanych wynikających z przekroczenia granicy wilgotności względnej na elemencie konstrukcyjnym zgodnie z normą PN-EN ISO 13788.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "punkt rosy w ogrzewaniu podłogowym",
      "ryzyko zalania posadzki",
      "pleśń od podłogówki",
      "uszkodzenie paneli chłodzenie",
      "jastrych anhydrytowy a wilgoć"
    ],
    "measurementTechnique": "Identyfikacja uszkodzeń materiałowych na podstawie nieliniowego spadku zdolności powietrza do akumulacji pary wodnej (równanie Clausiusa-Clapeyrona).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Deformacja drewna: Pęcznienie i łódkowanie parkietów w wyniku wchłaniania kondensatu.",
        "Utrata nośności: Rozwarstwianie klejów pod płytkami ceramicznymi.",
        "Zagrożenie biologiczne: Rozwój patogenów i grzybów w dylatacjach przyściennych.",
        "Destrukcja jastrychu: Rozpad struktury wylewek anhydrytowych po kontakcie z wodą płynną."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-symulator-ryzyka",
    "name": "Symulator Destrukcji Posadzki (Punkt Rosy)",
    "description": "Narzędzie interaktywne ilustrujące moment przemiany fazowej pary wodnej i wynikające z tego kaskadowe uszkodzenia warstw wykończeniowych podłogi.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-risk-wrapper" id="rk-risk-app">
    <div class="rk-risk-header">
        <h2>Czym jest punkt rosy i dlaczego wywołuje ryzyko zalania?</h2>
        <p>Punkt rosy to graniczna temperatura posadzki, przy której powietrze (np. o określonym RH i temperaturze) osiąga stan nasycenia 100%. Zgodnie z prawami fizyki i normą <strong>PN-EN ISO 13788</strong>, przekroczenie tej granicy wywołuje skraplanie pary wodnej w ciecz.</p>
        <p>Zdolność powietrza do trzymania wilgoci maleje nieliniowo przy spadku temperatury. Efekt? Woda zrzucana jest na najzimniejszy element – czyli Twoją podłogę. Sprawdź, jak <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">fizyka budowli</a> mści się za błędy hydrauliczne.</p>
    </div>

    <div class="rk-risk-simulator sim-safe" id="rkRiskSim">
        <h3 class="rk-risk-sim-title">Symulator warunków letnich (Założony Punkt Rosy: 19°C)</h3>
        
        <div class="rk-risk-slider-container">
            <div class="rk-risk-temp-display" id="rkTempDisplay">24.0°C</div>
            <input type="range" class="rk-risk-input" id="rkTempSlider" min="15" max="26" step="0.5" value="24">
        </div>
        
        <div class="rk-risk-status-badge" id="rkStatusBadge">Powierzchnia sucha</div>
    </div>

    <div class="rk-risk-consequences">
        <h3 style="font-size: 18px; color: var(--rk-risk-gray); text-transform: uppercase; letter-spacing: 0.5px; margin: 0 0 20px 0; text-align: center;">Konsekwencje kondensacji</h3>
        
        <div class="rk-risk-grid">
            
            <div class="rk-risk-card" id="card-wood" data-type="wood">
                <div class="rk-risk-card-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="M2 12h20"></path><path d="M20 12v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8"></path><path d="M4 12V8a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v4"></path></svg>
                </div>
                <h3>Pęcznienie drewna</h3>
                <p>Panele laminowane oraz <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">parkiety drewniane</a> ulegają deformacji geometrycznej (ryzyko łódkowania) na skutek wchłaniania wody z jastrychu.</p>
            </div>

            <div class="rk-risk-card" id="card-glue" data-type="glue">
                <div class="rk-risk-card-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
                <h3>Rozwarstwianie klejów</h3>
                <p>Nawet najlepsze kleje pod płytkami ceramicznymi, poddane cyklicznemu zawilgoceniu bez możliwości odparowania, tracą swoje właściwości nośne.</p>
            </div>

            <div class="rk-risk-card" id="card-mold" data-type="mold">
                <div class="rk-risk-card-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 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                </div>
                <h3>Rozwój pleśni</h3>
                <p>Wilgoć utrzymująca się w strefach przyściennych stwarza idealne warunki dla grzybów i mikroorganizmów, tworząc poważne zagrożenie dla układu oddechowego.</p>
            </div>

            <div class="rk-risk-card" id="card-screed" data-type="screed">
                <div class="rk-risk-card-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="M21.5 2v6h-6M21.34 15.57a10 10 0 1 1-.59-9.21l-5.94 5.94"></path></svg>
                </div>
                <h3>Destrukcja wylewki</h3>
                <p>Wysoce higroskopijna <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewka anhydrytowa</a> wykazuje skrajną wrażliwość na wodę płynną. Jej kontakt z kondensatem prowadzi do utraty właściwości wytrzymałościowych.</p>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rkTempSlider');
    const display = document.getElementById('rkTempDisplay');
    const simBox = document.getElementById('rkRiskSim');
    const badge = document.getElementById('rkStatusBadge');
    const cards = document.querySelectorAll('.rk-risk-card');

    const DEW_POINT = 19.0; // Ustalony punkt rosy dla symulacji

    function updateSimulation() {
        const currentTemp = parseFloat(slider.value);
        display.textContent = currentTemp.toFixed(1) + '°C';

        // Warunek logiczny bez użycia "&&"
        if (currentTemp <= DEW_POINT) {
            // Stan krytyczny: Skraplanie
            simBox.className = 'rk-risk-simulator sim-danger';
            badge.textContent = 'Kondensacja (Wykroplenie Wody)';
            
            cards.forEach(function(card) {
                card.classList.add('active');
            });
        } else {
            // Stan bezpieczny
            simBox.className = 'rk-risk-simulator sim-safe';
            badge.textContent = 'Powierzchnia sucha';
            
            cards.forEach(function(card) {
                card.classList.remove('active');
            });
        }
    }

    slider.addEventListener('input', updateSimulation);
    
    // Inicjalizacja
    updateSimulation();
});
</script>



<style>
:root {
    --rk-math-dark: #0f172a;
    --rk-math-blue: #0284c7;
    --rk-math-blue-light: #f0f9ff;
    --rk-math-gray: #64748b;
    --rk-math-border: #e2e8f0;
    --rk-math-bg: #ffffff;
    
    --rk-math-red: #ef4444;
    --rk-math-red-bg: #fef2f2;
    --rk-math-green: #10b981;
    --rk-math-green-bg: #dcfce7;
    --rk-math-teal: #0d9488;
    --rk-math-teal-bg: #f0fdfa;
}

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

.rk-math-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-math-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

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

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

.rk-math-header a {
    color: #38bdf8;
    text-decoration: underline;
    font-weight: 700;
}

.rk-math-layout {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

/* Przełączniki scenariuszy (Lewa kolumna) */
.rk-math-nav {
    background: #f8fafc;
    border-right: 1px solid var(--rk-math-border);
    padding: 30px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-math-nav h3 {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-math-gray);
    letter-spacing: 0.5px;
    margin: 0 0 10px 0;
}

.rk-math-btn {
    background: #ffffff;
    border: 2px solid var(--rk-math-border);
    border-radius: 16px;
    padding: 20px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    gap: 8px;
    position: relative;
    overflow: hidden;
}

.rk-math-btn:hover {
    border-color: #bae6fd;
}

.rk-math-btn.active {
    border-color: var(--rk-math-blue);
    background: var(--rk-math-blue-light);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

.rk-math-btn-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-math-dark);
}

.rk-math-btn-sub {
    font-size: 13px;
    color: var(--rk-math-gray);
    font-weight: 600;
}

/* Obszar wyświetlania wyników (Prawa kolumna) */
.rk-math-display {
    padding: 40px 50px;
    position: relative;
}

.rk-math-panel {
    display: none;
    animation: fadeInMath 0.4s ease-out;
}

.rk-math-panel.active {
    display: block;
}

@keyframes fadeInMath {
    from { opacity: 0; transform: translateY(15px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-math-metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-math-box {
    background: #f8fafc;
    border: 1px solid var(--rk-math-border);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-math-box-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #ffffff;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-math-blue);
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
    flex-shrink: 0;
}

.rk-math-box-data {
    display: flex;
    flex-direction: column;
}

.rk-math-box-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-math-gray);
}

.rk-math-box-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-math-dark);
}

/* Wynik końcowy scenariusza */
.rk-math-result {
    border-radius: 16px;
    padding: 30px;
    border: 2px solid transparent;
    text-align: center;
    position: relative;
}

.state-danger {
    background: var(--rk-math-red-bg);
    border-color: var(--rk-math-red);
}

.state-optimal {
    background: var(--rk-math-teal-bg);
    border-color: var(--rk-math-teal);
}

.state-perfect {
    background: var(--rk-math-green-bg);
    border-color: var(--rk-math-green);
}

.rk-math-result-title {
    font-size: 16px;
    text-transform: uppercase;
    font-weight: 900;
    margin: 0 0 15px 0;
    letter-spacing: 0.5px;
}

.state-danger .rk-math-result-title { color: var(--rk-math-red); }
.state-optimal .rk-math-result-title { color: var(--rk-math-teal); }
.state-perfect .rk-math-result-title { color: var(--rk-math-green); }

.rk-math-final-val {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-math-dark);
    margin-bottom: 10px;
    line-height: 1;
}

.rk-math-result-desc {
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
    margin: 0;
}

/* Animacja SVG dla wilgoci */
.rk-math-svg-anim {
    position: absolute;
    top: 20px;
    right: 20px;
    width: 60px;
    height: 60px;
    opacity: 0.2;
}

@media (max-width: 768px) {
    .rk-math-layout { grid-template-columns: 1fr; }
    .rk-math-header, .rk-math-display { padding: 30px 20px; }
    .rk-math-nav { border-right: none; border-bottom: 1px solid var(--rk-math-border); padding: 25px 20px; }
    .rk-math-metrics { grid-template-columns: 1fr; gap: 15px; }
    .rk-math-svg-anim { display: none; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-obliczenia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Jak obliczyć punkt rosy dla parametrów powietrza w domu?",
    "description": "Zastosowanie wzoru Magnus-Tetensa w praktyce inżynierskiej. Analiza trzech scenariuszy wilgotnościowych dla chłodzenia płaszczyznowego.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-scenariusze",
    "name": "Scenariusze analityczne temperatury punktu rosy",
    "description": "Baza danych obliczeniowych prezentująca zależność bezpiecznej temperatury wylewki od parametrów powietrza wewnętrznego (T, RH).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wzór magnus-tetensa punkt rosy",
      "obliczanie kondensacji podłogówka",
      "temperatura skraplania chłodzenie płaszczyznowe",
      "zależność temperatury i wilgotności",
      "bezpieczna podłoga chłodzenie"
    ],
    "measurementTechnique": "Algorytm Magnus-Tetensa dla zakresu temperatur 0-60°C z dokładnością 0,1°C. Zastosowane stałe: a = 17,27, b = 237,7°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wysokie obciążenie (28°C, 70% RH): Punkt rosy 22,0°C. Blokada systemu.",
        "Warunki standardowe (24°C, 50% RH): Punkt rosy 12,9°C. Bezpieczna praca.",
        "Powietrze suche (26°C, 40% RH): Punkt rosy 11,5°C. Maksymalna wydajność."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-analizator",
    "name": "Analizator Scenariuszy Mikroklimatu HVAC",
    "description": "Edukacyjna aplikacja webowa tłumacząca skomplikowane wzory termodynamiczne na praktyczne decyzje eksploatacyjne pompy ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-math-wrapper" id="rk-math-app">
    <div class="rk-math-header">
        <h2>Jak obliczyć punkt rosy dla parametrów powietrza?</h2>
        <p>W praktyce inżynierskiej wykorzystujemy uproszczony <strong>wzór Magnus-Tetensa</strong>, zalecany przez normy HVAC. Nie musisz być jednak matematykiem, by go zrozumieć. Zobacz, jak ten algorytm wpływa na bezpieczeństwo Twojej podłogi w 3 najczęstszych scenariuszach. To równie ważne co pytanie <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-wysusza-powietrze-w-pomieszczeniach/">czy ogrzewanie podłogowe wysusza powietrze</a> zimą.</p>
    </div>

    <div class="rk-math-layout">
        
        <div class="rk-math-nav">
            <h3>Wybierz scenariusz</h3>
            
            <button class="rk-math-btn active" data-scenario="1">
                <span class="rk-math-btn-title">1. Dzień parny (Burza)</span>
                <span class="rk-math-btn-sub">Wysokie obciążenie wilgocią</span>
            </button>
            
            <button class="rk-math-btn" data-scenario="2">
                <span class="rk-math-btn-title">2. Warunki standardowe</span>
                <span class="rk-math-btn-sub">Klimatyzacja / Przewietrzanie</span>
            </button>
            
            <button class="rk-math-btn" data-scenario="3">
                <span class="rk-math-btn-title">3. Powietrze suche</span>
                <span class="rk-math-btn-sub">Działająca rekuperacja</span>
            </button>
        </div>

        <div class="rk-math-display">
            
            <div class="rk-math-panel active" id="scenario-1">
                <div class="rk-math-metrics">
                    <div class="rk-math-box">
                        <div class="rk-math-box-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 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-math-box-data">
                            <span class="rk-math-box-label">Temperatura (T)</span>
                            <span class="rk-math-box-val">28,0 °C</span>
                        </div>
                    </div>
                    <div class="rk-math-box">
                        <div class="rk-math-box-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 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                        </div>
                        <div class="rk-math-box-data">
                            <span class="rk-math-box-label">Wilgotność (RH)</span>
                            <span class="rk-math-box-val">70 %</span>
                        </div>
                    </div>
                </div>

                <div class="rk-math-result state-danger">
                    <svg class="rk-math-svg-anim" viewBox="0 0 24 24" fill="var(--rk-math-red)"><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></svg>
                    <div class="rk-math-result-title">WYNIK: Obliczony punkt rosy (Tp)</div>
                    <div class="rk-math-final-val">22,0 °C</div>
                    <p class="rk-math-result-desc">
                        Podłoga nie może mieć temperatury niższej niż <strong>23,5 °C - 24,0 °C</strong> (margines bezpieczeństwa). Schłodzenie domu jest w tych warunkach fizycznie niemożliwe – system musi zostać zablokowany.
                    </p>
                </div>
            </div>

            <div class="rk-math-panel" id="scenario-2">
                <div class="rk-math-metrics">
                    <div class="rk-math-box">
                        <div class="rk-math-box-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 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-math-box-data">
                            <span class="rk-math-box-label">Temperatura (T)</span>
                            <span class="rk-math-box-val">24,0 °C</span>
                        </div>
                    </div>
                    <div class="rk-math-box">
                        <div class="rk-math-box-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 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                        </div>
                        <div class="rk-math-box-data">
                            <span class="rk-math-box-label">Wilgotność (RH)</span>
                            <span class="rk-math-box-val">50 %</span>
                        </div>
                    </div>
                </div>

                <div class="rk-math-result state-optimal">
                    <svg class="rk-math-svg-anim" viewBox="0 0 24 24" fill="var(--rk-math-teal)"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
                    <div class="rk-math-result-title">WYNIK: Obliczony punkt rosy (Tp)</div>
                    <div class="rk-math-final-val">12,9 °C</div>
                    <p class="rk-math-result-desc">
                        Bezpieczna temperatura powierzchni posadzki wynosi <strong>14,9 °C</strong>. Jest to bezpieczna strefa, w której można efektywnie obniżać temperaturę w pomieszczeniu bez ryzyka wilgoci.
                    </p>
                </div>
            </div>

            <div class="rk-math-panel" id="scenario-3">
                <div class="rk-math-metrics">
                    <div class="rk-math-box">
                        <div class="rk-math-box-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 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-math-box-data">
                            <span class="rk-math-box-label">Temperatura (T)</span>
                            <span class="rk-math-box-val">26,0 °C</span>
                        </div>
                    </div>
                    <div class="rk-math-box">
                        <div class="rk-math-box-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 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                        </div>
                        <div class="rk-math-box-data">
                            <span class="rk-math-box-label">Wilgotność (RH)</span>
                            <span class="rk-math-box-val">40 %</span>
                        </div>
                    </div>
                </div>

                <div class="rk-math-result state-perfect">
                    <svg class="rk-math-svg-anim" viewBox="0 0 24 24" fill="var(--rk-math-green)"><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>
                    <div class="rk-math-result-title">WYNIK: Obliczony punkt rosy (Tp)</div>
                    <div class="rk-math-final-val">11,5 °C</div>
                    <p class="rk-math-result-desc">
                        Minimalna bezpieczna temperatura posadzki to zaledwie <strong>13,5 °C</strong>. Warunki idealne! Pompa ciepła może pracować z maksymalną wydajnością, błyskawicznie chłodząc cały budynek.
                    </p>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const mathBtns = document.querySelectorAll('.rk-math-btn');
    const mathPanels = document.querySelectorAll('.rk-math-panel');

    mathBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const scenario = this.getAttribute('data-scenario');
            
            // Bezpieczne usuwanie klas aktywnych (bez '&&')
            mathBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            mathPanels.forEach(function(p) {
                p.classList.remove('active');
            });
            
            // Aktywacja wybranych elementów
            this.classList.add('active');
            const targetPanel = document.getElementById('scenario-' + scenario);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-temp-dark: #0f172a;
    --rk-temp-blue: #0284c7;
    --rk-temp-ice: #38bdf8;
    --rk-temp-gray: #64748b;
    --rk-temp-border: #e2e8f0;
    --rk-temp-bg: #ffffff;
    
    --rk-perf-high: #10b981; /* Wysoka wydajność - Zielony */
    --rk-perf-high-bg: #dcfce7;
    --rk-perf-low: #f59e0b;  /* Niska wydajność - Pomarańczowy */
    --rk-perf-low-bg: #fef3c7;
    --rk-perf-block: #ef4444; /* Blokada - Czerwony */
    --rk-perf-block-bg: #fef2f2;
}

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

.rk-temp-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-temp-border);
}

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

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

.rk-temp-norm-box {
    display: flex;
    align-items: center;
    gap: 12px;
    background: #ffffff;
    border: 1px solid var(--rk-temp-blue);
    padding: 15px 20px;
    border-radius: 12px;
    font-size: 14px;
    color: var(--rk-temp-dark);
    font-weight: 600;
}

.rk-temp-norm-box svg {
    color: var(--rk-temp-blue);
    flex-shrink: 0;
}

/* Interaktywny Selektor Temperatury */
.rk-temp-dashboard {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-temp-nav-title {
    font-size: 16px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-temp-gray);
    margin: 0 0 15px 0;
    text-align: center;
    letter-spacing: 0.5px;
}

.rk-temp-nav {
    display: flex;
    gap: 15px;
    margin-bottom: 35px;
    justify-content: center;
}

.rk-temp-btn {
    padding: 15px 30px;
    background: #ffffff;
    border: 2px solid var(--rk-temp-border);
    border-radius: 16px;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-temp-gray);
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-temp-btn svg { width: 24px; height: 24px; }

.rk-temp-btn:hover {
    border-color: var(--rk-temp-ice);
    color: var(--rk-temp-ice);
}

.rk-temp-btn.active {
    background: var(--rk-temp-blue);
    border-color: var(--rk-temp-blue);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.3);
}

/* Kafelki z danymi (Zamiast Tabeli) */
.rk-temp-data-view {
    display: none;
    animation: fadeInTemp 0.4s ease-out;
}

.rk-temp-data-view.active {
    display: block;
}

@keyframes fadeInTemp {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-temp-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-temp-card {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 16px;
    padding: 25px;
    text-align: center;
    position: relative;
    overflow: hidden;
    transition: transform 0.3s;
}

.rk-temp-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 12px 20px -10px rgba(0,0,0,0.05);
}

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

.rk-temp-card.perf-high::before { background: var(--rk-perf-high); }
.rk-temp-card.perf-low::before { background: var(--rk-perf-low); }
.rk-temp-card.perf-block::before { background: var(--rk-perf-block); }

.rk-rh-badge {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 900;
    margin-bottom: 20px;
}

.perf-high .rk-rh-badge { background: var(--rk-perf-high-bg); color: var(--rk-perf-high); }
.perf-low .rk-rh-badge { background: var(--rk-perf-low-bg); color: var(--rk-perf-low); }
.perf-block .rk-rh-badge { background: var(--rk-perf-block-bg); color: var(--rk-perf-block); }

.rk-card-metric {
    margin-bottom: 15px;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.rk-card-metric span:first-child {
    font-size: 12px;
    text-transform: uppercase;
    color: var(--rk-temp-gray);
    font-weight: 700;
}

.rk-card-metric span:last-child {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-temp-dark);
}

.rk-card-power {
    margin-top: 20px;
    padding-top: 20px;
    border-top: 1px dashed var(--rk-temp-border);
}

.rk-card-power span:first-child {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    color: var(--rk-temp-gray);
    font-weight: 800;
    margin-bottom: 5px;
}

.rk-power-val {
    font-size: 28px;
    font-weight: 900;
}

.perf-high .rk-power-val { color: var(--rk-perf-high); }
.perf-low .rk-power-val { color: var(--rk-perf-low); }
.perf-block .rk-power-val { color: var(--rk-perf-block); font-size: 20px; }

/* Wniosek końcowy */
.rk-temp-conclusion {
    padding: 30px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-temp-border);
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-temp-conclusion svg {
    color: var(--rk-perf-block);
    flex-shrink: 0;
    width: 32px;
    height: 32px;
}

.rk-temp-conclusion p {
    margin: 0;
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
}

.rk-temp-conclusion strong {
    color: var(--rk-temp-dark);
}

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-dashboard, .rk-temp-conclusion { padding: 25px 20px; }
    /* Wymuszony układ pionowy dla nawigacji i kart (Akordeon Style dla mobile UX) */
    .rk-temp-nav { flex-direction: column; gap: 10px; }
    .rk-temp-btn { width: 100%; justify-content: center; padding: 20px; }
    .rk-temp-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-temp-conclusion { flex-direction: column; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-temperatura-podlogi",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Jaka jest minimalna bezpieczna temperatura podłogi przy chłodzeniu?",
    "description": "Zestawienie limitów chłodzenia podłogowego. Zależność między wilgotnością powietrza, punktem rosy a maksymalną wydajnością chłodniczą w W/m2.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-tabela-rosy",
    "name": "Tabela bezpiecznych temperatur podłogi chłodzącej",
    "description": "Dane pomiarowe korelujące temperaturę, wilgotność względną (RH) i wydajność chłodniczą zgodnie z normą PN-EN 1264.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "minimalna bezpieczna temperatura podłogi",
      "wydajność chłodnicza podłogówki",
      "norma PN-EN 1264 chłodzenie",
      "temperatura punktu rosy tabela",
      "blokada chłodzenia przy wysokiej wilgotności"
    ],
    "measurementTechnique": "Obliczenia psychrometryczne z dodanym marginesem bezpieczeństwa 1,5 K do 2,0 K powyżej punktu rosy, z uwzględnieniem dolnego limitu 19,0°C dla stref przebywania ludzi.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przy 24°C i 40% RH: Punkt rosy 9,7°C, moc chłodnicza max 45 W/m2.",
        "Przy 26°C i 60% RH: Punkt rosy 17,6°C, moc chłodnicza drastycznie spada do 25 W/m2.",
        "Przy 28°C i 70% RH: Punkt rosy 22,0°C, chłodzenie zablokowane (0 W/m2)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-kalkulator-wydajnosci",
    "name": "Interaktywna Tabela Wydajności Chłodniczej",
    "description": "Narzędzie pozwalające odczytać maksymalną wydajność w watach na metr kwadratowy w zależności od mikroklimatu panującego w pomieszczeniu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-temp-container" id="rk-temp-app">
    <div class="rk-temp-header">
        <h2>Jaka jest minimalna bezpieczna temperatura podłogi przy chłodzeniu?</h2>
        <p>Minimalna bezpieczna temperatura posadzki musi wynosić od <strong>1,5°C do 2,0°C powyżej aktualnej temperatury punktu rosy</strong>. To fundamentalna zasada chroniąca przed kondensacją i zalaniem.</p>
        
        <div class="rk-temp-norm-box">
            <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 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path><polyline points="9 12 11 14 15 10"></polyline></svg>
            Dodatkowo, z wytycznych <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" style="color: var(--rk-temp-blue); text-decoration: underline;">normy PN-EN 1264</a> wynika, że ze względu na komfort bosej stopy, temperatura podłogi nie powinna spadać poniżej 19,0°C.
        </div>
    </div>

    <div class="rk-temp-dashboard">
        <h3 class="rk-temp-nav-title">Wybierz temperaturę powietrza w pokoju:</h3>
        <div class="rk-temp-nav">
            <button class="rk-temp-btn active" data-temp="24">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                24,0°C
            </button>
            <button class="rk-temp-btn" data-temp="26">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                26,0°C
            </button>
            <button class="rk-temp-btn" data-temp="28">
                <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><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>
                28,0°C
            </button>
        </div>

        <div class="rk-temp-data-view active" id="data-24">
            <div class="rk-temp-grid">
                <div class="rk-temp-card perf-high">
                    <span class="rk-rh-badge">40% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>9,7°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>11,7°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">45 W/m²</div></div>
                </div>
                <div class="rk-temp-card perf-high">
                    <span class="rk-rh-badge">50% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>12,9°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>14,9°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">35 W/m²</div></div>
                </div>
                <div class="rk-temp-card perf-low">
                    <span class="rk-rh-badge">60% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>15,8°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>17,8°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">22 W/m²</div></div>
                </div>
            </div>
        </div>

        <div class="rk-temp-data-view" id="data-26">
            <div class="rk-temp-grid">
                <div class="rk-temp-card perf-high">
                    <span class="rk-rh-badge">40% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>11,5°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>13,5°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">48 W/m²</div></div>
                </div>
                <div class="rk-temp-card perf-high">
                    <span class="rk-rh-badge">50% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>14,8°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>16,8°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">38 W/m²</div></div>
                </div>
                <div class="rk-temp-card perf-low">
                    <span class="rk-rh-badge">60% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>17,6°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>19,6°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">25 W/m²</div></div>
                </div>
            </div>
        </div>

        <div class="rk-temp-data-view" id="data-28">
            <div class="rk-temp-grid">
                <div class="rk-temp-card perf-high">
                    <span class="rk-rh-badge">50% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>16,7°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>18,7°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">36 W/m²</div></div>
                </div>
                <div class="rk-temp-card perf-low">
                    <span class="rk-rh-badge">60% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>19,5°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>21,5°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">20 W/m²</div></div>
                </div>
                <div class="rk-temp-card perf-block">
                    <span class="rk-rh-badge">70% Wilgotności</span>
                    <div class="rk-card-metric"><span>Punkt Rosy</span><span>22,0°C</span></div>
                    <div class="rk-card-metric"><span>Zabezpieczenie min.</span><span>24,0°C</span></div>
                    <div class="rk-card-power"><span>Wydajność systemu</span><div class="rk-power-val">BLOKADA (0 W/m²)</div></div>
                </div>
            </div>
        </div>

    </div>

    <div class="rk-temp-conclusion">
        <svg 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>
        <p>
            Widzisz to wyraźnie na danych. Krytycznym czynnikiem ograniczającym moc chłodniczą podłogówki nie jest temperatura, <strong>lecz wilgotność powietrza</strong>. Przy wilgotności dochodzącej do 70%, by zapobiec wykraplaniu, parametry zasilania muszą zostać wywindowane do wartości neutralnych, co skutkuje całkowitym zablokowaniem systemu. Pamiętaj, jak ważna jest <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/" style="color: var(--rk-temp-blue); font-weight:700; text-decoration:none;">bezwładność cieplna w ogrzewaniu podłogowym</a> przy regulacji tych parametrów.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tempBtns = document.querySelectorAll('.rk-temp-btn');
    const dataViews = document.querySelectorAll('.rk-temp-data-view');

    tempBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetTemp = this.getAttribute('data-temp');
            
            // Bezpieczne usuwanie klas aktywnych (bez użycia operatorów logicznych typu &&)
            tempBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            dataViews.forEach(function(view) {
                view.classList.remove('active');
            });
            
            // Aktywacja odpowiedniego widoku
            this.classList.add('active');
            const targetView = document.getElementById('data-' + targetTemp);
            
            if (targetView !== null) {
                targetView.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-hp-dark: #0f172a;
    --rk-hp-ice: #38bdf8;
    --rk-hp-ice-light: #f0f9ff;
    --rk-hp-geo: #10b981;
    --rk-hp-geo-light: #dcfce7;
    --rk-hp-gray: #64748b;
    --rk-hp-border: #e2e8f0;
    --rk-hp-bg: #ffffff;
    --rk-hp-danger: #ef4444;
}

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

.rk-hp-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-hp-border);
}

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

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

/* Przełącznik trybów */
.rk-hp-mode-selector {
    display: flex;
    padding: 20px 50px;
    background: #f1f5f9;
    gap: 20px;
}

.rk-hp-btn {
    flex: 1;
    padding: 20px;
    background: #ffffff;
    border: 2px solid var(--rk-hp-border);
    border-radius: 16px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-hp-gray);
}

.rk-hp-btn svg { width: 28px; height: 28px; transition: all 0.3s; }

.rk-hp-btn[data-mode="active"]:hover { border-color: var(--rk-hp-ice); color: var(--rk-hp-ice); }
.rk-hp-btn[data-mode="active"].selected { 
    background: var(--rk-hp-ice-light); 
    border-color: var(--rk-hp-ice); 
    color: #0284c7; 
    box-shadow: 0 10px 20px -5px rgba(56, 189, 248, 0.2); 
}

.rk-hp-btn[data-mode="passive"]:hover { border-color: var(--rk-hp-geo); color: var(--rk-hp-geo); }
.rk-hp-btn[data-mode="passive"].selected { 
    background: var(--rk-hp-geo-light); 
    border-color: var(--rk-hp-geo); 
    color: #047857; 
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.2); 
}

/* Ekrany wizualizacji */
.rk-hp-display {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-hp-panel {
    display: none;
    animation: hpFadeIn 0.4s ease-out;
}

.rk-hp-panel.selected { display: block; }

@keyframes hpFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-hp-layout {
    display: grid;
    grid-template-columns: 1fr 350px;
    gap: 40px;
    align-items: center;
}

.rk-hp-tech-info h3 {
    font-size: 22px;
    font-weight: 900;
    margin: 0 0 15px 0;
    color: var(--rk-hp-dark);
}

.rk-hp-tech-info p {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 20px 0;
}

.rk-hp-tech-info a {
    color: #0284c7;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Parametry w kafelkach */
.rk-hp-specs {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.rk-hp-spec-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: #f8fafc;
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-hp-border);
}

.mode-active .rk-hp-spec-row { border-left-color: var(--rk-hp-ice); }
.mode-passive .rk-hp-spec-row { border-left-color: var(--rk-hp-geo); }

.rk-hp-spec-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-hp-gray);
    text-transform: uppercase;
}

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

/* SVG Schematy */
.rk-hp-schema {
    background: #f8fafc;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-hp-border);
    text-align: center;
}

.rk-hp-schema svg {
    width: 100%;
    height: auto;
    max-width: 280px;
}

.anim-flow { stroke-dasharray: 8; animation: flowMove 1s linear infinite; }
@keyframes flowMove { to { stroke-dashoffset: -16; } }

@media (max-width: 768px) {
    .rk-hp-header, .rk-hp-display { padding: 30px 20px; }
    .rk-hp-mode-selector { flex-direction: column; padding: 20px; gap: 10px; }
    .rk-hp-layout { grid-template-columns: 1fr; gap: 30px; }
    .rk-hp-schema { order: -1; padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-zasilanie-chlodzenia",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Jak ustawić temperaturę wody chłodzącej w pompie ciepła?",
    "description": "Techniczne wytyczne dla zasilania chłodzenia podłogowego. Różnice między chłodzeniem aktywnym (rewersyjnym) a pasywnym (free cooling).",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-limity-chlodzenia",
    "name": "Krzywe i limity zasilania chłodzenia płaszczyznowego",
    "description": "Zestawienie twardych limitów termodynamicznych dla ustawień sterowników pomp ciepła w trybie letnim, z podziałem na źródła ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "chłodzenie pasywne pompy ciepła",
      "chłodzenie aktywne",
      "temperatura zasilania podłogówki latem",
      "zawór mieszający chłodzenie pasywne",
      "minimalna temperatura chłodzenia"
    ],
    "measurementTechnique": "Wyznaczenie sztywnych blokad zasilania instalacji na podstawie charakterystyki pracy sprężarek (aktywne) oraz wymienników gruntowych (pasywne).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Chłodzenie Aktywne: Zasilanie rzędu 15-18°C, sztywna blokada krzywej chłodzenia na poziomie np. 16°C.",
        "Chłodzenie Pasywne: Solanka gruntowa 8-12°C. Bezwzględny wymóg zaworu mieszającego (<120s) podnoszącego czynnik do bezpiecznych 17-18°C przed rozdzielaczem."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-symulator-pompy",
    "name": "Wizualizator Trybów Chłodzenia Pompy Ciepła",
    "description": "Interaktywny schemat różnicujący układ hydrauliczny pomiędzy klimatyzacją odwróconą a dolnym źródłem gruntowym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hp-wrapper" id="rk-hp-app">
    <div class="rk-hp-header">
        <h2>Jak ustawić temperaturę wody chłodzącej w pompie ciepła?</h2>
        <p>Wodne chłodzenie płaszczyznowe wymaga żelaznej dyscypliny na zasilaniu. Spadek temperatury poniżej wyznaczonych limitów generuje natychmiastowe ryzyko przekroczenia punktu rosy. Zobacz różnice w hydraulice obu trybów.</p>
    </div>

    <div class="rk-hp-mode-selector">
        <button class="rk-hp-btn selected" data-mode="active">
            <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
            Chłodzenie Aktywne
        </button>
        <button class="rk-hp-btn" data-mode="passive">
            <svg 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>
            Chłodzenie Pasywne
        </button>
    </div>

    <div class="rk-hp-display">
        
        <div class="rk-hp-panel mode-active selected" id="panel-active">
            <div class="rk-hp-layout">
                <div class="rk-hp-tech-info">
                    <h3>Rewersyjna Pompa Ciepła</h3>
                    <p>W tym trybie <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a> pracuje w odwróconym cyklu sprężarkowym (jak klimatyzator). Układ automatyki precyzyjnie moduluje pracą sprężarki, by utrzymać pożądaną temperaturę na wyjściu z wymiennika (parownika).</p>
                    <p>Bezpieczny algorytm sterowania wykorzystuje <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywą chłodzenia</a> (skorelowaną z pogodą), ale bezwzględnie wymaga od instalatora nałożenia sztywnej blokady temperatury minimalnej chroniącej wylewkę.</p>
                    
                    <div class="rk-hp-specs">
                        <div class="rk-hp-spec-row">
                            <span class="rk-hp-spec-label">Zalecany przedział zasilania</span>
                            <span class="rk-hp-spec-val" style="color: var(--rk-hp-ice);">15°C – 18°C</span>
                        </div>
                        <div class="rk-hp-spec-row">
                            <span class="rk-hp-spec-label">Sztywny limit sterownika (Tz,min)</span>
                            <span class="rk-hp-spec-val">np. 16.0°C</span>
                        </div>
                    </div>
                </div>
                <div class="rk-hp-schema">
                    <svg viewBox="0 0 200 200">
                        <rect x="50" y="50" width="100" height="100" rx="10" fill="#ffffff" stroke="var(--rk-hp-ice)" stroke-width="4"/>
                        <circle cx="100" cy="100" r="30" fill="var(--rk-hp-ice-light)" stroke="var(--rk-hp-ice)" stroke-width="3"/>
                        <path d="M100 70 L100 130 M70 100 L130 100 M78 78 L122 122 M78 122 L122 78" stroke="var(--rk-hp-ice)" stroke-width="3" stroke-linecap="round"/>
                        <path d="M150 120 L180 120" stroke="var(--rk-hp-ice)" stroke-width="6" class="anim-flow"/>
                        <rect x="160" y="105" width="40" height="20" rx="4" fill="var(--rk-hp-dark)"/>
                        <text x="180" y="120" fill="#ffffff" font-size="12" font-weight="bold" text-anchor="middle" dominant-baseline="central">16°C</text>
                    </svg>
                </div>
            </div>
        </div>

        <div class="rk-hp-panel mode-passive" id="panel-passive">
            <div class="rk-hp-layout">
                <div class="rk-hp-tech-info">
                    <h3>Geotermalne (Free Cooling)</h3>
                    <p>Wykorzystuje chłód solanki z odwiertów przez <a href="https://projekt-ogrzewania.pl/zasada-dzialania-wymiennika-plytowego-w-ogrzewaniu-podlogowym/">pośredni wymiennik płytowy</a>, bez udziału sprężarki. Solanka latem ma potężny ładunek zimna, zagrażający posadzce.</p>
                    <p>Wpuszczenie wody 8°C w pętle to natychmiastowe zalanie podłogi. Instalacja pasywna bezwzględnie wymaga układu podmieszania z nadrzędnym regulatorem, który wymiesza zład zanim wyśle go na rozdzielacz. Pamiętaj by <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">kontrolować minimalne parametry zasilania</a>.</p>
                    
                    <div class="rk-hp-specs">
                        <div class="rk-hp-spec-row">
                            <span class="rk-hp-spec-label">Temperatura Solanki z gruntu</span>
                            <span class="rk-hp-spec-val" style="color: var(--rk-hp-danger);">8°C – 12°C</span>
                        </div>
                        <div class="rk-hp-spec-row">
                            <span class="rk-hp-spec-label">Wymagany zawór trójdrogowy</span>
                            <span class="rk-hp-spec-val" style="color: var(--rk-hp-geo);">Max 120 sekund</span>
                        </div>
                        <div class="rk-hp-spec-row">
                            <span class="rk-hp-spec-label">Bezpieczne zasilanie (po podmieszaniu)</span>
                            <span class="rk-hp-spec-val">17°C – 18°C</span>
                        </div>
                    </div>
                </div>
                <div class="rk-hp-schema">
                    <svg viewBox="0 0 200 200">
                        <path d="M20 160 L20 40 L50 40 L50 160 Z" fill="var(--rk-hp-geo-light)" stroke="var(--rk-hp-geo)" stroke-width="4"/>
                        <text x="35" y="100" fill="var(--rk-hp-danger)" font-size="14" font-weight="bold" text-anchor="middle" transform="rotate(-90 35 100)">SOLANKA 8°C</text>
                        <rect x="80" y="70" width="30" height="60" fill="#ffffff" stroke="var(--rk-hp-gray)" stroke-width="4"/>
                        <path d="M50 80 L80 80 M50 120 L80 120" stroke="var(--rk-hp-geo)" stroke-width="4" class="anim-flow"/>
                        <polygon points="140,85 155,110 125,110" fill="var(--rk-hp-dark)"/>
                        <circle cx="140" cy="100" r="6" fill="#ffffff"/>
                        <path d="M110 100 L125 100" stroke="#0284c7" stroke-width="4"/>
                        <path d="M140 110 L140 140 L180 140" stroke="#0284c7" stroke-width="4" stroke-dasharray="4"/>
                        <path d="M150 100 L180 100" stroke="var(--rk-hp-ice)" stroke-width="6" class="anim-flow"/>
                        <rect x="160" y="85" width="40" height="20" rx="4" fill="var(--rk-hp-dark)"/>
                        <text x="180" y="95" fill="#ffffff" font-size="12" font-weight="bold" text-anchor="middle" dominant-baseline="central">17°C</text>
                    </svg>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const hpBtns = document.querySelectorAll('.rk-hp-btn');
    const hpPanels = document.querySelectorAll('.rk-hp-panel');

    hpBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const mode = this.getAttribute('data-mode');
            
            // Bezpieczne usuwanie klas (bez '&&')
            hpBtns.forEach(function(b) {
                b.classList.remove('selected');
            });
            hpPanels.forEach(function(p) {
                p.classList.remove('selected');
            });
            
            // Ustawienie aktywnych klas
            this.classList.add('selected');
            const targetPanel = document.getElementById('panel-' + mode);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('selected');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-auto-dark: #0f172a;
    --rk-auto-blue: #0284c7;
    --rk-auto-light: #f8fafc;
    --rk-auto-gray: #64748b;
    --rk-auto-border: #e2e8f0;
    
    /* Kolory poziomów ostrzegawczych */
    --rk-lvl1: #eab308; /* Modulacja - Żółty */
    --rk-lvl1-bg: #fefce8;
    --rk-lvl2: #f97316; /* Odcięcie - Pomarańczowy */
    --rk-lvl2-bg: #fff7ed;
    --rk-lvl3: #ef4444; /* Awaria - Czerwony */
    --rk-lvl3-bg: #fef2f2;
}

.rk-auto-wrapper {
    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(15, 23, 42, 0.1);
    border: 1px solid var(--rk-auto-border);
    overflow: hidden;
}

.rk-auto-header {
    padding: 40px 50px 30px;
    background: var(--rk-auto-dark);
    color: #ffffff;
    position: relative;
}

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

.rk-auto-header p {
    font-size: 16px;
    color: #94a3b8;
    line-height: 1.6;
    margin: 0;
}

.rk-auto-layout {
    display: grid;
    grid-template-columns: 1fr 400px;
    background: #ffffff;
}

/* Sekcja Lewa - System Wizualizacji */
.rk-auto-display {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-auto-border);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-auto-visual-box {
    background: var(--rk-auto-light);
    border: 2px dashed var(--rk-auto-border);
    border-radius: 20px;
    padding: 40px;
    text-align: center;
    transition: all 0.4s ease;
    min-height: 320px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-auto-svg-icon {
    width: 120px;
    height: 120px;
    margin-bottom: 25px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-auto-visual-title {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-auto-dark);
    margin: 0 0 10px 0;
    transition: color 0.3s;
}

.rk-auto-visual-desc {
    font-size: 15px;
    color: #475569;
    line-height: 1.6;
    margin: 0;
}

/* Sekcja Prawa - Interaktywne Poziomy */
.rk-auto-controls {
    padding: 30px;
    background: #f8fafc;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-auto-controls h3 {
    font-size: 15px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-auto-gray);
    letter-spacing: 0.5px;
    margin: 0 0 10px 0;
    text-align: center;
}

.rk-lvl-btn {
    width: 100%;
    background: #ffffff;
    border: 2px solid var(--rk-auto-border);
    border-radius: 16px;
    padding: 20px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    position: relative;
    overflow: hidden;
}

.rk-lvl-indicator {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 6px;
    background: var(--rk-auto-border);
    transition: background 0.3s;
}

.rk-lvl-btn[data-lvl="1"]:hover { border-color: var(--rk-lvl1); }
.rk-lvl-btn[data-lvl="1"].active { background: var(--rk-lvl1-bg); border-color: var(--rk-lvl1); }
.rk-lvl-btn[data-lvl="1"].active .rk-lvl-indicator { background: var(--rk-lvl1); }

.rk-lvl-btn[data-lvl="2"]:hover { border-color: var(--rk-lvl2); }
.rk-lvl-btn[data-lvl="2"].active { background: var(--rk-lvl2-bg); border-color: var(--rk-lvl2); }
.rk-lvl-btn[data-lvl="2"].active .rk-lvl-indicator { background: var(--rk-lvl2); }

.rk-lvl-btn[data-lvl="3"]:hover { border-color: var(--rk-lvl3); }
.rk-lvl-btn[data-lvl="3"].active { background: var(--rk-lvl3-bg); border-color: var(--rk-lvl3); }
.rk-lvl-btn[data-lvl="3"].active .rk-lvl-indicator { background: var(--rk-lvl3); }

.rk-lvl-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-auto-dark);
    margin: 0 0 5px 10px;
    display: block;
}

.rk-lvl-sub {
    font-size: 13px;
    color: var(--rk-auto-gray);
    font-weight: 600;
    margin-left: 10px;
    display: block;
}

/* Opis techniczny pod spodem */
.rk-auto-tech-desc {
    padding: 30px 50px 40px;
    background: #ffffff;
    border-top: 1px solid var(--rk-auto-border);
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
}

.rk-auto-tech-desc a {
    color: var(--rk-auto-blue);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}

.rk-auto-tech-desc a:hover {
    border-color: var(--rk-auto-blue);
}

.rk-auto-tech-desc strong {
    color: var(--rk-auto-dark);
}

/* Ukryte elementy do podmiany w JS */
.rk-logic-data { display: none; }

@media (max-width: 768px) {
    .rk-auto-layout { grid-template-columns: 1fr; }
    .rk-auto-header, .rk-auto-display, .rk-auto-controls, .rk-auto-tech-desc { padding: 25px 20px; }
    .rk-auto-controls { border-top: 1px solid var(--rk-auto-border); }
    .rk-auto-display { border-right: none; }
    .rk-auto-visual-box { min-height: 250px; padding: 20px; }
    .rk-auto-svg-icon { width: 80px; height: 80px; margin-bottom: 15px; }
    .rk-auto-visual-title { font-size: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-automatyka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Jaka automatyka zabezpiecza przed kondensacją wilgoci na podłodze?",
    "description": "Zrozum trójstopniowy system obrony Dew Point Control: od zaworów mieszających, przez siłowniki termoelektryczne, po awaryjne higrostaty przylgowe.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-automatyka",
    "name": "Protokoły Ochrony Dew Point Control (HVAC)",
    "description": "Zestawienie trójstopniowego algorytmu sprzętowo-programowego zabezpieczającego budynki przed kondensacją wilgoci podczas chłodzenia płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "automatyka dew point control",
      "termohigrometr ogrzewanie podłogowe",
      "zawór trójdrogowy mieszający podłogówka",
      "siłowniki termoelektryczne chłodzenie",
      "higrostat przylgowy awaryjny"
    ],
    "measurementTechnique": "Algorytm oparty na ciągłej analizie danych z czujników rezystancyjnych (PT1000) oraz cyfrowych termohigrometrów (np. protokół KNX/ZigBee).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ochrona Poziom 1: Modulacja sygnałem analogowym 0-10V zaworu mieszającego (korekta o 1,5°C - 3,0°C).",
        "Ochrona Poziom 2: Strefowe odcięcie zasilania siłowników NC/NO (próg RH = 65-70%).",
        "Ochrona Poziom 3: Sprzętowe rozwarcie styku przez mechaniczny czujnik kondensacji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-automatyka",
    "name": "Symulator Tarczy Ochronnej Dew Point Control",
    "description": "Interfejs edukacyjny demonstrujący kaskadowe reakcje inteligentnego systemu HVAC na wzrastające zagrożenie wykropleniem wilgoci na jastrychu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auto-wrapper" id="rk-auto-app">
    <div class="rk-auto-header">
        <h2>Jaka automatyka zabezpiecza przed kondensacją?</h2>
        <p>Profesjonalny system sterowania chłodzeniem płaszczyznowym musi opierać się na standardzie <strong>Dew Point Control</strong>. Układ w sposób ciągły analizuje dane z czujników w wylewce (np. PT1000) i termohigrometrów. Poznaj 3 poziomy obrony.</p>
    </div>

    <div class="rk-auto-layout">
        
        <div class="rk-auto-display">
            <div class="rk-auto-visual-box" id="rkAutoMonitor">
                <svg class="rk-auto-svg-icon" id="rkAutoIcon" viewBox="0 0 24 24" fill="none" stroke="var(--rk-lvl1)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                    <circle cx="12" cy="12" r="10"></circle>
                    <polyline points="12 16 16 12 12 8"></polyline>
                    <line x1="8" y1="12" x2="16" y2="12"></line>
                </svg>
                <h3 class="rk-auto-visual-title" id="rkAutoTitle" style="color: var(--rk-lvl1);">1. Modulacja zasilania</h3>
                <p class="rk-auto-visual-desc" id="rkAutoDesc">
                    Regulator wysyła sygnał (np. 0-10V) do zaworu trójdrogowego. Domyka on dopływ zimnej wody z pompy ciepła, płynnie podnosząc temperaturę zasilania o 1,5°C - 3,0°C.
                </p>
            </div>
        </div>

        <div class="rk-auto-controls">
            <h3>Wybierz stopień zabezpieczenia</h3>
            
            <button class="rk-lvl-btn active" data-lvl="1">
                <div class="rk-lvl-indicator"></div>
                <span class="rk-lvl-title">Poziom 1: Korekta Tła</span>
                <span class="rk-lvl-sub">Zawór trójdrogowy mieszacza</span>
            </button>
            
            <button class="rk-lvl-btn" data-lvl="2">
                <div class="rk-lvl-indicator"></div>
                <span class="rk-lvl-title">Poziom 2: Odcięcie Strefy</span>
                <span class="rk-lvl-sub">Siłowniki termoelektryczne (NC/NO)</span>
            </button>
            
            <button class="rk-lvl-btn" data-lvl="3">
                <div class="rk-lvl-indicator"></div>
                <span class="rk-lvl-title">Poziom 3: Twardy Reset</span>
                <span class="rk-lvl-sub">Awaryjny higrostat przylgowy</span>
            </button>
        </div>
    </div>

    <div class="rk-auto-tech-desc">
        Powyższa automatyka realizuje ochronę bez ingerencji użytkownika. Kiedy temperatura podłogi zbliża się do punktu rosy, najważniejszy jest czas reakcji <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworu mieszającego w ogrzewaniu podłogowym</a>. Jeśli zignorujesz ten element, lub zrezygnujesz z <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych na rozdzielaczach</a>, ryzykujesz zniszczeniem podłogi podczas pierwszej letniej burzy. Awaryjne wyłączenie <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy obiegowej</a> przez czujnik przylgowy to ostateczna, mechaniczna linia obrony, działająca niezależnie od sterowników systemowych.
    </div>

    <div id="data-lvl-1" class="rk-logic-data">
        <span class="data-color">var(--rk-lvl1)</span>
        <span class="data-bg">var(--rk-lvl1-bg)</span>
        <span class="data-title">1. Modulacja zasilania</span>
        <span class="data-desc">Regulator wysyła sygnał (np. 0-10V) do zaworu trójdrogowego. Domyka on dopływ zimnej wody z pompy ciepła, płynnie podnosząc temperaturę zasilania o 1,5°C - 3,0°C.</span>
        <span class="data-svg">
            <circle cx="12" cy="12" r="10"></circle>
            <polyline points="12 16 16 12 12 8"></polyline>
            <line x1="8" y1="12" x2="16" y2="12"></line>
        </span>
    </div>

    <div id="data-lvl-2" class="rk-logic-data">
        <span class="data-color">var(--rk-lvl2)</span>
        <span class="data-bg">var(--rk-lvl2-bg)</span>
        <span class="data-title">2. Izolacja wilgotnego pokoju</span>
        <span class="data-desc">Termostat pokojowy wykrywa przekroczenie progu (np. RH = 65%). Wysyła sygnał do listwy, która odcina zasilanie siłowników, stopując chłodzenie tylko w tym jednym pomieszczeniu (np. w łazience po kąpieli).</span>
        <span class="data-svg">
            <rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect>
            <line x1="9" y1="3" x2="9" y2="21"></line>
            <path d="M17 8l-4 4 4 4"></path>
        </span>
    </div>

    <div id="data-lvl-3" class="rk-logic-data">
        <span class="data-color">var(--rk-lvl3)</span>
        <span class="data-bg">var(--rk-lvl3-bg)</span>
        <span class="data-title">3. Mechaniczne odcięcie pomp</span>
        <span class="data-desc">Na rurze zasilającej zamontowany jest mechaniczny czujnik kondensacji. Gdy pojawi się na nim film wodny, czujnik rozwiera styk bezpieczeństwa, natychmiast odcinając zasilanie pomp, ratując budynek przed zalaniem.</span>
        <span class="data-svg">
            <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>
        </span>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const lvlBtns = document.querySelectorAll('.rk-lvl-btn');
    
    const monitorBox = document.getElementById('rkAutoMonitor');
    const monitorIcon = document.getElementById('rkAutoIcon');
    const monitorTitle = document.getElementById('rkAutoTitle');
    const monitorDesc = document.getElementById('rkAutoDesc');

    lvlBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const lvl = this.getAttribute('data-lvl');
            
            // Bezpieczne usuwanie klas
            lvlBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            this.classList.add('active');

            // Pobieranie danych dla danego poziomu
            const dataContainer = document.getElementById('data-lvl-' + lvl);
            
            if (dataContainer !== null) {
                const newColor = dataContainer.querySelector('.data-color').textContent;
                const newBg = dataContainer.querySelector('.data-bg').textContent;
                const newTitle = dataContainer.querySelector('.data-title').textContent;
                const newDesc = dataContainer.querySelector('.data-desc').textContent;
                const newSvgContent = dataContainer.querySelector('.data-svg').innerHTML;

                // Aktualizacja UI
                monitorBox.style.backgroundColor = newBg;
                monitorBox.style.borderColor = newColor;
                
                monitorIcon.style.stroke = newColor;
                monitorIcon.innerHTML = newSvgContent;
                
                monitorTitle.style.color = newColor;
                monitorTitle.textContent = newTitle;
                
                monitorDesc.textContent = newDesc;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-vent-dark: #0f172a;
    --rk-vent-blue: #0284c7;
    --rk-vent-light-blue: #f0f9ff;
    --rk-vent-teal: #0d9488;
    --rk-vent-teal-light: #f0fdfa;
    --rk-vent-gray: #64748b;
    --rk-vent-border: #e2e8f0;
    --rk-vent-bg: #ffffff;
}

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

.rk-vent-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-vent-teal-light) 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-vent-border);
}

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

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

/* Sekcja Interaktywna - Symulator */
.rk-vent-simulator {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

/* Panel sterowania (Przyciski) */
.rk-vent-controls {
    background: #f8fafc;
    border-right: 1px solid var(--rk-vent-border);
    padding: 30px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-vent-controls h3 {
    font-size: 16px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-vent-gray);
    letter-spacing: 0.5px;
    margin: 0 0 10px 0;
}

.rk-vent-btn {
    background: #ffffff;
    border: 2px solid var(--rk-vent-border);
    border-radius: 16px;
    padding: 20px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.rk-vent-btn:hover {
    border-color: #99f6e4;
    background: var(--rk-vent-teal-light);
}

.rk-vent-btn.active {
    border-color: var(--rk-vent-teal);
    background: var(--rk-vent-teal-light);
    box-shadow: 0 10px 20px -5px rgba(13, 148, 136, 0.15);
}

.rk-btn-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-vent-dark);
}

.rk-btn-sub {
    font-size: 13px;
    color: var(--rk-vent-gray);
    font-weight: 600;
}

/* Ekran Wyników */
.rk-vent-display {
    padding: 40px;
    position: relative;
}

.rk-vent-panel {
    display: none;
    animation: fadeInVent 0.4s ease-out;
}

.rk-vent-panel.active {
    display: block;
}

@keyframes fadeInVent {
    from { opacity: 0; transform: translateY(15px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-vent-panel h4 {
    font-size: 24px;
    font-weight: 800;
    color: var(--rk-vent-dark);
    margin: 0 0 20px 0;
}

.rk-vent-panel p {
    font-size: 16px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 25px 0;
}

.rk-vent-panel a {
    color: var(--rk-vent-teal);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

/* Wizualizacja Danych */
.rk-data-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 30px;
}

.rk-data-card {
    background: #f8fafc;
    border: 1px solid var(--rk-vent-border);
    border-radius: 16px;
    padding: 25px;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-data-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 4px;
    background: var(--rk-vent-teal);
}

.rk-data-card.warning::before {
    background: #ef4444;
}

.rk-data-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-vent-gray);
    margin-bottom: 10px;
}

.rk-data-value {
    font-size: 36px;
    font-weight: 900;
    color: var(--rk-vent-dark);
}

.rk-data-value span {
    font-size: 18px;
    color: var(--rk-vent-gray);
}

/* SVG Animacje Wilgoci */
.rk-moisture-graphic {
    width: 100%;
    height: 120px;
    background: var(--rk-vent-light-blue);
    border-radius: 16px;
    margin-bottom: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.drop {
    position: absolute;
    fill: #38bdf8;
    animation: dropFall 2s infinite linear;
}

@keyframes dropFall {
    0% { transform: translateY(-50px) scale(0.5); opacity: 0; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { transform: translateY(100px) scale(1); opacity: 0; }
}

@media (max-width: 768px) {
    .rk-vent-simulator { grid-template-columns: 1fr; }
    .rk-vent-controls { border-right: none; border-bottom: 1px solid var(--rk-vent-border); padding: 25px 20px; }
    .rk-vent-display { padding: 30px 20px; }
    .rk-data-cards { grid-template-columns: 1fr; gap: 15px; }
    .rk-vent-header { padding: 30px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-rekuperacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Dlaczego rekuperacja jest kluczowa przy chłodzeniu podłogowym?",
    "description": "Analiza zjawiska chłodzenia jawnego i ukrytego. Rola chłodnicy kanałowej oraz wymiennika entalpicznego w kontroli wilgotności (RH) i ochronie przed punktem rosy.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-wentylacja",
    "name": "Wpływ systemów wentylacyjnych na obciążenie wilgociowe",
    "description": "Zestawienie redukcji wilgotności względnej (RH) w zależności od zastosowanej technologii rekuperacji przy aktywowanym chłodzeniu płaszczyznowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "rekuperacja a chłodzenie podłogowe",
      "wymiennik entalpiczny wilgotność",
      "chłodnica kanałowa do rekuperacji",
      "osuszanie powietrza pompa ciepła",
      "chłodzenie jawne i utajone"
    ],
    "measurementTechnique": "Modelowanie spadku wilgotności względnej (RH) w budynku na podstawie separacji skroplin przez chłodnicę freonową/wodną (6-8°C) oraz wymiany utajonej rotora entalpicznego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Brak osuszania: RH wzrasta przy chłodzeniu (ryzyko kondensacji).",
        "Wymiennik entalpiczny: Redukcja obciążenia wilgocią o 25-35%.",
        "Chłodnica kanałowa (6-8°C): Głęboka kondensacja w kanale, powietrze suche na nawiewie."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-osuszanie",
    "name": "Symulator Osuszania Powietrza (HVAC)",
    "description": "Aplikacja pozwalająca inwestorowi porównać efektywność chłodzenia podłogowego w zależności od wybranego systemu wentylacji mechanicznej.",
    "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">
        <h2>Dlaczego rekuperacja jest kluczowa przy chłodzeniu podłogowym?</h2>
        <p>System chłodzenia podłogowego obniża temperaturę, ale <strong>nie potrafi osuszać powietrza</strong>. Zgodnie z prawami termodynamiki, chłodzenie bez wymiany wilgoci drastycznie przybliża układ do punktu rosy. Kooperacja z systemem wentylacyjnym to jedyna droga do bezpieczeństwa.</p>
    </div>

    <div class="rk-vent-simulator">
        <div class="rk-vent-controls" id="ventControls">
            <h3>Wybierz system wsparcia</h3>
            
            <button class="rk-vent-btn active" data-target="vent-none">
                <span class="rk-btn-title">Tylko chłodzenie podłogowe</span>
                <span class="rk-btn-sub">Brak kontroli wilgoci (Chłodzenie jawne)</span>
            </button>
            
            <button class="rk-vent-btn" data-target="vent-entalpia">
                <span class="rk-btn-title">Wymiennik entalpiczny</span>
                <span class="rk-btn-sub">Rekuperacja z odzyskiem wilgoci</span>
            </button>
            
            <button class="rk-vent-btn" data-target="vent-chlodnica">
                <span class="rk-btn-title">Chłodnica kanałowa</span>
                <span class="rk-btn-sub">Aktywne osuszanie powietrza nawiewnego</span>
            </button>
        </div>

        <div class="rk-vent-display">
            
            <div class="rk-vent-panel active" id="vent-none">
                <div class="rk-moisture-graphic" style="background: #fef2f2;">
                    <svg class="drop" style="left: 20%; animation-delay: 0s;" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/></svg>
                    <svg class="drop" style="left: 40%; animation-delay: 0.5s;" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/></svg>
                    <svg class="drop" style="left: 60%; animation-delay: 0.2s;" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/></svg>
                    <svg class="drop" style="left: 80%; animation-delay: 0.7s;" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/></svg>
                </div>
                <h4>Pułapka wilgotności (Efekt Jaskini)</h4>
                <p>Ochładzanie powietrza przy stałej zawartości wody (g/kg) powoduje gwałtowny wzrost wilgotności względnej (RH). Jeśli nie masz rekuperacji osuszającej, system podłogowy szybko zostanie zablokowany przez sterownik zabezpieczający przed zalaniem.</p>
                <div class="rk-data-cards">
                    <div class="rk-data-card warning">
                        <div class="rk-data-label">Wilgotność (RH)</div>
                        <div class="rk-data-value" style="color: #ef4444;">75<span>%</span></div>
                    </div>
                    <div class="rk-data-card warning">
                        <div class="rk-data-label">Moc chłodnicza</div>
                        <div class="rk-data-value" style="color: #ef4444;">Zablokowana</div>
                    </div>
                </div>
            </div>

            <div class="rk-vent-panel" id="vent-entalpia">
                <div class="rk-moisture-graphic" style="background: #f0fdfa;">
                    <svg class="drop" style="left: 30%; animation-delay: 0s;" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/></svg>
                    <svg class="drop" style="left: 70%; animation-delay: 0.5s;" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"/></svg>
                </div>
                <h4>Redukcja obciążenia o 25-35%</h4>
                <p>W okresach letnich rekuperator wyposażony w wymiennik entalpiczny zatrzymuje część parnego powietrza zewnętrznego. Oddaje wilgoć do strumienia wywiewanego z domu. Poprawia to <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilans cieplny budynku</a> i pozwala na stabilniejszą pracę podłogówki.</p>
                <div class="rk-data-cards">
                    <div class="rk-data-card">
                        <div class="rk-data-label">Wilgotność (RH)</div>
                        <div class="rk-data-value" style="color: #0d9488;">60<span>%</span></div>
                    </div>
                    <div class="rk-data-card">
                        <div class="rk-data-label">Moc chłodnicza</div>
                        <div class="rk-data-value">22<span> W/m²</span></div>
                    </div>
                </div>
            </div>

            <div class="rk-vent-panel" id="vent-chlodnica">
                <div class="rk-moisture-graphic" style="background: #f8fafc;">
                    <svg width="60" height="60" viewBox="0 0 24 24" fill="none" stroke="var(--rk-vent-teal)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="opacity: 0.5;">
                        <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>
                <h4>Aktywne odcięcie wilgoci utajonej</h4>
                <p>Zastosowanie wodnej lub freonowej chłodnicy kanałowej za <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">rekuperatorem</a> to rozwiązanie ostateczne. Czynnik o temperaturze 6-8°C wymusza głęboką kondensację wody w kanale (odpływ do kanalizacji). Do pokojów trafia idealnie suche powietrze, co pozwala chłodzić podłogę z pełną mocą.</p>
                <div class="rk-data-cards">
                    <div class="rk-data-card">
                        <div class="rk-data-label">Wilgotność (RH)</div>
                        <div class="rk-data-value" style="color: #0ea5e9;">45<span>%</span></div>
                    </div>
                    <div class="rk-data-card">
                        <div class="rk-data-label">Moc chłodnicza</div>
                        <div class="rk-data-value" style="color: #0ea5e9;">40<span> W/m²</span></div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const ventBtns = document.querySelectorAll('.rk-vent-btn');
    const ventPanels = document.querySelectorAll('.rk-vent-panel');

    ventBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Bezpieczne usuwanie klas aktywnych (bez '&&')
            ventBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            ventPanels.forEach(function(p) {
                p.classList.remove('active');
            });
            
            // Aktywacja bieżącego
            this.classList.add('active');
            
            const targetPanel = document.getElementById(targetId);
            if (targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-calc-dark: #0f172a;
    --rk-calc-blue: #0284c7;
    --rk-calc-light: #f8fafc;
    --rk-calc-gray: #64748b;
    --rk-calc-border: #e2e8f0;
    --rk-calc-safe: #10b981;
    --rk-calc-safe-bg: #dcfce7;
    --rk-calc-warn: #f59e0b;
    --rk-calc-warn-bg: #fef3c7;
    --rk-calc-alarm: #ef4444;
    --rk-calc-alarm-bg: #fef2f2;
}

.rk-calc-wrapper {
    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(2, 132, 199, 0.1);
    border: 1px solid var(--rk-calc-blue);
    overflow: hidden;
}

.rk-calc-header {
    padding: 40px 50px 30px;
    background: var(--rk-calc-dark);
    color: #ffffff;
}

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

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

/* Układ Diagnozy 2-kolumnowy */
.rk-calc-grid {
    display: grid;
    grid-template-columns: 1fr 380px;
    background: #ffffff;
}

/* Sekcja Lewa: Suwaki i Wzory */
.rk-calc-controls {
    padding: 40px 50px;
    border-right: 1px solid var(--rk-calc-border);
}

.rk-calc-step-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    margin: 0 0 25px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-calc-step-title svg {
    color: var(--rk-calc-blue);
}

.rk-slider-group {
    margin-bottom: 25px;
    background: var(--rk-calc-light);
    padding: 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-calc-border);
}

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

.rk-slider-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-calc-dark);
}

.rk-slider-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc-blue);
    background: #ffffff;
    padding: 4px 12px;
    border-radius: 8px;
    border: 1px solid var(--rk-calc-border);
}

.rk-range-input {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    border-radius: 4px;
    background: #cbd5e1;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-calc-blue);
    cursor: pointer;
    border: 3px solid #ffffff;
    box-shadow: 0 2px 6px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

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

/* Sekcja Prawa: Wyniki Live */
.rk-calc-results {
    padding: 40px;
    background: var(--rk-calc-light);
    display: flex;
    flex-direction: column;
}

.rk-result-box {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 25px;
    text-align: center;
    margin-bottom: 20px;
}

.rk-result-label {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-calc-gray);
    letter-spacing: 0.5px;
    margin-bottom: 10px;
}

.rk-result-value {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    line-height: 1;
}

.rk-result-sub {
    font-size: 13px;
    color: var(--rk-calc-gray);
    margin-top: 10px;
}

/* Dynamiczny Status */
.rk-status-panel {
    margin-top: auto;
    padding: 30px 25px;
    border-radius: 16px;
    text-align: center;
    transition: all 0.4s ease;
    border: 2px solid transparent;
}

.rk-status-icon {
    width: 48px;
    height: 48px;
    margin: 0 auto 15px;
}

.rk-status-title {
    font-size: 20px;
    font-weight: 900;
    margin: 0 0 10px 0;
}

.rk-status-desc {
    font-size: 14px;
    line-height: 1.6;
    margin: 0;
    font-weight: 600;
}

/* Klasy stanów wstrzykiwane przez JS */
.state-safe {
    background: var(--rk-calc-safe-bg);
    border-color: var(--rk-calc-safe);
    color: #065f46;
}
.state-safe .rk-status-title { color: var(--rk-calc-safe); }

.state-warn {
    background: var(--rk-calc-warn-bg);
    border-color: var(--rk-calc-warn);
    color: #92400e;
}
.state-warn .rk-status-title { color: var(--rk-calc-warn); }

.state-alarm {
    background: var(--rk-calc-alarm-bg);
    border-color: var(--rk-calc-alarm);
    color: #991b1b;
}
.state-alarm .rk-status-title { color: var(--rk-calc-alarm); }

/* Opis logiczny pod spodem */
.rk-calc-logic-desc {
    padding: 30px 50px 40px;
    background: #ffffff;
    border-top: 1px solid var(--rk-calc-border);
}

.rk-logic-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-logic-item {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
}

.rk-logic-item strong {
    color: var(--rk-calc-dark);
    display: block;
    margin-bottom: 5px;
}

.rk-logic-item a {
    color: var(--rk-calc-blue);
    font-weight: 600;
    text-decoration: none;
}

@media (max-width: 768px) {
    .rk-calc-grid { grid-template-columns: 1fr; }
    .rk-calc-header, .rk-calc-controls, .rk-calc-results, .rk-calc-logic-desc { padding: 25px 20px; }
    .rk-logic-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-result-box { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Algorytm kalkulatora punktu rosy i oceny ryzyka kondensacji",
    "description": "Zrozum i przetestuj na żywo logikę automatyki Dew Point Control. Interaktywny symulator obliczający bezpieczną temperaturę zasilania podłogówki na bazie wilgotności.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-algorytm",
    "name": "Parametry termodynamiczne punktu rosy (Magnus-Tetens)",
    "description": "Dane ustrukturyzowane odzwierciedlające algorytmy obronne sterowników HVAC przed zjawiskiem kondensacji na płaszczyznach chłodzących.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator punktu rosy chłodzenie",
      "wzór na punkt rosy podłogówka",
      "jak obliczyć kondensację latem",
      "bezpieczna temperatura zasilania kalkulator",
      "sterownik dew point control"
    ],
    "measurementTechnique": "Wykorzystanie równania Magnus-Tetensa dla wyznaczenia progu kondensacji oraz dodanie marginesu bezpieczeństwa 1,5 K dla algorytmu sterującego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kryterium Bezpieczne: T podłogi >= T bezpieczne ORAZ RH < 65%",
        "Kryterium Ostrzeżenia: Podniesienie krzywej zasilania przy zbliżaniu się do limitu.",
        "Kryterium Alarmowe: Awaryjne odcięcie pomp przy RH >= 70% lub T podłogi <= Tp."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-kalkulator",
    "name": "Interaktywny Kalkulator Punktu Rosy HVAC",
    "description": "Aplikacja webowa pozwalająca inwestorom symulować na żywo warunki atmosferyczne i obserwować reakcje automatyki chłodzącej na zmiany temperatury i wilgotności.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc-wrapper">
    <div class="rk-calc-header">
        <h2>Algorytm kalkulatora punktu rosy i oceny ryzyka</h2>
        <p>Przetestuj na żywo, jak zadziała zaawansowany <a href="https://projekt-ogrzewania.pl/sterownik-regulator-pogodowy/" style="color:#38bdf8; text-decoration:none; font-weight:700;">sterownik pogodowy</a> z funkcją Dew Point Control. Poniższy kalkulator wykorzystuje wzór Magnus-Tetensa, analizując parametry w czasie rzeczywistym.</p>
    </div>

    <div class="rk-calc-grid">
        <div class="rk-calc-controls">
            <h3 class="rk-calc-step-title">
                <svg width="24" height="24" 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><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                Wprowadź dane z termohigrometru
            </h3>
            
            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Temperatura powietrza (T_air)</span>
                    <span class="rk-slider-val" id="val-tair">26.0 °C</span>
                </div>
                <input type="range" class="rk-range-input" id="slide-tair" min="20" max="35" step="0.5" value="26">
            </div>

            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Wilgotność względna (RH)</span>
                    <span class="rk-slider-val" id="val-rh">50 %</span>
                </div>
                <input type="range" class="rk-range-input" id="slide-rh" min="30" max="90" step="1" value="50">
            </div>

            <div class="rk-slider-group" style="margin-bottom: 0;">
                <div class="rk-slider-header">
                    <span class="rk-slider-label">Temp. planowana posadzki (T_floor)</span>
                    <span class="rk-slider-val" id="val-tfloor">18.0 °C</span>
                </div>
                <input type="range" class="rk-range-input" id="slide-tfloor" min="10" max="25" step="0.5" value="18">
            </div>
        </div>

        <div class="rk-calc-results">
            <div class="rk-result-box">
                <div class="rk-result-label">Obliczony Punkt Rosy (Tp)</div>
                <div class="rk-result-value" id="res-tp">-- °C</div>
                <div class="rk-result-sub">Krok 2 i 3: Obliczenie ciśnienia pary E i logarytmów.</div>
            </div>

            <div class="rk-result-box">
                <div class="rk-result-label">Min. Bezpieczna Temp. Podłogi</div>
                <div class="rk-result-value" id="res-safe">-- °C</div>
                <div class="rk-result-sub">Krok 4: Wartość Tp + Margines 1.5°C</div>
            </div>

            <div class="rk-status-panel state-safe" id="status-box">
                <svg id="icon-safe" class="rk-status-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:block"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path><polyline points="9 12 11 14 15 10"></polyline></svg>
                <svg id="icon-warn" class="rk-status-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="display:none"><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>
                
                <h3 class="rk-status-title" id="status-title">STATUS: BEZPIECZNIE</h3>
                <p class="rk-status-desc" id="status-desc">Zezwolenie na chłodzenie. Brak ryzyka kondensacji wilgoci na posadzce.</p>
            </div>
        </div>
    </div>

    <div class="rk-calc-logic-desc">
        <h3 style="font-size: 20px; font-weight: 800; color: var(--rk-calc-dark); margin: 0 0 20px 0;">Instrukcje warunkowe automatyki</h3>
        <div class="rk-logic-grid">
            <div class="rk-logic-item">
                <strong>STATUS: OSTRZEŻENIE</strong>
                Jeżeli temperatura posadzki zbliża się do punktu rosy, automatyka wymusza korektę: przymyka zawór mieszający, podnosząc temperaturę zasilania wody obiegowej. Jeśli interesuje Cię, jak kompleksowo obliczyć moce, sprawdź <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">kompleksowy kalkulator ogrzewania podłogowego</a>.
            </div>
            <div class="rk-logic-item">
                <strong>STATUS: KATASTROFA (ALARM)</strong>
                Gdy temperatura podłogi zrówna się z punktem rosy LUB wilgotność w pomieszczeniu przekroczy 70%. Następuje awaryjne odcięcie chłodzenia i sprzętowe wymuszenie pracy rekuperatora na 100% w celu natychmiastowego osuszenia <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">zgodnie z wytycznymi norm</a>.
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slideTair = document.getElementById('slide-tair');
    const slideRh = document.getElementById('slide-rh');
    const slideTfloor = document.getElementById('slide-tfloor');
    
    const valTair = document.getElementById('val-tair');
    const valRh = document.getElementById('val-rh');
    const valTfloor = document.getElementById('val-tfloor');
    
    const resTp = document.getElementById('res-tp');
    const resSafe = document.getElementById('res-safe');
    
    const statusBox = document.getElementById('status-box');
    const statusTitle = document.getElementById('status-title');
    const statusDesc = document.getElementById('status-desc');
    const iconSafe = document.getElementById('icon-safe');
    const iconWarn = document.getElementById('icon-warn');

    function calculate() {
        const tAir = parseFloat(slideTair.value);
        const rh = parseFloat(slideRh.value);
        const tFloor = parseFloat(slideTfloor.value);

        // Update Labels
        valTair.textContent = tAir.toFixed(1) + ' °C';
        valRh.textContent = rh + ' %';
        valTfloor.textContent = tFloor.toFixed(1) + ' °C';

        // Math: Magnus-Tetens
        // Krok 2: Cisnienie
        const exponent = (17.67 * tAir) / (tAir + 243.5);
        const Es = 6.112 * Math.exp(exponent);
        const E = Es * (rh / 100);

        // Krok 3: Punkt rosy Tp
        const logE = Math.log(E / 6.112);
        const Tp = (243.5 * logE) / (17.67 - logE);
        
        // Krok 4: T safe
        const Tsafe = Tp + 1.5;

        // Display results
        resTp.textContent = Tp.toFixed(1) + ' °C';
        resSafe.textContent = Tsafe.toFixed(1) + ' °C';

        // Logika Sterownika (Bez użycia operatora AND)
        let currentState = 'ALARM';
        
        if (rh >= 70) {
            currentState = 'ALARM';
        } else if (tFloor <= Tp) {
            currentState = 'ALARM';
        } else {
            // Skoro tu jesteśmy, wiemy że RH < 70 ORAZ tFloor > Tp
            if (tFloor < Tsafe) {
                currentState = 'WARNING';
            } else {
                // Skoro tu jesteśmy, tFloor >= Tsafe
                if (rh < 65) {
                    currentState = 'SAFE';
                } else {
                    // RH między 65 a 69
                    currentState = 'WARNING';
                }
            }
        }

        // Aktualizacja UI na podstawie stanu
        iconSafe.style.display = 'none';
        iconWarn.style.display = 'none';

        if (currentState === 'ALARM') {
            statusBox.className = 'rk-status-panel state-alarm';
            statusTitle.textContent = 'STATUS: KATASTROFA';
            statusDesc.textContent = 'System odcięty! Natychmiastowe ryzyko zalania posadzki.';
            iconWarn.style.display = 'block';
        } else if (currentState === 'WARNING') {
            statusBox.className = 'rk-status-panel state-warn';
            statusTitle.textContent = 'STATUS: OSTRZEŻENIE';
            statusDesc.textContent = 'Wymuszono podniesienie temp. zasilania (praca zaworu mieszającego).';
            iconWarn.style.display = 'block';
        } else {
            statusBox.className = 'rk-status-panel state-safe';
            statusTitle.textContent = 'STATUS: BEZPIECZNIE';
            statusDesc.textContent = 'Zezwolenie na chłodzenie. Pełna praca pompy obiegowej.';
            iconSafe.style.display = 'block';
        }
    }

    // Event Listeners
    slideTair.addEventListener('input', calculate);
    slideRh.addEventListener('input', calculate);
    slideTfloor.addEventListener('input', calculate);

    // Initial run
    calculate();
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-blue-hover: #0369a1;
    --rk-proj-light-blue: #f0f9ff;
    --rk-proj-accent: #38bdf8;
    --rk-proj-gray: #64748b;
    --rk-proj-border: #e2e8f0;
    --rk-proj-bg: #ffffff;
    --rk-proj-warning: #f59e0b;
}

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

.rk-proj-header {
    padding: 45px 50px 35px;
    background: linear-gradient(135deg, var(--rk-proj-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
    overflow: hidden;
}

.rk-proj-header::after {
    content: '';
    position: absolute;
    right: -20px;
    top: -50px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(56, 189, 248, 0.2) 0%, transparent 70%);
}

.rk-proj-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.15);
    color: var(--rk-proj-accent);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-proj-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 15px 0;
    line-height: 1.3;
    position: relative;
    z-index: 1;
}

.rk-proj-header p {
    font-size: 16px;
    color: #cbd5e1;
    line-height: 1.7;
    margin: 0;
    max-width: 750px;
    position: relative;
    z-index: 1;
}

/* Interaktywny Pulpit Projektanta */
.rk-proj-dashboard {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-proj-nav {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

.rk-proj-tab {
    background: #ffffff;
    border: 2px solid var(--rk-proj-border);
    border-radius: 16px;
    padding: 20px 15px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}

.rk-proj-tab:hover {
    border-color: #bae6fd;
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-proj-tab.active {
    border-color: var(--rk-proj-blue);
    background: var(--rk-proj-light-blue);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

.rk-proj-icon-wrapper {
    width: 48px;
    height: 48px;
    background: #f1f5f9;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-proj-gray);
    transition: all 0.3s;
}

.rk-proj-tab.active .rk-proj-icon-wrapper {
    background: var(--rk-proj-blue);
    color: #ffffff;
}

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

/* Wyświetlacz Treści */
.rk-proj-content-area {
    background: #ffffff;
    border: 1px solid var(--rk-proj-border);
    border-radius: 20px;
    padding: 35px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-proj-panel {
    display: none;
    animation: fadeInProj 0.4s ease-out;
}

.rk-proj-panel.active {
    display: block;
}

@keyframes fadeInProj {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-proj-panel h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-proj-panel p {
    font-size: 16px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 20px 0;
}

.rk-proj-panel a {
    color: var(--rk-proj-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: border-color 0.2s;
}

.rk-proj-panel a:hover {
    border-color: var(--rk-proj-blue);
}

.rk-proj-data-box {
    background: #f8fafc;
    border-left: 4px solid var(--rk-proj-blue);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 25px;
}

.rk-proj-data-box h4 {
    margin: 0 0 10px 0;
    font-size: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--rk-proj-gray);
    font-weight: 800;
}

.rk-proj-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid var(--rk-proj-border);
    font-size: 15px;
}

.rk-proj-data-row:last-child {
    border-bottom: none;
}

.rk-proj-val {
    font-weight: 800;
    color: var(--rk-proj-dark);
}

.val-warning { color: var(--rk-proj-warning); }

/* Mocne CTA Sprzedażowe */
.rk-proj-cta-section {
    padding: 50px;
    text-align: center;
    background: #ffffff;
    border-top: 1px solid var(--rk-proj-border);
}

.rk-proj-cta-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-proj-cta-desc {
    font-size: 16px;
    color: #64748b;
    margin: 0 auto 35px;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-premium {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-proj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-premium:hover {
    transform: translateY(-5px);
    background: var(--rk-proj-blue-hover);
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #bae6fd;
}

@media (max-width: 768px) {
    .rk-proj-header, .rk-proj-dashboard, .rk-proj-cta-section { padding: 30px 20px; }
    .rk-proj-nav { grid-template-columns: 1fr; gap: 10px; }
    .rk-proj-tab { flex-direction: row; padding: 15px 20px; justify-content: flex-start; }
    .rk-proj-content-area { padding: 25px 20px; }
    .rk-proj-panel h3 { font-size: 20px; align-items: flex-start; flex-direction: column; gap: 8px; }
    .rk-btn-premium { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-projekt-chlodzenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Jak funkcja chłodzenia płaszczyznowego wpływa na projekt ogrzewania podłogowego?",
    "description": "Techniczne wytyczne dla projektowania chłodzenia podłogowego. Redefinicja parametrów hydraulicznych: OZC, rozstaw rur co 10 cm, przepływy masowe, pompa obiegowa i dobór materiałów wykończeniowych.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-parametry-projektowe",
    "name": "Wytyczne hydrauliczne i materiałowe dla chłodzenia podłogowego",
    "description": "Porównanie parametrów brzegowych instalacji grzewczej i chłodzącej: moc z m2, rozstaw rur, opory cieplne, przepływy masowe pompy obiegowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego z chłodzeniem",
      "obliczenia OZC zyski ciepła latem",
      "rozstaw rur w chłodzeniu podłogowym",
      "opór cieplny paneli przy chłodzeniu",
      "dobór pompy obiegowej do podłogówki",
      "przepływ masowy w chłodzeniu płaszczyznowym"
    ],
    "measurementTechnique": "Wyliczenia oparte na normie PN-EN 1264, z uwzględnieniem niskiego zrzutu temperatury (Delta T = 3K) i ograniczeń wilgotnościowych punktu rosy.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zyski ciepła: Max moc chłodnicza 30-40 W/m² (wymagane precyzyjne OZC).",
        "Rozstaw rur: Zagęszczenie do 10 cm, wyłącznie układ ślimakowy w celu uniknięcia lokalnej kondensacji.",
        "Materiały: Rekomendowany opór R < 0,02 m²K/W (płytki). Ryzyko dla R > 0,10 m²K/W (drewno).",
        "Hydraulika: Niskie Delta T (3K) wymusza podwojenie przepływów (np. 1,15 m³/h dla 4 kW). Pompa klasy EEI <= 0,20."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-pulpit-projektanta",
    "name": "Pulpit Wytycznych Projektowych HVAC",
    "description": "Interaktywny interfejs dla inwestorów budowlanych pozwalający zgłębić 4 filary profesjonalnego projektowania instalacji płaszczyznowych (OZC, Rozstaw, Materiały, Hydraulika).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container" id="rk-proj-app">
    <div class="rk-proj-header">
        <div class="rk-proj-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"><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>
            Inżynieria Systemowa
        </div>
        <h2>Jak funkcja chłodzenia rewolucjonizuje projekt instalacji?</h2>
        <p>Projektowanie instalacji, która oprócz ogrzewania ma realizować bezpieczne chłodzenie, wymaga całkowitej redefinicji hydrauliki. Instalacja "na oko" zakończy się zalaniem. Zobacz 4 filary profesjonalnych obliczeń.</p>
    </div>

    <div class="rk-proj-dashboard">
        
        <div class="rk-proj-nav" id="rkProjTabs">
            <div class="rk-proj-tab active" data-target="panel-ozc">
                <div class="rk-proj-icon-wrapper">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>
                </div>
                <span>1. OZC / Zyski Ciepła</span>
            </div>
            
            <div class="rk-proj-tab" data-target="panel-rozstaw">
                <div class="rk-proj-icon-wrapper">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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="3" y1="15" x2="21" y2="15"></line><line x1="9" y1="3" x2="9" y2="21"></line><line x1="15" y1="3" x2="15" y2="21"></line></svg>
                </div>
                <span>2. Rozstaw Rur</span>
            </div>
            
            <div class="rk-proj-tab" data-target="panel-mat">
                <div class="rk-proj-icon-wrapper">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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>
                <span>3. Wykończenie (Opór R)</span>
            </div>
            
            <div class="rk-proj-tab" data-target="panel-hydro">
                <div class="rk-proj-icon-wrapper">
                    <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 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                </div>
                <span>4. Hydraulika Pompy</span>
            </div>
        </div>

        <div class="rk-proj-content-area" id="rkProjContent">
            
            <div class="rk-proj-panel active" id="panel-ozc">
                <h3>Obliczenia zysków ciepła i bariera wydajności</h3>
                <p>Podczas gdy zimą projektuje się instalację na pokrycie strat ciepła (gdzie gęstość strumienia to 60-80 W/m²), latem wyznacza się <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Obliczeniowe Zapotrzebowanie Cieplne (OZC)</a> pod kątem zysków cieplnych z nasłonecznienia.</p>
                <p>Z powodu fizycznego ograniczenia temperaturą punktu rosy, podłogówka ma twardy limit wydajności. Jeśli salon z dużymi oknami wymaga potężnego chłodzenia (np. 70 W/m²), projektant musi przewidzieć wsparcie (np. klimakonwektory), ponieważ sama podłoga nie da rady bezpiecznie odebrać tyle ciepła.</p>
                
                <div class="rk-proj-data-box">
                    <h4>Kluczowe Parametry OZC (Chłodzenie)</h4>
                    <div class="rk-proj-data-row">
                        <span>Zimowa wydajność grzewcza</span>
                        <span class="rk-proj-val">60 - 80 W/m²</span>
                    </div>
                    <div class="rk-proj-data-row">
                        <span>Letnia wydajność chłodnicza (limit punktu rosy)</span>
                        <span class="rk-proj-val val-warning">MAX 30 - 40 W/m²</span>
                    </div>
                </div>
            </div>

            <div class="rk-proj-panel" id="panel-rozstaw">
                <h3>Eliminacja "pasiastości" i zagęszczenie rur</h3>
                <p>Przy tradycyjnym ogrzewaniu dopuszczalna jest niewielka nierównomierność temperatury jastrychu. Przy chłodzeniu jest to absolutnie niedopuszczalne. Jeśli ułożysz rury rzadko (np. co 20 cm), podłoga nad rurą ulegnie silnemu wychłodzeniu (np. do 14°C) stając się epicentrum kondensacji, podczas gdy przestrzeń obok pozostanie sucha (19°C).</p>
                <p>Aby uśrednić temperaturę i uniknąć gnicia pasmowego, niezbędny jest rygorystyczny <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw rur w instalacji</a>. Wymagany jest układ ślimakowy naprzemienny, który niweluje szoki termiczne.</p>
                
                <div class="rk-proj-data-box">
                    <h4>Zalecenia układania pętli (Chłodzenie)</h4>
                    <div class="rk-proj-data-row">
                        <span>Rozstaw strefowy (Salon, sypialnie)</span>
                        <span class="rk-proj-val">10 cm</span>
                    </div>
                    <div class="rk-proj-data-row">
                        <span>Typ układania rury PEX/PERT</span>
                        <span class="rk-proj-val">Wyłącznie układ ślimakowy</span>
                    </div>
                </div>
            </div>

            <div class="rk-proj-panel" id="panel-mat">
                <h3>Dobór materiału wykończeniowego a opór cieplny (R)</h3>
                <p>Norma PN-EN 1264 mówi, że dla ogrzewania opór cieplny warstwy (R) nie powinien przekraczać 0,15 m²K/W. W trybie chłodzenia ten wymóg jest drastycznie zaostrzony. Płytki ceramiczne i gres idealnie i natychmiastowo przekazują chłód z wylewki do pokoju.</p>
                <p>Z kolei <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">panele i grube parkiety drewniane</a> działają latem jak potężny izolator cieplny. Aby "przepchnąć" przez nie chłód, woda musiałaby być lodowata (np. 12°C), co wywoła natychmiastową kondensację wilgoci tuż pod panelem, niszcząc drewno i kleje.</p>
                
                <div class="rk-proj-data-box">
                    <h4>Opór Cieplny posadzek a bezpieczeństwo</h4>
                    <div class="rk-proj-data-row">
                        <span>Płytki ceramiczne / Gres (R ~ 0,02 m²K/W)</span>
                        <span class="rk-proj-val" style="color: #10b981;">100% Bezpieczne i wydajne</span>
                    </div>
                    <div class="rk-proj-data-row">
                        <span>Deska trójwarstwowa (R ~ 0,12 m²K/W)</span>
                        <span class="rk-proj-val val-warning">Wysokie ryzyko kondensacji</span>
                    </div>
                </div>
            </div>

            <div class="rk-proj-panel" id="panel-hydro">
                <h3>Wyzwanie dla przepływów i pompy obiegowej</h3>
                <p>Chłodzenie pracuje na znacznie mniejszej różnicy temperatur (tzw. Delta T wynosi tylko około 3 Kelwinów) niż ogrzewanie (gdzie Delta T to często 5-8 Kelwinów). Fizyka jest nieubłagana: aby przenieść tę samą moc w kW przy tak małej różnicy temperatur, przez system musi przepłynąć blisko dwukrotnie więcej litrów wody na minutę!</p>
                <p>Aby uniknąć gigantycznych strat ciśnienia i piszczących instalacji, inżynier projektuje bardzo krótkie pętle grzewcze (max 80 metrów) oraz dobiera <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompę obiegową</a> o znacznie większej wysokości podnoszenia, najczęściej z indeksem EEI <= 0,20.</p>
                
                <div class="rk-proj-data-box">
                    <h4>Krytyczne parametry dla hydrauliki</h4>
                    <div class="rk-proj-data-row">
                        <span>Różnica temperatur (Delta T) przy chłodzeniu</span>
                        <span class="rk-proj-val">Zaledwie 3 Kelwiny</span>
                    </div>
                    <div class="rk-proj-data-row">
                        <span>Przepływ masowy wody dla mocy 4,0 kW</span>
                        <span class="rk-proj-val">Aż 1,15 m³/h (potężny strumień)</span>
                    </div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-proj-cta-section">
        <h3 class="rk-proj-cta-title">Nie zgaduj. Zbuduj dom w oparciu o twarde liczby.</h3>
        <p class="rk-proj-cta-desc">
            Instalator układający rury "z pamięci" nie uchroni Cię przed fizyką i punktem rosy. Zabezpiecz swoją podłogę, uzyskaj idealny komfort letni i zimowy dzięki rygorystycznym obliczeniom inżynierskim.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-premium">
            ZAMÓW PROFESJONALNY PROJEKT OGRZEWANIA Z CHŁODZENIEM
            <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="M5 12h14"></path><path d="M12 5l7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const projTabs = document.querySelectorAll('.rk-proj-tab');
    const projPanels = document.querySelectorAll('.rk-proj-panel');

    projTabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Usunięcie klas aktywnych ze wszystkich zakładek bez '&&'
            projTabs.forEach(function(t) {
                t.classList.remove('active');
            });
            
            // Usunięcie klas aktywnych ze wszystkich paneli
            projPanels.forEach(function(p) {
                p.classList.remove('active');
            });
            
            // Aktywacja klikniętej zakładki i powiązanego panelu
            this.classList.add('active');
            const targetPanel = document.getElementById(targetId);
            if (targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-blue: #0284c7;
    --rk-err-light-blue: #f0f9ff;
    --rk-err-red: #ef4444;
    --rk-err-red-light: #fef2f2;
    --rk-err-orange: #f97316;
    --rk-err-gray: #64748b;
    --rk-err-border: #e2e8f0;
    --rk-err-bg: #ffffff;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(239, 68, 68, 0.08);
    border: 1px solid var(--rk-err-border);
    overflow: hidden;
}

.rk-err-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #fff1f2 0%, #ffffff 100%);
    border-bottom: 1px solid rgba(239, 68, 68, 0.2);
    position: relative;
}

.rk-err-header::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 100%; height: 4px;
    background: var(--rk-err-red);
}

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

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

/* Układ Diagnozy */
.rk-err-layout {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: #ffffff;
}

/* Lista Błędów (Nawigacja) */
.rk-err-list {
    background: #f8fafc;
    border-right: 1px solid var(--rk-err-border);
    padding: 20px 0;
}

.rk-err-btn {
    width: 100%;
    text-align: left;
    padding: 20px 30px;
    background: transparent;
    border: none;
    border-left: 4px solid transparent;
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-err-gray);
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-err-btn:hover {
    background: #f1f5f9;
    color: var(--rk-err-dark);
}

.rk-err-btn.active {
    background: #ffffff;
    color: var(--rk-err-red);
    border-left-color: var(--rk-err-red);
    box-shadow: -2px 0 10px rgba(0,0,0,0.02);
}

.rk-err-btn-num {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-err-border);
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-err-gray);
    transition: all 0.3s;
}

.rk-err-btn.active .rk-err-btn-num {
    background: var(--rk-err-red);
    color: #ffffff;
}

/* Wyświetlacz Konsekwencji */
.rk-err-display {
    padding: 40px 50px;
    position: relative;
}

.rk-err-content {
    display: none;
    animation: slideIn 0.4s ease-out;
}

.rk-err-content.active {
    display: block;
}

@keyframes slideIn {
    from { opacity: 0; transform: translateX(10px); }
    to { opacity: 1; transform: translateX(0); }
}

.rk-err-warning-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-err-red-light);
    color: var(--rk-err-red);
    padding: 6px 14px;
    border-radius: 99px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 20px;
}

.rk-err-content h3 {
    font-size: 24px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-err-content p {
    font-size: 16px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 25px 0;
}

.rk-err-content a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
    transition: color 0.2s;
}

.rk-err-content a:hover {
    color: var(--rk-err-dark);
}

.rk-err-visual {
    background: #f8fafc;
    border: 1px dashed #cbd5e1;
    border-radius: 16px;
    padding: 30px;
    text-align: center;
}

.rk-err-svg {
    width: 100%;
    max-width: 140px;
    height: auto;
    margin: 0 auto;
}

.anim-pulse-red {
    transform-origin: center;
    animation: pulseError 2s infinite;
}

@keyframes pulseError {
    0% { transform: scale(0.95); opacity: 0.8; }
    50% { transform: scale(1.05); opacity: 1; filter: drop-shadow(0 0 8px rgba(239, 68, 68, 0.4)); }
    100% { transform: scale(0.95); opacity: 0.8; }
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-display { padding: 30px 20px; }
    .rk-err-layout { display: flex; flex-direction: column; }
    .rk-err-list { border-right: none; border-bottom: 1px solid var(--rk-err-border); display: flex; overflow-x: auto; scroll-snap-type: x mandatory; padding: 15px; gap: 10px; background: #ffffff; }
    .rk-err-btn { flex: 0 0 85%; scroll-snap-align: center; background: #f8fafc; border: 1px solid var(--rk-err-border); border-radius: 12px; padding: 15px; border-left: 1px solid var(--rk-err-border); flex-direction: column; text-align: center; align-items: center; justify-content: center; gap: 10px; }
    .rk-err-btn.active { border-color: var(--rk-err-red); background: var(--rk-err-red-light); box-shadow: none; border-left: 1px solid var(--rk-err-red); }
    .rk-err-content h3 { font-size: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Najczęstsze błędy wykonawcze i projektowe niszczące posadzkę",
    "description": "Katalog krytycznych błędów przy chłodzeniu podłogowym: od braku dylatacji, przez złe zawory mieszające, aż po ignorowanie strefowej kontroli wilgotności.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-bledy",
    "name": "Katalog Błędów Instalacyjnych Chłodzenia Płaszczyznowego",
    "description": "Zbiór danych technicznych analizujący wpływ błędów montażowych na ryzyko kondensacji i uszkodzenia posadzki chłodzącej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy chłodzenia podłogowego",
      "kondensacja posadzki",
      "dylatacja wylewki chłodzącej",
      "grubość styropianu podłogówka",
      "zawór mieszający chłodzenie"
    ],
    "measurementTechnique": "Analiza awaryjności systemów HVAC na podstawie przekroczenia wilgotności RH 65% oraz norm dylatacyjnych DIN 18560.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Awaria 1: Brak termohigrometrów w strefach mokrych.",
        "Awaria 2: Sztywne parametry 16°C na zaworze manualnym.",
        "Awaria 3: Układ meandrowy generujący gradient temperatur.",
        "Awaria 4: EPS poniżej 15 cm (kondensacja kapilarna).",
        "Awaria 5: Brak profili dylatacyjnych DIN 18560."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-skaner",
    "name": "Symulator Konsekwencji Błędów Montażowych",
    "description": "Narzędzie diagnostyczne pozwalające inwestorom zweryfikować skutki fizyczne najpopularniejszych błędów instalatorów na etapie projektowania podłogówki.",
    "applicationCategory": "DiagnosticApplication",
    "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">
        <h2>Najczęstsze błędy wykonawcze i projektowe niszczące posadzkę</h2>
        <p>Instalacja chłodzenia płaszczyznowego nie wybacza dróg na skróty. Sprawdź, jak jedna błędna decyzja instalatora może doprowadzić do katastrofy budowlanej w Twoim salonie.</p>
    </div>

    <div class="rk-err-layout">
        <div class="rk-err-list" id="rkErrNav">
            <button class="rk-err-btn active" data-target="err-1">
                <span class="rk-err-btn-num">1</span>
                Brak strefowej kontroli wilgotności
            </button>
            <button class="rk-err-btn" data-target="err-2">
                <span class="rk-err-btn-num">2</span>
                Manualne zawory mieszające
            </button>
            <button class="rk-err-btn" data-target="err-3">
                <span class="rk-err-btn-num">3</span>
                Pętle w układzie meandrowym
            </button>
            <button class="rk-err-btn" data-target="err-4">
                <span class="rk-err-btn-num">4</span>
                Zbyt cienka izolacja EPS na gruncie
            </button>
            <button class="rk-err-btn" data-target="err-5">
                <span class="rk-err-btn-num">5</span>
                Brak dylatacji (DIN 18560)
            </button>
        </div>

        <div class="rk-err-display" id="rkErrDisplay">
            
            <div class="rk-err-content active" id="err-1">
                <div class="rk-err-warning-badge">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    Skutek: Natychmiastowe wykroplenie
                </div>
                <h3>Brak strefowej kontroli wilgotności w pomieszczeniach mokrych</h3>
                <p>Uruchamianie chłodzenia w łazienkach lub kuchniach bez dedykowanych termohigrometrów odcinających pętle natychmiast po przekroczeniu progu wilgotności RH równego 65%. Skutkuje to natychmiastowym wykropleniem wody podczas kąpieli lub gotowania. Pamiętaj, jak istotne jest <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe ogrzewaniem</a> i chłodzeniem w takich przypadkach.</p>
                <div class="rk-err-visual">
                    <svg class="rk-err-svg anim-pulse-red" viewBox="0 0 100 100">
                        <path d="M50 20 C30 50, 20 70, 50 90 C80 70, 70 50, 50 20" fill="var(--rk-err-red)" opacity="0.8"/>
                        <path d="M45 45 Q50 60 55 45" fill="none" stroke="#ffffff" stroke-width="3" stroke-linecap="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-err-content" id="err-2">
                <div class="rk-err-warning-badge">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    Skutek: Zalanie podłóg w burzę
                </div>
                <h3>Zastosowanie manualnych zaworów bez siłowników</h3>
                <p>Ustawienie stałej temperatury na rozdzielaczu "na sztywno" na np. 16°C przez cały okres letni. W przypadku załamania pogody i nadejścia frontu burzowego, wilgotność na zewnątrz gwałtownie rośnie. Wtedy te 16°C staje się parametrem krytycznym powodującym zalanie budynku. Tylko automatyczny <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> chroni przed zmianami pogody.</p>
                <div class="rk-err-visual">
                    <svg class="rk-err-svg anim-pulse-red" viewBox="0 0 100 100">
                        <circle cx="50" cy="50" r="40" fill="none" stroke="var(--rk-err-red)" stroke-width="6"/>
                        <line x1="50" y1="20" x2="50" y2="50" stroke="var(--rk-err-red)" stroke-width="6" stroke-linecap="round"/>
                        <line x1="50" y1="50" x2="70" y2="70" stroke="var(--rk-err-red)" stroke-width="6" stroke-linecap="round"/>
                        <circle cx="50" cy="50" r="8" fill="var(--rk-err-dark)"/>
                    </svg>
                </div>
            </div>

            <div class="rk-err-content" id="err-3">
                <div class="rk-err-warning-badge">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    Skutek: Lokalne gnicie posadzki
                </div>
                <h3>Układanie pętli w układzie meandrowym</h3>
                <p>Zastosowanie <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/">układu meandrowego rur</a> generuje duży gradient temperatur. Początek strefy jest lodowaty, a koniec ciepły. W strefie napływu czynnika (najczęściej przy ścianie zewnętrznej) temperatura posadzki drastycznie spada poniżej punktu rosy, wywołując bezlitosne lokalne gnicie materiału wykończeniowego.</p>
                <div class="rk-err-visual">
                    <svg class="rk-err-svg" viewBox="0 0 100 100">
                        <polyline points="10 20 90 20 90 40 10 40 10 60 90 60 90 80 10 80" fill="none" stroke="url(#meanderGrad)" stroke-width="8" stroke-linecap="round" stroke-linejoin="round"/>
                        <defs>
                            <linearGradient id="meanderGrad" x1="0%" y1="0%" x2="0%" y2="100%">
                                <stop offset="0%" stop-color="var(--rk-err-blue)" />
                                <stop offset="100%" stop-color="var(--rk-err-red)" />
                            </linearGradient>
                        </defs>
                    </svg>
                </div>
            </div>

            <div class="rk-err-content" id="err-4">
                <div class="rk-err-warning-badge">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    Skutek: Kondensacja kapilarna w gruncie
                </div>
                <h3>Ignorowanie grubości styropianu na gruncie</h3>
                <p>Zastosowanie zbyt cienkiej warstwy izolacji termicznej pod rurami powoduje, że latem instalacja chłodząca zamiast chłodzić pokój, chłodzi ułożony niżej grunt. Prowadzi to do przesunięcia profilu temperatur w głąb struktury podłogi. Zawsze upewnij się <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">ile styropianu pod ogrzewanie podłogowe</a> zakłada projekt – absolutne minimum to 15 cm EPS 100.</p>
                <div class="rk-err-visual">
                    <svg class="rk-err-svg" viewBox="0 0 100 100">
                        <rect x="10" y="20" width="80" height="20" fill="#e2e8f0"/>
                        <rect x="10" y="45" width="80" height="10" fill="var(--rk-err-blue)"/>
                        <path d="M10 60 Q 30 50, 50 60 T 90 60 V 90 H 10 Z" fill="#8b5cf6" opacity="0.3"/>
                        <line x1="30" y1="70" x2="30" y2="55" stroke="var(--rk-err-blue)" stroke-width="2" stroke-dasharray="2 2" marker-end="url(#arrow)"/>
                        <line x1="70" y1="70" x2="70" y2="55" stroke="var(--rk-err-blue)" stroke-width="2" stroke-dasharray="2 2" marker-end="url(#arrow)"/>
                    </svg>
                </div>
            </div>

            <div class="rk-err-content" id="err-5">
                <div class="rk-err-warning-badge">
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" 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>
                    Skutek: Pękanie jastrychu i odspajanie płytek
                </div>
                <h3>Brak dylatacji i taśmy brzegowej</h3>
                <p>Podczas chłodzenia wylewka betonowa kurczy się, a zimą rozszerza. Brak zastosowania pełnych profili dylatacyjnych (zgodnie z normą DIN 18560) oraz <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacji brzegowej i dylatacji</a> z pianki polietylenowej o grubości minimum 8 mm, prowadzi do powstawania naprężeń ścinających na granicach stref.</p>
                <div class="rk-err-visual">
                    <svg class="rk-err-svg anim-pulse-red" viewBox="0 0 100 100">
                        <rect x="10" y="30" width="38" height="40" fill="#cbd5e1" rx="4"/>
                        <rect x="52" y="30" width="38" height="40" fill="#cbd5e1" rx="4"/>
                        <path d="M48 20 L55 45 L45 55 L52 80" fill="none" stroke="var(--rk-err-red)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
                    </svg>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const errBtns = document.querySelectorAll('.rk-err-btn');
    const errContents = document.querySelectorAll('.rk-err-content');

    errBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Czyszczenie klas aktywnych (Bez użycia && dla bezpieczeństwa)
            errBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            errContents.forEach(function(c) {
                c.classList.remove('active');
            });
            
            // Ustawienie nowej klasy aktywnej
            this.classList.add('active');
            
            // Wyszukanie docelowego kontenera i aktywacja
            const targetContent = document.getElementById(targetId);
            if (targetContent) {
                targetContent.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-light: #f8fafc;
    --rk-case-gray: #64748b;
    --rk-case-border: #e2e8f0;
    --rk-case-bg: #ffffff;
    --rk-case-accent: #f59e0b;
    --rk-case-success: #10b981;
}

.rk-case-wrapper {
    max-width: 950px;
    margin: 40px 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.1);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

.rk-case-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, var(--rk-case-dark) 0%, #1e293b 100%);
    color: #ffffff;
    position: relative;
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    color: var(--rk-case-accent);
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
    border: 1px solid rgba(245, 158, 11, 0.3);
}

.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: 16px;
    color: #cbd5e1;
    line-height: 1.6;
    margin: 0;
}

/* Profil Inwestora (Persona) */
.rk-case-persona {
    display: grid;
    grid-template-columns: 1fr 2fr;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-case-border);
}

.rk-persona-avatar {
    padding: 30px 40px;
    background: var(--rk-case-light);
    border-right: 1px solid var(--rk-case-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.rk-avatar-icon {
    width: 80px;
    height: 80px;
    background: #e0f2fe;
    color: var(--rk-case-blue);
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-avatar-name {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 5px 0;
}

.rk-avatar-detail {
    font-size: 14px;
    color: var(--rk-case-gray);
    font-weight: 600;
}

.rk-persona-stats {
    padding: 30px 40px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    align-items: center;
}

.rk-stat-box {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.rk-stat-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-case-gray);
}

.rk-stat-val {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-case-dark);
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-stat-val svg { color: var(--rk-case-blue); }

/* Interaktywny Moduł Projektowy */
.rk-case-module {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-case-nav {
    display: flex;
    gap: 10px;
    margin-bottom: 30px;
}

.rk-case-tab {
    flex: 1;
    background: var(--rk-case-light);
    border: 2px solid var(--rk-case-border);
    padding: 16px 20px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-gray);
    cursor: pointer;
    text-align: center;
    transition: all 0.3s;
}

.rk-case-tab:hover {
    border-color: var(--rk-case-blue);
    color: var(--rk-case-blue);
}

.rk-case-tab.active {
    background: var(--rk-case-blue);
    border-color: var(--rk-case-blue);
    color: #ffffff;
    box-shadow: 0 8px 15px -5px rgba(2, 132, 199, 0.3);
}

.rk-case-content {
    display: none;
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 30px;
    animation: caseFade 0.4s ease-out;
}

.rk-case-content.active {
    display: block;
}

@keyframes caseFade {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

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

.rk-case-content p {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 20px 0;
}

.rk-case-content a {
    color: var(--rk-case-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-case-solution-box {
    background: #f0fdf4;
    border-left: 4px solid var(--rk-case-success);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 20px;
}

.rk-case-solution-box h4 {
    margin: 0 0 10px 0;
    color: #065f46;
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
}

/* Tagi Długiego Ogona */
.rk-case-tags {
    padding: 0 50px 40px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.rk-mat-tag {
    display: inline-block;
    padding: 6px 14px;
    background: #f1f5f9;
    border: 1px solid var(--rk-case-border);
    border-radius: 99px;
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-case-gray);
}

@media (max-width: 768px) {
    .rk-case-header, .rk-case-module, .rk-case-tags { padding: 30px 20px; }
    .rk-case-persona { grid-template-columns: 1fr; }
    .rk-persona-avatar { border-right: none; border-bottom: 1px solid var(--rk-case-border); padding: 20px; }
    .rk-persona-stats { grid-template-columns: 1fr; gap: 15px; padding: 20px; }
    .rk-case-nav { flex-direction: column; gap: 10px; }
    .rk-case-content { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Case Study: Zabezpieczenie chłodzenia podłogowego w nowym domu przed wylewkami",
    "description": "Studium przypadku inwestora z Podkarpacia. Diagnoza zysków ciepła w salonie z dużymi oknami i wdrożenie automatyki chroniącej przed punktem rosy.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-casestudy",
    "name": "Dane projektowe inwestycji referencyjnej (Chłodzenie)",
    "description": "Weryfikacja empiryczna parametrów dla nowo budowanego domu (etap dachu). Korelacja wielkości przeszkleń z mocą chłodniczą wylewki.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "chłodzenie podłogówki na podkarpaciu",
      "kalkulacja zysków ciepła duże okna",
      "jak zabezpieczyć posadzkę przed wylewkami",
      "punkt rosy w nowym domu",
      "rozstaw rur pod duże przeszklenia"
    ],
    "measurementTechnique": "Kalkulacja zysków cieplnych z uwzględnieniem orientacji południowo-zachodniej oraz optymalizacja grubości i rodzaju jastrychu grzewczo-chłodzącego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Problem: Przegrzewanie salonu latem (zyski > 65 W/m2) z ryzykiem skroplin przy dużych witrynach.",
        "Diagnoza: Podłogówka w standardzie 15 cm nie pokryje zapotrzebowania i stworzy strefy rosy.",
        "Rozwiązanie: Zagęszczenie do 10 cm, wylewka betonowa wysokoprzewodząca i moduł Dew Point Control z czujnikami ściennymi."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-casestudy",
    "name": "Przeglądarka Case Study HVAC",
    "description": "Moduł ułatwiający inwestorom analizę realnych problemów instalacyjnych poprzez nawigację Problem-Diagnoza-Rozwiązanie.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-wrapper" id="rk-case-app">
    <div class="rk-case-header">
        <div class="rk-case-badge">Case Study #402</div>
        <h2>Praktyka Inżynierska: Ucieczka przed punktem rosy</h2>
        <p>Teoria fizyki budowli to jedno, ale jak wygląda to na prawdziwej budowie? Prześledźmy realny proces projektowy na przykładzie inwestora, który w porę zrezygnował z układania rur "na oko".</p>
    </div>

    <div class="rk-case-persona">
        <div class="rk-persona-avatar">
            <div class="rk-avatar-icon">
                <svg width="36" height="36" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </div>
            <h3 class="rk-avatar-name">Patryk (47 lat)</h3>
            <span class="rk-avatar-detail">Województwo Podkarpackie</span>
        </div>
        <div class="rk-persona-stats">
            <div class="rk-stat-box">
                <span class="rk-stat-label">Etap budowy</span>
                <span class="rk-stat-val">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-success)" stroke-width="2.5"><polyline points="20 6 9 17 4 12"></polyline></svg>
                    Dach ukończony (SSZ)
                </span>
            </div>
            <div class="rk-stat-box">
                <span class="rk-stat-label">Najbliższe prace</span>
                <span class="rk-stat-val">
                    <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>
                    Instalacja rur i wylewki
                </span>
            </div>
            <div class="rk-stat-box">
                <span class="rk-stat-label">Źródło chłodu</span>
                <span class="rk-stat-val">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                    Rewersyjna Pompa Ciepła
                </span>
            </div>
            <div class="rk-stat-box">
                <span class="rk-stat-label">Główne Wyzwanie</span>
                <span class="rk-stat-val">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="var(--rk-case-accent)" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
                    Przeszklony salon (Południe)
                </span>
            </div>
        </div>
    </div>

    <div class="rk-case-module">
        <div class="rk-case-nav">
            <button class="rk-case-tab active" data-tab="problem">1. Wyzwanie</button>
            <button class="rk-case-tab" data-tab="diagnoza">2. Diagnoza OZC</button>
            <button class="rk-case-tab" data-tab="wydrozenie">3. Rozwiązanie</button>
        </div>

        <div class="rk-case-content active" id="tab-problem">
            <h3>Wyzwanie: Piekarnik w salonie a ryzyko kondensacji</h3>
            <p>Inwestor planuje nowoczesną bryłę z 6-metrowym oknem przesuwnym w salonie od strony południowo-zachodniej. Z uwagi na specyfikę letnich, parnych burz na Podkarpaciu, wilgotność w budynku często przekracza 65%.</p>
            <p>Pierwotny hydraulik zalecił "standardowe ułożenie rur co 15 cm" na całym parterze. <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">Strefa przy oknach z dużymi przeszkleniami</a> generowała jednak olbrzymie zyski ciepła. Próba schłodzenia tego pomieszczenia standardowym układem wymusiłaby podanie wody o temperaturze 14°C, co natychmiast wywołałoby skraplanie na całej powierzchni posadzki.</p>
        </div>

        <div class="rk-case-content" id="tab-diagnoza">
            <h3>Diagnoza: Kalkulacja zysków bez złudzeń</h3>
            <p>Zanim hydraulik wszedł na budowę, przygotowaliśmy precyzyjny <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">kalkulator zapotrzebowania cieplnego</a> (OZC dla trybu letniego). Wyliczenia wykazały, że przy oknie zyski ciepła wynoszą aż 65 W/m².</p>
            <p>Z uwagi na punkt rosy przy wilgotności 60% w regionie, bezpieczna temperatura wylewki została ograniczona do minimum 19°C. Przy tych parametrach podłoga mogła oddać maksymalnie 30 W/m² mocy chłodniczej z zachowaniem pełnego bezpieczeństwa. Stwierdzono jednoznacznie: standardowy układ hydrauliczny to gwarancja awarii.</p>
        </div>

        <div class="rk-case-content" id="tab-wydrozenie">
            <h3>Wdrożenie: Świadome projektowanie przed wylewkami</h3>
            <p>Na podstawie twardych danych zmieniliśmy architekturę instalacji. W strefie salonu zagęściliśmy rury do 10 cm w bezwzględnym układzie ślimakowym, wyrównując rozkład temperatur. Zadbaliśmy również o to, by <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">grubość wylewki betonowej</a> została zoptymalizowana pod kątem szybkiego przewodzenia chłodu.</p>
            
            <div class="rk-case-solution-box">
                <h4>System Zabezpieczony (Sukces)</h4>
                <p style="margin:0; color:#064e3b; font-size:14px;">
                    Zastosowano centralę sterującą KNX z modułem Dew Point Control. Higrometry ścienne w sposób ciągły analizują stan powietrza. Jeśli nad Podkarpaciem przechodzi burza i wilgotność w salonie dobija do 70%, automatyka płynnie przymyka zawór mieszający, podnosząc temperaturę zasilania i blokując powstawanie kondensatu, jeszcze zanim na podłodze pojawi się pierwsza kropla wody.
                </p>
            </div>
        </div>
    </div>

    <div class="rk-case-tags">
        <span class="rk-mat-tag"># chłodzenie podłogówki na podkarpaciu</span>
        <span class="rk-mat-tag"># punkt rosy w nowym domu</span>
        <span class="rk-mat-tag"># zabezpieczenie posadzki przed wylewkami</span>
        <span class="rk-mat-tag"># zyski ciepła przy dużych oknach</span>
        <span class="rk-mat-tag"># rozstaw rur dla chłodzenia</span>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const caseTabs = document.querySelectorAll('.rk-case-tab');
    const caseContents = document.querySelectorAll('.rk-case-content');

    caseTabs.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-tab');
            
            // Czyszczenie klas aktywnych bez '&&' dla pełnego bezpieczeństwa
            caseTabs.forEach(function(t) {
                t.classList.remove('active');
            });
            caseContents.forEach(function(c) {
                c.classList.remove('active');
            });
            
            // Aktywacja wybranych
            this.classList.add('active');
            const contentPanel = document.getElementById('tab-' + targetId);
            
            if (contentPanel !== null) {
                contentPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0284c7;
    --rk-auth-blue-bg: #f0f9ff;
    --rk-auth-gray: #64748b;
    --rk-auth-border: #e2e8f0;
    --rk-auth-bg: #ffffff;
    --rk-auth-text: #334155;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 0; /* Surowy, inżynierski wygląd */
    border: 2px solid var(--rk-auth-dark);
    box-shadow: 8px 8px 0px var(--rk-auth-blue);
    overflow: hidden;
}

.rk-auth-header {
    background: var(--rk-auth-dark);
    padding: 30px 40px;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-auth-header svg {
    color: var(--rk-auth-blue);
    flex-shrink: 0;
}

.rk-auth-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0;
    letter-spacing: -0.5px;
    color: #ffffff;
}

.rk-auth-body {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: #ffffff;
}

/* Sekcja Profilu */
.rk-auth-profile {
    padding: 40px;
    border-right: 2px solid var(--rk-auth-dark);
    background: #f8fafc;
    text-align: center;
}

.rk-auth-photo {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    border: 4px solid var(--rk-auth-dark);
    margin: 0 auto 20px;
    object-fit: cover;
    box-shadow: 4px 4px 0px var(--rk-auth-blue);
    display: block;
}

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 5px 0;
}

.rk-auth-role {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-auth-blue);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin: 0 0 20px 0;
}

.rk-auth-socials {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-top: 20px;
}

.rk-auth-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    background: var(--rk-auth-dark);
    color: #ffffff;
    border-radius: 8px;
    text-decoration: none;
}

.rk-auth-social-link:hover {
    background: var(--rk-auth-blue);
}

/* Sekcja Treści i Zasad */
.rk-auth-content {
    padding: 40px;
}

.rk-auth-quote {
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-auth-text);
    line-height: 1.6;
    margin: 0 0 30px 0;
    padding-left: 20px;
    border-left: 6px solid var(--rk-auth-blue);
    font-style: italic;
}

.rk-auth-rules-title {
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    color: var(--rk-auth-dark);
    margin: 0 0 20px 0;
    padding-bottom: 10px;
    border-bottom: 2px solid var(--rk-auth-border);
}

/* Interaktywny Panel Bez Animacji */
.rk-auth-nav {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 25px;
}

.rk-auth-tab-btn {
    background: #ffffff;
    border: 2px solid var(--rk-auth-border);
    padding: 16px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-auth-gray);
    cursor: pointer;
    text-align: left;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-auth-tab-btn:hover {
    border-color: var(--rk-auth-dark);
    color: var(--rk-auth-dark);
}

.rk-auth-tab-btn.active {
    background: var(--rk-auth-dark);
    border-color: var(--rk-auth-dark);
    color: #ffffff;
}

.rk-auth-panel {
    display: none;
    background: var(--rk-auth-blue-bg);
    border: 2px solid var(--rk-auth-blue);
    padding: 25px;
}

.rk-auth-panel.active {
    display: block;
}

.rk-auth-panel h4 {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0 0 10px 0;
}

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

.rk-auth-panel strong {
    color: var(--rk-auth-blue);
}

@media (max-width: 768px) {
    .rk-auth-header { padding: 25px 20px; }
    .rk-auth-header h2 { font-size: 22px; }
    .rk-auth-body { grid-template-columns: 1fr; }
    .rk-auth-profile { border-right: none; border-bottom: 2px solid var(--rk-auth-dark); padding: 30px 20px; }
    .rk-auth-content { padding: 30px 20px; }
    .rk-auth-photo { width: 120px; height: 120px; }
    .rk-auth-quote { font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Zdaniem eksperta: Robert Kucharski o bezpieczeństwie chłodzenia",
    "description": "Autorskie podsumowanie inwestycyjne. 3 żelazne zasady ochrony posadzki przed punktem rosy i zalaniem przy wykorzystaniu 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": "CEO & Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "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-06-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-zlote-zasady",
    "name": "Eksperckie wytyczne instalacyjne (Złote Zasady Kucharskiego)",
    "description": "Zbiór autorskich, inżynierskich zasad zabezpieczających układy chłodzenia płaszczyznowego przed awarią termodynamiczną.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "robert kucharski projekt ogrzewania",
      "zasady chłodzenia podłogowego",
      "ekspert hvac punkt rosy",
      "zabezpieczenie pompy ciepła latem",
      "bezpieczny projekt podłogówki"
    ],
    "measurementTechnique": "Weryfikacja empiryczna na bazie setek zrealizowanych projektów, zestawiająca twarde wymogi OZC z automatyką wykonawczą.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zasada 1: Fizyka nie negocjuje. Bez sprzętowego układu Dew Point Control instalacja jest skazana na awarię.",
        "Zasada 2: Projekt to fundament. Zagęszczony rozstaw i analiza zysków ciepła to warunek skuteczności.",
        "Zasada 3: Chłodzenie bez wentylacji to półśrodek. Wilgoć utajona musi zostać odprowadzona."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-panel-eksperta",
    "name": "Interaktywny Przewodnik Inwestora",
    "description": "Moduł podsumowujący pozwalający na przegląd kluczowych decyzji inwestycyjnych wymaganych do bezpiecznej realizacji układu chłodzenia.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container" id="rk-auth-app">
    <div class="rk-auth-header">
        <svg width="32" height="32" 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>
        <h2>Zdaniem eksperta: Robert Kucharski</h2>
    </div>

    <div class="rk-auth-body">
        
        <div class="rk-auth-profile">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Ekspert HVAC" class="rk-auth-photo" loading="lazy">
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <p class="rk-auth-role">CEO & Specjalista HVAC</p>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-auth-social-link" title="Obserwuj na Facebooku">
                    <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="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-auth-social-link" title="Połącz na LinkedIn">
                    <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="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>
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            <blockquote class="rk-auth-quote">
                "Fizyka budowli nie negocjuje. Wpuszczenie zimnej wody z pompy ciepła w rury podłogowe bez odpowiedniego projektu i automatyki to nie oszczędność – to wyrok na Twoją posadzkę. Punkt rosy zawsze wygrywa z wykonawstwem 'na oko'."
            </blockquote>

            <h4 class="rk-auth-rules-title">3 Żelazne Zasady Inwestora</h4>
            
            <div class="rk-auth-nav">
                <button class="rk-auth-tab-btn active" data-rule="1">
                    1. Projekt jest ważniejszy niż sprzęt
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-auth-panel active" id="rule-1">
                    <h4>Bez OZC działasz w ciemno</h4>
                    <p>Aby chłodzenie było bezpieczne, musimy znać letnie zyski ciepła. System wymaga zagęszczonego układu rur i rygorystycznego doboru pompy obiegowej ze względu na zwiększone przepływy. <strong>Brak dedykowanego projektu to najdroższy błąd.</strong></p>
                </div>

                <button class="rk-auth-tab-btn" data-rule="2">
                    2. Tarcza ochronna to konieczność
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-auth-panel" id="rule-2">
                    <h4>Inteligentna obrona przed wilgocią</h4>
                    <p>Standard Dew Point Control z zaworem mieszającym oraz czujnikami w każdym pomieszczeniu to absolutne minimum. Automatyka musi mieć możliwość natychmiastowego odcięcia wilgotnych stref (np. łazienki), chroniąc dom przed zalaniem.</p>
                </div>

                <button class="rk-auth-tab-btn" data-rule="3">
                    3. Synergia z wentylacją
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                <div class="rk-auth-panel" id="rule-3">
                    <h4>Zapanuj nad wilgocią utajoną</h4>
                    <p>Chłodna podłoga nie osusza powietrza. Jeśli zależy Ci na stałym komforcie bez ryzyka skraplania podczas letnich burz, system podłogowy musi współpracować z centralą wentylacyjną (rekuperatorem) wyposażonym w skuteczną funkcję obniżania wilgotności.</p>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabBtns = document.querySelectorAll('.rk-auth-tab-btn');
    const panels = document.querySelectorAll('.rk-auth-panel');

    tabBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const ruleTarget = this.getAttribute('data-rule');
            
            // Twarde przełączanie bez użycia niedozwolonych znaków
            tabBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            
            panels.forEach(function(p) {
                p.classList.remove('active');
            });
            
            this.classList.add('active');
            
            const targetPanel = document.getElementById('rule-' + ruleTarget);
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0284c7;
    --rk-faq-light-blue: #f0f9ff;
    --rk-faq-green: #10b981;
    --rk-faq-red: #ef4444;
    --rk-faq-gray: #64748b;
    --rk-faq-border: #e2e8f0;
    --rk-faq-bg: #ffffff;
}

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

.rk-faq-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
    border-bottom: 1px solid var(--rk-faq-border);
}

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

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

/* Interaktywny Symulator Automatyki */
.rk-interactive-sim {
    padding: 30px 50px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-faq-border);
    display: flex;
    align-items: center;
    gap: 30px;
}

.rk-sim-controls {
    flex: 1;
}

.rk-sim-controls h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-faq-dark);
    margin: 0 0 15px 0;
}

.rk-switch-container {
    display: flex;
    align-items: center;
    gap: 15px;
    background: #f8fafc;
    padding: 15px 20px;
    border-radius: 16px;
    border: 1px solid var(--rk-faq-border);
}

.rk-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
}

.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-faq-green);
    transition: .4s;
    border-radius: 34px;
}

.rk-slider:before {
    position: absolute;
    content: "";
    height: 26px;
    width: 26px;
    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-faq-red);
}

input:checked + .rk-slider:before {
    transform: translateX(26px);
}

.rk-switch-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-faq-dark);
}

.rk-sim-visual {
    width: 120px;
    text-align: center;
}

.rk-svg-icon {
    width: 100%;
    height: auto;
    transition: all 0.4s ease;
}

#svg-safe { display: block; fill: var(--rk-faq-green); }
#svg-danger { display: none; fill: var(--rk-faq-red); }

/* Akordeon FAQ */
.rk-faq-body {
    padding: 20px 50px 40px;
    background: #ffffff;
}

.rk-accordion-item {
    border-bottom: 1px solid var(--rk-faq-border);
}

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

.rk-accordion-btn {
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    padding: 25px 0;
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: color 0.3s;
}

.rk-accordion-btn:hover {
    color: var(--rk-faq-blue);
}

.rk-icon-plus {
    position: relative;
    width: 24px;
    height: 24px;
    flex-shrink: 0;
}

.rk-icon-plus::before, .rk-icon-plus::after {
    content: '';
    position: absolute;
    background-color: var(--rk-faq-blue);
    transition: transform 0.3s ease;
}

.rk-icon-plus::before {
    top: 11px; left: 4px; width: 16px; height: 2px;
}

.rk-icon-plus::after {
    top: 4px; left: 11px; width: 2px; height: 16px;
}

.rk-accordion-btn.active .rk-icon-plus::after {
    transform: rotate(90deg);
    opacity: 0;
}

.rk-accordion-btn.active .rk-icon-plus::before {
    transform: rotate(180deg);
}

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

.rk-accordion-inner {
    padding: 0 0 25px 0;
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
}

.rk-accordion-inner a {
    color: var(--rk-faq-blue);
    font-weight: 600;
    text-decoration: none;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s;
}

.rk-accordion-inner a:hover {
    border-bottom-color: var(--rk-faq-blue);
}

@media (max-width: 768px) {
    .rk-faq-header, .rk-interactive-sim, .rk-faq-body { padding: 30px 20px; }
    .rk-interactive-sim { flex-direction: column; text-align: center; gap: 20px; }
    .rk-switch-container { justify-content: center; flex-direction: column; }
    .rk-accordion-btn { font-size: 16px; padding: 20px 0; gap: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy chłodzenie podłogowe może doprowadzić do powstania pleśni w domu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, jeśli system nie posiada automatyki kontrolującej punkt rosy, obniżenie temperatury posadzki przy wysokiej wilgotności (RH powyżej 70%) wywoła kondensację powierzchniową wody. Stała obecność wilgoci w szczelinach dylatacyjnych i strefach przyściennych tworzy idealne środowisko do rozwoju zarodników grzybów pleśniowych i destrukcji jastrychu."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest minimalna bezpieczna temperatura wody na zasilaniu rozdzielacza latem?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Minimalna bezpieczna temperatura czynnika chłodniczego wprowadzana w pętle podłogowe wynosi standardowo 16°C - 18°C. Dokładna wartość musi być na bieżąco korygowana przez zawór mieszający automatyki, tak aby temperatura powierzchni posadzki była zawsze o co najmniej 1,5°C wyższa od aktualnej temperatury punktu rosy."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można bezpiecznie chłodzić pomieszczenia z podłogą drewnianą lub panelami?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Chłodzenie stref z wykończeniem drewnianym jest wysoce ryzykowne z powodu dużego oporu cieplnego drewna (R około 0,12 m²K/W) oraz jego podatności na pęcznienie pod wpływem wilgoci. W takich pomieszczeniach dopuszcza się chłodzenie wyłącznie przy restrykcyjnym ograniczeniu temperatury zasilania do minimum 19°C i ciągłej kontroli wilgotności przez cyfrowe higrostaty."
        }
      },
      {
        "@type": "Question",
        "name": "Jak zabezpieczyć instalację przed kondensacją w przypadku awarii automatyki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Podstawowym zabezpieczeniem mechanicznym jest montaż higrostatu przylgowego (czujnika kondensacji) bezpośrednio na metalowej rurze zasilającej rozdzielacz podłogówki. W przypadku pojawienia się pierwszych mikro-kropel wody, czujnik ten natychmiast przerywa obwód elektryczny i sprzętowo odcina zasilanie pompy obiegowej, zapobiegając zalaniu domu."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego tradycyjna klimatyzacja radzi sobie z wilgocią lepiej niż podłogówka?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Klimatyzacja (chłodzenie konwekcyjne) pracuje na bardzo niskich temperaturach czynnika (6°C - 8°C), przez co powietrze przepływające przez parownik jednostki wewnętrznej celowo i głęboko przekracza punkt rosy, oddając wilgoć, która jest odprowadzana rurką skroplin. Chłodzenie podłogowe obniża temperaturę bez separacji wody, dlatego bez wsparcia rekuperacji z chłodnicą kanałową nie jest w stanie osuszyć powietrza."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#faq-chlodzenie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "FAQ – Najważniejsze pytania o punkt rosy i bezpieczne chłodzenie",
    "description": "Baza wiedzy inwestora. Odpowiedzi inżyniera na najczęstsze pytania dotyczące punktu rosy, minimalnej temperatury zasilania i ryzyka pleśni przy chłodzeniu podłogowym.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-faq",
    "name": "Katalog parametrów krytycznych chłodzenia płaszczyznowego",
    "description": "Zestawienie bezpiecznych temperatur zasilania, oporów cieplnych i wartości granicznych wilgotności dla instalacji ogrzewania i chłodzenia podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "minimalna temperatura zasilania podłogówki",
      "punkt rosy klimatyzacja a podłogówka",
      "chłodzenie podłogi drewnianej",
      "hygrostat przylgowy zasada działania",
      "ryzyko pleśni przy chłodzeniu"
    ],
    "measurementTechnique": "Określanie bezpiecznych limitów termodynamicznych na podstawie oporu cieplnego posadzek i wilgotności względnej powietrza.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezpieczna temperatura zasilania rozdzielacza: 16-18°C.",
        "Limit wilgotności względnej w pomieszczeniu: max 70%.",
        "Opór cieplny podłogi drewnianej: ok. 0,12 m²K/W (ryzyko kondensacji)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-faq",
    "name": "Interaktywny Akordeon Bazy Wiedzy HVAC",
    "description": "Aplikacja webowa ułatwiająca nawigację po skomplikowanych problemach inżynierskich poprzez układ pionowy z symulatorem stanu automatyki Dew Point Control.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-wrapper">
    <div class="rk-faq-header">
        <h2>FAQ – Najważniejsze pytania o punkt rosy i bezpieczne chłodzenie płaszczyznowe</h2>
        <p>Rozwiewamy inżynierskie wątpliwości. Dowiedz się, dlaczego fizyka budowli nie wybacza błędów i jak zabezpieczyć swój dom przed awarią.</p>
    </div>

    <div class="rk-interactive-sim">
        <div class="rk-sim-controls">
            <h3>Sprawdź wpływ automatyki na posadzkę</h3>
            <div class="rk-switch-container">
                <span class="rk-switch-label" id="rk-status-text" style="color: var(--rk-faq-green);">Ochrona aktywna (Dew Point Control)</span>
                <label class="rk-switch">
                    <input type="checkbox" id="rk-mode-toggle">
                    <span class="rk-slider"></span>
                </label>
                <span style="font-size: 13px; color: #64748b;">Symuluj awarię</span>
            </div>
        </div>
        <div class="rk-sim-visual">
            <svg id="svg-safe" class="rk-svg-icon" viewBox="0 0 24 24" 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>
                <polyline points="9 12 11 14 15 10" stroke="#ffffff" stroke-width="3"></polyline>
            </svg>
            <svg id="svg-danger" class="rk-svg-icon" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
                <path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path>
                <line x1="12" y1="18" x2="12" y2="18" stroke="#ffffff" stroke-width="4"></line>
                <line x1="12" y1="10" x2="12" y2="14" stroke="#ffffff" stroke-width="3"></line>
            </svg>
        </div>
    </div>

    <div class="rk-faq-body">
        
        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <span>Czy chłodzenie podłogowe może doprowadzić do powstania pleśni w domu?</span>
                <div class="rk-icon-plus"></div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Tak, jeśli system nie posiada automatyki kontrolującej punkt rosy, obniżenie temperatury posadzki przy wysokiej wilgotności (RH powyżej 70%) wywoła kondensację powierzchniową wody. Stała obecność wilgoci w szczelinach dylatacyjnych i strefach przyściennych tworzy idealne środowisko do rozwoju zarodników grzybów pleśniowych i wpływa na to <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/">czy ogrzewanie podłogowe jest zdrowe</a> dla domowników, a także prowadzi do destrukcji jastrychu.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <span>Jaka jest minimalna bezpieczna temperatura wody na zasilaniu rozdzielacza latem?</span>
                <div class="rk-icon-plus"></div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Minimalna bezpieczna temperatura czynnika chłodniczego wprowadzana w pętle podłogowe wynosi standardowo 16°C - 18°C. Dokładna wartość musi być na bieżąco korygowana przez inteligentny <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a> współpracujący z zaworem mieszającym, tak aby temperatura powierzchni posadzki była zawsze o co najmniej 1,5°C wyższa od aktualnej temperatury punktu rosy.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <span>Czy można bezpiecznie chłodzić pomieszczenia z podłogą drewnianą lub panelami?</span>
                <div class="rk-icon-plus"></div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Chłodzenie stref z wykończeniem drewnianym jest wysoce ryzykowne z powodu dużego oporu cieplnego drewna (R około 0,12 m²K/W) oraz jego podatności na pęcznienie pod wpływem wilgoci. Wybierając <a href="https://projekt-ogrzewania.pl/podlogi-drewniane-vs-panele-laminowane-co-wybrac-przy-ogrzewaniu-podlogowym/">podłogi drewniane vs panele laminowane</a> pod chłodzenie, należy pamiętać, że dopuszcza się je wyłącznie przy restrykcyjnym ograniczeniu temperatury zasilania do minimum 19°C i ciągłej kontroli wilgotności przez cyfrowe higrostaty.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <span>Jak zabezpieczyć instalację przed kondensacją w przypadku awarii automatyki?</span>
                <div class="rk-icon-plus"></div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Aby wyeliminować <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy przy montażu</a> instalacji chłodzącej, podstawowym zabezpieczeniem mechanicznym jest montaż higrostatu przylgowego (czujnika kondensacji) bezpośrednio na metalowej rurze zasilającej rozdzielacz podłogówki. W przypadku pojawienia się pierwszych mikro-kropel wody, czujnik ten natychmiast przerywa obwód elektryczny i sprzętowo odcina zasilanie pompy obiegowej, zapobiegając zalaniu domu.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <span>Dlaczego tradycyjna klimatyzacja radzi sobie z wilgocią lepiej niż podłogówka?</span>
                <div class="rk-icon-plus"></div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Klimatyzacja (chłodzenie konwekcyjne) pracuje na bardzo niskich temperaturach czynnika (6°C - 8°C), przez co powietrze przepływające przez parownik jednostki wewnętrznej celowo i głęboko przekracza punkt rosy, oddając wilgoć, która jest odprowadzana rurką skroplin. Chłodzenie podłogowe obniża temperaturę bez separacji wody, dlatego bez wsparcia rekuperacji z chłodnicą kanałową nie jest w stanie osuszyć powietrza.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Logika Akordeonu FAQ
    const accordionBtns = document.querySelectorAll('.rk-accordion-btn');
    
    accordionBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            this.classList.toggle('active');
            const content = this.nextElementSibling;
            
            if (content.style.maxHeight) {
                content.style.maxHeight = null;
            } else {
                content.style.maxHeight = content.scrollHeight + "px";
            }
        });
    });

    // Logika Symulatora (Bez użycia &&)
    const modeToggle = document.getElementById('rk-mode-toggle');
    const statusText = document.getElementById('rk-status-text');
    const svgSafe = document.getElementById('svg-safe');
    const svgDanger = document.getElementById('svg-danger');

    modeToggle.addEventListener('change', function() {
        if (this.checked) {
            // Tryb awaryjny
            statusText.textContent = 'Awaria automatyki - Ryzyko Kondensacji!';
            statusText.style.color = 'var(--rk-faq-red)';
            svgSafe.style.display = 'none';
            svgDanger.style.display = 'block';
        } else {
            // Tryb bezpieczny
            statusText.textContent = 'Ochrona aktywna (Dew Point Control)';
            statusText.style.color = 'var(--rk-faq-green)';
            svgSafe.style.display = 'block';
            svgDanger.style.display = 'none';
        }
    });
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-blue: #0284c7;
    --rk-sum-light-blue: #f0f9ff;
    --rk-sum-green: #10b981;
    --rk-sum-green-light: #dcfce7;
    --rk-sum-red: #ef4444;
    --rk-sum-gold: #eab308;
    --rk-sum-gray: #64748b;
    --rk-sum-border: #e2e8f0;
    --rk-sum-bg: #ffffff;
}

.rk-final-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sum-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-sum-border);
    overflow: hidden;
}

.rk-final-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
    border-bottom: 1px solid var(--rk-sum-border);
}

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

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

.rk-synergy-module {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-synergy-controls {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    background: #f1f5f9;
    padding: 8px;
    border-radius: 20px;
}

.rk-syn-btn {
    flex: 1;
    padding: 16px 20px;
    border: none;
    border-radius: 14px;
    background: transparent;
    color: var(--rk-sum-gray);
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-syn-btn:hover {
    color: var(--rk-sum-dark);
    background: rgba(255, 255, 255, 0.5);
}

.rk-syn-btn.active {
    background: #ffffff;
    color: var(--rk-sum-blue);
    box-shadow: 0 4px 15px rgba(0,0,0,0.05);
}

.rk-syn-content-box {
    display: none;
    grid-template-columns: 120px 1fr;
    gap: 30px;
    align-items: center;
    padding: 35px;
    background: var(--rk-sum-light-blue);
    border: 1px solid rgba(2, 132, 199, 0.2);
    border-radius: 20px;
    animation: fadeIn 0.4s ease-out;
}

.rk-syn-content-box.active {
    display: grid;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-syn-icon {
    width: 100%;
    height: auto;
}

.rk-syn-text h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-sum-dark);
    margin: 0 0 12px 0;
}

.rk-syn-text p {
    font-size: 15px;
    color: #475569;
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-syn-text a {
    color: var(--rk-sum-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: border-color 0.2s;
}

.rk-syn-text a:hover {
    border-color: var(--rk-sum-blue);
}

.rk-tags-section {
    padding: 20px 50px 40px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: #ffffff;
}

.rk-mat-tag {
    display: inline-block;
    padding: 8px 16px;
    background: #f8fafc;
    border: 1px solid var(--rk-sum-border);
    border-radius: 99px;
    font-size: 13px;
    font-weight: 600;
    color: var(--rk-sum-gray);
    transition: all 0.2s;
}

.rk-mat-tag:hover {
    background: var(--rk-sum-light-blue);
    border-color: var(--rk-sum-blue);
    color: var(--rk-sum-blue);
}

.rk-final-cta {
    padding: 50px;
    background: var(--rk-sum-dark);
    text-align: center;
    position: relative;
    overflow: hidden;
}

.rk-final-cta::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(2,132,199,0.15) 0%, transparent 60%);
    z-index: 0;
}

.rk-cta-wrapper {
    position: relative;
    z-index: 1;
}

.rk-cta-title {
    color: #ffffff;
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 15px 0;
}

.rk-cta-desc {
    color: #94a3b8;
    font-size: 16px;
    margin: 0 auto 35px;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-neon {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: transparent;
    color: #38bdf8;
    font-size: 18px;
    font-weight: 800;
    padding: 18px 40px;
    border-radius: 12px;
    text-decoration: none;
    border: 2px solid #38bdf8;
    box-shadow: 0 0 20px rgba(56, 189, 248, 0.2);
    transition: all 0.3s;
}

.rk-btn-neon:hover {
    background: #38bdf8;
    color: var(--rk-sum-dark);
    box-shadow: 0 0 30px rgba(56, 189, 248, 0.5);
    transform: translateY(-3px);
}

@media (max-width: 768px) {
    .rk-final-header, .rk-synergy-module, .rk-tags-section, .rk-final-cta { padding: 30px 20px; }
    .rk-synergy-controls { flex-direction: column; gap: 8px; background: transparent; padding: 0; }
    .rk-syn-btn { background: #f1f5f9; text-align: left; justify-content: flex-start; padding: 18px; }
    .rk-syn-btn.active { box-shadow: inset 4px 0 0 var(--rk-sum-blue); }
    .rk-syn-content-box { grid-template-columns: 1fr; text-align: center; padding: 25px 20px; }
    .rk-syn-icon { max-width: 80px; margin: 0 auto; }
    .rk-btn-neon { width: 100%; justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Podsumowanie techniczne dla inwestorów – Bezpieczne chłodzenie",
    "description": "Techniczne podsumowanie warunków brzegowych dla bezpiecznego chłodzenia płaszczyznowego. Rola OZC, automatyki Dew Point Control oraz rekuperacji.",
    "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-26",
    "dateModified": "2026-06-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-synergia",
    "name": "Parametry brzegowe synergii układów HVAC latem",
    "description": "Zestawienie wymogów sprzętowych i obliczeniowych niezbędnych do uniknięcia kondensacji przy chłodzeniu podłogowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "bezpieczne chłodzenie podłogówką",
      "automatyka do chłodzenia podłogowego",
      "projekt ogrzewania podłogowego z pompą ciepła",
      "obliczanie zysków ciepła latem",
      "rozstaw rur do chłodzenia płaszczyznowego"
    ],
    "measurementTechnique": "Analiza termodynamiczna punktu rosy, korelacja wilgotności względnej z krzywą zasilania posadzki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Projekt OZC: Zagęszczony rozstaw rur dostosowany do ograniczonych mocy chłodniczych.",
        "Automatyka: Mikroprocesorowy system reagujący na odczyty z higrometrów pokojowych.",
        "Wentylacja: Mechaniczne obniżanie poziomu wilgotności względnej (RH) poniżej 60%."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-symulator",
    "name": "Interaktywny Przewodnik Synergii Chłodzenia",
    "description": "Moduł UI demonstrujący nierozerwalną współpracę trzech elementów: optymalnego projektu, precyzyjnej automatyki i wentylacji osuszającej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-final-container" id="rk-final-app">
    <div class="rk-final-header">
        <h2>Podsumowanie techniczne dla inwestorów</h2>
        <p>Wykorzystanie instalacji ogrzewania podłogowego do chłodzenia budynku to bezgłośny komfort bez przeciągów. Jednak z punktu widzenia fizyki budowli – <strong>punkt rosy to nieprzekraczalna granica termodynamiczna</strong>. Sukces Twojej inwestycji zależy od pełnej synergii trzech filarów technicznych.</p>
    </div>

    <div class="rk-synergy-module">
        <div class="rk-synergy-controls" id="rkSynTabs">
            <button class="rk-syn-btn active" data-target="tab-projekt">
                <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="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>
                1. Projekt Hydrauliczny
            </button>
            <button class="rk-syn-btn" data-target="tab-auto">
                <svg width="20" height="20" 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>
                2. Automatyka
            </button>
            <button class="rk-syn-btn" data-target="tab-went">
                <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 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                3. Wentylacja
            </button>
        </div>

        <div class="rk-syn-content-box active" id="tab-projekt">
            <svg class="rk-syn-icon" viewBox="0 0 100 100">
                <rect x="20" y="20" width="60" height="60" rx="10" fill="none" stroke="var(--rk-sum-blue)" stroke-width="4"/>
                <line x1="30" y1="40" x2="70" y2="40" stroke="var(--rk-sum-blue)" stroke-width="4" stroke-linecap="round"/>
                <line x1="30" y1="60" x2="50" y2="60" stroke="var(--rk-sum-blue)" stroke-width="4" stroke-linecap="round"/>
                <circle cx="70" cy="70" r="15" fill="#f0f9ff" stroke="var(--rk-sum-blue)" stroke-width="4"/>
                <path d="M65 70 L68 75 L75 65" fill="none" stroke="var(--rk-sum-blue)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
            </svg>
            <div class="rk-syn-text">
                <h3>Precyzyjny fundament obliczeniowy</h3>
                <p>Bezpośrednie wpuszczenie zimnej wody z pompy ciepła w pętle ułożone "na oko" to gwarancja uszkodzenia posadzki. <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">Profesjonalny projekt pod pompę ciepła</a> uwzględnia letnie zyski ciepła (OZC) oraz definiuje zagęszczony rozstaw rur, aby zapobiec lokalnym pasmom kondensacji.</p>
            </div>
        </div>

        <div class="rk-syn-content-box" id="tab-auto">
            <svg class="rk-syn-icon" viewBox="0 0 100 100">
                <circle cx="50" cy="50" r="40" fill="none" stroke="var(--rk-sum-blue)" stroke-width="4"/>
                <path d="M50 25 V50 L65 65" fill="none" stroke="var(--rk-sum-blue)" stroke-width="4" stroke-linecap="round"/>
                <circle cx="50" cy="50" r="4" fill="var(--rk-sum-blue)"/>
                <path d="M20 50 A30 30 0 0 1 80 50" fill="none" stroke="var(--rk-sum-blue)" stroke-width="2" stroke-dasharray="4 4"/>
            </svg>
            <div class="rk-syn-text">
                <h3>Dew Point Control – Elektroniczna tarcza</h3>
                <p>Instalacja musi wiedzieć, co dzieje się w powietrzu. Algorytmy zasilane danymi ze strefowych czujników wilgotności na bieżąco analizują punkt rosy i automatycznie podnoszą temperaturę zasilania na zaworze mieszającym, blokując wyciek zanim się pojawi.</p>
            </div>
        </div>

        <div class="rk-syn-content-box" id="tab-went">
            <svg class="rk-syn-icon" viewBox="0 0 100 100">
                <path d="M20 50 C 40 20, 60 80, 80 50" fill="none" stroke="var(--rk-sum-blue)" stroke-width="4" stroke-linecap="round"/>
                <path d="M20 70 C 40 40, 60 100, 80 70" fill="none" stroke="var(--rk-sum-blue)" stroke-width="4" stroke-linecap="round" stroke-dasharray="8 8"/>
                <polyline points="70 40 80 50 70 60" fill="none" stroke="var(--rk-sum-blue)" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
            </svg>
            <div class="rk-syn-text">
                <h3>Kontrola Wilgoci Utajonej</h3>
                <p>Podłogówka chłodzi, ale nie wysusza powietrza. Im zimniej w domu, tym wyższa wilgotność względna. Dlatego <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/">współpraca z rekuperacją</a> wyposażoną w funkcję osuszania to jedyna droga, by instalacja chłodnicza pracowała z maksymalną wydajnością podczas letnich upałów.</p>
            </div>
        </div>
    </div>

    <div class="rk-tags-section">
        <span class="rk-mat-tag"># bezpieczne chłodzenie podłogówką</span>
        <span class="rk-mat-tag"># automatyka do chłodzenia podłogowego</span>
        <span class="rk-mat-tag"># projekt ogrzewania podłogowego z pompą ciepła</span>
        <span class="rk-mat-tag"># obliczanie zysków ciepła latem</span>
        <span class="rk-mat-tag"># rozstaw rur do chłodzenia płaszczyznowego</span>
        <span class="rk-mat-tag"># czujnik punktu rosy w podłodze</span>
        <span class="rk-mat-tag"># rekuperacja a chłodzenie podłogowe</span>
        <span class="rk-mat-tag"># moduł chłodzenia pompy ciepła</span>
    </div>

    <div class="rk-final-cta">
        <div class="rk-cta-wrapper">
            <h3 class="rk-cta-title">Zaprojektuj podłogówkę, która przetrwa pokolenia</h3>
            <p class="rk-cta-desc">
                Nie ryzykuj zalania i zniszczenia posadzki przez błędy w hydraulice. Dołącz do świadomych inwestorów, poznaj rygorystyczne normy inżynierskie i zbuduj dom odporny na awarie.
            </p>
            <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-neon">
                ODKRYJ BAZĘ WIEDZY INŻYNIERSKIEJ
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" 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>
document.addEventListener('DOMContentLoaded', function() {
    const synBtns = document.querySelectorAll('.rk-syn-btn');
    const synContents = document.querySelectorAll('.rk-syn-content-box');

    synBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            const targetId = this.getAttribute('data-target');
            
            // Reset state
            synBtns.forEach(function(b) {
                b.classList.remove('active');
            });
            synContents.forEach(function(c) {
                c.classList.remove('active');
            });
            
            // Set new active
            this.classList.add('active');
            const targetContent = document.getElementById(targetId);
            if (targetContent) {
                targetContent.classList.add('active');
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-light-blue: #f0f9ff;
    --rk-dl-gray: #64748b;
    --rk-dl-border: #e2e8f0;
    --rk-dl-bg: #ffffff;
    --rk-dl-text: #334155;
    --rk-dl-pdf: #ef4444; /* Czerwony akcent dla PDF */
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-bg);
    border: 2px solid var(--rk-dl-dark);
    box-shadow: 6px 6px 0px var(--rk-dl-border);
}

.rk-dl-header {
    padding: 30px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-blue);
}

.rk-dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    letter-spacing: -0.5px;
}

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

.rk-dl-body {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

/* Kolumna z miniaturą */
.rk-dl-preview {
    padding: 30px;
    border-right: 2px solid var(--rk-dl-border);
    background: #f8fafc;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-thumbnail-wrapper {
    width: 100%;
    border: 2px solid var(--rk-dl-dark);
    background: #ffffff;
    padding: 10px;
    box-shadow: 4px 4px 0px var(--rk-dl-border);
    position: relative;
    cursor: pointer;
}

.rk-dl-thumbnail-wrapper:hover {
    border-color: var(--rk-dl-blue);
}

.rk-dl-img {
    width: 100%;
    height: auto;
    display: block;
}

.rk-dl-zoom-hint {
    background: var(--rk-dl-dark);
    color: #ffffff;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    padding: 8px;
    text-align: center;
    margin-top: 15px;
    width: 100%;
    cursor: pointer;
}

.rk-dl-zoom-hint:hover {
    background: var(--rk-dl-blue);
}

/* Kolumna z przyciskami i opisem */
.rk-dl-content {
    padding: 30px 40px;
}

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

.rk-dl-content p {
    font-size: 15px;
    color: var(--rk-dl-text);
    line-height: 1.7;
    margin: 0 0 25px 0;
}

.rk-dl-content a.rk-inline-link {
    color: var(--rk-dl-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 3px;
}

.rk-dl-actions {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-dl-btn {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 18px 25px;
    text-decoration: none;
    font-size: 16px;
    font-weight: 800;
    border: 2px solid var(--rk-dl-dark);
    background: #ffffff;
    color: var(--rk-dl-dark);
    cursor: pointer;
}

.rk-dl-btn:hover {
    background: var(--rk-dl-light-blue);
    border-color: var(--rk-dl-blue);
    color: var(--rk-dl-blue);
}

.rk-dl-btn.primary {
    background: var(--rk-dl-pdf);
    color: #ffffff;
    border-color: var(--rk-dl-pdf);
}

.rk-dl-btn.primary:hover {
    background: #b91c1c;
    border-color: #b91c1c;
}

.rk-dl-btn-icon {
    display: flex;
    align-items: center;
    gap: 12px;
}

.rk-dl-file-info {
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
}

.rk-dl-btn.primary .rk-dl-file-info {
    color: #fca5a5;
}

/* Stopka Prawa Autorskie */
.rk-dl-copyright {
    padding: 20px 40px;
    background: #f8fafc;
    border-top: 1px solid var(--rk-dl-border);
    font-size: 13px;
    color: var(--rk-dl-gray);
    line-height: 1.6;
    text-align: center;
    font-weight: 600;
}

.rk-dl-copyright strong {
    color: var(--rk-dl-dark);
}

/* Modal Pełnoekranowy (Bez animacji) */
.rk-modal-overlay {
    display: none;
    position: fixed;
    top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(15, 23, 42, 0.95);
    z-index: 9999;
    padding: 20px;
    align-items: center;
    justify-content: center;
}

.rk-modal-overlay.active {
    display: flex;
}

.rk-modal-content {
    max-width: 90%;
    max-height: 90vh;
    position: relative;
}

.rk-modal-img {
    max-width: 100%;
    max-height: 90vh;
    object-fit: contain;
    border: 4px solid #ffffff;
}

.rk-modal-close {
    position: absolute;
    top: -40px;
    right: 0;
    color: #ffffff;
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    cursor: pointer;
    background: none;
    border: none;
    padding: 5px;
}

.rk-modal-close:hover {
    color: var(--rk-dl-blue);
}

@media (max-width: 768px) {
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-header h2 { font-size: 22px; }
    .rk-dl-body { grid-template-columns: 1fr; }
    .rk-dl-preview { border-right: none; border-bottom: 2px solid var(--rk-dl-border); padding: 20px; }
    .rk-dl-content { padding: 25px 20px; }
    .rk-dl-copyright { padding: 15px 20px; }
    .rk-dl-btn { flex-direction: column; gap: 10px; text-align: center; align-items: stretch; }
    .rk-dl-btn-icon { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/"
    },
    "headline": "Kompendium wiedzy do pobrania: Infografika punktu rosy",
    "description": "Zestawienie parametrów granicznych i wytycznych dla bezpiecznego chłodzenia płaszczyznowego w formie wysokiej jakości infografiki inżynierskiej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Punkt-rosy-w-ogrzewaniu-podlogowym-–-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji.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-27",
    "dateModified": "2026-06-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#dataset-sciagawka",
    "name": "Inżynierska ściągawka parametrów chłodzenia (Infografika)",
    "description": "Plik PDF i obraz WebP zawierający skondensowane wytyczne dotyczące norm OZC, rozstawu rur, temperatur zasilania oraz trybów pracy pompy ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika punkt rosy chłodzenie",
      "ściągawka instalatora hvac",
      "bezpieczne chłodzenie pdf",
      "parametry podłogówki schemat",
      "chłodzenie płaszczyznowe wykres"
    ],
    "measurementTechnique": "Wizualizacja zależności termodynamicznych (wilgotność vs temperatura) w formie przystępnych wykresów i wytycznych instalacyjnych.",
    "mainEntity": {
      "@type": "DataDownload",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Punkt-rosy-w-ogrzewaniu-podlogowym-–-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji.pdf",
      "encodingFormat": "application/pdf"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/#webapp-pobieranie",
    "name": "Interaktywny Panel Dokumentacji Technicznej",
    "description": "Zintegrowane narzędzie UI pozwalające na bezstratny podgląd schematów inżynierskich oraz bezpieczne pobranie licencjonowanych materiałów źródłowych.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container" id="rk-dl-app">
    <div class="rk-dl-header">
        <h2>Kompendium wiedzy do pobrania</h2>
        <p>Zabierz inżynierskie standardy na budowę. Pobierz gotową infografikę z parametrami granicznymi bezpiecznego chłodzenia.</p>
    </div>

    <div class="rk-dl-body">
        
        <div class="rk-dl-preview">
            <div class="rk-dl-thumbnail-wrapper" id="rkThumbTrigger">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Punkt-rosy-w-ogrzewaniu-podlogowym-–-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji.webp" 
                     alt="Infografika punktu rosy w chłodzeniu podłogowym" 
                     class="rk-dl-img" 
                     loading="lazy">
            </div>
            <button class="rk-dl-zoom-hint" id="rkZoomBtn">
                + Powiększ podgląd
            </button>
        </div>

        <div class="rk-dl-content">
            <h3>Pobierz darmowe materiały inżynierskie</h3>
            <p>
                Przygotowałem ten materiał, aby ułatwić komunikację między inwestorem a instalatorem. Zanim Twoja ekipa wyleje beton, upewnij się, że instalacja opiera się na twardych danych. 
                Aby pogłębić wiedzę przed zalaniem posadzki, sprawdź również, dlaczego w instalacji powinna pracować <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-inline-link">woda demineralizowana z inhibitorem korozji</a> oraz jak prawidłowo powinna zostać wykonana <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-inline-link">próba szczelności instalacji</a>.
            </p>

            <div class="rk-dl-actions">
                <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Punkt-rosy-w-ogrzewaniu-podlogowym-–-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji.pdf" 
                   class="rk-dl-btn primary" 
                   download 
                   target="_blank" 
                   rel="noopener noreferrer">
                    <div class="rk-dl-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="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 plik PDF
                    </div>
                    <span class="rk-dl-file-info">Format: PDF (Wysoka jakość)</span>
                </a>

                <button class="rk-dl-btn" id="rkActionViewBtn">
                    <div class="rk-dl-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="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"></path><circle cx="12" cy="12" r="3"></circle></svg>
                        Otwórz grafikę w przeglądarce
                    </div>
                    <span class="rk-dl-file-info">Format: WebP</span>
                </button>
            </div>
        </div>
    </div>

    <div class="rk-dl-copyright">
        © 2026 <strong>Projekt-Ogrzewania.pl</strong> | Autor: <strong>Robert Kucharski</strong>.<br>
        Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
    </div>

    <div class="rk-modal-overlay" id="rkImgModal">
        <div class="rk-modal-content">
            <button class="rk-modal-close" id="rkModalCloseBtn">[ Zamknij podgląd X ]</button>
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Punkt-rosy-w-ogrzewaniu-podlogowym-–-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji.webp" 
                 alt="Infografika - Pełny wymiar" 
                 class="rk-modal-img">
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const modal = document.getElementById('rkImgModal');
    const thumbTrigger = document.getElementById('rkThumbTrigger');
    const zoomBtn = document.getElementById('rkZoomBtn');
    const actionViewBtn = document.getElementById('rkActionViewBtn');
    const closeBtn = document.getElementById('rkModalCloseBtn');

    // Funkcja otwierająca (Bezpieczna pod kątem operatorów JS)
    function openModal() {
        modal.classList.add('active');
    }

    // Funkcja zamykająca
    function closeModal() {
        modal.classList.remove('active');
    }

    // Eventy otwarcia
    thumbTrigger.addEventListener('click', openModal);
    zoomBtn.addEventListener('click', openModal);
    actionViewBtn.addEventListener('click', openModal);

    // Eventy zamknięcia
    closeBtn.addEventListener('click', closeModal);
    
    modal.addEventListener('click', function(e) {
        // Zamknięcie po kliknięciu w czarne tło (overlay)
        if (e.target === modal) {
            closeModal();
        }
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/punkt-rosy-w-ogrzewaniu-podlogowym-jak-bezpiecznie-chlodzic-dom-bez-ryzyka-kondensacji/">Punkt rosy w ogrzewaniu podłogowym – jak bezpiecznie chłodzić dom bez ryzyka kondensacji.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Średnice rur w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 10:52:01 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradnik inwestora]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Technologia grzewcza]]></category>
		<category><![CDATA[długość pętli podłogówki]]></category>
		<category><![CDATA[dobór rur ogrzewanie podłogowe]]></category>
		<category><![CDATA[hydraulika ogrzewania podłogowego]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[projektowanie podłogówki]]></category>
		<category><![CDATA[przepływ w ogrzewaniu podłogowym]]></category>
		<category><![CDATA[rura 16x2 ogrzewanie podłogowe]]></category>
		<category><![CDATA[rura 20x2 ogrzewanie podłogowe]]></category>
		<category><![CDATA[spadki ciśnienia ogrzewanie podłogowe]]></category>
		<category><![CDATA[średnice rur ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3505</guid>

					<description><![CDATA[<p>Dobór elementów instalacji grzewczej to nie przypadek, lecz świadoma decyzja techniczna. Średnice rur w ogrzewaniu podłogowym mają bezpośredni wpływ na przepływ wody, opory hydrauliczne oraz efektywność całego systemu. Zbyt mała średnica może powodować nadmierne spadki ciśnienia i niedogrzanie pomieszczeń, natomiast zbyt duża utrudnia regulację i zwiększa koszty inwestycji. W artykule pokazujemy konkretne obliczenia, przykłady oraz praktyczne zasady projektowe, które pozwalają dobrać optymalne parametry instalacji zarówno dla kotłów gazowych, jak i pomp ciepła.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">Średnice rur w ogrzewaniu podłogowym.</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-blue: #0369a1;
    --rk-intro-accent: #0ea5e9;
    --rk-intro-bg: #f8fafc;
    --rk-intro-card: #ffffff;
    --rk-intro-border: #cbd5e1;
    --rk-intro-text: #334155;
    --rk-intro-gold: #eab308;
    --rk-intro-gold-bg: #fefce8;
}

.rk-intro-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-intro-card);
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-intro-blue);
    overflow: hidden;
}

/* Główny obszar nagłówka i tekstu */
.rk-intro-main {
    padding: 40px 50px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-intro-bg) 100%);
}

.rk-intro-main h2 {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    line-height: 1.2;
    letter-spacing: -0.5px;
}

.rk-intro-hook {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-intro-blue);
    margin: 0 0 20px 0;
    line-height: 1.5;
    border-left: 4px solid var(--rk-intro-accent);
    padding-left: 20px;
}

.rk-intro-text {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-intro-text);
    margin: 0 0 20px 0;
}

.rk-intro-text a {
    color: var(--rk-intro-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.2);
}

.rk-intro-text a:hover {
    border-color: var(--rk-intro-accent);
}

/* Moduł "Szybka Odpowiedź" (Featured Snippet Box) */
.rk-intro-quick-answer {
    background: var(--rk-intro-gold-bg);
    border: 1px solid rgba(234, 179, 8, 0.4);
    border-radius: 12px;
    padding: 25px;
    margin: 30px 0;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

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

.rk-qa-content h3 {
    margin: 0 0 8px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-qa-content p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-intro-dark);
}

/* Przewodnik po artykule (Tabbed) */
.rk-intro-guide {
    background: var(--rk-intro-dark);
    padding: 35px 50px;
    color: #ffffff;
}

.rk-guide-title {
    font-size: 20px;
    font-weight: 800;
    margin: 0 0 20px 0;
    color: #ffffff;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-guide-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 25px;
}

.rk-guide-tab-btn {
    flex: 1;
    background: #1e293b;
    border: 1px solid #334155;
    padding: 14px;
    border-radius: 8px;
    color: #cbd5e1;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    text-align: center;
}

.rk-guide-tab-btn.active {
    background: var(--rk-intro-blue);
    border-color: var(--rk-intro-accent);
    color: #ffffff;
}

.rk-guide-panel {
    display: none;
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 12px;
    padding: 25px;
}

.rk-guide-panel.active {
    display: block;
}

.rk-guide-panel-content {
    display: flex;
    gap: 20px;
    align-items: center;
}

.rk-guide-panel-icon {
    width: 60px;
    height: 60px;
    background: rgba(255,255,255,0.05);
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-intro-accent);
    flex-shrink: 0;
}

.rk-guide-panel-text h4 {
    margin: 0 0 8px 0;
    font-size: 18px;
    color: #ffffff;
}

.rk-guide-panel-text p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: #94a3b8;
}

@media (max-width: 768px) {
    .rk-intro-main, .rk-intro-guide { padding: 30px 20px; }
    .rk-intro-main h2 { font-size: 26px; }
    .rk-intro-quick-answer { flex-direction: column; align-items: center; text-align: center; }
    .rk-guide-tabs { flex-direction: column; }
    .rk-guide-panel-content { flex-direction: column; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Średnice rur w ogrzewaniu podłogowym – inżynierski przewodnik",
    "description": "Zrozum opory hydrauliczne i przepływy. Zobacz dlaczego wybór rury 16x2.0 lub 20x2.0 mm decyduje o kosztach prądu dla pompy ciepła i żywotności 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-normy-wstep",
    "name": "Wytyczne normy PN-EN 1264 dla doboru przekrojów",
    "description": "Zestawienie podstawowych parametrów projektowych określających zrównoważenie hydrauliczne i akustyczne (szumy) w systemach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "średnice rur w ogrzewaniu podłogowym",
      "norma PN-EN 1264 podłogówka",
      "opory hydrauliczne instalacji",
      "przepływ wody w pompie ciepła",
      "jaka średnica rury do podłogówki"
    ],
    "measurementTechnique": "Przegląd inżynierski wytycznych definiujących granicę prędkości wody i oporów dla zachowania efektywności energetycznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Standard budowlany: rura 16x2.0 mm (pokoje standardowe).",
        "Standard dla OZE: rura 20x2.0 mm (duże złady wody, niskie opory)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-nawigator",
    "name": "Inżynierski Nawigator Artykułu",
    "description": "Panel interaktywny umożliwiający szybki przegląd zawartości artykułu, od tablic spadków ciśnień po dynamiczne symulatory pompy obiegowej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container">
    <div class="rk-intro-main">
        <h2>Średnice rur w ogrzewaniu podłogowym – inżynierski przewodnik</h2>
        
        <p class="rk-intro-hook">
            Wydajesz kilkadziesiąt tysięcy złotych na najwyższej klasy pompę ciepła, a instalator dławi jej potencjał, rozkładając najcieńszą, 16-milimetrową rurkę w potężnym salonie? To błąd, który będzie Cię kosztował wyższe rachunki za prąd każdego dnia zimy.
        </p>

        <p class="rk-intro-text">
            Średnice rur w ogrzewaniu podłogowym to kluczowy parametr decydujący o oporach hydraulicznych instalacji, wymaganym przepływie wody oraz efektywności energetycznej całego systemu grzewczego. Zgodnie z wytycznymi <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normy PN-EN 1264</a>, właściwy dobór przekroju – najczęściej <strong>16&#215;2,0 mm</strong>, <strong>17&#215;2,0 mm</strong> lub <strong>20&#215;2,0 mm</strong> – jest absolutnie niezbędny do zapewnienia równomiernego rozkładu temperatury oraz uniknięcia hałasu wywołanego zbyt wysoką prędkością przepływu wody.
        </p>

        <div class="rk-intro-quick-answer">
            <div class="rk-qa-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="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>
            <div class="rk-qa-content">
                <h3>Szybka Odpowiedź Eksperta</h3>
                <p>W standardowych pomieszczeniach i sypialniach najczęściej stosuje się rurę 16 mm. Jednak w instalacjach napędzanych pompą ciepła, wymagających dużych przepływów czynnika, oraz w rozległych otwartych salonach, bezpiecznym inżynierskim wymogiem jest <strong>zastosowanie rury 20 mm</strong>. Chroni to pompę obiegową przed dławieniem (opór pętli musi być niższy niż 20 kPa).</p>
            </div>
        </div>

        <p class="rk-intro-text">
            Jako główny projektant portalu Projekt-Ogrzewania.pl, przeprowadzę Cię przez techniczne aspekty doboru rur, które zdeterminują żywotność Twojego systemu. Zobaczysz &#8222;czarno na białym&#8221;, dlaczego fizyki nie da się oszukać.
        </p>
    </div>

    <div class="rk-intro-guide">
        <div class="rk-guide-title">
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
            Co znajdziesz w tym artykule?
        </div>

        <div class="rk-guide-tabs" id="rkGuideTabs">
            <button class="rk-guide-tab-btn active" data-intro="kalkulatory">Interaktywne Narzędzia</button>
            <button class="rk-guide-tab-btn" data-intro="tabele">Tabele i Normy</button>
            <button class="rk-guide-tab-btn" data-intro="case">Studium Przypadku</button>
        </div>

        <div class="rk-guide-panel active" id="intro-kalkulatory">
            <div class="rk-guide-panel-content">
                <div class="rk-guide-panel-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>
                <div class="rk-guide-panel-text">
                    <h4>Kalkulatory i Symulatory Live</h4>
                    <p>Zamiast zgadywać, poniżej udostępniam Ci kalkulatory działające w czasie rzeczywistym. Samodzielnie zmienisz długość pętli, wybierzesz źródło ciepła i natychmiast sprawdzisz, czy opory w rurze przekroczą krytyczną barierę bezpieczeństwa.</p>
                </div>
            </div>
        </div>

        <div class="rk-guide-panel" id="intro-tabele">
            <div class="rk-guide-panel-content">
                <div class="rk-guide-panel-icon">
                    <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="8" y1="6" x2="21" y2="6"></line><line x1="8" y1="12" x2="21" y2="12"></line><line x1="8" y1="18" x2="21" y2="18"></line><line x1="3" y1="6" x2="3.01" y2="6"></line><line x1="3" y1="12" x2="3.01" y2="12"></line><line x1="3" y1="18" x2="3.01" y2="18"></line></svg>
                </div>
                <div class="rk-guide-panel-text">
                    <h4>Tabelaryczne Zestawienia Spadków Ciśnień</h4>
                    <p>Konkretne inżynierskie dane. Porównamy ramię w ramię pojemność wodną, maksymalne długości obiegów oraz opór, jaki rura 16 mm i 20 mm stawia instalacji przy określonym przepływie masowym.</p>
                </div>
            </div>
        </div>

        <div class="rk-guide-panel" id="intro-case">
            <div class="rk-guide-panel-content">
                <div class="rk-guide-panel-icon">
                    <svg width="32" height="32" 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-guide-panel-text">
                    <h4>Praktyczne Case Study</h4>
                    <p>Rozłożymy na czynniki pierwsze realny problem inwestora, który musiał wybrać między opiniami dwóch sprzeczających się instalatorów. Zobaczysz, jak projekt inżynierski chroni budżet przed poważnymi błędami wykonawczymi.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var navBtns = document.querySelectorAll('.rk-guide-tab-btn');
    var navPanels = document.querySelectorAll('.rk-guide-panel');

    // Kod w 100% bezpieczny - brak zakazanych operatorów
    for (var i = 0; i < navBtns.length; i++) {
        navBtns[i].addEventListener('click', function() {
            
            // Usunięcie klasy active ze wszystkich
            for (var j = 0; j < navBtns.length; j++) {
                navBtns[j].classList.remove('active');
            }
            for (var k = 0; k < navPanels.length; k++) {
                navPanels[k].classList.remove('active');
            }

            // Aktywacja klikniętego elementu
            this.classList.add('active');

            // Odnalezienie przypisanego panelu
            var targetPanelId = 'intro-' + this.getAttribute('data-intro');
            var targetPanel = document.getElementById(targetPanelId);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-loop-dark: #0f172a;
    --rk-loop-primary: #0284c7;
    --rk-loop-accent: #0ea5e9;
    --rk-loop-bg: #f8fafc;
    --rk-loop-card: #ffffff;
    --rk-loop-border: #cbd5e1;
    --rk-loop-text: #334155;
    --rk-loop-muted: #64748b;
    --rk-loop-danger: #ef4444;
    --rk-loop-warning: #eab308;
    --rk-loop-success: #10b981;
}

.rk-loop-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-loop-card);
    border-radius: 20px;
    box-shadow: 0 15px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-loop-primary);
    overflow: hidden;
}

/* Sekcja Merytoryczna */
.rk-loop-content {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-loop-bg));
}

.rk-loop-content h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-loop-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-loop-content h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-loop-primary);
    margin: 30px 0 15px 0;
}

.rk-loop-content p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-loop-text);
    margin-bottom: 20px;
}

.rk-loop-content a {
    color: var(--rk-loop-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.2);
    transition: all 0.3s;
}

.rk-loop-content a:hover {
    border-color: var(--rk-loop-accent);
}

/* Wskazówka Projektowa (Alert) */
.rk-loop-alert {
    background: #f0f9ff;
    border-left: 4px solid var(--rk-loop-primary);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    margin: 30px 0;
    display: flex;
    gap: 15px;
}

.rk-loop-alert-icon {
    color: var(--rk-loop-primary);
    flex-shrink: 0;
}

.rk-loop-alert-text h4 {
    margin: 0 0 8px 0;
    color: var(--rk-loop-dark);
    font-size: 16px;
}

.rk-loop-alert-text p {
    margin: 0;
    font-size: 14.5px;
    line-height: 1.6;
    color: var(--rk-loop-text);
}

/* Interaktywny Asystent */
.rk-loop-assistant {
    background: var(--rk-loop-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-assistant-title {
    text-align: center;
    margin-bottom: 30px;
}

.rk-assistant-title h3 {
    margin: 0;
    font-size: 24px;
    color: #ffffff;
}

/* Wybór Rury */
.rk-pipe-selector {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-pipe-btn {
    flex: 1;
    background: #1e293b;
    border: 2px solid #334155;
    padding: 15px;
    border-radius: 12px;
    color: #cbd5e1;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.rk-pipe-btn span {
    font-size: 18px;
    font-weight: 800;
}

.rk-pipe-btn small {
    font-size: 12px;
    color: #94a3b8;
}

.rk-pipe-btn.active {
    background: var(--rk-loop-primary);
    border-color: var(--rk-loop-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-pipe-btn.active small {
    color: #e0f2fe;
}

/* Panel Wynikowy z Suwakiem */
.rk-calc-panel {
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 30px;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

.rk-slider-section {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    font-size: 14px;
    font-weight: 700;
    color: #cbd5e1;
    margin-bottom: 15px;
}

.rk-slider-val {
    color: var(--rk-loop-accent);
    font-size: 18px;
}

.rk-length-slider {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: #0f172a;
    border-radius: 4px;
    outline: none;
    margin-bottom: 25px;
}

.rk-length-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-loop-accent);
    cursor: pointer;
    border: 4px solid var(--rk-loop-dark);
    box-shadow: 0 0 0 2px var(--rk-loop-accent);
    transition: transform 0.1s;
}

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

.rk-status-box {
    padding: 15px;
    border-radius: 12px;
    text-align: center;
    font-weight: 800;
    font-size: 14px;
    transition: all 0.3s;
}

/* Prawa kolumna wyników */
.rk-stats-section {
    display: flex;
    flex-direction: column;
    gap: 20px;
    border-left: 1px dashed #334155;
    padding-left: 40px;
}

.rk-stat-item {
    display: flex;
    flex-direction: column;
}

.rk-stat-label {
    font-size: 13px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-stat-value {
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    display: flex;
    align-items: baseline;
    gap: 5px;
}

.rk-stat-unit {
    font-size: 16px;
    font-weight: 600;
    color: #cbd5e1;
}

/* Warianty Statusów */
.bg-ok { background: rgba(16, 185, 129, 0.15); color: var(--rk-loop-success); border: 1px solid rgba(16, 185, 129, 0.3); }
.bg-warn { background: rgba(234, 179, 8, 0.15); color: var(--rk-loop-warning); border: 1px solid rgba(234, 179, 8, 0.3); }
.bg-danger { background: rgba(239, 68, 68, 0.15); color: var(--rk-loop-danger); border: 1px solid rgba(239, 68, 68, 0.3); }

@media (max-width: 768px) {
    .rk-loop-content, .rk-loop-assistant { padding: 30px 20px; }
    .rk-pipe-selector { flex-direction: column; gap: 10px; }
    .rk-calc-panel { grid-template-columns: 1fr; gap: 30px; }
    .rk-stats-section { border-left: none; border-top: 1px dashed #334155; padding-left: 0; padding-top: 30px; }
    .rk-loop-content h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-graniczne-dlugosci",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Graniczne długości pętli i dobór średnicy rur",
    "description": "Zasady wymiarowania ogrzewania podłogowego: maksymalne długości pętli dla rur 16 mm, 17 mm i 20 mm. Obliczanie pojemności wodnej i zrównoważenia hydraulicznego.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-petle",
    "name": "Tabela 2. Zalecane i maksymalne długości pętli ogrzewania podłogowego",
    "description": "Baza danych parametrów granicznych pętli grzewczych dla najpopularniejszych średnic rur wielowarstwowych (16x2.0, 17x2.0, 20x2.0).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli",
      "pojemność wodna rury pex",
      "średnica wewnętrzna rury ogrzewania podłogowego",
      "zrównoważenie hydrauliczne układu",
      "różnice między rurą 16 a 20"
    ],
    "measurementTechnique": "Zestawienie empirycznych norm instalacyjnych oraz przeliczników objętości cieczy na metr bieżący rury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura 16x2.0 mm: Max. długość 120m, Zalecana 80m, Pojemność 0.113 l/m",
        "Rura 17x2.0 mm: Max. długość 120m, Zalecana 90m, Pojemność 0.133 l/m",
        "Rura 20x2.0 mm: Max. długość 150m, Zalecana 110m, Pojemność 0.201 l/m"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-dlugosc",
    "name": "Asystent Pojemności i Długości Pętli",
    "description": "Narzędzie pozwalające symulować pojemność zładu wody oraz bezpieczeństwo oporów hydraulicznych w zależności od wybranej średnicy rury i długości pętli.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container">
    <div class="rk-loop-content">
        <h2>Graniczne długości pętli i dobór średnicy rur</h2>
        <p>Aby uniknąć gigantycznych problemów z hydraulicznym zrównoważeniem układu (gdy jedno pomieszczenie przegrzewa, a drugie nie dogrzewa), inżynierowie przyjmują twarde, bezpieczne granice <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli</a>. Wartości te, łącznie z podejściem z kotłowni do rozdzielacza, gwarantują utrzymanie spadków ciśnień w ryzach.</p>
        
        <div class="rk-loop-alert">
            <div class="rk-loop-alert-icon">
                <svg width="32" height="32" 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>
            <div class="rk-loop-alert-text">
                <h4>Inżynierska wskazówka projektowa</h4>
                <p>Zawsze staraj się, aby pętle podłączone do jednego rozdzielacza miały zbliżone długości. Różnica nie powinna przekraczać <strong>10–15%</strong>. Drastyczne różnice powodują, że woda ucieka najkrótszą drogą, omijając najdłuższe (zazwyczaj najważniejsze) obiegi w salonie. Dowiedz się więcej o <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">planowaniu rozmieszczenia pętli grzewczych</a>.</p>
            </div>
        </div>

        <h3>Jakie są różnice między rurą 16x2.0, 17x2.0 a 20x2.0?</h3>
        <p><a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">Rura 16x2,0 mm</a> to wciąż absolutny standard w mniejszych sypialniach i łazienkach. Jednak w przypadku potężnych salonów, otwartych przestrzeni czy instalacji z pompą ciepła, rura <strong>20x2,0 mm</strong> (o średnicy wewnętrznej 16 mm) okazuje się ratunkiem. Przekrój wewnętrzny "dwudziestki" jest o ok. <strong>77% większy</strong> niż rury 16 mm. Wpływa to na drastyczne obniżenie oporów i większą pojemność wodną układu (co tworzy naturalny bufor dla pompy).</p>
    </div>

    <div class="rk-loop-assistant">
        <div class="rk-assistant-title">
            <h3>Asystent Pojemności i Zrównoważenia Pętli</h3>
        </div>

        <div class="rk-pipe-selector">
            <div class="rk-pipe-btn active" data-type="16">
                <span>16 x 2.0 mm</span>
                <small>Zalecana: ~80 m</small>
            </div>
            <div class="rk-pipe-btn" data-type="17">
                <span>17 x 2.0 mm</span>
                <small>Zalecana: ~90 m</small>
            </div>
            <div class="rk-pipe-btn" data-type="20">
                <span>20 x 2.0 mm</span>
                <small>Zalecana: ~110 m</small>
            </div>
        </div>

        <div class="rk-calc-panel">
            <div class="rk-slider-section">
                <div class="rk-slider-label">
                    <span>Planowana długość pętli</span>
                    <span class="rk-slider-val" id="dispLenVal">80 m</span>
                </div>
                <input type="range" id="loopLength" class="rk-length-slider" min="20" max="180" step="5" value="80">
                
                <div id="lenStatus" class="rk-status-box bg-ok">
                    DŁUGOŚĆ IDEALNA DO REGULACJI
                </div>
            </div>

            <div class="rk-stats-section">
                <div class="rk-stat-item">
                    <div class="rk-stat-label">Średnica wewnętrzna</div>
                    <div class="rk-stat-value">
                        <span id="statInner">12</span>
                        <span class="rk-stat-unit">mm</span>
                    </div>
                </div>

                <div class="rk-stat-item">
                    <div class="rk-stat-label"><a href="https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/" style="color:#94a3b8;text-decoration:none;border-bottom:1px dashed #64748b;">Pojemność wodna tej pętli</a></div>
                    <div class="rk-stat-value">
                        <span id="statCap" style="color:var(--rk-loop-accent);">9.0</span>
                        <span class="rk-stat-unit">litrów</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Pipe Data Dictionary
    var pipeData = {
        "16": { inner: 12, max: 120, rec: 80, cap: 0.113 },
        "17": { inner: 13, max: 120, rec: 90, cap: 0.133 },
        "20": { inner: 16, max: 150, rec: 110, cap: 0.201 }
    };

    var currentPipeType = "16";

    // UI Elements
    var btns = document.querySelectorAll('.rk-pipe-btn');
    var slider = document.getElementById('loopLength');
    var dispLenVal = document.getElementById('dispLenVal');
    var statInner = document.getElementById('statInner');
    var statCap = document.getElementById('statCap');
    var lenStatus = document.getElementById('lenStatus');

    // Pipe Selection Logic
    btns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            btns.forEach(function(b) { b.classList.remove('active'); });
            this.classList.add('active');
            
            var type = this.getAttribute('data-type');
            if(type) {
                currentPipeType = type;
                calculateLoop();
            }
        });
    });

    // Slider Logic
    slider.addEventListener('input', function() {
        dispLenVal.innerText = this.value + ' m';
        calculateLoop();
    });

    // Core Calculation (Safe JS)
    function calculateLoop() {
        var length = parseInt(slider.value, 10);
        var data = pipeData[currentPipeType];
        
        // Update Static Stats
        statInner.innerText = data.inner;
        
        // Calculate Capacity
        var totalCap = length * data.cap;
        statCap.innerText = totalCap.toFixed(1);

        // Evaluate Status (No && operators for safety)
        var statusLvl = 0; // 0 = OK, 1 = Warn (over recommended, under max), 2 = Danger (over max)
        
        if (length > data.rec) {
            statusLvl = 1;
        }
        if (length > data.max) {
            statusLvl = 2;
        }

        // Apply Status
        if (statusLvl === 0) {
            lenStatus.className = "rk-status-box bg-ok";
            lenStatus.innerText = "DŁUGOŚĆ IDEALNA (Łatwa regulacja)";
        } else if (statusLvl === 1) {
            lenStatus.className = "rk-status-box bg-warn";
            lenStatus.innerText = "PĘTLA WYMAGAJĄCA (Wysokie opory)";
        } else {
            lenStatus.className = "rk-status-box bg-danger";
            lenStatus.innerText = "PRZEKROCZENIE NORMY (Krytyczne dławienie!)";
        }
    }

    // Init
    calculateLoop();
});
</script>



<style>
:root {
    --rk-spec-dark: #0f172a;
    --rk-spec-blue: #0284c7;
    --rk-spec-accent: #0ea5e9;
    --rk-spec-bg: #f8fafc;
    --rk-spec-card: #ffffff;
    --rk-spec-border: #cbd5e1;
    --rk-spec-text: #334155;
    --rk-spec-muted: #64748b;
    --rk-spec-highlight: #f0f9ff;
}

.rk-spec-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-spec-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-spec-blue);
    overflow: hidden;
}

/* Nagłówek i Zajawka */
.rk-spec-header {
    padding: 40px 50px;
    background: linear-gradient(135deg, var(--rk-spec-highlight) 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-spec-border);
}

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

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

/* Moduł Interaktywny */
.rk-spec-interactive {
    padding: 40px 50px;
    background: var(--rk-spec-dark);
    color: #ffffff;
}

/* Przyciski wyboru rury */
.rk-spec-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 35px;
}

.rk-spec-tab-btn {
    flex: 1;
    background: #1e293b;
    border: 2px solid #334155;
    border-radius: 12px;
    padding: 16px;
    color: #94a3b8;
    font-size: 18px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-spec-tab-btn svg {
    opacity: 0.5;
    transition: opacity 0.3s;
}

.rk-spec-tab-btn:hover {
    background: #334155;
    color: #cbd5e1;
}

.rk-spec-tab-btn.active {
    background: var(--rk-spec-blue);
    border-color: var(--rk-spec-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-spec-tab-btn.active svg {
    opacity: 1;
}

/* Wyświetlacz Parametrów */
.rk-spec-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

.rk-spec-card {
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    align-items: flex-start;
    gap: 20px;
    transition: transform 0.3s;
}

.rk-spec-icon-box {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: rgba(14, 165, 233, 0.15);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-spec-accent);
    flex-shrink: 0;
}

.rk-spec-data {
    display: flex;
    flex-direction: column;
}

.rk-spec-label {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 8px;
    font-weight: 600;
}

.rk-spec-value {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    line-height: 1.2;
}

.rk-spec-sub {
    font-size: 14px;
    color: #cbd5e1;
    margin-top: 5px;
}

@media (max-width: 768px) {
    .rk-spec-header, .rk-spec-interactive { padding: 30px 20px; }
    .rk-spec-tabs { flex-direction: column; gap: 10px; }
    .rk-spec-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-spec-header h2 { font-size: 24px; }
    .rk-spec-value { font-size: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-parametry",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Porównanie parametrów technicznych rur wielowarstwowych",
    "description": "Zestawienie średnic wewnętrznych, pojemności wodnej i maksymalnych długości pętli dla rur PEX/PERT 16x2.0, 17x2.0 oraz 20x2.0 mm w instalacjach podłogowych.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-parametry",
    "name": "Parametry techniczne rur wielowarstwowych do ogrzewania płaszczyznowego",
    "description": "Dokładne zestawienie wymiarowe, pojemnościowe i aplikacyjne dla rur instalacyjnych o wymiarach 16, 17 i 20 mm grubości.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "parametry techniczne rury 16x2.0",
      "średnica wewnętrzna rury ogrzewania podłogowego",
      "pojemność wodna rury pex 1 mb",
      "zalecana długość pętli rura 20mm",
      "rura 17x2.0 do podłogówki"
    ],
    "measurementTechnique": "Tabelaryczne zestawienie wartości normatywnych i pojemnościowych wyliczanych na podstawie pola przekroju poprzecznego rury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Rura 16x2.0 mm: wewn. 12mm, poj. 0.113 l/mb, dł. 80-90m",
        "Rura 17x2.0 mm: wewn. 13mm, poj. 0.133 l/mb, dł. 90-100m",
        "Rura 20x2.0 mm: wewn. 16mm, poj. 0.201 l/mb, dł. 110-130m"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-eksplorator",
    "name": "Interaktywny Eksplorator Parametrów Rur",
    "description": "Mobilny panel pozwalający na błyskawiczne odczytywanie pojemności, przekrojów i zastosowania różnych średnic rur ogrzewania podłogowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-spec-container">
    <div class="rk-spec-header">
        <h2>Porównanie parametrów technicznych rur wielowarstwowych</h2>
        <p>Średnica zewnętrzna to tylko ułamek prawdy. Kluczowym elementem, który determinuje opory hydrauliczne i pojemność cieplną instalacji, jest <strong>przekrój wewnętrzny rury</strong>. Zobacz, jak dramatycznie zmieniają się właściwości fizyczne układu przy przejściu ze standardowej rury 16 mm na większe przekroje. Zrozumienie tych wartości to pierwszy krok do zaprojektowania wysoce wydajnej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>.</p>
    </div>

    <div class="rk-spec-interactive">
        
        <div class="rk-spec-tabs" id="rkSpecTabs">
            <button class="rk-spec-tab-btn active" data-pipe="16">
                <svg width="24" height="24" 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="6"></circle><circle cx="12" cy="12" r="10"></circle></svg>
                16x2.0 mm
            </button>
            <button class="rk-spec-tab-btn" data-pipe="17">
                <svg width="24" height="24" 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="7"></circle><circle cx="12" cy="12" r="10"></circle></svg>
                17x2.0 mm
            </button>
            <button class="rk-spec-tab-btn" data-pipe="20">
                <svg width="24" height="24" 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="8"></circle><circle cx="12" cy="12" r="10"></circle></svg>
                20x2.0 mm
            </button>
        </div>

        <div class="rk-spec-grid">
            
            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" 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>
                <div class="rk-spec-data">
                    <span class="rk-spec-label">Średnica wewnętrzna</span>
                    <span class="rk-spec-value" id="valInner">12,0 mm</span>
                    <span class="rk-spec-sub" id="subInner">Standardowy przekrój dla typowych oporów.</span>
                </div>
            </div>

            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z"></path></svg>
                </div>
                <div class="rk-spec-data">
                    <span class="rk-spec-label"><a href="https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/" style="color:#94a3b8; text-decoration:none;">Pojemność wodna (1 mb)</a></span>
                    <span class="rk-spec-value" id="valCap">ok. 0,113 l</span>
                    <span class="rk-spec-sub" id="subCap">Pojemność zładu podstawowego.</span>
                </div>
            </div>

            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="8" width="18" height="12" rx="2" ry="2"></rect><line x1="7" y1="8" x2="7" y2="12"></line><line x1="11" y1="8" x2="11" y2="12"></line><line x1="15" y1="8" x2="15" y2="12"></line><line x1="19" y1="8" x2="19" y2="12"></line><line x1="3" y1="14" x2="21" y2="14"></line></svg>
                </div>
                <div class="rk-spec-data">
                    <span class="rk-spec-label"><a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" style="color:#94a3b8; text-decoration:none;">Zalecana długość pętli</a></span>
                    <span class="rk-spec-value" id="valLen">do 80-90 m</span>
                    <span class="rk-spec-sub" id="subLen">Dla zachowania łatwej regulacji.</span>
                </div>
            </div>

            <div class="rk-spec-card">
                <div class="rk-spec-icon-box">
                    <svg width="28" height="28" 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>
                <div class="rk-spec-data">
                    <span class="rk-spec-label">Główne zastosowanie</span>
                    <span class="rk-spec-value" id="valApp">Pokoje, sypialnie</span>
                    <span class="rk-spec-sub" id="subApp">Typowe budownictwo jednorodzinne.</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Słownik danych parametrów rur
    var specsData = {
        "16": {
            inner: "12,0 mm",
            innerSub: "Standardowy przekrój dla typowych oporów.",
            cap: "ok. 0,113 l",
            capSub: "Pojemność zładu podstawowego.",
            len: "do 80-90 m",
            lenSub: "Dla zachowania łatwej regulacji rotametrów.",
            app: "Pokoje, sypialnie",
            appSub: "Typowe budownictwo jednorodzinne i kotły gazowe."
        },
        "17": {
            inner: "13,0 mm",
            innerSub: "Zapewnia nieznacznie wyższe przepływy niż rura 16 mm.",
            cap: "ok. 0,133 l",
            capSub: "Lekko powiększona bezwładność cieplna układu.",
            len: "do 90-100 m",
            lenSub: "Możliwość wydłużenia pętli w stosunku do standardu.",
            app: "Systemy dedykowane",
            appSub: "Często stosowana w kompletnych systemach producentów."
        },
        "20": {
            inner: "16,0 mm",
            innerSub: "Przekrój większy o ok. 77% od standardu (minimalne opory).",
            cap: "ok. 0,201 l",
            capSub: "Wysoki bufor wodny – idealne środowisko dla pompy ciepła.",
            len: "do 110-130 m",
            lenSub: "Obsługa rozległych powierzchni z jednego obwodu.",
            app: "Salony, pompy ciepła",
            appSub: "Obiekty komercyjne oraz systemy niskotemperaturowe."
        }
    };

    var tabs = document.querySelectorAll('.rk-spec-tab-btn');
    
    // Referencje UI
    var valInner = document.getElementById('valInner');
    var subInner = document.getElementById('subInner');
    var valCap = document.getElementById('valCap');
    var subCap = document.getElementById('subCap');
    var valLen = document.getElementById('valLen');
    var subLen = document.getElementById('subLen');
    var valApp = document.getElementById('valApp');
    var subApp = document.getElementById('subApp');

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Zmiana klas przycisków
            tabs.forEach(function(t) { t.classList.remove('active'); });
            this.classList.add('active');

            // Aktualizacja danych (Zabezpieczone - bezpieczny JS bez operatorów &&)
            var pipeType = this.getAttribute('data-pipe');
            var data = specsData[pipeType];

            if(data) {
                valInner.innerText = data.inner;
                subInner.innerText = data.innerSub;
                
                valCap.innerText = data.cap;
                subCap.innerText = data.capSub;
                
                valLen.innerText = data.len;
                subLen.innerText = data.lenSub;
                
                valApp.innerText = data.app;
                subApp.innerText = data.appSub;
            }
        });
    });
});
</script>



<style>
:root {
    --rk-pres-dark: #0f172a;
    --rk-pres-blue: #0369a1;
    --rk-pres-light: #f8fafc;
    --rk-pres-border: #cbd5e1;
    --rk-pres-red: #ef4444;
    --rk-pres-red-bg: #fef2f2;
    --rk-pres-green: #10b981;
    --rk-pres-green-bg: #ecfdf5;
    --rk-pres-gold: #eab308;
    --rk-pres-text: #334155;
}

.rk-pres-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-pres-blue);
    overflow: hidden;
}

/* Część Teoretyczna */
.rk-pres-theory {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-pres-light));
}

.rk-pres-theory h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-pres-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-pres-theory p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-pres-text);
    margin-bottom: 25px;
}

.rk-pres-rules {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 20px;
    margin-bottom: 30px;
}

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

.rk-pres-rule-icon {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background: var(--rk-pres-light);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-pres-blue);
    margin-bottom: 15px;
}

.rk-pres-rule-card h3 {
    margin: 0 0 10px 0;
    font-size: 16px;
    color: var(--rk-pres-dark);
}

.rk-pres-rule-card p {
    margin: 0;
    font-size: 14px;
    color: #64748b;
    line-height: 1.5;
}

/* Moduł Analizatora (Interaktywny) */
.rk-pres-analyzer {
    background: var(--rk-pres-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-analyzer-header {
    margin-bottom: 30px;
    text-align: center;
}

.rk-analyzer-header h3 {
    margin: 0;
    font-size: 24px;
    color: #ffffff;
}

.rk-analyzer-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 40px;
}

/* Kontrolki Analizatora */
.rk-control-block {
    margin-bottom: 25px;
}

.rk-control-label {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
    font-weight: 700;
    font-size: 14px;
    color: #cbd5e1;
}

.rk-control-val {
    color: var(--rk-pres-gold);
    font-size: 16px;
}

.rk-slider-pres {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: #334155;
    border-radius: 4px;
    outline: none;
}

.rk-slider-pres::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--rk-pres-gold);
    cursor: pointer;
    border: 4px solid var(--rk-pres-dark);
    box-shadow: 0 0 0 2px var(--rk-pres-gold);
    transition: transform 0.1s;
}

.rk-slider-pres::-webkit-slider-thumb:active {
    transform: scale(1.1);
}

.rk-switch-group {
    display: flex;
    background: #334155;
    border-radius: 12px;
    padding: 4px;
}

.rk-switch-btn {
    flex: 1;
    text-align: center;
    padding: 14px;
    color: #94a3b8;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
}

.rk-switch-btn.active {
    background: var(--rk-pres-blue);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

/* Wyniki Analizatora */
.rk-results-box {
    background: #1e293b;
    border-radius: 16px;
    border: 1px solid #334155;
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-metric {
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 1px dashed #334155;
}

.rk-result-metric:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.rk-metric-title {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #94a3b8;
    margin-bottom: 10px;
}

.rk-metric-value-wrap {
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.rk-metric-num {
    font-size: 36px;
    font-weight: 900;
    transition: color 0.3s;
}

.rk-metric-unit {
    font-size: 18px;
    color: #cbd5e1;
    font-weight: 600;
}

.rk-status-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    margin-top: 15px;
    transition: all 0.3s;
}

.rk-badge-ok { background: rgba(16, 185, 129, 0.2); color: var(--rk-pres-green); border: 1px solid rgba(16, 185, 129, 0.3); }
.rk-badge-warn { background: rgba(239, 68, 68, 0.2); color: var(--rk-pres-red); border: 1px solid rgba(239, 68, 68, 0.3); }
.rk-badge-gold { background: rgba(234, 179, 8, 0.2); color: var(--rk-pres-gold); border: 1px solid rgba(234, 179, 8, 0.3); }

@media (max-width: 768px) {
    .rk-pres-theory, .rk-pres-analyzer { padding: 30px 20px; }
    .rk-analyzer-grid { grid-template-columns: 1fr; gap: 30px; }
    .rk-pres-theory h2 { font-size: 24px; }
    .rk-metric-num { font-size: 32px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-spadki",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Spadki ciśnienia w ogrzewaniu podłogowym – szczegółowa analiza",
    "description": "Graniczne parametry oporów hydraulicznych w podłogówce. Zobacz jak rura 16 mm dusi układ pompy ciepła, przekraczając barierę 20 kPa i 0,6 m/s.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-cisnienie",
    "name": "Tabela 1. Jednostkowe spadki ciśnienia [Pa/m] dla rur wielowarstwowych",
    "description": "Zestawienie wzrostu oporów liniowych rur 16x2.0 i 20x2.0 mm w funkcji przepływu masowego wody grzewczej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jednostkowy spadek ciśnienia rury 16",
      "opory hydrauliczne pompy ciepła",
      "maksymalna prędkość wody w rurach",
      "dławienie pompy obiegowej",
      "kalkulator przepływu ogrzewania podłogowego"
    ],
    "measurementTechnique": "Określanie straty ciśnienia wyrażonej w Pa/m na podstawie nomogramów dla rur PEX/Al/PEX przy stałym przepływie.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przepływ 120 kg/h: Rura 16mm = 170 Pa/m | Rura 20mm = 35 Pa/m",
        "Przepływ 200 kg/h: Rura 16mm = 480 Pa/m | Rura 20mm = 100 Pa/m"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-analizator",
    "name": "Interaktywny Analizator Oporów i Średnic",
    "description": "Kalkulator czasu rzeczywistego pozwalający na symulację przekroczenia granicy 20 kPa przy wyborze pompy ciepła lub kotła gazowego na konkretnej długości pętli.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pres-container">
    <div class="rk-pres-theory">
        <h2>Spadki ciśnienia w ogrzewaniu podłogowym – szczegółowa analiza</h2>
        <p>Obliczenie strat ciśnienia (oporów hydraulicznych) w ogrzewaniu podłogowym to moment, w którym decyduje się, czy Twoja pompa obiegowa zdoła „przepchnąć” wodę przez gąszcz rur. Na opór pętli składają się <strong>straty liniowe</strong> (wynikające z ocierania się wody o ścianki rury na danej długości) oraz <strong>straty miejscowe</strong> (łuki, załamania, zawory w <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczu</a>).</p>
        
        <div class="rk-pres-rules">
            <div class="rk-pres-rule-card">
                <div class="rk-pres-rule-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><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>
                <h3>Granica 20 kPa</h3>
                <p>Łączne opory pętli nie mogą przekroczyć 15–20 kPa (ok. 2,0 m słupa wody). Powyżej tej wartości zrównoważenie hydrauliczne staje się niemożliwe, a pompa drastycznie dławi układ.</p>
            </div>
            
            <div class="rk-pres-rule-card">
                <div class="rk-pres-rule-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"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                </div>
                <h3>Odpowietrzenie (>0,15 m/s)</h3>
                <p>Prędkość wody nie może spaść poniżej 0,15 m/s. Jeśli woda płynie wolniej, nie jest w stanie wypchnąć pęcherzyków powietrza do separatora.</p>
            </div>
            
            <div class="rk-pres-rule-card">
                <div class="rk-pres-rule-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 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>
                <h3>Szumy i Erozja (<0,6 m/s)</h3>
                <p>Przekroczenie prędkości 0,6 m/s wywołuje głośne szumy w instalacji, a siła tarcia przyspiesza destrukcję struktury wewnętrznej pętli.</p>
            </div>
        </div>
        
        <p>W praktyce inżynierskiej opieramy się na tabelach jednostkowych spadków ciśnienia (R) producentów rur. Widzimy z nich dobitnie, że przy wyższych przepływach (wymaganych przez pompy ciepła), <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rura PEX 16 mm</a> zaczyna stawiać gigantyczny opór w porównaniu do rury 20 mm.</p>
    </div>

    <div class="rk-pres-analyzer">
        <div class="rk-analyzer-header">
            <h3>Analizator Hydrauliczny: Wybór Średnicy</h3>
        </div>

        <div class="rk-analyzer-grid">
            <div class="rk-analyzer-controls">
                
                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Zapotrzebowanie na ciepło salonu</span>
                        <span class="rk-control-val" id="dispWatt">1500 W</span>
                    </div>
                    <input type="range" id="rngWatt" class="rk-slider-pres" min="800" max="2500" step="50" value="1500">
                </div>

                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Długość pętli grzewczej</span>
                        <span class="rk-control-val" id="dispLen">85 m</span>
                    </div>
                    <input type="range" id="rngLen" class="rk-slider-pres" min="50" max="150" step="5" value="85">
                </div>

                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Źródło ciepła (Dynamika przepływu)</span>
                    </div>
                    <div class="rk-switch-group">
                        <div class="rk-switch-btn active" id="modeGas">Kocioł Gaz (ΔT=10K)</div>
                        <div class="rk-switch-btn" id="modeHP">Pompa Ciepła (ΔT=5K)</div>
                    </div>
                </div>

                <div class="rk-control-block">
                    <div class="rk-control-label">
                        <span>Średnica badanej rury</span>
                    </div>
                    <div class="rk-switch-group">
                        <div class="rk-switch-btn active" id="pipe16">16 x 2.0 mm</div>
                        <div class="rk-switch-btn" id="pipe20">20 x 2.0 mm</div>
                    </div>
                </div>

            </div>

            <div class="rk-results-box">
                <div class="rk-result-metric">
                    <div class="rk-metric-title">Przepływ masowy w pętli</div>
                    <div class="rk-metric-value-wrap">
                        <span class="rk-metric-num" id="resMass" style="color:#ffffff;">130</span>
                        <span class="rk-metric-unit">kg/h</span>
                    </div>
                </div>

                <div class="rk-result-metric">
                    <div class="rk-metric-title">Łączny spadek ciśnienia (z oporem miejscowym)</div>
                    <div class="rk-metric-value-wrap">
                        <span class="rk-metric-num" id="resKpa">20.4</span>
                        <span class="rk-metric-unit">kPa</span>
                    </div>
                    <div id="badgeKpa" class="rk-status-badge">W GRANICACH NORMY</div>
                </div>

                <div class="rk-result-metric" style="border:none; padding:0;">
                    <div class="rk-metric-title">Prędkość przepływu</div>
                    <div class="rk-metric-value-wrap">
                        <span class="rk-metric-num" id="resVel">0.30</span>
                        <span class="rk-metric-unit">m/s</span>
                    </div>
                    <div id="badgeVel" class="rk-status-badge rk-badge-ok">OPTYMALNA PRĘDKOŚĆ</div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // UI Elements
    var rngWatt = document.getElementById('rngWatt');
    var dispWatt = document.getElementById('dispWatt');
    var rngLen = document.getElementById('rngLen');
    var dispLen = document.getElementById('dispLen');
    
    var modeGas = document.getElementById('modeGas');
    var modeHP = document.getElementById('modeHP');
    var pipe16 = document.getElementById('pipe16');
    var pipe20 = document.getElementById('pipe20');
    
    // Result Elements
    var resMass = document.getElementById('resMass');
    var resKpa = document.getElementById('resKpa');
    var badgeKpa = document.getElementById('badgeKpa');
    var resVel = document.getElementById('resVel');
    var badgeVel = document.getElementById('badgeVel');

    // State Variables
    var currentDt = 10; // 10K (Gaz) domyślnie
    var currentPipe = 16; // 16mm domyślnie

    // Event Listeners
    modeGas.addEventListener('click', function() {
        modeGas.classList.add('active');
        modeHP.classList.remove('active');
        currentDt = 10;
        updateSim();
    });

    modeHP.addEventListener('click', function() {
        modeHP.classList.add('active');
        modeGas.classList.remove('active');
        currentDt = 5;
        updateSim();
    });

    pipe16.addEventListener('click', function() {
        pipe16.classList.add('active');
        pipe20.classList.remove('active');
        currentPipe = 16;
        updateSim();
    });

    pipe20.addEventListener('click', function() {
        pipe20.classList.add('active');
        pipe16.classList.remove('active');
        currentPipe = 20;
        updateSim();
    });

    rngWatt.addEventListener('input', function() {
        dispWatt.innerText = this.value + ' W';
        updateSim();
    });

    rngLen.addEventListener('input', function() {
        dispLen.innerText = this.value + ' m';
        updateSim();
    });

    // Core Simulation Logic
    function updateSim() {
        var q = parseInt(rngWatt.value, 10);
        var len = parseInt(rngLen.value, 10);

        // 1. Obliczenie przepływu masowego [kg/h]
        // Wzór uproszczony: Q / (cw * dt) gdzie cw wody ok 1.16 Wh/kgK
        var flow = q / (1.16 * currentDt);
        
        // 2. Estymacja oporu jednostkowego z tabel inżynierskich (R w Pa/m)
        var R = 0;
        var vel = 0;

        if(currentPipe === 16) {
            // Estymacja krzywej dla 16x2.0 (wew 12mm)
            // ok. 120 Pa/m przy 100 kg/h, drastycznie rośnie
            R = Math.pow((flow / 10), 1.85) * 0.16;
            vel = flow * 0.00245; 
        } else {
            // Estymacja krzywej dla 20x2.0 (wew 16mm)
            // ok. 25 Pa/m przy 100 kg/h
            R = Math.pow((flow / 10), 1.75) * 0.04;
            vel = flow * 0.00138;
        }

        // 3. Spadek ciśnienia całkowity = (Liniowy * Długość) + Opory miejscowe(20%)
        var totalPa = (R * len) * 1.2;
        var totalKpa = totalPa / 1000;

        // 4. Aktualizacja UI Wyników
        resMass.innerText = Math.round(flow);
        resKpa.innerText = totalKpa.toFixed(1);
        resVel.innerText = vel.toFixed(2);

        // 5. Zmiana Statusów i Kolorów kPa
        var isKpaCritical = false;
        if(totalKpa > 20) { isKpaCritical = true; }

        if(isKpaCritical === false) {
            resKpa.style.color = "var(--rk-pres-green)";
            badgeKpa.className = "rk-status-badge rk-badge-ok";
            if(totalKpa > 15) {
                badgeKpa.innerText = "NA GRANICY (wymaga regulacji)";
                badgeKpa.className = "rk-status-badge rk-badge-gold";
                resKpa.style.color = "var(--rk-pres-gold)";
            } else {
                badgeKpa.innerText = "IDEALNE OPORY HYDRAULICZNE";
            }
        } else {
            resKpa.style.color = "var(--rk-pres-red)";
            badgeKpa.className = "rk-status-badge rk-badge-warn";
            badgeKpa.innerText = "KRYTYCZNE OPORY (Zmień rurę/Podziel pętlę)";
        }

        // 6. Zmiana Statusów i Kolorów Prędkości
        var velState = 0; // 0=OK, 1=Slow, 2=Fast
        if(vel < 0.15) { velState = 1; }
        if(vel > 0.6) { velState = 2; }

        if(velState === 0) {
            resVel.style.color = "var(--rk-pres-green)";
            badgeVel.className = "rk-status-badge rk-badge-ok";
            badgeVel.innerText = "PRAWIDŁOWA (Dobre odpowietrzenie)";
        } else if (velState === 1) {
            resVel.style.color = "var(--rk-pres-gold)";
            badgeVel.className = "rk-status-badge rk-badge-gold";
            badgeVel.innerText = "ZBYT WOLNO (Ryzyko zapowietrzenia)";
        } else {
            resVel.style.color = "var(--rk-pres-red)";
            badgeVel.className = "rk-status-badge rk-badge-warn";
            badgeVel.innerText = "ZA SZYBKO (Szumy i Erozja)";
        }
    }

    // Init run
    updateSim();
});
</script>



<style>
:root {
    --rk-proj-dark: #0f172a;
    --rk-proj-blue: #0284c7;
    --rk-proj-accent: #38bdf8;
    --rk-proj-bg: #ffffff;
    --rk-proj-gray: #f8fafc;
    --rk-proj-text: #334155;
    --rk-proj-border: #e2e8f0;
    --rk-proj-gold: #eab308;
}

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

/* Nagłówek Sekcji */
.rk-proj-header {
    padding: 45px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-proj-gray) 100%);
    border-bottom: 1px solid var(--rk-proj-border);
}

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

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

.rk-proj-header a {
    color: var(--rk-proj-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.3s;
}

.rk-proj-header a:hover {
    border-color: var(--rk-proj-blue);
}

/* Moduł Interaktywny */
.rk-proj-interactive {
    display: grid;
    grid-template-columns: 300px 1fr;
    background: var(--rk-proj-dark);
    color: #ffffff;
}

.rk-proj-sidebar {
    padding: 30px;
    border-right: 1px solid rgba(255,255,255,0.1);
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-proj-tab-btn {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 20px;
    border-radius: 12px;
    color: #94a3b8;
    font-size: 15px;
    font-weight: 700;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-proj-tab-btn:hover {
    background: rgba(255,255,255,0.1);
    color: #ffffff;
}

.rk-proj-tab-btn.active {
    background: var(--rk-proj-blue);
    border-color: var(--rk-proj-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-proj-icon-wrap {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background: rgba(0,0,0,0.2);
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-proj-tab-btn.active .rk-proj-icon-wrap {
    background: rgba(255,255,255,0.2);
}

/* Wyświetlacz Treści */
.rk-proj-display {
    padding: 40px;
    position: relative;
    overflow: hidden;
}

.rk-proj-content-panel {
    display: none;
    animation: fadeIn 0.4s ease forwards;
}

.rk-proj-content-panel.active {
    display: block;
}

@keyframes fadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-proj-content-panel h3 {
    margin: 0 0 15px 0;
    font-size: 24px;
    color: #ffffff;
}

.rk-proj-content-panel p {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin-bottom: 25px;
}

.rk-proj-data-box {
    background: #1e293b;
    border-radius: 12px;
    padding: 20px;
    border: 1px solid #334155;
    display: flex;
    gap: 20px;
    align-items: center;
}

.rk-proj-svg-illustrator {
    width: 80px;
    height: 80px;
    flex-shrink: 0;
}

.rk-proj-data-text h4 {
    margin: 0 0 5px 0;
    color: var(--rk-proj-accent);
    font-size: 16px;
}

.rk-proj-data-text p {
    margin: 0;
    font-size: 14px;
    color: #94a3b8;
    line-height: 1.5;
}

/* Wielkie CTA Sprzedażowe */
.rk-proj-cta-section {
    padding: 45px 50px;
    background: #ffffff;
    text-align: center;
}

.rk-proj-cta-section h3 {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-proj-dark);
    margin: 0 0 15px 0;
}

.rk-btn-sell {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: linear-gradient(135deg, var(--rk-proj-blue) 0%, #0369a1 100%);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -10px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-sell:hover {
    transform: translateY(-4px);
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.6);
    border-color: var(--rk-proj-accent);
}

.rk-btn-sell svg {
    transition: transform 0.3s;
}

.rk-btn-sell:hover svg {
    transform: translateX(5px);
}

@media (max-width: 768px) {
    .rk-proj-interactive { grid-template-columns: 1fr; }
    .rk-proj-sidebar { padding: 25px; border-right: none; border-bottom: 1px solid rgba(255,255,255,0.1); flex-direction: column; }
    /* Akordeonowy pionowy układ na mobile */
    .rk-proj-header, .rk-proj-display, .rk-proj-cta-section { padding: 30px 20px; }
    .rk-proj-data-box { flex-direction: column; text-align: center; }
    .rk-btn-sell { width: 100%; padding: 18px 20px; font-size: 16px; }
    .rk-proj-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-wplyw-projektu",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Jak średnica rury wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Profesjonalne równoważenie hydrauliczne, precyzyjne wyliczenia OZC oraz dobór pompy obiegowej chronią przed niedogrzaniem i zbędnymi kosztami. Dowiedz się, co zawiera inżynierski projekt.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-optymalizacja",
    "name": "Zestawienie optymalizacji kosztów instalacji płaszczyznowej",
    "description": "Dane z modelu inżynierskiego obrazujące tzw. złoty środek: balans między nakładem na materiał (rury 16/20 mm) a kosztami eksploatacyjnymi (pobór prądu przez pompę ciepła).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczeniowe zapotrzebowanie na ciepło ozc",
      "równoważenie hydrauliczne podłogówki",
      "dobór pompy obiegowej",
      "optymalizacja kosztów instalacji",
      "projekt ogrzewania podłogowego"
    ],
    "measurementTechnique": "Algorytm kalkulujący optymalną moc z metra kwadratowego na podstawie rozstawu rur w strefach przyokiennych oraz oporów układu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC: Wymusza zagęszczenie rur w strefach brzegowych.",
        "Hydraulika: Wymusza większe średnice na długich odcinkach (np. 20 mm).",
        "Balans: Optymalizacja zabezpiecza przed przewymiarowaniem systemu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-inżynier",
    "name": "Wirtualny Asystent Projektanta HVAC",
    "description": "Interaktywny eksplorator demonstrujący wpływ obliczeń OZC, równoważenia układu i wyboru materiału na rentowność inwestycji w ogrzewanie.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-proj-container">
    <div class="rk-proj-header">
        <h2>Jak średnica rury wpływa na profesjonalny projekt ogrzewania podłogowego?</h2>
        <p>Profesjonalny projekt ogrzewania to znacznie więcej niż tylko radosne zliczanie metrów bieżących. Serce systemu to precyzyjne <strong>równoważenie hydrauliczne</strong> układu. Jeśli w Twoim domu pętle mają drastycznie różną długość i przypadkowe przekroje rur, nie osiągniesz komfortu bez kłopotliwego, manualnego dławienia rotametrów. Zobacz, co kryje się za rzetelnym opracowaniem inżynierskim.</p>
    </div>

    <div class="rk-proj-interactive">
        <div class="rk-proj-sidebar" id="rkTabControls">
            <button class="rk-proj-tab-btn active" data-target="tab-ozc">
                <div class="rk-proj-icon-wrap">
                    <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 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>
                Wyliczenia OZC i Moc
            </button>
            <button class="rk-proj-tab-btn" data-target="tab-pompa">
                <div class="rk-proj-icon-wrap">
                    <svg width="22" height="22" 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="M12 16v-4"></path><path d="M12 8h.01"></path></svg>
                </div>
                Dobór Pompy i Opory
            </button>
            <button class="rk-proj-tab-btn" data-target="tab-koszty">
                <div class="rk-proj-icon-wrap">
                    <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="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>
                Optymalizacja Kosztów
            </button>
        </div>

        <div class="rk-proj-display">
            <!-- Panel 1: OZC -->
            <div class="rk-proj-content-panel active" id="tab-ozc">
                <h3>Obliczeniowe Zapotrzebowanie na Ciepło (OZC)</h3>
                <p>Nie układamy rur wszędzie tak samo. Średnica rury i jej gęstość są dobierane tak, aby idealnie zrekompensować straty budynku. W strefach przyokiennych <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" style="color:var(--rk-proj-accent);">wyliczenia OZC</a> wymuszają gęstszy rozstaw (np. co 10 cm), aby zapewnić pożądaną moc z każdego metra kwadratowego podłogi.</p>
                <div class="rk-proj-data-box">
                    <svg class="rk-proj-svg-illustrator" viewBox="0 0 100 100">
                        <rect x="20" y="20" width="60" height="60" rx="8" fill="none" stroke="var(--rk-proj-accent)" stroke-width="4" stroke-dasharray="8 4"/>
                        <path d="M 30 50 Q 50 20 70 50 T 110 50" fill="none" stroke="#ef4444" stroke-width="6"/>
                    </svg>
                    <div class="rk-proj-data-text">
                        <h4>Precyzja grzewcza</h4>
                        <p>Dopasowujemy przekaz energii bezpośrednio do wymagań normatywnych pomieszczenia. Zero stref chłodu.</p>
                    </div>
                </div>
            </div>

            <!-- Panel 2: Pompa -->
            <div class="rk-proj-content-panel" id="tab-pompa">
                <h3>Dobór pompy obiegowej</h3>
                <p>Każda pętla stawia opór wodzie. Średnica 16 mm na odcinku 100 metrów dusi układ. Na podstawie wyliczonych spadków ciśnień inżynier dopasowuje <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/" style="color:var(--rk-proj-accent);">wysokość podnoszenia pompy</a>. Wymusza to nierzadko wdrożenie grubszej rury 20 mm w obiegach krytycznych.</p>
                <div class="rk-proj-data-box">
                    <svg class="rk-proj-svg-illustrator" viewBox="0 0 100 100">
                        <circle cx="50" cy="50" r="35" fill="none" stroke="var(--rk-proj-accent)" stroke-width="4"/>
                        <path d="M50 15 L50 40 L65 55" fill="none" stroke="#ffffff" stroke-width="6" stroke-linecap="round"/>
                        <circle cx="50" cy="50" r="8" fill="#eab308"/>
                    </svg>
                    <div class="rk-proj-data-text">
                        <h4>Płynna hydraulika</h4>
                        <p>Odciążenie serca instalacji gwarantuje bezszelestną pracę oraz wydłuża żywotność podzespołów urządzenia grzewczego.</p>
                    </div>
                </div>
            </div>

            <!-- Panel 3: Koszty -->
            <div class="rk-proj-content-panel" id="tab-koszty">
                <h3>Inżynierski Złoty Środek Kosztów</h3>
                <p>Projektowanie to sztuka balansu. Zbyt duża średnica rur to potężny, całkowicie zbędny koszt materiałowy na etapie wylewki. Z kolei rury zbyt wąskie wymuszą wysokie rachunki za prąd. Profesjonalny dokument pozwala znaleźć punkt przecięcia inwestycji z maksymalnym ROI.</p>
                <div class="rk-proj-data-box">
                    <svg class="rk-proj-svg-illustrator" viewBox="0 0 100 100">
                        <path d="M10 80 L90 80" stroke="var(--rk-proj-border)" stroke-width="4"/>
                        <path d="M20 70 L40 30 L60 50 L80 20" fill="none" stroke="var(--rk-proj-gold)" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
                        <circle cx="80" cy="20" r="6" fill="#ffffff"/>
                    </svg>
                    <div class="rk-proj-data-text">
                        <h4>Maksymalne ROI</h4>
                        <p>Oszczędności, które uzyskujesz dzięki zrównoważeniu instalacji, zwracają koszt wykonania projektu zazwyczaj już w pierwszym sezonie.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-proj-cta-section">
        <h3>Nie zgaduj. Zbuduj system oparty na liczbach.</h3>
        <p style="color: #64748b; margin-bottom: 25px;">Decyzje podejmowane "na budowie" kosztują najwięcej. Zabezpiecz swój kapitał i zleć obliczenia specjalistom.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-sell">
            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() {
    var tabs = document.querySelectorAll('.rk-proj-tab-btn');
    var panels = document.querySelectorAll('.rk-proj-content-panel');

    tabs.forEach(function(tab) {
        tab.addEventListener('click', function() {
            // Czyszczenie klas active
            tabs.forEach(function(t) { t.classList.remove('active'); });
            panels.forEach(function(p) { p.classList.remove('active'); });
            
            // Dodanie klasy active do klikniętego elementu
            this.classList.add('active');
            
            // Pobranie id panelu i jego wyświetlenie (zabezpieczone ifem, bez operatorów &&)
            var targetId = this.getAttribute('data-target');
            if(targetId) {
                var targetPanel = document.getElementById(targetId);
                if(targetPanel) {
                    targetPanel.classList.add('active');
                }
            }
        });
    });
});
</script>



<style>
:root {
    --rk-algo-dark: #1e293b;
    --rk-algo-card: #ffffff;
    --rk-algo-bg: #f8fafc;
    --rk-algo-blue: #0284c7;
    --rk-algo-accent: #38bdf8;
    --rk-algo-red: #ef4444;
    --rk-algo-green: #10b981;
    --rk-algo-border: #e2e8f0;
    --rk-algo-text: #475569;
}

.rk-algo-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-algo-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-algo-border);
    overflow: hidden;
}

/* Sekcja Teorii i Algorytmu */
.rk-algo-theory {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-algo-bg));
}

.rk-algo-theory h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-algo-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-algo-theory p {
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-algo-text);
    margin-bottom: 25px;
}

.rk-algo-steps {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-algo-step {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    background: #ffffff;
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-algo-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-algo-step-num {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    background: var(--rk-algo-blue);
    color: #ffffff;
    font-weight: 800;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
}

.rk-algo-step-content h3 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-algo-dark);
}

.rk-algo-step-content p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
}

.rk-algo-step-content a {
    color: var(--rk-algo-blue);
    font-weight: 700;
    text-decoration: none;
    box-shadow: inset 0 -2px 0 rgba(2, 132, 199, 0.2);
}

.rk-algo-step-content code {
    background: #f1f5f9;
    padding: 2px 6px;
    border-radius: 4px;
    font-family: monospace;
    font-weight: 700;
    color: var(--rk-algo-dark);
}

/* Sekcja Kalkulatora Live */
.rk-live-calc-wrapper {
    background: var(--rk-algo-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-calc-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-calc-header h3 {
    margin: 0;
    font-size: 24px;
    color: #ffffff;
}

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

/* Kontrolki Suwaków */
.rk-control-group {
    margin-bottom: 25px;
}

.rk-control-label {
    display: flex;
    justify-content: space-between;
    margin-bottom: 10px;
    font-weight: 700;
    font-size: 14px;
    color: #cbd5e1;
}

.rk-control-val {
    color: var(--rk-algo-accent);
    font-size: 16px;
}

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

.rk-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-algo-accent);
    cursor: pointer;
    border: 4px solid var(--rk-algo-dark);
    box-shadow: 0 0 0 2px var(--rk-algo-accent);
    transition: transform 0.1s;
}

.rk-slider::-webkit-slider-thumb:active {
    transform: scale(1.2);
}

.rk-toggle-group {
    display: flex;
    background: #334155;
    border-radius: 12px;
    padding: 4px;
}

.rk-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 12px;
    color: #94a3b8;
    font-weight: 700;
    font-size: 14px;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
}

.rk-toggle-btn.active {
    background: var(--rk-algo-blue);
    color: #ffffff;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

/* Wyniki Live */
.rk-results-panel {
    background: #0f172a;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 30px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-result-item {
    margin-bottom: 20px;
    padding-bottom: 20px;
    border-bottom: 1px solid #1e293b;
}

.rk-result-item:last-child {
    margin-bottom: 0;
    padding-bottom: 0;
    border-bottom: none;
}

.rk-result-title {
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: #64748b;
    margin-bottom: 8px;
}

.rk-result-value {
    font-size: 32px;
    font-weight: 900;
    display: flex;
    align-items: baseline;
    gap: 8px;
    transition: color 0.3s;
}

.rk-result-unit {
    font-size: 16px;
    color: #94a3b8;
    font-weight: 600;
}

.rk-status-indicator {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    margin-top: 10px;
}

.status-ok { background: rgba(16, 185, 129, 0.2); color: var(--rk-algo-green); }
.status-warn { background: rgba(239, 68, 68, 0.2); color: var(--rk-algo-red); }

@media (max-width: 768px) {
    .rk-algo-theory, .rk-live-calc-wrapper { padding: 30px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 30px; }
    .rk-algo-theory h2 { font-size: 24px; }
    .rk-result-value { font-size: 28px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Algorytm doboru średnicy rur w projekcie ogrzewania podłogowego",
    "description": "5-etapowy inżynierski algorytm doboru rur (Q_obl, strumień masy, straty ciśnienia). Symulator na żywo weryfikujący parametry rury 16x2.0.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-algorytm",
    "name": "Zmienne równania hydraulicznego dla instalacji pętlowych",
    "description": "Baza parametrów dla algorytmu doboru rur: moc cieplna, współczynnik Delta T, ciepło właściwe wody oraz jednostkowe spadki ciśnienia dla pętli PEX/PERT.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wzór na przepływ wody w ogrzewaniu podłogowym",
      "algorytm doboru rur",
      "obliczanie strat ciśnienia w podłogówce",
      "różnica temperatur delta T",
      "prędkość przepływu wody w rurach"
    ],
    "measurementTechnique": "Algorytmiczne przeliczanie strumienia masy (Q / cw * Delta T) na opór w kPa na podstawie długości pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ograniczenie prędkości: od 0.15 do 0.6 m/s.",
        "Ograniczenie oporu całkowitego pętli: poniżej 20 kPa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-kalkulator",
    "name": "Interaktywny Kalkulator Algorytmu Hydraulicznego",
    "description": "Narzędzie symulacyjne czasu rzeczywistego, pozwalające inwestorom na wizualizację wzrostu oporów w rurze 16 mm podczas manipulacji mocą grzewczą i różnicą temperatur.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-algo-container">
    <div class="rk-algo-theory">
        <h2>Algorytm doboru średnicy rur w projekcie ogrzewania podłogowego</h2>
        <p>Precyzyjny dobór średnicy rury musi poprzedzać dokładny projekt inżynierski. Decyzje podejmowane przed momentem, w którym wylewana jest <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewka betonowa</a>, są nieodwracalne. Zgodnie z normą <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264</a>, oto pełen proces decyzyjny projektanta:</p>
        
        <div class="rk-algo-steps">
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">1</div>
                <div class="rk-algo-step-content">
                    <h3>Wyznaczenie strat ciepła (Q_obl)</h3>
                    <p>Obliczamy straty dla każdego pomieszczenia indywidualnie, uwzględniając przenikanie przez przegrody oraz wentylację.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">2</div>
                <div class="rk-algo-step-content">
                    <h3>Przyjęcie parametru Delta T</h3>
                    <p>Ustalamy różnicę temperatur między zasilaniem a powrotem. Dla pompy ciepła to najczęściej 5K (np. 35/30 st. C), a dla instalacji mających <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kocioł gazowy</a> wynosi ona zazwyczaj 10K.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">3</div>
                <div class="rk-algo-step-content">
                    <h3>Obliczenie strumienia masy</h3>
                    <p>Korzystamy z fundamentalnego wzoru: <code>Przepływ = Moc (Q) / (Ciepło właściwe * Delta T)</code>. Zmiana Delta T z 10K na 5K podwaja ilość wody, którą trzeba przepompować.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">4</div>
                <div class="rk-algo-step-content">
                    <h3>Wybór średnicy i analiza oporów (R)</h3>
                    <p>Sumaryczny opór danej pętli <code>S = (Opór liniowy R * Długość pętli L * 1.2) + Opory miejscowe</code> nie może przekroczyć granicy bezpieczeństwa <strong>20 kPa</strong>.</p>
                </div>
            </div>
            <div class="rk-algo-step">
                <div class="rk-algo-step-num">5</div>
                <div class="rk-algo-step-content">
                    <h3>Weryfikacja prędkości</h3>
                    <p>Woda musi płynąć z prędkością w przedziale <strong>0.15 – 0.6 m/s</strong>. Poniżej 0.15 układ się nie odpowietrzy, powyżej 0.6 pojawią się szumy uderzające w komfort mieszkańców.</p>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-live-calc-wrapper">
        <div class="rk-calc-header">
            <h3>Symulacja dla rury 16x2.0 mm</h3>
            <p style="color: #94a3b8; font-size: 15px; margin-top: 10px;">Sprawdź samodzielnie, jak parametry wpływają na opory układu.</p>
        </div>

        <div class="rk-calc-grid">
            <!-- Interfejs Wprowadzania Danych -->
            <div class="rk-calc-controls">
                
                <div class="rk-control-group">
                    <div class="rk-control-label">
                        <span>Zapotrzebowanie na ciepło (Q)</span>
                        <span class="rk-control-val" id="valQ">1000 W</span>
                    </div>
                    <input type="range" id="sliderQ" class="rk-slider" min="300" max="2500" step="50" value="1000">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-label">
                        <span>Długość projektowanej pętli</span>
                        <span class="rk-control-val" id="valL">80 m</span>
                    </div>
                    <input type="range" id="sliderL" class="rk-slider" min="40" max="150" step="5" value="80">
                </div>

                <div class="rk-control-group">
                    <div class="rk-control-label">
                        <span>Źródło ciepła (Parametr Delta T)</span>
                    </div>
                    <div class="rk-toggle-group">
                        <div class="rk-toggle-btn active" id="btnDt5" data-dt="5">Pompa Ciepła (5K)</div>
                        <div class="rk-toggle-btn" id="btnDt10" data-dt="10">Kocioł Gazowy (10K)</div>
                    </div>
                </div>

            </div>

            <!-- Panel Wyników Czasu Rzeczywistego -->
            <div class="rk-results-panel">
                
                <div class="rk-result-item">
                    <div class="rk-result-title">Wymagany przepływ czynnika</div>
                    <div class="rk-result-value" style="color: #ffffff;">
                        <span id="resFlow">2.87</span>
                        <span class="rk-result-unit">l/min</span>
                    </div>
                </div>

                <div class="rk-result-item">
                    <div class="rk-result-title">Opory hydrauliczne pętli</div>
                    <div class="rk-result-value" id="resPressure">
                        <span id="valPressure">14.2</span>
                        <span class="rk-result-unit">kPa</span>
                    </div>
                    <div class="rk-status-indicator" id="statPressure">W NORMIE</div>
                </div>

                <div class="rk-result-item" style="border:none; padding:0;">
                    <div class="rk-result-title">Prędkość przepływu</div>
                    <div class="rk-result-value" id="resVelocity">
                        <span id="valVelocity">0.42</span>
                        <span class="rk-result-unit">m/s</span>
                    </div>
                    <div class="rk-status-indicator" id="statVelocity">W NORMIE</div>
                </div>

            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Referencje UI
    var sliderQ = document.getElementById('sliderQ');
    var valQ = document.getElementById('valQ');
    var sliderL = document.getElementById('sliderL');
    var valL = document.getElementById('valL');
    var btnDt5 = document.getElementById('btnDt5');
    var btnDt10 = document.getElementById('btnDt10');
    
    // Referencje Wyników
    var resFlow = document.getElementById('resFlow');
    var valPressure = document.getElementById('valPressure');
    var statPressure = document.getElementById('statPressure');
    var colorPressure = document.getElementById('resPressure');
    var valVelocity = document.getElementById('valVelocity');
    var statVelocity = document.getElementById('statVelocity');
    var colorVelocity = document.getElementById('resVelocity');

    var currentDt = 5;

    // Obsługa Toggli Delta T
    btnDt5.addEventListener('click', function() {
        btnDt5.classList.add('active');
        btnDt10.classList.remove('active');
        currentDt = 5;
        calculatePhysics();
    });

    btnDt10.addEventListener('click', function() {
        btnDt10.classList.add('active');
        btnDt5.classList.remove('active');
        currentDt = 10;
        calculatePhysics();
    });

    // Obsługa Suwaków
    sliderQ.addEventListener('input', function() {
        valQ.innerText = this.value + ' W';
        calculatePhysics();
    });

    sliderL.addEventListener('input', function() {
        valL.innerText = this.value + ' m';
        calculatePhysics();
    });

    // Silnik Obliczeniowy (Bezpieczny JS)
    function calculatePhysics() {
        var q = parseInt(sliderQ.value);
        var len = parseInt(sliderL.value);
        
        // Strumień masy: Q / (cw * Delta T)
        // Dla ułatwienia cw_wody = 1.16 Wh/kgK
        var flowKgH = q / (1.16 * currentDt);
        var flowLMin = flowKgH / 60;
        
        // Estymacja fizyki dla rury 16x2.0 (wew. 12mm)
        var velocity = flowKgH * 0.00245; 
        
        // Empiryczne uproszczenie oporów liniowych dla prezentacji (rośnie wykładniczo)
        var oporLiniowyM = Math.pow(flowKgH / 10, 1.85) * 0.15; 
        var oporCalkowityPa = (oporLiniowyM * len * 1.2) + (flowKgH * 15); // + złączki/rozdzielacz
        var oporKpa = oporCalkowityPa / 1000;

        // Aktualizacja UI
        resFlow.innerText = flowLMin.toFixed(2);
        valPressure.innerText = oporKpa.toFixed(1);
        valVelocity.innerText = velocity.toFixed(2);

        // Statusy Oporów (z pominięciem "&&" dla bezpieczeństwa HTML parserów)
        var isPressureOk = true;
        if (oporKpa > 20) {
            isPressureOk = false;
        }

        if (isPressureOk) {
            statPressure.innerText = "W NORMIE";
            statPressure.className = "rk-status-indicator status-ok";
            colorPressure.style.color = "#10b981";
        } else {
            statPressure.innerText = "KRYTYCZNE OPORY";
            statPressure.className = "rk-status-indicator status-warn";
            colorPressure.style.color = "#ef4444";
        }

        // Statusy Prędkości (z pominięciem "&&")
        var velStatus = 0; // 0=OK, 1=Za wolno, 2=Za szybko
        if (velocity < 0.15) { velStatus = 1; }
        if (velocity > 0.6) { velStatus = 2; }

        if (velStatus === 0) {
            statVelocity.innerText = "W NORMIE";
            statVelocity.className = "rk-status-indicator status-ok";
            colorVelocity.style.color = "#10b981";
        } else {
            statVelocity.className = "rk-status-indicator status-warn";
            colorVelocity.style.color = "#ef4444";
            if (velStatus === 1) {
                statVelocity.innerText = "BRAK ODPOWIETRZENIA";
            }
            if (velStatus === 2) {
                statVelocity.innerText = "SZUMY / EROZJA";
            }
        }
    }

    // Inicjalne wywołanie
    calculatePhysics();
});
</script>



<style>
:root {
    --rk-chart-dark: #0f172a;
    --rk-chart-panel: #1e293b;
    --rk-chart-blue: #0284c7;
    --rk-chart-accent: #38bdf8;
    --rk-chart-bg: #f8fafc;
    --rk-chart-border: #cbd5e1;
    --rk-chart-text: #334155;
    --rk-chart-r16: #ef4444; /* Czerwony - wysokie opory */
    --rk-chart-r17: #eab308; /* Złoty - średnie opory */
    --rk-chart-r20: #10b981; /* Zielony - niskie opory */
}

.rk-chart-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-chart-blue);
    overflow: hidden;
}

/* Część Opisowa */
.rk-chart-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-chart-bg) 100%);
    border-bottom: 1px solid var(--rk-chart-border);
}

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

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

.rk-chart-header a {
    color: var(--rk-chart-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.2);
    transition: all 0.3s;
}

.rk-chart-header a:hover {
    border-color: var(--rk-chart-accent);
}

/* Interaktywny Plotter SVG */
.rk-chart-plotter {
    background: var(--rk-chart-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-plotter-title {
    text-align: center;
    margin-bottom: 25px;
}

.rk-plotter-title h3 {
    margin: 0;
    font-size: 20px;
    color: #ffffff;
}

/* Legenda i Kontrolki */
.rk-chart-legend {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-legend-btn {
    background: #334155;
    border: 2px solid transparent;
    padding: 12px 20px;
    border-radius: 12px;
    color: #ffffff;
    font-weight: 800;
    font-size: 14px;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: all 0.3s;
    opacity: 0.5;
}

.rk-legend-btn.active {
    opacity: 1;
    background: var(--rk-chart-panel);
}

.rk-legend-btn[data-line="16"].active { border-color: var(--rk-chart-r16); box-shadow: 0 4px 15px rgba(239, 68, 68, 0.2); }
.rk-legend-btn[data-line="17"].active { border-color: var(--rk-chart-r17); box-shadow: 0 4px 15px rgba(234, 179, 8, 0.2); }
.rk-legend-btn[data-line="20"].active { border-color: var(--rk-chart-r20); box-shadow: 0 4px 15px rgba(16, 185, 129, 0.2); }

.rk-legend-color {
    width: 14px;
    height: 14px;
    border-radius: 50%;
}
.rk-legend-btn[data-line="16"] .rk-legend-color { background: var(--rk-chart-r16); }
.rk-legend-btn[data-line="17"] .rk-legend-color { background: var(--rk-chart-r17); }
.rk-legend-btn[data-line="20"] .rk-legend-color { background: var(--rk-chart-r20); }

/* Kontener Wykresu */
.rk-svg-wrapper {
    width: 100%;
    background: var(--rk-chart-panel);
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 20px 20px 10px 10px;
    position: relative;
}

.rk-chart-svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Oś i Siatka */
.rk-axis-line { stroke: #475569; stroke-width: 2; }
.rk-grid-line { stroke: #334155; stroke-width: 1; stroke-dasharray: 4 4; }
.rk-axis-text { fill: #94a3b8; font-family: 'Inter', sans-serif; font-size: 12px; }
.rk-axis-title { fill: #cbd5e1; font-family: 'Inter', sans-serif; font-size: 14px; font-weight: bold; }

/* Linie Wykresu */
.rk-path-line {
    fill: none;
    stroke-width: 4;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: opacity 0.4s ease, stroke-width 0.2s;
}

.rk-path-line:hover {
    stroke-width: 6;
}

.rk-path-16 { stroke: var(--rk-chart-r16); }
.rk-path-17 { stroke: var(--rk-chart-r17); }
.rk-path-20 { stroke: var(--rk-chart-r20); }

/* Kropki danych */
.rk-data-point {
    transition: r 0.2s, opacity 0.4s;
    cursor: crosshair;
}
.rk-data-point:hover { r: 7; }

.rk-pt-16 { fill: var(--rk-chart-r16); }
.rk-pt-17 { fill: var(--rk-chart-r17); }
.rk-pt-20 { fill: var(--rk-chart-r20); }

/* Tooltip informacyjny z boku */
.rk-chart-info {
    margin-top: 20px;
    text-align: center;
    color: #94a3b8;
    font-size: 14px;
    padding: 15px;
    background: rgba(255,255,255,0.02);
    border-radius: 8px;
}

@media (max-width: 768px) {
    .rk-chart-header, .rk-chart-plotter { padding: 30px 20px; }
    .rk-chart-legend { flex-direction: column; gap: 10px; }
    .rk-legend-btn { justify-content: center; }
    .rk-chart-header h2 { font-size: 24px; }
    .rk-svg-wrapper { padding: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-wykres",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Wykres SVG: Spadek ciśnienia a przepływ w rurach 16, 17 i 20 mm",
    "description": "Interaktywny wykres hydrauliczny obrazujący wykładniczy wzrost oporów w rurach 16x2.0 względem wydajnych systemów 20x2.0 w instalacjach płaszczyznowych.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-krzywe",
    "name": "Krzywe charakterystyki oporów hydraulicznych rur ogrzewania podłogowego",
    "description": "Zbiór danych użyty do renderowania wektorowego wykresu SVG. Pokazuje przyrost spadku ciśnienia w Pa/m w funkcji przepływu od 40 do 200 kg/h.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wykres oporów hydraulicznych podłogówki",
      "spadek ciśnienia rura 16 vs 20",
      "charakterystyka rur pex",
      "przepływ wody a spadek ciśnienia",
      "opory liniowe rur wielowarstwowych"
    ],
    "measurementTechnique": "Wizualizacja graficzna zaimplementowana natywnie w SVG, transformująca dane hydrauliczne na krzywe wykładnicze ciśnienia.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "16mm krzywa: Przy 200 kg/h opór osiąga skrajne 480 Pa/m.",
        "20mm krzywa: Przy 200 kg/h opór oscyluje w bezpiecznej granicy 100 Pa/m."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-plotter",
    "name": "Wizualizator Krzywych Hydraulicznych (SVG)",
    "description": "Natywna, interaktywna aplikacja webowa do dynamicznego porównywania wykresów oporów instalacji grzewczych bez użycia zewnętrznych wtyczek.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS, SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-chart-container">
    <div class="rk-chart-header">
        <h2>Wykres: Spadek ciśnienia a przepływ w rurach 16, 17 i 20 mm</h2>
        <p>Nic tak nie obrazuje problemów z hydrauliką, jak suche dane przedstawione na wektorowym wykresie. Wzrost oporów przepływu wody nie jest liniowy – jest krzywą wykładniczą. Im mniejsza średnica rury, tym szybciej linia „wystrzeliwuje” w górę, co wprost przekłada się na dławienie <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompy obiegowej</a>.</p>
        <p style="margin-top: 15px;">Na poniższym interaktywnym wykresie przeanalizuj, co się dzieje z instalacją, gdy przepływ (wymuszony np. przez pompę ciepła) przekracza próg 120 kg/h. Użyj przycisków, aby włączać i wyłączać badane przekroje.</p>
    </div>

    <div class="rk-chart-plotter">
        <div class="rk-plotter-title">
            <h3>Porównanie Oporów Liniowych [Pa/m]</h3>
        </div>

        <div class="rk-chart-legend">
            <button class="rk-legend-btn active" data-line="16">
                <div class="rk-legend-color"></div> Rura 16x2.0
            </button>
            <button class="rk-legend-btn active" data-line="17">
                <div class="rk-legend-color"></div> Rura 17x2.0
            </button>
            <button class="rk-legend-btn active" data-line="20">
                <div class="rk-legend-color"></div> Rura 20x2.0
            </button>
        </div>

        <div class="rk-svg-wrapper">
            <!-- 
                Wykres SVG 
                X = Przepływ [kg/h] (40, 80, 120, 160, 200) => Odwzorowane na pozycje X: 80, 200, 320, 440, 560
                Y = Opór [Pa/m] (0 - 500) => Odwzorowane na Y od 300 (dół) do 40 (góra)
            -->
            <svg viewBox="0 0 620 360" class="rk-chart-svg" preserveAspectRatio="xMidYMid meet">
                
                <!-- Siatka i osie -->
                <line x1="60" y1="300" x2="600" y2="300" class="rk-axis-line" /> <!-- Oś X -->
                <line x1="60" y1="300" x2="60" y2="30" class="rk-axis-line" />  <!-- Oś Y -->
                
                <!-- Oznaczenia osi Y (Co 100 Pa/m. 500Pa/m = 40px, 0Pa/m = 300px. Skok co 52px) -->
                <line x1="60" y1="248" x2="600" y2="248" class="rk-grid-line" />
                <text x="50" y="252" class="rk-axis-text" text-anchor="end">100</text>
                
                <line x1="60" y1="196" x2="600" y2="196" class="rk-grid-line" />
                <text x="50" y="200" class="rk-axis-text" text-anchor="end">200</text>
                
                <line x1="60" y1="144" x2="600" y2="144" class="rk-grid-line" />
                <text x="50" y="148" class="rk-axis-text" text-anchor="end">300</text>
                
                <line x1="60" y1="92" x2="600" y2="92" class="rk-grid-line" />
                <text x="50" y="96" class="rk-axis-text" text-anchor="end">400</text>
                
                <line x1="60" y1="40" x2="600" y2="40" class="rk-grid-line" />
                <text x="50" y="44" class="rk-axis-text" text-anchor="end">500</text>

                <!-- Oznaczenia osi X (40, 80, 120, 160, 200 kg/h) -->
                <text x="80" y="325" class="rk-axis-text" text-anchor="middle">40</text>
                <text x="200" y="325" class="rk-axis-text" text-anchor="middle">80</text>
                <text x="320" y="325" class="rk-axis-text" text-anchor="middle">120</text>
                <text x="440" y="325" class="rk-axis-text" text-anchor="middle">160</text>
                <text x="560" y="325" class="rk-axis-text" text-anchor="middle">200</text>

                <!-- Tytuły Osi -->
                <text x="340" y="350" class="rk-axis-title" text-anchor="middle">Przepływ masowy [kg/h]</text>
                <text x="20" y="170" class="rk-axis-title" transform="rotate(-90 20,170)" text-anchor="middle">Opór jednostkowy [Pa/m]</text>

                <!-- KRZYWA: Rura 20mm (Zielona) - Punkty: 40->2, 80->15, 120->35, 160->65, 200->100 -->
                <!-- Y = 300 - (Value * 0.52) -->
                <g id="grp-20">
                    <path class="rk-path-line rk-path-20" d="M 80 299 C 140 295, 160 292, 200 292 S 280 282, 320 282 S 400 266, 440 266 S 520 248, 560 248" />
                    <circle cx="80" cy="299" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="200" cy="292" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="320" cy="282" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="440" cy="266" r="4" class="rk-data-point rk-pt-20" />
                    <circle cx="560" cy="248" r="4" class="rk-data-point rk-pt-20" />
                </g>

                <!-- KRZYWA: Rura 17mm (Złota) - Punkty: 40->10, 80->45, 120->120, 160->230, 200->350 -->
                <g id="grp-17">
                    <path class="rk-path-line rk-path-17" d="M 80 295 C 140 285, 160 276, 200 276 S 280 237, 320 237 S 400 180, 440 180 S 520 118, 560 118" />
                    <circle cx="80" cy="295" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="200" cy="276" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="320" cy="237" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="440" cy="180" r="4" class="rk-data-point rk-pt-17" />
                    <circle cx="560" cy="118" r="4" class="rk-data-point rk-pt-17" />
                </g>

                <!-- KRZYWA: Rura 16mm (Czerwona) - Punkty: 40->15, 80->70, 120->170, 160->330, 200->480 -->
                <g id="grp-16">
                    <path class="rk-path-line rk-path-16" d="M 80 292 C 140 275, 160 263, 200 263 S 280 211, 320 211 S 400 128, 440 128 S 520 50, 560 50" />
                    <circle cx="80" cy="292" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="200" cy="263" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="320" cy="211" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="440" cy="128" r="4" class="rk-data-point rk-pt-16" />
                    <circle cx="560" cy="50" r="4" class="rk-data-point rk-pt-16" />
                </g>
                
            </svg>
        </div>
        
        <div class="rk-chart-info">
            Zwróć uwagę, jak po przekroczeniu 120 kg/h rura 16 mm wpada w strefę krytycznych oporów (>170 Pa/m), podczas gdy rura 20 mm wciąż utrzymuje parametry niemal liniowe.
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-legend-btn');

    // Brak jakichkolwiek operatorów zakazanych (&& lub ||)
    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            var lineId = this.getAttribute('data-line');
            var group = document.getElementById('grp-' + lineId);
            
            if (this.classList.contains('active')) {
                // Wyłączanie
                this.classList.remove('active');
                if (group !== null) {
                    group.style.opacity = '0.1';
                }
            } else {
                // Włączanie
                this.classList.add('active');
                if (group !== null) {
                    group.style.opacity = '1';
                }
            }
        });
    }
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-blue: #0284c7;
    --rk-case-accent: #0ea5e9;
    --rk-case-bg: #f8fafc;
    --rk-case-card: #ffffff;
    --rk-case-border: #cbd5e1;
    --rk-case-text: #334155;
    --rk-case-red: #ef4444;
    --rk-case-red-bg: #fef2f2;
    --rk-case-green: #10b981;
    --rk-case-green-bg: #ecfdf5;
    --rk-case-gold: #eab308;
    --rk-case-gold-bg: #fefce8;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-case-blue);
    overflow: hidden;
}

/* Nagłówek i Historia */
.rk-case-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-case-bg) 100%);
    border-bottom: 1px solid var(--rk-case-border);
}

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-case-dark);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

.rk-case-header h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-case-dark);
    margin: 0 0 20px 0;
    line-height: 1.3;
}

.rk-case-story {
    display: flex;
    gap: 25px;
    background: #ffffff;
    padding: 25px;
    border-radius: 12px;
    border: 1px solid var(--rk-case-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-case-avatar {
    flex-shrink: 0;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: var(--rk-case-bg);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-case-blue);
    border: 2px solid var(--rk-case-accent);
}

.rk-case-story-text {
    flex: 1;
}

.rk-case-story-text h3 {
    margin: 0 0 10px 0;
    font-size: 18px;
    color: var(--rk-case-dark);
}

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

.rk-case-story-text p:last-child {
    margin-bottom: 0;
}

.rk-case-story-text strong {
    color: var(--rk-case-dark);
}

/* Panel Interaktywny */
.rk-case-interactive {
    padding: 40px 50px;
    background: var(--rk-case-dark);
    color: #ffffff;
}

.rk-case-interactive h3 {
    text-align: center;
    margin: 0 0 30px 0;
    font-size: 22px;
    color: #ffffff;
}

.rk-case-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-case-tab-btn {
    flex: 1;
    background: #1e293b;
    border: 2px solid #334155;
    padding: 16px;
    border-radius: 12px;
    color: #cbd5e1;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-case-tab-btn span {
    font-size: 12px;
    font-weight: normal;
    color: #94a3b8;
}

.rk-case-tab-btn.active {
    background: var(--rk-case-blue);
    border-color: var(--rk-case-accent);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.4);
}

.rk-case-tab-btn.active span {
    color: #e0f2fe;
}

/* Panele Wynikowe */
.rk-case-panel {
    display: none;
    background: #1e293b;
    border: 1px solid #334155;
    border-radius: 16px;
    padding: 30px;
    animation: fadeInCase 0.4s ease forwards;
}

.rk-case-panel.active {
    display: block;
}

@keyframes fadeInCase {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-panel-grid {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 25px;
    align-items: start;
}

.rk-panel-icon {
    width: 80px;
    height: 80px;
    border-radius: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.icon-danger { background: rgba(239, 68, 68, 0.1); color: var(--rk-case-red); border: 1px solid rgba(239, 68, 68, 0.3); }
.icon-warn { background: rgba(234, 179, 8, 0.1); color: var(--rk-case-gold); border: 1px solid rgba(234, 179, 8, 0.3); }
.icon-success { background: rgba(16, 185, 129, 0.1); color: var(--rk-case-green); border: 1px solid rgba(16, 185, 129, 0.3); }

.rk-panel-content h4 {
    margin: 0 0 10px 0;
    font-size: 20px;
    color: #ffffff;
}

.rk-panel-content p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.6;
    color: #cbd5e1;
}

.rk-panel-stats {
    display: flex;
    gap: 20px;
    border-top: 1px dashed #334155;
    padding-top: 20px;
}

.rk-panel-stat-item {
    flex: 1;
}

.rk-stat-lbl {
    font-size: 12px;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-stat-val {
    font-size: 22px;
    font-weight: 900;
}

.val-red { color: var(--rk-case-red); }
.val-gold { color: var(--rk-case-gold); }
.val-green { color: var(--rk-case-green); }

@media (max-width: 768px) {
    .rk-case-header, .rk-case-interactive { padding: 30px 20px; }
    .rk-case-story { flex-direction: column; gap: 15px; text-align: center; }
    .rk-case-avatar { margin: 0 auto; }
    .rk-case-tabs { flex-direction: column; gap: 10px; }
    .rk-panel-grid { grid-template-columns: 1fr; text-align: center; }
    .rk-panel-icon { margin: 0 auto; }
    .rk-panel-stats { flex-direction: column; gap: 15px; }
    .rk-case-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Studium przypadku: 16 mm czy 20 mm do pompy ciepła?",
    "description": "Analiza błędu projektowego na przykładzie inwestora z Wejherowa. Dlaczego ślepe zaufanie do jednego wymiaru rury może kosztować zniszczenie 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-casestudy",
    "name": "Analiza wariantowa doboru rur dla obiektu 150m2",
    "description": "Porównanie parametrów hydraulicznych (opór kPa, prędkość m/s) dla trzech różnych koncepcji wykonawczych systemu płaszczyznowego z pompą ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "czy rura 16mm wystarczy do pompy ciepła",
      "błędy hydrauliczne w podłogówce",
      "jaka rura do ogrzewania podłogowego",
      "hybrydowy dobór rur podłogowych",
      "studium przypadku ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Ewaluacja empiryczna i obliczeniowa (OZC + opory) 3 koncepcji: Monokultura 16mm, Monokultura 20mm oraz Układ Hybrydowy inżynierski.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Tylko 16mm generuje opór rzędu 45 kPa (krytyczne dławienie pompy).",
        "Błąd 2: Tylko 20mm we wszystkich małych strefach generuje przewymiarowanie kosztów.",
        "Rozwiązanie: Hybryda - 16mm w sypialniach (krótkie pętle), 20mm w salonie (opór poniżej 18 kPa)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-casestudy",
    "name": "Interaktywne Akta Projektowe (Wizualizator Decyzji)",
    "description": "Moduł symulacyjny pozwalający czytelnikowi sprawdzić hydrauliczne i kosztowe skutki porad powszechnie stosowanych przez wykonawców na budowach.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-case-container">
    <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="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>
            Studium Przypadku
        </div>
        <h2>Instalator A kontra Instalator B. Kto ma rację w doborze rur?</h2>
        
        <div class="rk-case-story">
            <div class="rk-case-avatar">
                <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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>
            </div>
            <div class="rk-case-story-text">
                <h3>Pan Tomasz (Wejherowo, woj. pomorskie)</h3>
                <p>Pan Tomasz buduje dom o powierzchni 150 m². Źródłem ciepła ma być nowoczesna pompa ciepła. Na etapie stanu surowego zamkniętego zaprosił na budowę dwóch wykonawców, co zrodziło ogromny dylemat.</p>
                <p><strong>Wykonawca A (starszej daty):</strong> "Panie Tomaszu, dajemy wszędzie standardową rurę 16 mm. Robię tak od 20 lat, wszyscy tak robią, będzie Pan zadowolony."</p>
                <p><strong>Wykonawca B:</strong> "Absolutnie nie! Do pompy ciepła to tylko i wyłącznie rura 20 mm w całym domu, inaczej woda nie przepłynie i pompa padnie w dwa lata."</p>
                <p>Zdezorientowany Inwestor zgłosił się do Projekt-Ogrzewania.pl z prośbą o audyt i rozstrzygnięcie sporu. Prawda okazała się bolesna dla obu wykonawców.</p>
            </div>
        </div>
    </div>

    <div class="rk-case-interactive">
        <h3>Sprawdź wynik audytu dla instalacji Pana Tomasza</h3>

        <div class="rk-case-tabs">
            <button class="rk-case-tab-btn active" data-scenario="instA">
                Wizja Instalatora A
                <span>Wszędzie rura 16 mm</span>
            </button>
            <button class="rk-case-tab-btn" data-scenario="instB">
                Wizja Instalatora B
                <span>Wszędzie rura 20 mm</span>
            </button>
            <button class="rk-case-tab-btn" data-scenario="projekt">
                Werdykt Inżynierski
                <span>System hybrydowy (16+20)</span>
            </button>
        </div>

        <!-- Panel Instalator A -->
        <div class="rk-case-panel active" id="panel-instA">
            <div class="rk-panel-grid">
                <div class="rk-panel-icon icon-danger">
                    <svg width="36" height="36" 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>
                <div class="rk-panel-content">
                    <h4>Poważny błąd hydrauliczny</h4>
                    <p>Zastosowanie rury 16 mm na otwartej przestrzeni salonu (45 m²), który przy pompie ciepła wymaga potężnego przepływu (ok. 240 kg/h na pętlę), generuje drastyczny opór. Woda zasilająca pompę "dusi się" w cienkiej rurze, co skutkuje brakiem możliwości wyregulowania układu i permanentnym niedogrzaniem salonu.</p>
                    
                    <div class="rk-panel-stats">
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Opór w salonie</div>
                            <div class="rk-stat-val val-red">45,0 kPa</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Przekroczona granica 20 kPa!</div>
                        </div>
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Koszty eksploatacji pompy</div>
                            <div class="rk-stat-val val-red">+ 35%</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Urządzenie pracuje na 100% mocy.</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Panel Instalator B -->
        <div class="rk-case-panel" id="panel-instB">
            <div class="rk-panel-grid">
                <div class="rk-panel-icon icon-warn">
                    <svg width="36" height="36" 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>
                <div class="rk-panel-content">
                    <h4>Bezpiecznie, ale absurdalnie drogo</h4>
                    <p>Zastosowanie grubej rury 20 mm rozwiązuje problem hydrauliki w salonie, ale w małych sypialniach (10-12 m²) to gigantyczne marnotrawstwo. Gruba rura 20 mm jest twardsza i trudniejsza w ułożeniu (szczególnie w ciasnych łazienkach), a koszty materiału (droższe złączki, grubsza wylewka, droższa rura) niepotrzebnie windują budżet Pana Tomasza.</p>
                    
                    <div class="rk-panel-stats">
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Opór w układzie</div>
                            <div class="rk-stat-val val-gold">12,0 kPa</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Poniżej normy.</div>
                        </div>
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Zbędne koszty wdrożenia</div>
                            <div class="rk-stat-val val-gold">+ 4 500 PLN</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Przewymiarowanie materiałowe.</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Panel Projekt (Werdykt) -->
        <div class="rk-case-panel" id="panel-projekt">
            <div class="rk-panel-grid">
                <div class="rk-panel-icon icon-success">
                    <svg width="36" height="36" 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>
                <div class="rk-panel-content">
                    <h4>Rozwiązanie Inżynierskie (Złoty Środek)</h4>
                    <p>W wykonanym dla Pana Tomasza profesjonalnym projekcie zastosowaliśmy podejście hybrydowe. W małych łazienkach, korytarzach i sypialniach z krótkimi pętlami (do 70m) wykorzystano elastyczną i tańszą rurę 16 mm. W potężnym salonie i kuchni (wymagających potężnego zładu wody dla pompy ciepła) wyliczyliśmy i zastosowaliśmy rurę 20 mm.</p>
                    
                    <div class="rk-panel-stats">
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Zrównoważenie układu</div>
                            <div class="rk-stat-val val-green">Idealne</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Opory we wszystkich pętlach < 18 kPa.</div>
                        </div>
                        <div class="rk-panel-stat-item">
                            <div class="rk-stat-lbl">Żywotność pompy</div>
                            <div class="rk-stat-val val-green">Maksymalna</div>
                            <div style="font-size:12px; color:#cbd5e1; margin-top:5px;">Optymalny strumień masy wody.</div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var btns = document.querySelectorAll('.rk-case-tab-btn');
    var panels = document.querySelectorAll('.rk-case-panel');

    // Bezpieczny JS bez zakazanych operatorów
    for (var i = 0; i < btns.length; i++) {
        btns[i].addEventListener('click', function() {
            
            // Czyszczenie aktywacji
            for (var j = 0; j < btns.length; j++) {
                btns[j].classList.remove('active');
            }
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('active');
            }

            // Ustawienie aktywności
            this.classList.add('active');
            
            var targetId = 'panel-' + this.getAttribute('data-scenario');
            var targetPanel = document.getElementById(targetId);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-blue: #0369a1;
    --rk-auth-accent: #0ea5e9;
    --rk-auth-bg: #f8fafc;
    --rk-auth-card: #ffffff;
    --rk-auth-border: #cbd5e1;
    --rk-auth-text: #334155;
    --rk-auth-muted: #64748b;
}

.rk-auth-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-card);
    border-radius: 20px;
    box-shadow: 0 10px 30px -10px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-auth-border);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-auth-header {
    padding: 35px 50px 25px;
    background: var(--rk-auth-bg);
    border-bottom: 1px solid var(--rk-auth-border);
}

.rk-auth-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    margin: 0;
    line-height: 1.3;
}

/* Interaktywny Panel Ekspercki */
.rk-auth-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: #ffffff;
}

/* Lewa kolumna: Profil */
.rk-auth-profile {
    padding: 40px 30px;
    background: var(--rk-auth-dark);
    color: #ffffff;
    text-align: center;
    border-right: 1px solid rgba(255,255,255,0.1);
}

.rk-auth-photo-wrap {
    width: 140px;
    height: 140px;
    border-radius: 50%;
    margin: 0 auto 20px auto;
    padding: 5px;
    background: linear-gradient(135deg, var(--rk-auth-blue) 0%, var(--rk-auth-accent) 100%);
}

.rk-auth-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--rk-auth-dark);
}

.rk-auth-name {
    font-size: 22px;
    font-weight: 900;
    margin: 0 0 5px 0;
    color: #ffffff;
}

.rk-auth-title {
    font-size: 14px;
    color: var(--rk-auth-accent);
    text-transform: uppercase;
    letter-spacing: 1px;
    font-weight: 700;
    margin-bottom: 25px;
}

/* Linki Social Media */
.rk-auth-socials {
    display: flex;
    justify-content: center;
    gap: 15px;
    margin-top: 20px;
}

.rk-auth-social-link {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: rgba(255,255,255,0.05);
    color: #cbd5e1;
    text-decoration: none;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-auth-social-link:hover,
.rk-auth-social-link:focus {
    background: var(--rk-auth-blue);
    color: #ffffff;
    border-color: var(--rk-auth-accent);
}

/* Prawa kolumna: Interaktywne Tabele Wiedzy */
.rk-auth-content {
    padding: 40px;
}

.rk-auth-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 30px;
    border-bottom: 2px solid var(--rk-auth-bg);
    padding-bottom: 15px;
}

.rk-auth-tab-btn {
    background: transparent;
    border: none;
    padding: 10px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-auth-muted);
    cursor: pointer;
    border-radius: 8px;
}

.rk-auth-tab-btn.active {
    background: var(--rk-auth-blue);
    color: #ffffff;
}

/* Panele Treści (Brak animacji wg wytycznych) */
.rk-auth-panel {
    display: none;
}

.rk-auth-panel.active {
    display: block;
}

.rk-quote-box {
    position: relative;
    padding-left: 25px;
    border-left: 4px solid var(--rk-auth-accent);
}

.rk-quote-icon {
    position: absolute;
    top: -15px;
    left: -15px;
    color: var(--rk-auth-bg);
    z-index: 0;
}

.rk-quote-text {
    font-size: 18px;
    line-height: 1.7;
    color: var(--rk-auth-dark);
    font-weight: 700;
    margin: 0 0 15px 0;
    position: relative;
    z-index: 1;
}

.rk-quote-desc {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-auth-text);
    margin: 0;
}

/* Tabela Standardów */
.rk-std-grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: 15px;
}

.rk-std-item {
    background: var(--rk-auth-bg);
    padding: 15px 20px;
    border-radius: 10px;
    border: 1px solid var(--rk-auth-border);
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-std-icon {
    color: var(--rk-auth-blue);
    background: #ffffff;
    width: 36px;
    height: 36px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border: 1px solid var(--rk-auth-border);
}

.rk-std-text {
    font-size: 15px;
    color: var(--rk-auth-dark);
    font-weight: 600;
    margin: 0;
}

@media (max-width: 768px) {
    .rk-auth-grid { grid-template-columns: 1fr; }
    .rk-auth-header { padding: 30px 25px; }
    .rk-auth-profile { border-right: none; border-bottom: 1px solid rgba(255,255,255,0.1); }
    .rk-auth-content { padding: 30px 20px; }
    .rk-auth-tabs { flex-wrap: wrap; }
    .rk-auth-tab-btn { flex: 1; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-ekspert",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Zdaniem eksperta: Robert Kucharski o kluczowym błędzie w doborze rur",
    "description": "Filozofia inżynierska Roberta Kucharskiego, CEO Projekt-Ogrzewania.pl. Podsumowanie technicznych wymogów dla niezawodnej instalacji płaszczyznowej.",
    "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/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-standardy",
    "name": "Standardy Inżynierskie Projekt-Ogrzewania.pl (2026)",
    "description": "Zbiór rygorystycznych zasad projektowych i wykonawczych stosowanych przez Roberta Kucharskiego przy doborze średnic rur ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie instalacji grzewczych",
      "dobór rur podłogówka",
      "inżynieria sanitarna",
      "wytyczne projektowe ogrzewanie",
      "audyt instalacji hydraulicznej"
    ],
    "measurementTechnique": "Weryfikacja projektu instalacji na podstawie normatywnych limitów ciśnień i prędkości przepływu dla danych pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Bezwzględny wymóg: Obliczenia OZC jako fundament doboru średnicy.",
        "Reguła graniczna: Zakaz przekraczania 20 kPa na rozdzielaczu.",
        "Priorytet materiałowy: Stosowanie rur 20mm przy niskim parametrze zasilania pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-autorytet",
    "name": "Panel Weryfikacji Kompetencji Głównego Projektanta",
    "description": "Interaktywna karta profilowa umożliwiająca użytkownikom zapoznanie się z filozofią projektową oraz weryfikację profili społecznościowych inżyniera.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-auth-container">
    <div class="rk-auth-header">
        <h2>Zdaniem eksperta: Robert Kucharski o kluczowym błędzie w doborze rur</h2>
    </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">CEO & Główny Projektant</div>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" class="rk-auth-social-link" target="_blank" rel="noopener" aria-label="Facebook">
                    <svg width="22" height="22" 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>
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" class="rk-auth-social-link" target="_blank" rel="noopener" aria-label="LinkedIn">
                    <svg width="22" height="22" 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>
                </a>
                <a href="https://x.com/Projekt_HVAC" class="rk-auth-social-link" target="_blank" rel="noopener" aria-label="Platforma X">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 4l11.733 16h4.267l-11.733 -16z"></path><path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772"></path></svg>
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            <div class="rk-auth-tabs" id="rkAuthTabs">
                <button class="rk-auth-tab-btn active" data-panel="cytat">Filozofia Projektowa</button>
                <button class="rk-auth-tab-btn" data-panel="standardy">Standardy Inżynierskie</button>
            </div>

            <div class="rk-auth-panel active" id="panel-cytat">
                <div class="rk-quote-box">
                    <svg class="rk-quote-icon" width="60" height="60" viewBox="0 0 24 24" fill="currentColor"><path d="M14.017 21v-7.391c0-5.704 3.731-9.57 8.983-10.609l.995 2.151c-2.432.917-3.995 3.638-3.995 5.849h4v10h-9.983zm-14.017 0v-7.391c0-5.704 3.748-9.57 9-10.609l.996 2.151c-2.433.917-3.996 3.638-3.996 5.849h3.983v10h-9.983z"/></svg>
                    <p class="rk-quote-text">
                        Ślepe trzymanie się rury 16 mm w całej instalacji, bez wykonania rzetelnych obliczeń oporów hydraulicznych, to najczęstszy powód, dla którego nowoczesne pompy ciepła pracują na skraju swoich fizycznych możliwości.
                    </p>
                    <p class="rk-quote-desc">
                        Beton wylewki ukrywa te błędy na lata. Jako inżynier powtarzam inwestorom jedno: rury dobieramy na podstawie twardych obliczeń OZC i parametru Delta T, a nie przyzwyczajeń wykonawców, którym wygodniej rozwija się cieńszą rurkę.
                    </p>
                </div>
            </div>

            <div class="rk-auth-panel" id="panel-standardy">
                <div class="rk-std-grid">
                    <div class="rk-std-item">
                        <div class="rk-std-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>
                        <p class="rk-std-text">OZC (Obliczeniowe Zapotrzebowanie) to punkt wyjścia.</p>
                    </div>
                    <div class="rk-std-item">
                        <div class="rk-std-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>
                        <p class="rk-std-text">Maksymalny opór pętli zawsze poniżej granicy 20 kPa.</p>
                    </div>
                    <div class="rk-std-item">
                        <div class="rk-std-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>
                        <p class="rk-std-text">Rury 20mm jako standard dla długich obiegów przy pompie ciepła.</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var tabs = document.querySelectorAll('.rk-auth-tab-btn');
    var panels = document.querySelectorAll('.rk-auth-panel');

    // Brak jakichkolwiek operatorów && oraz || dla maksymalnego bezpieczeństwa parserów
    for (var i = 0; i < tabs.length; i++) {
        tabs[i].addEventListener('click', function() {
            
            // Usunięcie aktywnych klas ze wszystkich przycisków i paneli
            for (var j = 0; j < tabs.length; j++) {
                tabs[j].classList.remove('active');
            }
            for (var k = 0; k < panels.length; k++) {
                panels[k].classList.remove('active');
            }

            // Aktywacja klikniętego przycisku
            this.classList.add('active');

            // Odnalezienie i aktywacja odpowiedniego panelu
            var targetPanelId = 'panel-' + this.getAttribute('data-panel');
            var targetPanel = document.getElementById(targetPanelId);
            
            if (targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-blue: #0284c7;
    --rk-err-red: #ef4444;
    --rk-err-red-bg: #fef2f2;
    --rk-err-green: #10b981;
    --rk-err-green-bg: #ecfdf5;
    --rk-err-bg: #f8fafc;
    --rk-err-card: #ffffff;
    --rk-err-border: #cbd5e1;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

.rk-err-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-err-card);
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(239, 68, 68, 0.15);
    border: 1px solid var(--rk-err-red);
    overflow: hidden;
}

/* Nagłówek Sekcji */
.rk-err-header {
    padding: 40px 50px 30px;
    background: linear-gradient(135deg, #ffffff 0%, var(--rk-err-red-bg) 100%);
    border-bottom: 1px solid rgba(239, 68, 68, 0.2);
}

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--rk-err-red);
    color: #ffffff;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
}

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

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

/* Interaktywny Skaner Błędów */
.rk-err-body {
    padding: 40px 50px;
    background: var(--rk-err-bg);
}

.rk-err-accordion {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-err-item {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    border-radius: 12px;
    overflow: hidden;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-err-item.active {
    border-color: var(--rk-err-red);
    box-shadow: 0 10px 20px -5px rgba(239, 68, 68, 0.15);
}

.rk-err-btn {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 20px 25px;
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
    transition: background 0.3s;
}

.rk-err-btn:hover {
    background: var(--rk-err-red-bg);
}

.rk-err-icon-wrap {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 10px;
    background: var(--rk-err-red-bg);
    color: var(--rk-err-red);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.3s;
}

.rk-err-item.active .rk-err-icon-wrap {
    background: var(--rk-err-red);
    color: #ffffff;
    transform: rotate(180deg);
}

.rk-err-title {
    flex: 1;
}

.rk-err-title h3 {
    margin: 0 0 5px 0;
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-err-dark);
}

.rk-err-title span {
    font-size: 13px;
    color: var(--rk-err-muted);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-err-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #ffffff;
}

.rk-err-content-inner {
    padding: 0 25px 25px 89px; /* wyrównanie do tekstu, ominięcie ikony */
}

.rk-err-explanation {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-err-text);
    margin: 0 0 20px 0;
    padding-top: 10px;
    border-top: 1px dashed var(--rk-err-border);
}

.rk-err-solution {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: var(--rk-err-green-bg);
    padding: 15px 20px;
    border-radius: 8px;
    border-left: 4px solid var(--rk-err-green);
}

.rk-err-solution svg {
    color: var(--rk-err-green);
    flex-shrink: 0;
    margin-top: 2px;
}

.rk-err-solution p {
    margin: 0;
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-err-dark);
    font-weight: 600;
}

.rk-err-explanation a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid rgba(2, 132, 199, 0.3);
}

.rk-err-explanation a:hover {
    border-color: var(--rk-err-blue);
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-body { padding: 30px 20px; }
    .rk-err-btn { padding: 15px; gap: 15px; }
    .rk-err-icon-wrap { width: 36px; height: 36px; }
    .rk-err-title h3 { font-size: 16px; }
    .rk-err-content-inner { padding: 0 15px 20px 15px; } /* Usunięcie lewego marginesu na mobile */
    .rk-err-header h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Najczęstsze błędy przy doborze średnic rur ogrzewania podłogowego",
    "description": "Lista 5 krytycznych błędów wykonawczych: od pętli 150m dla rury 16mm po brak projektu hydraulicznego. Uniknij awarii 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.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-bledy",
    "name": "Katalog błędów wykonawczych instalacji płaszczyznowych",
    "description": "Baza najczęstszych usterek projektowych i wykonawczych wpływających na drastyczny wzrost oporów hydraulicznych i spadek wydajności układu grzewczego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy w ogrzewaniu podłogowym",
      "za długa pętla podłogówki 16mm",
      "brak projektu hydraulicznego",
      "różnice długości pętli rozdzielacz",
      "złe rury do pompy ciepła"
    ],
    "measurementTechnique": "Identyfikacja odchyleń od normy PN-EN 1264 w zakresie ciśnień, długości obwodów oraz równoważenia na belkach rozdzielacza.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stosowanie rury 16mm przy przepływach wykraczających poza 2 l/min.",
        "Przekraczanie długości 120m dla pojedynczej pętli (skutkuje niedogrzaniem).",
        "Asymetria pętli powyżej 30m na jednym rozdzielaczu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-skaner",
    "name": "Interaktywny Skaner Błędów Instalacyjnych",
    "description": "Moduł typu akordeon pozwalający użytkownikom na szybką weryfikację propozycji wykonawców z inżynierskimi standardami bezpieczeństwa.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5, CSS3, JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container">
    <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>
            Czarna lista inwestora
        </div>
        <h2>Najczęstsze błędy przy doborze rur</h2>
        <p>Betonowa wylewka wybacza wiele błędów wizualnych, ale fizyka przepływów nie wybacza niczego. Zobacz 5 najczęstszych „grzechów głównych” hydraulików, które po uruchomieniu instalacji prowadzą do nierównomiernego ogrzewania, szumów i gigantycznych rachunków za prąd.</p>
    </div>

    <div class="rk-err-body">
        <div class="rk-err-accordion" id="rkErrAccordion">
            
            <!-- Błąd 1 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" 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 class="rk-err-title">
                        <h3>Cienka rura 16 mm do pompy ciepła</h3>
                        <span>Błąd nr 1: Ślepe przyzwyczajenie</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Pompa ciepła pracuje wydajnie przy małej różnicy temperatur (ΔT = 5K), co wymusza przetłoczenie dwukrotnie większej masy wody niż kocioł gazowy. Użycie wszędzie rury 16 mm drastycznie dławi system.
                        </p>
                        <div class="rk-err-solution">
                            <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>
                            <p><strong>Standard Inżynierski:</strong> W salonach i dużych przestrzeniach otwarych napędzanych pompą ciepła projektuj pętle z wykorzystaniem grubszej rury 20x2.0 mm.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 2 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" 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 class="rk-err-title">
                        <h3>Rozwijanie pętli na 130–150 metrów</h3>
                        <span>Błąd nr 2: Oszczędzanie na rozdzielaczu</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Wykonawcy często robią <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długie pętle podłogówki</a>, aby oszczędzić na wielkości rozdzielacza i ilości rury dobiegowej. Dla rury 16 mm odcinek 150m oznacza przekroczenie 50-60 kPa oporu! Woda ledwo z niej kapie.
                        </p>
                        <div class="rk-err-solution">
                            <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>
                            <p><strong>Standard Inżynierski:</strong> Trzymaj się żelaznej reguły: dla rury 16 mm długość maksymalna to 90–100 m. Jeśli masz większe pomieszczenie – podziel je na dwa odrębne obiegi grzewcze.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 3 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" 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 class="rk-err-title">
                        <h3>Asymetria pętli na poziomie 30–50 metrów</h3>
                        <span>Błąd nr 3: Brak balansu hydraulicznego</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Gdy pod jeden <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-ogrzewania-podlogowego-mosiezny-czy-ze-stali-nierdzewnej/">rozdzielacz</a> podpinasz pętlę łazienkową o długości 40 m oraz pętlę salonową 110 m, woda zawsze wybierze drogę najmniejszego oporu. Salon będzie wiecznie zimny.
                        </p>
                        <div class="rk-err-solution">
                            <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>
                            <p><strong>Standard Inżynierski:</strong> Pilnuj, aby różnica w długości pętli zasilanych z jednej belki rozdzielacza nie przekraczała 10–15%. Wymaga to mądrego poprowadzenia stref zasilających.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 4 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" 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 class="rk-err-title">
                        <h3>Rozkładanie rur "z głowy" (brak projektu)</h3>
                        <span>Błąd nr 4: Zgadywanie strat ciepła</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Wykonawca mówi "dajemy wszędzie co 15 cm i będzie dobrze". Tymczasem duże okna w salonie wymagają potężnej mocy (strefy brzegowe co 10 cm), a dobrze ocieplona sypialnia może wymagać rzadszego rozstawu.
                        </p>
                        <div class="rk-err-solution">
                            <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>
                            <p><strong>Standard Inżynierski:</strong> <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">Profesjonalny projekt z obliczeniami OZC</a> wyznacza dokładne zapotrzebowanie każdego pomieszczenia. To nie jest koszt, to inwestycja chroniąca Twój kapitał.</p>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Błąd 5 -->
            <div class="rk-err-item">
                <button class="rk-err-btn">
                    <div class="rk-err-icon-wrap">
                        <svg width="24" height="24" 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 class="rk-err-title">
                        <h3>Dobór rur wyłącznie według najniższej ceny</h3>
                        <span>Błąd nr 5: Ukryte koszty tanich materiałów</span>
                    </div>
                </button>
                <div class="rk-err-content">
                    <div class="rk-err-content-inner">
                        <p class="rk-err-explanation">
                            Kupowanie rur bez certyfikowanej <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">bariery antydyfuzyjnej EVOH</a> lub no-name'ów z marketu budowlanego. Skutkuje to przenikaniem tlenu do instalacji, korozją rozdzielaczy i zatykaniem się wymiennika w pompie ciepła.
                        </p>
                        <div class="rk-err-solution">
                            <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>
                            <p><strong>Standard Inżynierski:</strong> W betonie zalewasz element, którego nie wymienisz przez 50 lat. Wybieraj wyłącznie rury wielowarstwowe z pełną barierą tlenową o potwierdzonych parametrach technicznych.</p>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var errorBtns = document.querySelectorAll('.rk-err-btn');
    var errorItems = document.querySelectorAll('.rk-err-item');

    // Bezpieczna pętla bez zakazanych znaków logicznych
    for (var i = 0; i < errorBtns.length; i++) {
        errorBtns[i].addEventListener('click', function() {
            var parentItem = this.parentElement;
            var isActive = false;

            if (parentItem.classList.contains('active')) {
                isActive = true;
            }

            // Zamknięcie wszystkich paneli
            for (var j = 0; j < errorItems.length; j++) {
                errorItems[j].classList.remove('active');
                var content = errorItems[j].querySelector('.rk-err-content');
                if (content !== null) {
                    content.style.maxHeight = null;
                }
            }

            // Otwarcie jeśli był zamknięty
            if (isActive === false) {
                parentItem.classList.add('active');
                var myContent = parentItem.querySelector('.rk-err-content');
                if (myContent !== null) {
                    myContent.style.maxHeight = myContent.scrollHeight + "px";
                }
            }
        });
    }
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-blue: #0369a1;
    --rk-faq-light: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-hover: #f1f5f9;
    --rk-faq-accent: #0ea5e9;
    --rk-faq-text: #334155;
}

.rk-faq-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, blinkmacsystemfont, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 15px 35px -10px rgba(3, 105, 161, 0.12);
    border: 1px solid var(--rk-faq-border);
    overflow: hidden;
}

.rk-faq-header {
    background: linear-gradient(135deg, var(--rk-faq-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: #ffffff;
    text-align: center;
}

.rk-faq-header h2 {
    margin: 0;
    font-size: 28px;
    font-weight: 900;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-faq-header p {
    margin: 15px 0 0 0;
    color: #94a3b8;
    font-size: 16px;
    line-height: 1.6;
}

.rk-faq-body {
    padding: 30px 50px;
    background: var(--rk-faq-light);
}

.rk-accordion-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    margin-bottom: 15px;
    overflow: hidden;
    transition: all 0.3s ease;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-accordion-item:hover {
    border-color: var(--rk-faq-accent);
    box-shadow: 0 10px 15px -3px rgba(14, 165, 233, 0.1);
}

.rk-accordion-btn {
    width: 100%;
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 24px 30px;
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
    transition: background 0.3s;
}

.rk-accordion-btn:hover {
    background: var(--rk-faq-hover);
}

.rk-accordion-btn h3 {
    margin: 0;
    font-size: 18px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    padding-right: 20px;
    line-height: 1.4;
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-light);
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-faq-blue);
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s;
}

.rk-accordion-btn.active .rk-faq-icon {
    transform: rotate(180deg);
    background: var(--rk-faq-blue);
    color: #ffffff;
}

.rk-accordion-content {
    max-height: 0;
    overflow: hidden;
    transition: max-height 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    background: #ffffff;
}

.rk-accordion-inner {
    padding: 0 30px 24px 30px;
    font-size: 16px;
    line-height: 1.7;
    color: var(--rk-faq-text);
    border-top: 1px dashed transparent;
}

.rk-accordion-btn.active + .rk-accordion-content .rk-accordion-inner {
    border-top-color: var(--rk-faq-border);
    padding-top: 20px;
}

.rk-accordion-inner a {
    color: var(--rk-faq-blue);
    font-weight: 700;
    text-decoration: none;
    box-shadow: inset 0 -2px 0 rgba(3, 105, 161, 0.2);
    transition: all 0.2s;
}

.rk-accordion-inner a:hover {
    box-shadow: inset 0 -10px 0 rgba(3, 105, 161, 0.2);
    color: var(--rk-faq-dark);
}

@media (max-width: 768px) {
    .rk-faq-header { padding: 35px 25px; }
    .rk-faq-body { padding: 25px 20px; }
    .rk-accordion-btn { padding: 20px; }
    .rk-accordion-btn h3 { font-size: 16px; }
    .rk-accordion-inner { padding: 0 20px 20px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania dotyczące średnic rur",
    "description": "Zbiór najważniejszych inżynierskich pytań i odpowiedzi na temat rur 16 mm i 20 mm, pomp ciepła, oporów hydraulicznych i prędkości przepływu wody.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy rura 16x2,0 mm jest zawsze wystarczająca do pompy ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, w przypadku dużych pętli lub salonów o dużej powierzchni, rura 16 mm może generować zbyt wysokie opory, dlatego zalecamy rurę 20 mm."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka jest maksymalna długość pętli dla rury 16 mm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Dla zapewnienia swobodnej regulacji hydraulicznej, maksymalna długość pętli nie powinna przekraczać 90–100 metrów."
        }
      },
      {
        "@type": "Question",
        "name": "Czy można łączyć rury o różnych średnicach w jednej instalacji?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, stosowanie różnych średnic w zależności od strefy (np. 20 mm w salonie, 16 mm w małych sypialniach) jest praktyką profesjonalną i zalecaną."
        }
      },
      {
        "@type": "Question",
        "name": "Jakie są dopuszczalne opory hydrauliczne pętli?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Sumaryczne opory jednej pętli nie powinny przekraczać 20 kPa, aby zachować możliwość sprawnej regulacji przepływu na rozdzielaczu."
        }
      },
      {
        "@type": "Question",
        "name": "Czy prędkość wody powyżej 0,6 m/s jest szkodliwa?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, przekroczenie prędkości 0,6 m/s powoduje szumy hydrauliczne w instalacji i przyspiesza erozję wewnętrzną rur."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-faq",
    "name": "Baza wiedzy inżynierskiej: Parametry graniczne dla rur grzewczych",
    "description": "Zestawienie parametrów granicznych takich jak maksymalna prędkość (0.6 m/s), opory (20 kPa) i długości pętli rur ogrzewania płaszczyznowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dopuszczalne opory hydrauliczne",
      "maksymalna prędkość wody w podłogówce",
      "rura 16 czy 20 mm",
      "maksymalna długość pętli rury 16 mm",
      "regulacja przepływu na rozdzielaczu"
    ],
    "measurementTechnique": "Określenie krytycznych wartości brzegowych w projektowaniu instalacji OZE (np. ciśnienie w kPa, prędkość w m/s).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Opór graniczny pętli: Maksymalnie 20 kPa.",
        "Prędkość graniczna przepływu: Maksymalnie 0,6 m/s, aby uniknąć szumów i erozji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-faq",
    "name": "Interaktywny Panel FAQ Hydrauliki",
    "description": "Dynamiczny komponent przeglądarkowy pozwalający inwestorom na błyskawiczne odnajdywanie precyzyjnych parametrów hydraulicznych systemu grzewczego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and CSS3",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-faq-container">
    <div class="rk-faq-header">
        <h2>FAQ – Najczęściej zadawane pytania</h2>
        <p>Ekspercka wiedza techniczna podana bez lania wody. Kliknij pytanie, aby poznać odpowiedź.</p>
    </div>

    <div class="rk-faq-body">
        
        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy rura 16x2,0 mm jest zawsze wystarczająca do pompy ciepła?</h3>
                <div class="rk-faq-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"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Nie, w przypadku dużych pętli lub salonów o dużej powierzchni, rura 16 mm może generować zbyt wysokie opory, dlatego zalecamy rurę 20 mm. Więcej na ten temat znajdziesz w artykule o <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstawie rur przy pompie ciepła</a>.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Jaka jest maksymalna długość pętli dla rury 16 mm?</h3>
                <div class="rk-faq-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"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Dla zapewnienia swobodnej regulacji hydraulicznej, <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli</a> nie powinna przekraczać 90–100 metrów.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy można łączyć rury o różnych średnicach w jednej instalacji?</h3>
                <div class="rk-faq-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"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Tak, stosowanie różnych średnic w zależności od strefy (np. 20 mm w salonie, 16 mm w małych sypialniach) jest praktyką profesjonalną i zalecaną przy zaawansowanym inżynierskim podejściu.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Jakie są dopuszczalne opory hydrauliczne pętli?</h3>
                <div class="rk-faq-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"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Sumaryczne opory jednej pętli nie powinny przekraczać 20 kPa, aby zachować możliwość sprawnej regulacji przepływu na zaworach, w które wyposażony jest <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do podłogówki</a>.
                </div>
            </div>
        </div>

        <div class="rk-accordion-item">
            <button class="rk-accordion-btn">
                <h3>Czy prędkość wody powyżej 0,6 m/s jest szkodliwa?</h3>
                <div class="rk-faq-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"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </button>
            <div class="rk-accordion-content">
                <div class="rk-accordion-inner">
                    Tak, przekroczenie prędkości 0,6 m/s powoduje szumy hydrauliczne w instalacji i znacznie przyspiesza erozję wewnętrzną zastosowanych rur grzewczych.
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var accordionBtns = document.querySelectorAll('.rk-accordion-btn');

    accordionBtns.forEach(function(btn) {
        btn.addEventListener('click', function() {
            var isActive = this.classList.contains('active');
            
            // Zamykanie wszystkich otwartych paneli (opcjonalne - dla zachowania porządku)
            accordionBtns.forEach(function(otherBtn) {
                otherBtn.classList.remove('active');
                var otherPanel = otherBtn.nextElementSibling;
                otherPanel.style.maxHeight = null;
            });

            // Jeśli panel nie był aktywny, otwórz go
            if (isActive === false) {
                this.classList.add('active');
                var panel = this.nextElementSibling;
                panel.style.maxHeight = panel.scrollHeight + "px";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-blue: #0284c7;
    --rk-dl-accent: #0ea5e9;
    --rk-dl-bg: #f8fafc;
    --rk-dl-card: #ffffff;
    --rk-dl-border: #cbd5e1;
    --rk-dl-text: #334155;
    --rk-dl-muted: #64748b;
    --rk-dl-red: #ef4444;
}

.rk-dl-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-card);
    border-radius: 16px;
    border: 1px solid var(--rk-dl-blue);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-dl-header {
    padding: 35px 40px;
    background: var(--rk-dl-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-dl-accent);
}

.rk-dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 10px 0;
    line-height: 1.3;
}

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

/* Grid Główny */
.rk-dl-grid {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-dl-card);
}

/* Lewa Kolumna - Podgląd Infografiki */
.rk-dl-preview-col {
    padding: 30px;
    background: var(--rk-dl-bg);
    border-right: 1px solid var(--rk-dl-border);
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-dl-thumb-wrap {
    width: 100%;
    background: #ffffff;
    border: 1px solid var(--rk-dl-border);
    border-radius: 8px;
    padding: 10px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

.rk-dl-thumb {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 4px;
    border: 1px dashed var(--rk-dl-muted);
}

.rk-dl-thumb-label {
    margin-top: 15px;
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-dl-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
}

/* Prawa Kolumna - Akcje i Interfejs */
.rk-dl-actions-col {
    padding: 40px;
    display: flex;
    flex-direction: column;
}

.rk-dl-tabs {
    display: flex;
    gap: 10px;
    margin-bottom: 25px;
    border-bottom: 2px solid var(--rk-dl-bg);
    padding-bottom: 15px;
}

.rk-dl-tab-btn {
    background: transparent;
    border: 1px solid transparent;
    padding: 10px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-dl-muted);
    cursor: pointer;
    border-radius: 8px;
}

/* Brak animacji wg wytycznych - zmiana stanu jest natychmiastowa */
.rk-dl-tab-btn:hover {
    background: var(--rk-dl-bg);
    color: var(--rk-dl-dark);
}

.rk-dl-tab-btn.active {
    background: var(--rk-dl-blue);
    color: #ffffff;
    border-color: var(--rk-dl-blue);
}

/* Panele */
.rk-dl-panel {
    display: none;
    flex: 1;
}

.rk-dl-panel.active {
    display: block;
}

.rk-dl-panel h3 {
    margin: 0 0 15px 0;
    font-size: 20px;
    color: var(--rk-dl-dark);
    font-weight: 800;
}

.rk-dl-panel p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-dl-text);
    margin: 0 0 25px 0;
}

/* Przyciski Pobierania */
.rk-dl-btn-group {
    display: flex;
    flex-direction: column;
    gap: 15px;
    margin-bottom: 30px;
}

.rk-dl-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 16px 25px;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
    border: 2px solid transparent;
}

.rk-dl-btn-primary {
    background: var(--rk-dl-blue);
    color: #ffffff;
}

.rk-dl-btn-primary:hover {
    background: #0369a1;
}

.rk-dl-btn-secondary {
    background: #ffffff;
    color: var(--rk-dl-dark);
    border-color: var(--rk-dl-border);
}

.rk-dl-btn-secondary:hover {
    background: var(--rk-dl-bg);
    border-color: var(--rk-dl-muted);
}

/* Notka Prawna */
.rk-dl-copyright {
    margin-top: auto;
    padding-top: 20px;
    border-top: 1px dashed var(--rk-dl-border);
    font-size: 12px;
    line-height: 1.5;
    color: var(--rk-dl-muted);
}

.rk-dl-copyright strong {
    color: var(--rk-dl-dark);
}

@media (max-width: 768px) {
    .rk-dl-grid { grid-template-columns: 1fr; }
    .rk-dl-preview-col { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 25px; }
    .rk-dl-actions-col { padding: 25px; }
    .rk-dl-header { padding: 25px; }
    .rk-dl-header h2 { font-size: 22px; }
    .rk-dl-tabs { flex-direction: column; }
    .rk-dl-tab-btn { text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Materiały do pobrania: Średnice rur w pigułce",
    "description": "Autorska infografika oraz techniczny plik PDF zestawiający kluczowe parametry rur wielowarstwowych stosowanych w inżynierii ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset-materialy",
    "name": "Infografika techniczna: Średnice rur w ogrzewaniu podłogowym",
    "description": "Dokumentacja wideo/graficzna i plik PDF do pobrania, zawierający ustandaryzowane wymiary, spadki ciśnień i długości graniczne obiegów płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe",
      "tabela średnic rur pdf",
      "parametry instalacyjne do druku",
      "projekt podłogówki schemat",
      "wymiarowanie pętli grzewczych pdf"
    ],
    "measurementTechnique": "Wizualne odwzorowanie twardych danych liczbowych z normy PN-EN 1264 w formacie WebP oraz ustrukturyzowanym dokumencie PDF.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik PDF: Gotowy do druku schemat do weryfikacji pracy instalatora.",
        "Obraz WebP: Szybki podgląd przeglądarkowy kluczowych różnic między rurą 16 a 20 mm."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp-biblioteka",
    "name": "Interaktywna Biblioteka Materiałów HVAC",
    "description": "Natywny moduł interfejsu umożliwiający użytkownikowi podgląd i bezpieczne pobieranie autorskich materiałów inżynierskich bezpośrednio ze strony.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JS",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dl-container">
    <div class="rk-dl-header">
        <h2>Materiały do pobrania: Średnice rur w pigułce</h2>
        <p>Przygotowałem dla Ciebie czytelną infografikę oraz dokument PDF, które podsumowują całą wiedzę inżynierską z tego artykułu. Idealne rozwiązanie do zapisania na smartfonie lub wydrukowania przed rozmową z wykonawcą.</p>
    </div>

    <div class="rk-dl-grid">
        <div class="rk-dl-preview-col">
            <div class="rk-dl-thumb-wrap">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.webp" alt="Podgląd infografiki - Średnice rur w ogrzewaniu podłogowym" class="rk-dl-thumb">
            </div>
            <div class="rk-dl-thumb-label">Podgląd dokumentu</div>
        </div>

        <div class="rk-dl-actions-col">
            
            <div class="rk-dl-tabs">
                <button class="rk-dl-tab-btn active" data-dl="pliki">Pliki do pobrania</button>
                <button class="rk-dl-tab-btn" data-dl="licencja">Zasady korzystania</button>
            </div>

            <div class="rk-dl-panel active" id="dl-pliki">
                <h3>Wybierz format pliku</h3>
                <p>Dokument PDF świetnie sprawdzi się do druku (jest wektorowy i nie traci na jakości). Infografika WebP to najlepszy format do szybkiego wysłania instalatorowi w wiadomości MMS lub na WhatsApp.</p>
                
                <div class="rk-dl-btn-group">
                    <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.pdf" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-primary">
                        <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 dokument (PDF)
                    </a>
                    <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Srednice-rur-w-ogrzewaniu-podlogowym.webp" target="_blank" rel="noopener noreferrer" class="rk-dl-btn rk-dl-btn-secondary">
                        <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>
                        Otwórz infografikę (WebP)
                    </a>
                </div>
            </div>

            <div class="rk-dl-panel" id="dl-licencja">
                <h3>Prawa autorskie</h3>
                <p>Przygotowanie tych wyliczeń oraz oprawy graficznej wymagało wielu godzin pracy. Zezwalam na bezpłatne korzystanie z materiałów na użytek własny oraz przesyłanie ich wykonawcom w celu edukacyjnym.</p>
                <p style="color: var(--rk-dl-red); font-weight: 700;">
                    Zabrania się usuwania logotypu Projekt-Ogrzewania.pl oraz edytowania zawartości pliku.
                </p>
            </div>

            <div class="rk-dl-copyright">
                <strong>© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski.</strong><br>
                Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku.
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    var dlTabs = document.querySelectorAll('.rk-dl-tab-btn');
    var dlPanels = document.querySelectorAll('.rk-dl-panel');

    // Kod pozbawiony znaków && oraz || dla bezpieczeństwa strukturalnego
    for (var i = 0; i < dlTabs.length; i++) {
        dlTabs[i].addEventListener('click', function() {
            
            // Usunięcie klasy active z przycisków
            for (var j = 0; j < dlTabs.length; j++) {
                dlTabs[j].classList.remove('active');
            }
            
            // Usunięcie klasy active z paneli
            for (var k = 0; k < dlPanels.length; k++) {
                dlPanels[k].classList.remove('active');
            }

            // Ustawienie aktywności
            this.classList.add('active');
            
            var targetId = 'dl-' + this.getAttribute('data-dl');
            var targetPanel = document.getElementById(targetId);
            
            if (targetPanel !== null) {
                targetPanel.classList.add('active');
            }
        });
    }
});
</script>



<style>
:root {
    --rk-base-dark: #0f172a;
    --rk-base-blue: #0369a1;
    --rk-accent-blue: #0ea5e9;
    --rk-light-bg: #f8fafc;
    --rk-alert-red: #dc2626;
    --rk-success-green: #059669;
    --rk-border: #cbd5e1;
    --rk-tag-bg: #e0f2fe;
    --rk-tag-text: #0284c7;
}

.rk-summary-module {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, blinkmacsystemfont, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(3, 105, 161, 0.15);
    border: 1px solid var(--rk-accent-blue);
    overflow: hidden;
}

/* Sekcja Treści */
.rk-summary-content {
    padding: 40px 50px;
    background: linear-gradient(to bottom, #ffffff, var(--rk-light-bg));
}

.rk-summary-content h2 {
    font-size: 28px;
    font-weight: 900;
    color: var(--rk-base-dark);
    margin: 0 0 15px 0;
    line-height: 1.3;
}

.rk-summary-content h3 {
    font-size: 20px;
    font-weight: 700;
    color: var(--rk-base-blue);
    margin: 25px 0 15px 0;
}

.rk-summary-content p {
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
    margin-bottom: 20px;
}

.rk-summary-content strong {
    color: var(--rk-base-dark);
    font-weight: 800;
}

.rk-summary-content a {
    color: var(--rk-accent-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(14, 165, 233, 0.3);
    transition: all 0.2s;
}

.rk-summary-content a:hover {
    border-bottom-color: var(--rk-accent-blue);
}

/* Tagi Długi Ogon */
.rk-tags-container {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px dashed var(--rk-border);
}

.rk-mat-tag {
    background: var(--rk-tag-bg);
    color: var(--rk-tag-text);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: var(--rk-base-blue);
    color: #ffffff;
}

/* Interaktywny Moduł (Dashboard) */
.rk-dashboard-widget {
    background: var(--rk-base-dark);
    padding: 40px 50px;
    color: #ffffff;
}

.rk-dash-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-dash-header h4 {
    margin: 0;
    font-size: 22px;
    color: #ffffff;
}

.rk-dash-controls {
    display: flex;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-dash-btn {
    flex: 1;
    padding: 18px;
    background: rgba(255,255,255,0.05);
    border: 2px solid rgba(255,255,255,0.1);
    border-radius: 12px;
    color: #ffffff;
    font-weight: 700;
    font-size: 16px;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
}

.rk-dash-btn.active-pro {
    background: rgba(5, 150, 105, 0.2);
    border-color: var(--rk-success-green);
    color: #34d399;
}

.rk-dash-btn.active-amateur {
    background: rgba(220, 38, 38, 0.2);
    border-color: var(--rk-alert-red);
    color: #f87171;
}

/* Wykres / Liczniki SVG */
.rk-dash-display {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #1e293b;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid #334155;
    align-items: center;
}

.rk-gauge-box {
    text-align: center;
}

.rk-gauge-svg {
    width: 100%;
    max-width: 140px;
    margin: 0 auto 15px auto;
}

.gauge-bg { fill: none; stroke: #334155; stroke-width: 12; stroke-linecap: round; }
.gauge-val { fill: none; stroke-width: 12; stroke-linecap: round; transition: stroke-dasharray 0.8s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.5s; stroke-dasharray: 0, 100; }
.state-pro .gauge-val { stroke: var(--rk-success-green); stroke-dasharray: 25, 100; } /* Niskie opory */
.state-amateur .gauge-val { stroke: var(--rk-alert-red); stroke-dasharray: 90, 100; } /* Ekstremalne opory */

.rk-dash-stats h5 { margin: 0 0 10px 0; font-size: 18px; color: #94a3b8; }
.rk-dash-stats .stat-value { font-size: 32px; font-weight: 900; margin-bottom: 5px; transition: color 0.3s; }
.rk-dash-stats .stat-desc { font-size: 14px; color: #cbd5e1; line-height: 1.5; }

.state-pro .stat-value { color: var(--rk-success-green); }
.state-amateur .stat-value { color: var(--rk-alert-red); }

/* Wielkie CTA */
.rk-cta-final {
    padding: 50px;
    text-align: center;
    background: var(--rk-light-bg);
}

.rk-cta-final h3 {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-base-dark);
    margin: 0 0 20px 0;
}

.rk-btn-epic {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    background: var(--rk-base-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 15px 30px -10px rgba(3, 105, 161, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-epic:hover {
    transform: translateY(-4px);
    background: #0284c7;
    box-shadow: 0 20px 40px -10px rgba(3, 105, 161, 0.6);
}

@media (max-width: 768px) {
    .rk-summary-content, .rk-dashboard-widget, .rk-cta-final { padding: 30px 20px; }
    .rk-dash-controls { flex-direction: column; gap: 15px; } /* Stack vertically on mobile, no horizontal scroll */
    .rk-dash-display { grid-template-columns: 1fr; gap: 20px; text-align: center; }
    .rk-summary-content h2 { font-size: 24px; }
    .rk-btn-epic { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Podsumowanie: Świadomy dobór średnicy rur to gwarancja niskich rachunków",
    "description": "Profesjonalne obliczenia hydrauliczne i dobór rur 16 mm lub 20 mm decydują o żywotności pompy ciepła i kosztach ogrzewania. Uniknij błędów instalatorów robionych na oko.",
    "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://x.com/Projekt_HVAC",
        "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-07-19",
    "dateModified": "2026-07-19"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#dataset",
    "name": "Porównanie oporów hydraulicznych rur w podłogówce 2026",
    "description": "Zestawienie parametrów technicznych pokazujące drastyczny wzrost oporów przy zastosowaniu rury 16 mm na zbyt długich odcinkach w stosunku do mieszanych obiegów inżynierskich.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opory hydrauliczne w podłogówce",
      "rura 16 czy 20 do ogrzewania podłogowego",
      "dobór pompy obiegowej",
      "optymalny przepływ w ogrzewaniu podłogowym",
      "obliczenia hydrauliczne podłogówki"
    ],
    "measurementTechnique": "Symulacja strat ciśnienia (kPa) i prędkości przepływu dla pętli pow. 100 m przy różnych przekrojach z uwzględnieniem mocy pompy ciepła.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Model Na Oko: Zastosowanie wyłącznie rury 16 mm powoduje opory powyżej 60 kPa, dławiąc pompę obiegową.",
        "Model Inżynierski: Dobór średnic (mix 16/20 mm) obniża straty poniżej 20 kPa."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/#webapp",
    "name": "Symulator Obciążenia Pompy Obiegowej (Hydraulika)",
    "description": "Interaktywny wizualizator przedstawiający wpływ wyboru średnicy rury (16 mm vs 20 mm) i długości pętli na wysilenie instalacji oraz pobór prądu przez urządzenie grzewcze.",
    "applicationCategory": "EngineeringApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-module">
    <div class="rk-summary-content">
        <h2>Podsumowanie: Świadomy dobór średnicy rur to gwarancja niskich rachunków</h2>
        <p>Świadomy dobór średnic rur to absolutny fundament i inwestycja, która zwraca się nie tylko w postaci <strong>wieloletniej trwałości komponentów</strong>, ale przede wszystkim w ekstremalnie niskich rachunkach za ogrzewanie. Jako praktyk na budowach widzę to codziennie: inwestorzy wydają dziesiątki tysięcy na zaawansowaną pompę ciepła, a następnie pozwalają, aby wykonawca dławił jej potencjał, rozkładając kilometry rury „na oko”.</p>
        
        <h3>Koniec z montażem „na oko” – dlaczego inżynieria wygrywa?</h3>
        <p>Zbyt mały przekrój rury na długich pętlach powoduje gigantyczny wzrost oporów hydraulicznych. W efekcie Twoja <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">pompa obiegowa</a> musi pracować na maksymalnych obrotach, zużywając znacznie więcej prądu i skracając swoją żywotność. Z kolei profesjonalne, inżynierskie obliczenia hydrauliczne pozwalają precyzyjnie zbilansować system – tak, aby woda płynęła swobodnie, a posadzka oddawała ciepło równomiernie, zgodnie z rygorystycznymi standardami nowoczesnego, energooszczędnego budownictwa.</p>
        
        <div class="rk-tags-container">
            <span class="rk-mat-tag"># średnica rury do pompy ciepła</span>
            <span class="rk-mat-tag"># opory hydrauliczne w podłogówce</span>
            <span class="rk-mat-tag"># rura 16 czy 20 do ogrzewania podłogowego</span>
            <span class="rk-mat-tag"># projekt ogrzewania podłogowego cena</span>
            <span class="rk-mat-tag"># źle dobrane rury w podłogówce objawy</span>
            <span class="rk-mat-tag"># jak zmniejszyć rachunki za prąd z pompą ciepła</span>
            <span class="rk-mat-tag"># obliczenia hydrauliczne podłogówki</span>
            <span class="rk-mat-tag"># optymalny przepływ w ogrzewaniu podłogowym</span>
            <span class="rk-mat-tag"># wydajność pompy obiegowej podłogówka</span>
            <span class="rk-mat-tag"># koszt poprawek po zalaniu wylewki</span>
        </div>
    </div>

    <div class="rk-dashboard-widget">
        <div class="rk-dash-header">
            <h4>Symulator Obciążenia Instalacji Hydraulicznej</h4>
        </div>
        
        <div class="rk-dash-controls" id="rkPipeControls">
            <button class="rk-dash-btn active-pro" data-mode="pro">
                <svg width="28" height="28" 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>
                Projekt Inżynierski OZC
                <span style="font-size: 12px; font-weight: normal; opacity: 0.8;">Obliczone przekroje rur</span>
            </button>
            <button class="rk-dash-btn" data-mode="amateur">
                <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" 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"></polygon><line x1="15" y1="9" x2="9" y2="15"></line><line x1="9" y1="9" x2="15" y2="15"></line></svg>
                Montaż "Na Oko"
                <span style="font-size: 12px; font-weight: normal; opacity: 0.8;">Wszędzie rura 16 mm</span>
            </button>
        </div>

        <div class="rk-dash-display state-pro" id="rkDashDisplay">
            <div class="rk-gauge-box">
                <svg class="rk-gauge-svg" viewBox="0 0 100 50">
                    <path class="gauge-bg" d="M 10 45 A 40 40 0 0 1 90 45" />
                    <path class="gauge-val" d="M 10 45 A 40 40 0 0 1 90 45" pathLength="100" />
                </svg>
            </div>
            <div class="rk-dash-stats" id="rkDashStats">
                <h5>Obciążenie pompy obiegowej</h5>
                <div class="stat-value">Poniżej 20 kPa</div>
                <div class="stat-desc">Idealne środowisko pracy. System zrównoważony hydraulicznie. Pompa pracuje na niskim biegu, minimalizując zużycie energii i maksymalizując współczynnik COP pompy ciepła.</div>
            </div>
        </div>
    </div>

    <div class="rk-cta-final">
        <h3>Nie ryzykuj setek tysięcy na błędach instalatorów</h3>
        <p style="color: #64748b; font-size: 16px; margin-bottom: 30px;">
            Jeśli chcesz mieć absolutną pewność, że Twoja instalacja będzie działać zgodnie z zasadami rzemiosła, a wybrane średnice rur uchronią Cię przed drogimi usterkami – przestań zgadywać.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-epic">
            ZBUDUJ SWOJĄ WIEDZĘ INŻYNIERSKĄ
            <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() {
    const buttons = document.querySelectorAll('.rk-dash-btn');
    const displayArea = document.getElementById('rkDashDisplay');
    const statsArea = document.getElementById('rkDashStats');

    buttons.forEach(function(btn) {
        btn.addEventListener('click', function() {
            // Zmiana przycisków
            buttons.forEach(function(b) {
                b.classList.remove('active-pro');
                b.classList.remove('active-amateur');
            });
            
            let mode = this.getAttribute('data-mode');
            
            if (mode === 'pro') {
                this.classList.add('active-pro');
                displayArea.className = 'rk-dash-display state-pro';
                statsArea.innerHTML = `
                    <h5>Opory hydrauliczne pętli</h5>
                    <div class="stat-value">Poniżej 20 kPa</div>
                    <div class="stat-desc">Idealne środowisko pracy. Zastosowanie odpowiednich średnic rur zapewnia zrównoważony system. Pompa obiegowa pracuje lekko, minimalizując zużycie prądu w domu.</div>
                `;
            } else {
                this.classList.add('active-amateur');
                displayArea.className = 'rk-dash-display state-amateur';
                statsArea.innerHTML = `
                    <h5>Opory hydrauliczne pętli</h5>
                    <div class="stat-value">Powyżej 65 kPa</div>
                    <div class="stat-desc">Krytyczne dławienie systemu! Zbyt wąska rura 16 mm na pętlach o dużej długości wymusza ekstremalną pracę pompy. Oczekuj niedogrzanych stref i wyższych rachunków za prąd.</div>
                `;
            }
        });
    });
});
</script>



<style>
  .po-pref-container {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    background: #ffffff;
    border: 1px solid #dadce0;
    border-radius: 12px;
    padding: 24px;
    margin: 30px 0;
    box-shadow: 0 2px 6px rgba(0,0,0,0.05);
    display: flex;
    flex-direction: column;
    gap: 20px;
    transition: box-shadow 0.3s ease;
  }
  .po-pref-container:hover {
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
  }
  .po-pref-header {
    display: flex;
    flex-direction: column;
    gap: 8px;
  }
  .po-pref-container h2 {
    margin: 0;
    font-size: 1.4rem;
    color: #202124;
    font-weight: 600;
  }
  .po-pref-container h3 {
    margin: 0;
    font-size: 1.1rem;
    color: #5f6368;
    font-weight: 400;
  }
  .po-pref-body {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #f8f9fa;
    padding: 16px 20px;
    border-radius: 8px;
    border: 1px solid #e8eaed;
  }
  .po-pref-info {
    display: flex;
    align-items: center;
    gap: 16px;
  }
  .po-pref-icon svg {
    width: 40px;
    height: 40px;
  }
  .po-pref-text p {
    margin: 0;
    color: #3c4043;
    font-size: 0.95rem;
    line-height: 1.4;
  }
  .po-pref-text strong {
    color: #1a73e8;
  }
  
  /* Interaktywny przełącznik */
  .po-toggle-wrapper {
    display: flex;
    align-items: center;
    gap: 12px;
  }
  .po-toggle {
    position: relative;
    width: 52px;
    height: 28px;
    background-color: #dadce0;
    border-radius: 34px;
    cursor: pointer;
    transition: background-color 0.3s;
  }
  .po-toggle::after {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 24px;
    height: 24px;
    background-color: white;
    border-radius: 50%;
    transition: transform 0.3s;
    box-shadow: 0 1px 3px rgba(0,0,0,0.3);
  }
  .po-toggle.active {
    background-color: #1a73e8;
  }
  .po-toggle.active::after {
    transform: translateX(24px);
  }
  
  /* Przycisk akcji (ukryty domyślnie, pojawia się po interakcji) */
  .po-action-btn {
    display: none;
    text-decoration: none;
    background: #1a73e8;
    color: #ffffff;
    padding: 12px 24px;
    border-radius: 24px;
    font-weight: 500;
    text-align: center;
    font-size: 1rem;
    transition: background 0.2s;
    margin-top: 10px;
  }
  .po-action-btn:hover {
    background: #1557b0;
    color: #ffffff;
  }
  .po-action-btn.visible {
    display: block;
    animation: fadeIn 0.4s ease;
  }

  @keyframes fadeIn {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
  }

  /* RWD - Mobile (układ pionowy, akordeon, brak przycisków obok siebie) */
  @media (max-width: 768px) {
    .po-pref-body {
      flex-direction: column;
      align-items: flex-start;
      gap: 20px;
    }
    .po-toggle-wrapper {
      width: 100%;
      justify-content: space-between;
      padding-top: 16px;
      border-top: 1px solid #dadce0;
    }
    .po-action-btn {
      width: 100%;
      box-sizing: border-box;
    }
  }
</style>

<div class="po-pref-container">
  <div class="po-pref-header">
    <h2>Wspieraj Projekt-Ogrzewania.pl</h2>
    <h3>Zostań z nami na dłużej w wynikach Google</h3>
  </div>
  
  <div class="po-pref-body">
    <div class="po-pref-info">
      <div class="po-pref-icon">
        <svg viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
          <path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z" fill="#4285F4"></path>
          <path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z" fill="#34A853"></path>
          <path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z" fill="#FBBC05"></path>
          <path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z" fill="#EA4335"></path>
        </svg>
      </div>
      <div class="po-pref-text">
        <p>Ponad 1000 poradników o ogrzewaniu i budowie domu.<br>
        <strong>Dodaj nas do ulubionych źródeł</strong>, aby łatwiej znajdować nasze rozwiązania techniczne.</p>
      </div>
    </div>
    
    <div class="po-toggle-wrapper">
      <span style="font-size: 0.9rem; color: #5f6368; font-weight: 500;">Aktywuj źródło</span>
      <div class="po-toggle" id="googleSourceToggle" aria-label="Włącz preferowane źródło"></div>
    </div>
  </div>
  
  <a href="https://google.com/preferences/source?q=https://projekt-ogrzewania.pl" target="_blank" rel="noopener noreferrer" class="po-action-btn" id="googleSourceLink">
    Przejdź do Google i potwierdź
  </a>
</div>

<script>
  document.addEventListener('DOMContentLoaded', function() {
    var toggleBtn = document.getElementById('googleSourceToggle');
    var actionLink = document.getElementById('googleSourceLink');
    
    toggleBtn.addEventListener('click', function() {
      if (toggleBtn.classList.contains('active') === false) {
        toggleBtn.classList.add('active');
        actionLink.classList.add('visible');
      } else {
        toggleBtn.classList.remove('active');
        actionLink.classList.remove('visible');
      }
    });
  });
</script>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Article",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#article",
      "mainEntityOfPage": {
        "@type": "WebPage",
        "@id": "https://projekt-ogrzewania.pl/google-preferred-sources"
      },
      "headline": "Wspieraj Projekt-Ogrzewania.pl w wynikach Google",
      "description": "Interaktywny widget umożliwiający dodanie portalu Projekt-Ogrzewania.pl do ulubionych źródeł w wyszukiwarce Google. Buduj z nami rzetelną bazę wiedzy o HVAC.",
      "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://x.com/Projekt_HVAC",
          "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-07-09",
      "dateModified": "2026-07-09"
    },
    {
      "@type": "Dataset",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#dataset",
      "name": "Preferowane Źródła Google - Statystyki i Interakcja",
      "description": "Zbiór danych i interaktywnych punktów styku pozwalających na ocenę preferencji czytelników dla treści technicznych HVAC.",
      "license": "https://projekt-ogrzewania.pl/",
      "creator": {
        "@type": "Person",
        "name": "Robert Kucharski"
      },
      "keywords": [
        "ulubione źródła google",
        "preferowane wyniki wyszukiwania",
        "autorytet domeny hvac",
        "zaufane portale budowlane",
        "personalizacja google search"
      ],
      "measurementTechnique": "Zliczanie interakcji z widgetem UI typu toggle oraz przekierowań do interfejsu preferencji Google Search",
      "mainEntity": "Optymalizacja zaangażowania użytkownika poprzez interaktywny widget dodawania domeny do preferencji Google."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/google-preferred-sources#webapplication",
      "name": "Google Preferences Toggle Widget",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "All",
      "description": "Aplikacja webowa w formie widgetu symulującego przełącznik mobilny, integrująca natywne linkowanie do ustawień preferowanych źródeł Google.",
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    }
  ]
}
</script>


<p>Artykuł <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">Średnice rur w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projektowe Obciążenie Cieplne (OZC).</title>
		<link>https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 15 Feb 2026 12:02:50 +0000</pubDate>
				<category><![CDATA[Efektywność cieplna]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[OZC]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[efektywność pompy ciepła]]></category>
		<category><![CDATA[instalacja co projekt]]></category>
		<category><![CDATA[normy pn en 12831]]></category>
		<category><![CDATA[obliczenia ozc]]></category>
		<category><![CDATA[ogrzewanie podłogowe parametry]]></category>
		<category><![CDATA[ogrzewanie podłogowe projekt]]></category>
		<category><![CDATA[ozc]]></category>
		<category><![CDATA[pompa ciepła projekt]]></category>
		<category><![CDATA[projekt instalacji grzewczej]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[projektowe obciążenie cieplne]]></category>
		<category><![CDATA[rozstaw rur podłogówki]]></category>
		<category><![CDATA[straty ciepła]]></category>
		<category><![CDATA[strumień ciepła podłogówka]]></category>
		<category><![CDATA[zapotrzebowanie na ciepło]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3460</guid>

					<description><![CDATA[<p>Wiele instalacji grzewczych powstaje na podstawie przybliżeń, a nie rzeczywistych danych, co prowadzi do wysokich rachunków i problemów z komfortem cieplnym. Tymczasem Projektowe Obciążenie Cieplne (OZC) to kluczowy element, który pozwala precyzyjnie określić, ile energii potrzebuje Twój dom, aby utrzymać komfort nawet podczas największych mrozów. Od tej wartości zależy dobór rozstawu rur, temperatura zasilania oraz efektywność pompy ciepła. W tym artykule pokazujemy krok po kroku, jak OZC wpływa na projekt ogrzewania podłogowego i dlaczego jego prawidłowe obliczenie decyduje o trwałości, oszczędności i niezawodności całego systemu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowe Obciążenie Cieplne (OZC).</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-blue: #0284c7;
    --rk-intro-blue-light: #e0f2fe;
    --rk-intro-green: #059669;
    --rk-intro-green-bg: #ecfdf5;
    --rk-intro-red: #dc2626;
    --rk-intro-red-bg: #fef2f2;
    --rk-intro-gold: #d97706;
    --rk-intro-gold-bg: #fffbeb;
    --rk-intro-gray: #64748b;
    --rk-intro-border: #cbd5e1;
    --rk-intro-bg: #ffffff;
}

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

/* Sekcja Nagłówkowa */
.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-blue);
    position: relative;
}

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

.rk-intro-title {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.25;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

/* Typografia Wstępu */
.rk-intro-lead {
    font-size: 17px;
    line-height: 1.8;
    color: #e2e8f0;
    margin: 0;
    font-weight: 400;
}

.rk-intro-lead strong {
    color: #ffffff;
    font-weight: 800;
    background: rgba(2, 132, 199, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

.rk-intro-link {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: all 0.3s;
}

.rk-intro-link:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Symulator Interaktywny */
.rk-intro-interactive {
    padding: 45px 50px;
    background: #f8fafc;
}

.rk-intro-section-title {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Przełącznik */
.rk-switcher-box {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-app-toggle {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 550px;
}

.rk-toggle-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

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

.rk-toggle-glider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-intro-red);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.4s ease;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.15);
    z-index: 1;
}

.rk-app-toggle[data-mode="pro"] .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-intro-green);
}

/* Dashboard Wyników */
.rk-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 2px solid var(--rk-intro-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 40px;
    align-items: center;
    transition: all 0.4s ease;
}

.rk-dashboard.mode-amateur {
    border-color: var(--rk-intro-red-bg);
    box-shadow: 0 15px 35px -10px rgba(220, 38, 38, 0.12);
}

.rk-dashboard.mode-pro {
    border-color: var(--rk-intro-green-bg);
    box-shadow: 0 15px 35px -10px rgba(5, 150, 105, 0.12);
}

/* SVG Animacje */
.rk-svg-stage {
    width: 100%;
    max-width: 180px;
    margin: 0 auto;
    background: var(--rk-intro-dark);
    border-radius: 16px;
    padding: 20px;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
    overflow: hidden;
}

.rk-svg-stage svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Animacje wspólne i specyficzne */
.anim-house { transition: fill 0.5s; }
.anim-thermometer-fill { transform-origin: bottom; transition: transform 1s cubic-bezier(0.4, 0, 0.2, 1), fill 0.5s; }
.anim-coin { opacity: 0; transition: opacity 0.3s, transform 0.5s; }

.mode-amateur .anim-house { fill: #334155; }
.mode-amateur .anim-thermometer-fill { transform: scaleY(0.3); fill: var(--rk-intro-blue); }
.mode-amateur .anim-coin { animation: coinDrop 1.5s infinite linear; }
.mode-amateur .anim-coin:nth-child(2) { animation-delay: 0.5s; }
.mode-amateur .anim-coin:nth-child(3) { animation-delay: 1s; }

.mode-pro .anim-house { fill: #1e293b; stroke: var(--rk-intro-green); stroke-width: 2; animation: shieldPulse 2s infinite alternate; }
.mode-pro .anim-thermometer-fill { transform: scaleY(0.85); fill: var(--rk-intro-green); }
.mode-pro .anim-coin { opacity: 1; transform: translateY(0); fill: var(--rk-intro-gold); }

@keyframes coinDrop {
    0% { opacity: 0; transform: translateY(-20px); fill: #ef4444; }
    20% { opacity: 1; }
    80% { opacity: 1; }
    100% { opacity: 0; transform: translateY(30px); fill: #ef4444; }
}

@keyframes shieldPulse {
    0% { filter: drop-shadow(0 0 0 rgba(5, 150, 105, 0)); }
    100% { filter: drop-shadow(0 0 10px rgba(5, 150, 105, 0.4)); }
}

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

.rk-tile {
    background: #f1f5f9;
    padding: 20px;
    border-radius: 16px;
    border-left: 4px solid transparent;
    transition: all 0.3s ease;
}

.mode-amateur .rk-tile { border-left-color: var(--rk-intro-red); background: var(--rk-intro-red-bg); }
.mode-pro .rk-tile { border-left-color: var(--rk-intro-green); background: var(--rk-intro-green-bg); }

.rk-tile-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 6px;
}

.rk-tile-value {
    display: block;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-intro-dark);
}

.rk-tile-sub {
    display: block;
    font-size: 13px;
    color: #94a3b8;
    margin-top: 4px;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-interactive { padding: 35px 25px; }
    .rk-intro-title { font-size: 26px; }
    .rk-dashboard { grid-template-columns: 1fr; text-align: center; padding: 25px; gap: 25px; }
    .rk-svg-stage { max-width: 140px; margin-bottom: 10px; }
    .rk-data-grid { grid-template-columns: 1fr; gap: 12px; }
    .rk-toggle-btn { padding: 12px 10px; font-size: 13px; flex-direction: column; gap: 4px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Projektowe Obciążenie Cieplne (OZC) – Fundament Inwestycji",
    "description": "Czym jest Projektowe Obciążenie Cieplne (OZC) wg normy PN-EN 12831? Zobacz, dlaczego ten parametr decyduje o kosztach pompy ciepła i bezawaryjności podłogówki.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-wstep",
    "name": "Porównanie metod doboru mocy grzewczej budynku",
    "description": "Zestawienie ryzyk i kosztów związanych z doborem instalacji grzewczej szacunkowo ('na oko') w kontraście do rzetelnych inżynierskich obliczeń normatywnych OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne ozc",
      "norma PN-EN 12831",
      "moc pompy ciepła",
      "rozstaw rur podłogówki",
      "koszty eksploatacji budynku"
    ],
    "measurementTechnique": "Analiza wpływu precyzyjnych obliczeń strat ciepła na redukcję przewymiarowania źródła ciepła oraz optymalizację kosztów operacyjnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Dobór na oko (szacunkowy): Zwiększa koszty inwestycyjne przez zakup zbyt dużej pompy ciepła oraz podnosi rachunki za prąd z powodu taktowania.",
        "Obliczenia OZC (PN-EN 12831): Optymalizują moc urządzenia, gwarantując najniższe koszty i komfort nawet podczas skrajnych mrozów."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-wstep",
    "name": "Symulator Wpływu OZC na Inwestycję",
    "description": "Interaktywny widżet demonstracyjny obrazujący konsekwencje finansowe i techniczne pominięcia obliczeń Projektowego Obciążenia Cieplnego (OZC) podczas budowy.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-intro-container" id="rk-ozc-intro-app">
    <!-- Wstęp Merytoryczny -->
    <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"><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>
            Fundament Instalacji
        </div>
        <h2 class="rk-intro-title">Projektowe Obciążenie Cieplne <span>(OZC)</span></h2>
        <p class="rk-intro-lead">
            To kluczowy parametr inżynieryjny definiowany przez <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-intro-link">normę PN-EN 12831</a>, określający maksymalną ilość energii cieplnej, jaką należy dostarczyć do budynku w ciągu sekundy (wyrażaną w watach lub kilowatach), aby utrzymać zadaną temperaturę wewnętrzną podczas skrajnie niskich temperatur zewnętrznych.
            <br><br>
            Prawidłowo obliczone <strong>OZC stanowi absolutny fundament projektowania</strong> systemów grzewczych. To ono decyduje o mocy <a href="https://projekt-ogrzewania.pl/pompa-ciepla/" class="rk-intro-link">pompy ciepła</a>, dokładnym <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-intro-link">rozstawie rur ogrzewania podłogowego</a> oraz rzeczywistych kosztach eksploatacji budynku przez dziesięciolecia.
        </p>
    </div>

    <!-- Symulator Interaktywny -->
    <div class="rk-intro-interactive">
        <h3 class="rk-intro-section-title">Dlaczego ignorowanie OZC to najdroższy błąd inwestora?</h3>
        
        <div class="rk-switcher-box">
            <div class="rk-app-toggle" id="introSwitchContainer" data-mode="amateur">
                <div class="rk-toggle-glider" id="introGlider"></div>
                <button class="rk-toggle-btn active" data-target="amateur">
                    <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="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>
                    Dobór &#8222;Na oko&#8221;
                </button>
                <button class="rk-toggle-btn" data-target="pro">
                    <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="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    Projekt OZC (PN-EN)
                </button>
            </div>
        </div>

        <div class="rk-dashboard mode-amateur" id="introDashboard">
            <div class="rk-svg-stage">
                <!-- SVG: Dom + Termometr + Pieniądze -->
                <svg viewBox="0 0 100 100">
                    <!-- Dom -->
                    <path class="anim-house" d="M 10 50 L 50 15 L 90 50 L 90 90 L 10 90 Z" fill="#334155" />
                    <rect x="40" y="60" width="20" height="30" fill="#0f172a" />
                    <!-- Termometr -->
                    <rect x="20" y="30" width="8" height="40" rx="4" fill="#1e293b" />
                    <circle cx="24" cy="70" r="8" fill="#1e293b" />
                    <rect class="anim-thermometer-fill" x="22" y="32" width="4" height="38" rx="2" />
                    <circle cx="24" cy="70" r="5" class="anim-thermometer-fill" />
                    <!-- Pieniądze / Utrata -->
                    <circle class="anim-coin" cx="75" cy="40" r="4" />
                    <circle class="anim-coin" cx="80" cy="55" r="4" />
                    <circle class="anim-coin" cx="70" cy="70" r="4" />
                </svg>
            </div>
            
            <div class="rk-data-grid">
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl1">Koszty inwestycyjne</span>
                    <span class="rk-tile-value" id="dynVal1">Drastycznie zawyżone</span>
                    <span class="rk-tile-sub" id="dynSub1">Przewymiarowana pompa ciepła</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl2">Ryzyko w czasie mrozów</span>
                    <span class="rk-tile-value" id="dynVal2">Niedogrzanie budynku</span>
                    <span class="rk-tile-sub" id="dynSub2">Zbyt rzadki rozstaw rur</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl3">Zużycie prądu</span>
                    <span class="rk-tile-value" id="dynVal3">Wysokie (Taktowanie)</span>
                    <span class="rk-tile-sub" id="dynSub3">Sprężarka pracuje skokowo</span>
                </div>
                <div class="rk-tile">
                    <span class="rk-tile-label" id="dynLbl4">Bezpieczeństwo</span>
                    <span class="rk-tile-value" id="dynVal4">Loteria wykonawcza</span>
                    <span class="rk-tile-sub" id="dynSub4">Brak twardych danych</span>
                </div>
            </div>
        </div>
    </div>
</div>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w strukturze błędu)
    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-ozc-intro-app');
        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;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Kontener edukacyjny oraz struktura JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora (Przełącznik)
    const switchContainer = document.getElementById('introSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-toggle-btn');
    const dashboard = document.getElementById('introDashboard');
    
    // Elementy DOM do podmiany tekstu
    const v1 = document.getElementById('dynVal1'); const s1 = document.getElementById('dynSub1');
    const v2 = document.getElementById('dynVal2'); const s2 = document.getElementById('dynSub2');
    const v3 = document.getElementById('dynVal3'); const s3 = document.getElementById('dynSub3');
    const v4 = document.getElementById('dynVal4'); const s4 = document.getElementById('dynSub4');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Animacja przełącznika
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const targetMode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', targetMode);

            // Aktualizacja treści i klas kontenera SVG/Dashboardu
            if (targetMode === 'pro') {
                dashboard.className = 'rk-dashboard mode-pro';
                
                v1.textContent = "Zoptymalizowane"; v1.style.color = "var(--rk-intro-green)";
                s1.textContent = "Idealnie dobrana moc PC";
                
                v2.textContent = "Pełny komfort cieplny"; v2.style.color = "var(--rk-intro-green)";
                s2.textContent = "Rozstaw obliczony matematycznie";
                
                v3.textContent = "Minimalne (Wysokie COP)"; v3.style.color = "var(--rk-intro-green)";
                s3.textContent = "Stabilna praca inwertera";
                
                v4.textContent = "100% Gwarancji"; v4.style.color = "var(--rk-intro-green)";
                s4.textContent = "Instalacja oparta na fizyce";

            } else {
                dashboard.className = 'rk-dashboard mode-amateur';
                
                v1.textContent = "Drastycznie zawyżone"; v1.style.color = "var(--rk-intro-dark)";
                s1.textContent = "Przewymiarowana pompa ciepła";
                
                v2.textContent = "Niedogrzanie budynku"; v2.style.color = "var(--rk-intro-dark)";
                s2.textContent = "Zbyt rzadki rozstaw rur";
                
                v3.textContent = "Wysokie (Taktowanie)"; v3.style.color = "var(--rk-intro-dark)";
                s3.textContent = "Sprężarka pracuje skokowo";
                
                v4.textContent = "Loteria wykonawcza"; v4.style.color = "var(--rk-intro-dark)";
                s4.textContent = "Brak twardych danych";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-tsim-dark: #0f172a;
    --rk-tsim-panel: #1e293b;
    --rk-tsim-blue: #0284c7;
    --rk-tsim-blue-light: #38bdf8;
    --rk-tsim-frost: #bae6fd;
    --rk-tsim-red: #ef4444;
    --rk-tsim-orange: #f97316;
    --rk-tsim-green: #10b981;
    --rk-tsim-bg: #ffffff;
    --rk-tsim-border: #e2e8f0;
}

.rk-tsim-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-tsim-bg);
    border-radius: 24px;
    box-shadow: 0 20px 50px -10px rgba(15, 23, 42, 0.15);
    border: 1px solid var(--rk-tsim-border);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-tsim-header {
    background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #f8fafc;
    position: relative;
    border-bottom: 4px solid var(--rk-tsim-blue);
}

.rk-tsim-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.15);
    color: var(--rk-tsim-blue-light);
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

.rk-tsim-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-tsim-header h2 span { color: var(--rk-tsim-red); }

.rk-tsim-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-tsim-lead strong {
    color: #ffffff;
    background: rgba(2, 132, 199, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

/* Interaktywny Obszar z Suwakiem */
.rk-tsim-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Wybór systemu (Radio Tabs) */
.rk-tsim-tabs {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 30px;
    position: relative;
}

.rk-tsim-tab {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: #64748b;
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 2;
}

.rk-tsim-tab.active {
    color: #ffffff;
}

.rk-tsim-tab-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(50% - 6px);
    background: var(--rk-tsim-red);
    border-radius: 8px;
    transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1), background 0.4s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
    z-index: 1;
}

.rk-tsim-tabs[data-active="pro"] .rk-tsim-tab-glider {
    transform: translateX(100%);
    background: var(--rk-tsim-green);
}

/* Panel Kontrolny - Suwak Mrozu */
.rk-tsim-control-box {
    background: #ffffff;
    border: 1px solid var(--rk-tsim-border);
    border-radius: 20px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.03);
    text-align: center;
}

.rk-tsim-temp-display {
    font-size: 42px;
    font-weight: 900;
    color: var(--rk-tsim-dark);
    font-variant-numeric: tabular-nums;
    margin-bottom: 15px;
    transition: color 0.3s;
}

.rk-tsim-slider-wrapper {
    position: relative;
    padding: 20px 0;
}

input[type=range].rk-tsim-slider {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
    cursor: pointer;
}

input[type=range].rk-tsim-slider:focus { outline: none; }

/* Track */
input[type=range].rk-tsim-slider::-webkit-slider-runnable-track {
    width: 100%;
    height: 12px;
    background: linear-gradient(to right, #0284c7 0%, #38bdf8 30%, #e2e8f0 50%, #f97316 100%);
    border-radius: 99px;
    border: 1px solid #cbd5e1;
}

/* Thumb */
input[type=range].rk-tsim-slider::-webkit-slider-thumb {
    height: 32px;
    width: 32px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-tsim-dark);
    -webkit-appearance: none;
    margin-top: -11px;
    box-shadow: 0 4px 10px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
input[type=range].rk-tsim-slider::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Dashboard z wynikami */
.rk-tsim-dashboard {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    align-items: stretch;
}

.rk-tsim-svg-panel {
    background: var(--rk-tsim-panel);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

.rk-tsim-svg { width: 100%; max-width: 150px; height: auto; }

/* Animacje SVG zależne od suwaka i trybu */
.anim-floor { transition: fill 0.5s; }
.anim-snow { opacity: 0; transition: opacity 0.5s; }
.anim-pump { transition: transform 0.3s, fill 0.3s; }
.anim-error { opacity: 0; transform: scale(0); transition: all 0.3s; }

/* Dynamika nadawana przez JS klasami */
.env-cold .anim-snow { opacity: 1; animation: fallSnow 2s linear infinite; }
@keyframes fallSnow { 0% { transform: translateY(-10px); } 100% { transform: translateY(20px); opacity: 0; } }

.sys-fail .anim-floor { fill: #64748b !important; }
.sys-fail .anim-pump { fill: var(--rk-tsim-red); animation: shakePump 0.15s infinite; }
.sys-fail .anim-error { opacity: 1; transform: scale(1); }

.sys-ok .anim-floor { fill: var(--rk-tsim-orange); }
.sys-ok .anim-pump { fill: var(--rk-tsim-green); animation: pulsePump 2s infinite alternate; }

@keyframes shakePump { 0% { transform: translateX(-2px); } 100% { transform: translateX(2px); } }
@keyframes pulsePump { 0% { filter: drop-shadow(0 0 2px #10b981); } 100% { filter: drop-shadow(0 0 10px #10b981); } }

/* Parametry textowe */
.rk-tsim-stats {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tsim-stat-box {
    background: #ffffff;
    border: 1px solid var(--rk-tsim-border);
    padding: 20px;
    border-radius: 14px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    transition: all 0.3s;
}

.rk-stat-label {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #64748b;
    margin-bottom: 8px;
}

.rk-stat-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-tsim-dark);
}

.val-danger { color: var(--rk-tsim-red) !important; }
.val-success { color: var(--rk-tsim-green) !important; }
.val-cold { color: var(--rk-tsim-blue) !important; }

@media (max-width: 768px) {
    .rk-tsim-header, .rk-tsim-interactive { padding: 30px 20px; }
    .rk-tsim-title { font-size: 24px; }
    .rk-tsim-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-tsim-stats { grid-template-columns: 1fr; }
    .rk-tsim-svg-panel { padding: 40px 20px; }
    .rk-tsim-temp-display { font-size: 36px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Koszty metody \"na oko\" w nowoczesnym budownictwie",
    "description": "Budowa domu jednorodzinnego lub modernizacja starego obiektu to proces pełen kosztownych pułapek. Zobacz, jak brak OZC niszczy pompę ciepła i domowy budżet.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-mrozy",
    "name": "Parametry Pracy Pomp Ciepła podczas Ekstremalnych Mrozów",
    "description": "Zestawienie spadku temperatury wewnętrznej i ryzyka taktowania sprężarki w funkcji temperatury zewnętrznej dla układów przewymiarowanych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "taktowanie pompy ciepła awaria",
      "przewymiarowana pompa ciepła mrozy",
      "niedogrzane pomieszczenia ogrzewanie podłogowe",
      "ucieczka watów straty ciepła",
      "przelicznik 50 W/m2 błędy"
    ],
    "measurementTechnique": "Symulacja wydajności instalacji przy spadku temperatury zewnętrznej od +10°C do -22°C.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Metoda 'na oko': Przy -15°C i poniżej ujawniają się mostki termiczne, podłoga nie przekazuje ciepła, temperatura wewnątrz spada do 16°C.",
        "Projekt OZC: Precyzyjny dobór pętli kompensuje miejscowe straty ciepła, utrzymując stałe 20°C bez nadwyrężania kompresora."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-mrozy",
    "name": "Symulator Ekstremalnych Mrozów",
    "description": "Narzędzie interaktywne pozwalające użytkownikowi symulować spadek temperatury zewnętrznej i obserwować zjawisko taktowania pompy ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 Range Input and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tsim-container" id="rk-tsim-app">
    
    <div class="rk-tsim-header">
        <div class="rk-tsim-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>
            Krytyczny Błąd Inwestycyjny
        </div>
        <h2>Koszty metody &#8222;na oko&#8221; <span>a zima stulecia</span></h2>
        <p class="rk-tsim-lead">
            Budowa domu jednorodzinnego lub modernizacja starego obiektu to proces pełen kosztownych pułapek, w którym intuicja i potoczne metody „na oko” (np. przelicznik <strong>50 W/m²</strong>) nieuchronnie prowadzą do katastrofy finansowej i technologicznej.
            <br><br>
            Inwestorzy masowo zmagają się z problemem niedogrzanych pomieszczeń w okresie strefowych mrozów sięgających <strong>-22°C</strong>, bądź stają przed faktem drastycznego przewymiarowania pomp ciepła. Urządzenia te, wchodząc w tzw. taktowanie (zbyt częste cykle pracy sprężarki), ulegają awarii po zaledwie 3–4 latach eksploatacji, generując przy tym gigantyczne rachunki za energię elektryczną. Brak precyzyjnej wiedzy o tym, ile watów energii ucieka przez konkretną ścianę, strop, okno czy system wentylacji, paraliżuje jakikolwiek proces decyzyjny i skazuje instalację płaszczyznową na losową i nieefektywną pracę.
        </p>
    </div>

    <div class="rk-tsim-interactive">
        
        <div class="rk-tsim-tabs" id="tsimTabs" data-active="amateur">
            <div class="rk-tsim-tab-glider" id="tsimGlider"></div>
            <div class="rk-tsim-tab active" data-type="amateur">Przelicznik &#8222;Na oko&#8221;</div>
            <div class="rk-tsim-tab" data-type="pro">Precyzyjne OZC</div>
        </div>

        <div class="rk-tsim-control-box">
            <h3 style="margin:0 0 10px 0; font-size:14px; color:#64748b; text-transform:uppercase; letter-spacing:1px;">Temperatura Zewnętrzna</h3>
            <div class="rk-tsim-temp-display" id="tsimTempDisplay">0°C</div>
            <div class="rk-tsim-slider-wrapper">
                <input type="range" min="-22" max="10" value="0" class="rk-tsim-slider" id="tsimSlider">
            </div>
            <p style="margin:10px 0 0 0; font-size:13px; color:#94a3b8;">Przesuń suwak w lewo, aby symulować mróz.</p>
        </div>

        <div class="rk-tsim-dashboard">
            
            <div class="rk-tsim-svg-panel" id="tsimSvgPanel">
                <svg class="rk-tsim-svg" viewBox="0 0 100 100">
                    <circle class="anim-snow" cx="20" cy="10" r="1.5" fill="#ffffff" />
                    <circle class="anim-snow" cx="50" cy="5" r="2" fill="#ffffff" style="animation-delay: 0.5s;" />
                    <circle class="anim-snow" cx="80" cy="15" r="1.5" fill="#ffffff" style="animation-delay: 1s;" />
                    
                    <path d="M 10 50 L 50 15 L 90 50 L 90 90 L 10 90 Z" fill="#334155" stroke="#475569" stroke-width="2"/>
                    <path class="anim-floor" d="M 15 80 L 85 80 L 85 85 L 15 85 Z" fill="#f97316" />
                    
                    <rect class="anim-pump" x="65" y="65" width="25" height="25" rx="3" fill="#10b981" />
                    <circle cx="77.5" cy="77.5" r="7" fill="#1e293b" opacity="0.5"/>
                    
                    <path class="anim-error" d="M 65 55 L 75 40 L 85 55 Z" fill="#ef4444" />
                    <text class="anim-error" x="73" y="52" fill="#ffffff" font-size="10" font-weight="bold">!</text>
                </svg>
            </div>

            <div class="rk-tsim-stats">
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Temperatura wewnątrz</span>
                    <span class="rk-stat-value" id="valInsideTemp">20°C (Komfort)</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Stan Sprężarki (Pompa)</span>
                    <span class="rk-stat-value" id="valCompressor">Stabilna praca</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Koszty energii</span>
                    <span class="rk-stat-value" id="valEnergy">W normie</span>
                </div>
                <div class="rk-tsim-stat-box">
                    <span class="rk-stat-label">Wydajność ogrzewania</span>
                    <span class="rk-stat-value" id="valStatus">Poprawna</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-tsim-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy DOM
    const slider = document.getElementById('tsimSlider');
    const tempDisplay = document.getElementById('tsimTempDisplay');
    const tabs = document.querySelectorAll('.rk-tsim-tab');
    const tabsContainer = document.getElementById('tsimTabs');
    const svgPanel = document.getElementById('tsimSvgPanel');
    
    // Pola tekstowe
    const valInsideTemp = document.getElementById('valInsideTemp');
    const valCompressor = document.getElementById('valCompressor');
    const valEnergy = document.getElementById('valEnergy');
    const valStatus = document.getElementById('valStatus');

    let currentMode = 'amateur';

    // 3. Obsługa zakładek (Tryb Systemu)
    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            tabs.forEach(t => t.classList.remove('active'));
            tab.classList.add('active');
            currentMode = tab.getAttribute('data-type');
            tabsContainer.setAttribute('data-active', currentMode);
            updateSimulation();
        });
    });

    // 4. Obsługa Suwaka
    slider.addEventListener('input', updateSimulation);

    // 5. Silnik Symulacji
    function updateSimulation() {
        const outTemp = parseInt(slider.value);
        
        // Zmiana sposobu budowania stringów, aby uniknąć błędów parsera z backtickami w niektórych edytorach
        tempDisplay.textContent = outTemp > 0 ? "+" + outTemp + "°C" : outTemp + "°C";
        
        if (outTemp <= -10) {
            tempDisplay.style.color = 'var(--rk-tsim-blue)';
            svgPanel.classList.add('env-cold');
        } else {
            tempDisplay.style.color = 'var(--rk-tsim-dark)';
            svgPanel.classList.remove('env-cold');
        }

        // Reset klas SVG
        svgPanel.classList.remove('sys-ok', 'sys-fail');

        if (currentMode === 'pro') {
            // TRYB: Projekt OZC
            svgPanel.classList.add('sys-ok');
            
            valInsideTemp.textContent = '20°C (Stała)';
            valInsideTemp.className = 'rk-stat-value val-success';
            
            valCompressor.textContent = 'Ciągła, inwerterowa';
            valCompressor.className = 'rk-stat-value val-success';
            
            valEnergy.textContent = 'Zoptymalizowane';
            valEnergy.className = 'rk-stat-value';

            if (outTemp <= -15) {
                valStatus.textContent = 'Kompensacja strat idealna';
            } else {
                valStatus.textContent = 'Wysokie COP pompy';
            }
            valStatus.className = 'rk-stat-value val-success';

        } else {
            // TRYB: Amator "Na Oko"
            if (outTemp > 0) {
                // Ciepło - urządzenie przewymiarowane taktuje, ale grzeje
                svgPanel.classList.add('sys-fail');
                valInsideTemp.textContent = '22°C (Przegrzewanie)';
                valInsideTemp.className = 'rk-stat-value val-danger';
                
                valCompressor.textContent = 'Częste taktowanie!';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = '+30% (Rozruchy)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Bezwładność układu';
                valStatus.className = 'rk-stat-value';
                
            } else if (outTemp > -10) {
                // Lekki mróz - zaczynają się problemy
                svgPanel.classList.add('sys-fail');
                valInsideTemp.textContent = '19°C (Niestabilna)';
                valInsideTemp.className = 'rk-stat-value';
                
                valCompressor.textContent = 'Agresywne taktowanie';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = '+40% (Wysoki prąd)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Zaburzone przepływy';
                valStatus.className = 'rk-stat-value val-danger';

            } else {
                // Silny mróz - katastrofa, podłoga nie daje rady, pompa wchodzi w tryb awaryjny lub grzałki
                svgPanel.classList.add('sys-fail');
                const dropTemp = 19 + Math.floor(outTemp / 5); // Spadek temp
                
                // Zwykła konkatenacja unikająca backticków
                valInsideTemp.textContent = dropTemp + "°C (Niedogrzanie)";
                valInsideTemp.className = 'rk-stat-value val-cold';
                
                valCompressor.textContent = 'Ryzyko uszkodzenia!';
                valCompressor.className = 'rk-stat-value val-danger';
                
                valEnergy.textContent = 'Ogromne (Praca grzałek)';
                valEnergy.className = 'rk-stat-value val-danger';
                
                valStatus.textContent = 'Brak mocy przekazu';
                valStatus.className = 'rk-stat-value val-danger';
            }
        }
    }

    // Inicjalizacja startowa
    updateSimulation();
});
</script>



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



<style>
:root {
    --rk-core-dark: #0f172a;
    --rk-core-brand: #0284c7;
    --rk-core-accent: #0ea5e9;
    --rk-core-bg: #ffffff;
    --rk-core-panel: #f8fafc;
    --rk-core-border: #cbd5e1;
    --rk-core-text: #334155;
    --rk-core-green: #059669;
    --rk-core-green-bg: #ecfdf5;
    --rk-core-amber: #d97706;
    --rk-core-amber-bg: #fffbeb;
}

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

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

.rk-core-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    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-core-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

.rk-core-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-core-lead strong {
    color: #ffffff;
    font-weight: 800;
}

.rk-core-lead a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: color 0.3s;
}

.rk-core-lead a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Inżynierski Panel Kontrolny (Dashboard) */
.rk-core-dashboard {
    padding: 40px 50px;
    background: var(--rk-core-panel);
}

/* Nawigacja po komponentach OZC (3 twarde filary) */
.rk-core-nav {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

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

.rk-core-nav-btn:hover {
    background: #f1f5f9;
    border-color: #94a3b8;
    transform: translateY(-2px);
}

.rk-core-nav-btn.active {
    border-color: var(--rk-core-brand);
    background: var(--rk-core-brand);
}

.rk-nav-icon {
    width: 24px;
    height: 24px;
    color: var(--rk-core-brand);
    transition: color 0.3s;
}

.rk-core-nav-btn.active .rk-nav-icon {
    color: #ffffff;
}

.rk-nav-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-core-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    transition: color 0.3s;
}

.rk-core-nav-btn.active .rk-nav-title {
    color: #ffffff;
}

/* Główna Karta Prezentacji Danych */
.rk-core-display-card {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-core-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 40px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
}

/* Kontener Wizualizacji Sztywnych Układów SVG */
.rk-core-svg-stage {
    background: var(--rk-core-dark);
    border-radius: 16px;
    padding: 25px;
    height: 220px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
    position: relative;
    overflow: hidden;
}

.rk-dashboard-svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* Ukrywanie/Pokazywanie warstw SVG za pomocą CSS */
.svg-layer { opacity: 0; transition: opacity 0.4s ease-in-out; }
.rk-core-container[data-view="fabric"] .layer-fabric { opacity: 1; }
.rk-core-container[data-view="ventilation"] .layer-ventilation { opacity: 1; }
.rk-core-container[data-view="bivalent"] .layer-bivalent { opacity: 1; }

/* Animacje wektorowe kontrolowane stanem rodzica */
.anim-flow-lines { stroke-dasharray: 8 16; stroke-dashoffset: 0; }
.rk-core-container[data-view="ventilation"] .anim-flow-lines { animation: airFlow 2s linear infinite; }

.anim-balance-beam { transform-origin: 50px 55px; transition: transform 0.6s ease-in-out; }
.rk-core-container[data-view="bivalent"] .anim-balance-beam { transform: rotate(-8deg); }

@keyframes airFlow { to { stroke-dashoffset: -24; } }

/* Treść merytoryczna wewnątrz karty */
.rk-core-info-block h3 {
    margin: 0 0 12px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-core-dark);
}

.rk-core-info-block p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.65;
    color: #475569;
}

/* Siatka parametrów pod tekstem */
.rk-core-metrics-panel {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-core-metric-box {
    background: #f1f5f9;
    padding: 15px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-core-brand);
}

.rk-metric-label {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 4px;
}

.rk-metric-value {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-core-dark);
}

@media (max-width: 768px) {
    .rk-core-header, .rk-core-dashboard { padding: 35px 25px; }
    .rk-core-header h2 { font-size: 24px; }
    .rk-core-nav { grid-template-columns: 1fr; gap: 10px; }
    .rk-core-display-card { grid-template-columns: 1fr; gap: 25px; padding: 25px; }
    .rk-core-svg-stage { height: 180px; max-width: 240px; margin: 0 auto; width: 100%; }
    .rk-core-metrics-panel { grid-template-columns: 1fr; gap: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-definicja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Czym dokładnie jest Projektowe Obciążenie Cieplne (OZC) budynku?",
    "description": "Zrozumienie wartości OZC (kW) wg normy PN-EN 12831-1. Dowiedz się, jak bilans przegród, wentylacji oraz wyznaczenie punktu biwalentnego eliminuje zgadywanie.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-definicja",
    "name": "Struktura składowych bilansu energetycznego budynku szczytowego",
    "description": "Zestawienie twardych danych inżynierskich określających udziały strat przez przenikanie oraz wentylację w warunkach normatywnych WT 2021.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne budynku",
      "norma PN-EN 12831-1",
      "punkt biwalentny pompy ciepła",
      "standard energetyczny WT 2021",
      "koszt obliczeń OZC"
    ],
    "measurementTechnique": "Kalkulacja strat szczytowych na podstawie fizyki budowli i oporów cieplnych przegród budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przenikanie ciepła: Straty energii przez ściany, okna i strop przy skrajnej temperaturze projektowej.",
        "Wentylacja: Zapotrzebowanie na dogrzanie powietrza zewnętrznego z uwzględnieniem sprawności rekuperatora.",
        "Punkt biwalentny: Temperatura graniczna, przy której źródło ciepła wymaga aktywacji wspomagania elektrycznego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-definicja",
    "name": "Interaktywny Analizator Składowych OZC",
    "description": "Inżynierski interfejs do wizualizacji struktury strat ciepła przez przegrody budowlane, procesy wentylacyjne oraz do wyznaczania punktu biwalentnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG capable browser",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-core-container" id="rk-ozc-def-app" data-view="fabric">
    
    <div class="rk-core-header">
        <div class="rk-core-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="M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z"></path><line x1="4" y1="22" x2="4" y2="15"></line></svg>
            Analiza Inżynierska
        </div>
        <h2>Czym dokładnie jest Projektowe Obciążenie Cieplne (OZC) budynku?</h2>
        <p class="rk-core-lead">
            <strong>Projektowe Obciążenie Cieplne (OZC)</strong> to obliczeniowa wartość strat energii wyrażona w kilowatach [kW], wyznaczana dla skrajnych warunków zimowych danej strefy klimatycznej zgodnie z normą <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">PN-EN 12831-1</a>. Wartość ta określa zapotrzebowanie na moc szczytową źródła ciepła i jest sumą strat przez przegrody oraz wentylację. Stanowi ona podstawę do doboru urządzeń grzewczych, eliminując błędy szacunkowe, które generują niepotrzebne koszty inwestycyjne.
        </p>
    </div>

    <div class="rk-core-dashboard">
        
        <div class="rk-core-nav">
            <button class="rk-core-nav-btn active" data-target="fabric">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" fill="none"/><line x1="9" y1="3" x2="9" y2="21"/><line x1="15" y1="3" x2="15" y2="21"/></svg>
                <span class="rk-nav-title">1. Przenikanie</span>
            </button>
            <button class="rk-core-nav-btn" data-target="ventilation">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9.59 4.59A2 2 0 1 1 11 8H2m12.41 11.41A2 2 0 1 1 13 16h9m-1.59-7.41A2 2 0 1 0 19 12h3"/></svg>
                <span class="rk-nav-title">2. Wentylacja</span>
            </button>
            <button class="rk-core-nav-btn" data-target="bivalent">
                <svg class="rk-nav-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="19" y1="5" x2="5" y2="19"/><circle cx="6.5" cy="6.5" r="2.5"/><circle cx="17.5" cy="17.5" r="2.5"/></svg>
                <span class="rk-nav-title">3. Punkt Biwalentny</span>
            </button>
        </div>

        <div class="rk-core-display-card">
            
            <div class="rk-core-svg-stage">
                <svg class="rk-dashboard-svg" viewBox="0 0 100 100">
                    
                    <g class="svg-layer layer-fabric">
                        <rect x="15" y="20" width="20" height="60" fill="#475569" />
                        <rect x="35" y="20" width="15" height="60" fill="#0284c7" opacity="0.6" />
                        <rect x="50" y="20" width="5" height="60" fill="#cbd5e1" />
                        <path d="M 10 50 L 65 50" fill="none" stroke="#ef4444" stroke-width="3" stroke-dasharray="4 4" />
                        <polyline points="60 45 65 50 60 55" fill="none" stroke="#ef4444" stroke-width="3" />
                        <text x="60" y="35" fill="#ffffff" font-size="8" font-family="sans-serif">WT 2021</text>
                    </g>
                    
                    <g class="svg-layer layer-ventilation">
                        <rect x="30" y="30" width="40" height="40" rx="6" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
                        <path class="anim-flow-lines" d="M 10 40 L 90 40" fill="none" stroke="#38bdf8" stroke-width="3" />
                        <path class="anim-flow-lines" d="M 90 60 L 10 60" fill="none" stroke="#f97316" stroke-width="3" />
                    </g>
                    
                    <g class="svg-layer layer-bivalent">
                        <path d="M 20 85 L 80 85 M 50 85 L 50 55" fill="none" stroke="#64748b" stroke-width="3" />
                        <g class="anim-balance-beam">
                            <line x1="20" y1="55" x2="80" y2="55" stroke="#ffffff" stroke-width="4" stroke-linecap="round" />
                            <rect x="22" y="35" width="16" height="18" fill="#10b981" rx="2" />
                            <rect x="62" y="38" width="16" height="15" fill="#ef4444" rx="2" />
                        </g>
                    </g>
                    
                </svg>
            </div>

            <div class="rk-core-info-block">
                <h3 id="coreDisplayTitle">Straty ciepła przez przegrody</h3>
                <p id="coreDisplayDesc">
                    W praktyce inżynierskiej dokument OZC eliminuje zgadywanie. Budynki wznoszone w standardzie WT 2021 charakteryzują się wysoką szczelnością oraz niskimi współczynnikami przenikania ciepła przegród, co sprawia, że ich realne zapotrzebowanie na energię drastycznie różni się od obiektów budowanych jeszcze dekadę temu.
                </p>
                
                <div class="rk-core-metrics-panel">
                    <div class="rk-core-metric-box">
                        <span class="rk-metric-label" id="coreLabel1">Koszt opracowania OZC</span>
                        <span class="rk-metric-value" id="coreValue1">450 &ndash; 900 PLN</span>
                    </div>
                    <div class="rk-core-metric-box">
                        <span class="rk-metric-label" id="coreLabel2">Oszczędność inwestycyjna</span>
                        <span class="rk-metric-value" id="coreValue2">Do kilkunastu tysięcy PLN</span>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez użycia tagów H2/H3 w strukturze alertu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-def-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:18px; text-transform:uppercase; margin-bottom:10px;">Błąd Licencji</div><div style="font-size:14px; color:#cbd5e1;">Opracowanie struktury oraz mechanika JSON-LD są własnością serwisu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy sterujące i baza danych
    const container = document.getElementById('rk-ozc-def-app');
    const navBtns = container.querySelectorAll('.rk-core-nav-btn');
    
    const titleDOM = document.getElementById('coreDisplayTitle');
    const descDOM = document.getElementById('coreDisplayDesc');
    const lbl1DOM = document.getElementById('coreLabel1');
    const val1DOM = document.getElementById('coreValue1');
    const lbl2DOM = document.getElementById('coreLabel2');
    const val2DOM = document.getElementById('coreValue2');

    // Czyste bazy tekstowe (bez backticków dla uniknięcia błędów parsowania w WP)
    const contentData = {
        fabric: {
            title: "Przenikanie przez przegrody (WT 2021)",
            desc: "W praktyce inżynierskiej dokument OZC eliminuje zgadywanie. Budynki wznoszone w standardzie WT 2021 charakteryzują się wysoką szczelnością oraz niskimi współczynnikami przenikania ciepła przegród strukturalnych, co sprawia, że ich realne zapotrzebowanie na energię drastycznie różni się od starych obiektów.",
            lbl1: "Koszt opracowania OZC",
            val1: "450 - 900 PLN",
            lbl2: "Oszczędność inwestycyjna",
            val2: "Zabezpieczenie przed przewymiarowaniem"
        },
        ventilation: {
            title: "Projektowe straty wentylacyjne",
            desc: "OZC precyzyjnie sumuje straty energii potrzebnej do ogrzania powietrza zewnętrznego. Uwzględnienie w obliczeniach inżynierskich systemu z odzyskiem ciepła pozwala na obniżenie strat wentylacyjnych o ponad 80%, drastycznie wpływając na ostateczny wynik zapotrzebowania budynku.",
            lbl1: "Wymóg normatywny",
            val1: "PN-EN 12831-1",
            lbl2: "Wpływ na rekuperację",
            val2: "Redukcja szczytowych strat wentylacji"
        },
        bivalent: {
            title: "Wyznaczenie punktu biwalentnego",
            desc: "Projektowe Obciążenie Cieplne pozwala precyzyjnie określić tzw. punkt biwalentny dla pompy ciepła – czyli temperaturę zewnętrzną (np. -7°C), przy której sprężarka wymaga wsparcia przez grzałki elektryczne. Chroni to inwestora przed zakupem drogiego źródła o zawyżonej mocy nominalnej.",
            lbl1: "Przykładowy punkt",
            val1: "-7°C (Granica grzałek)",
            lbl2: "Efekt hydrauliczny",
            val2: "Stabilna praca bez taktowania"
        }
    };

    // 3. Obsługa zdarzeń kliknięcia
    navBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            navBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const view = this.getAttribute('data-target');
            container.setAttribute('data-view', view);

            // Podmiana danych merytorycznych
            titleDOM.textContent = contentData[view].title;
            descDOM.textContent = contentData[view].desc;
            lbl1DOM.textContent = contentData[view].lbl1;
            val1DOM.textContent = contentData[view].val1;
            lbl2DOM.textContent = contentData[view].lbl2;
            val2DOM.textContent = contentData[view].val2;
        });
    });
});
</script>



<style>
:root {
    --rk-norm-dark: #0f172a;
    --rk-norm-brand: #4338ca; /* Eleganckie indygo dla prawa i norm */
    --rk-norm-brand-light: #e0e7ff;
    --rk-norm-accent: #0ea5e9;
    --rk-norm-green: #10b981;
    --rk-norm-green-light: #ecfdf5;
    --rk-norm-red: #ef4444;
    --rk-norm-bg: #ffffff;
    --rk-norm-panel: #f8fafc;
    --rk-norm-border: #cbd5e1;
    --rk-norm-text: #334155;
    --rk-norm-muted: #64748b;
}

.rk-norm-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-norm-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(67, 56, 202, 0.15);
    border: 1px solid rgba(67, 56, 202, 0.2);
    overflow: hidden;
}

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

.rk-norm-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(67, 56, 202, 0.4);
    color: #a5b4fc;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(165, 180, 252, 0.2);
}

.rk-norm-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-norm-title span { color: #818cf8; }

.rk-norm-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-norm-lead strong {
    color: #ffffff;
    background: rgba(67, 56, 202, 0.4);
    padding: 2px 6px;
    border-radius: 4px;
}

.rk-link-norm {
    color: #a5b4fc;
    text-decoration: none;
    border-bottom: 1px dashed #a5b4fc;
    transition: all 0.3s;
}

.rk-link-norm:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Przestrzeń interaktywna */
.rk-norm-interactive {
    padding: 45px 50px;
    background: var(--rk-norm-panel);
}

/* System Zakładek (Pill Menu) */
.rk-norm-tabs {
    display: flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    margin-bottom: 35px;
    position: relative;
    box-shadow: inset 0 2px 5px rgba(0,0,0,0.05);
}

.rk-norm-tab {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-norm-muted);
    cursor: pointer;
    border-radius: 12px;
    transition: all 0.3s ease;
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.rk-norm-tab.active { color: #ffffff; }

.rk-norm-tab-glider {
    position: absolute;
    top: 6px;
    bottom: 6px;
    width: calc(33.333% - 4px);
    background: var(--rk-norm-brand);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
    box-shadow: 0 4px 10px -2px rgba(67, 56, 202, 0.3);
    z-index: 1;
}

.rk-norm-tabs[data-active="zones"] .rk-norm-tab-glider { transform: translateX(0%); background: var(--rk-norm-accent); }
.rk-norm-tabs[data-active="temps"] .rk-norm-tab-glider { transform: translateX(100%); background: #f59e0b; }
.rk-norm-tabs[data-active="law"] .rk-norm-tab-glider { transform: translateX(200%); background: var(--rk-norm-brand); }

/* Główny Dashboard Prezentacji */
.rk-norm-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-norm-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 35px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
    transition: border-color 0.4s;
}

.rk-norm-dashboard[data-state="zones"] { border-color: rgba(14, 165, 233, 0.3); }
.rk-norm-dashboard[data-state="temps"] { border-color: rgba(245, 158, 11, 0.3); }
.rk-norm-dashboard[data-state="law"] { border-color: rgba(67, 56, 202, 0.3); }

/* Kontener SVG */
.rk-norm-svg-box {
    background: var(--rk-norm-dark);
    border-radius: 16px;
    padding: 20px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
    overflow: hidden;
}

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s, transform 0.4s; transform: scale(0.95); width: 100%; height: 100%; }
.rk-norm-dashboard[data-state="zones"] .layer-zones { opacity: 1; transform: scale(1); }
.rk-norm-dashboard[data-state="temps"] .layer-temps { opacity: 1; transform: scale(1); }
.rk-norm-dashboard[data-state="law"] .layer-law { opacity: 1; transform: scale(1); }

/* Animacje specyficzne dla warstw */
.anim-thermo-drop { transform-origin: bottom; animation: dropTemp 2.5s infinite alternate ease-in-out; }
.anim-snowflake { animation: spinSnow 4s infinite linear; transform-origin: 50px 30px; }
.anim-heat-wave { stroke-dasharray: 8 8; animation: riseHeat 1.5s infinite linear; }
.anim-shield-pulse { animation: pulseShieldNorm 2s infinite alternate; }

@keyframes dropTemp { 0% { transform: scaleY(1); fill: #38bdf8; } 100% { transform: scaleY(0.4); fill: #1e3a8a; } }
@keyframes spinSnow { to { transform: rotate(360deg); } }
@keyframes riseHeat { to { stroke-dashoffset: -16; } }
@keyframes pulseShieldNorm { 0% { filter: drop-shadow(0 0 0 rgba(99, 102, 241, 0)); } 100% { filter: drop-shadow(0 0 12px rgba(99, 102, 241, 0.6)); } }

/* Treść Panelu */
.rk-norm-content h3 {
    margin: 0 0 12px 0;
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-norm-dark);
}

.rk-norm-content p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

/* Kafelki z danymi */
.rk-norm-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-norm-tile {
    background: var(--rk-norm-panel);
    padding: 15px;
    border-radius: 12px;
    border-left: 4px solid transparent;
    transition: all 0.3s;
}

.rk-norm-dashboard[data-state="zones"] .rk-norm-tile { border-left-color: var(--rk-norm-accent); }
.rk-norm-dashboard[data-state="temps"] .rk-norm-tile { border-left-color: #f59e0b; }
.rk-norm-dashboard[data-state="law"] .rk-norm-tile { border-left-color: var(--rk-norm-brand); }

.rk-tile-lbl { display: block; font-size: 11px; text-transform: uppercase; font-weight: 800; color: var(--rk-norm-muted); margin-bottom: 4px; }
.rk-tile-val { display: block; font-size: 16px; font-weight: 900; color: var(--rk-norm-dark); }

@media (max-width: 768px) {
    .rk-norm-header, .rk-norm-interactive { padding: 35px 20px; }
    .rk-norm-title { font-size: 24px; }
    .rk-norm-tabs { flex-direction: column; }
    .rk-norm-tab-glider { width: 100%; height: calc(33.333% - 4px); top: 6px; left: 6px; }
    .rk-norm-tabs[data-active="zones"] .rk-norm-tab-glider { transform: translateY(0%); }
    .rk-norm-tabs[data-active="temps"] .rk-norm-tab-glider { transform: translateY(100%); }
    .rk-norm-tabs[data-active="law"] .rk-norm-tab-glider { transform: translateY(200%); }
    
    .rk-norm-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 25px; text-align: center; }
    .rk-norm-svg-box { max-width: 200px; margin: 0 auto; height: 160px; }
    .rk-norm-tiles { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#article-prawo",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/"
    },
    "headline": "Jakie normy i przepisy prawne regulują obliczenia OZC w Polsce?",
    "description": "Zrozum regulacje prawne OZC: norma PN-EN 12831-1:2017-08, 5 stref klimatycznych Polski, temperatury wewnętrzne oraz wymogi dotacji Czyste Powietrze.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#dataset-prawo",
    "name": "Zestawienie parametrów normatywnych wg PN-EN 12831-1:2017-08",
    "description": "Wykaz obligatoryjnych temperatur wewnętrznych oraz zewnętrznych stref klimatycznych wymaganych do sporządzenia legalnego bilansu cieplnego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "norma PN-EN 12831-1:2017-08",
      "obliczenia zapotrzebowania na moc cieplną",
      "5 stref klimatycznych Polska temperatura",
      "charakterystyka energetyczna budynku",
      "dotacje czyste powietrze wymogi OZC"
    ],
    "measurementTechnique": "Kalkulacja zgodności projektu instalacji z § 134 ust. 1 Rozporządzenia MI oraz wytycznymi programów proekologicznych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Temperatury Zewnętrzne: Podział Polski na 5 stref od -16°C (I) do -24°C (V).",
        "Temperatury Wewnętrzne: Wymagane projektowe 20°C dla pokojów i 24°C dla łazienek.",
        "Zgodność prawna: Warunek konieczny odbioru budynku i uzyskania dotacji (Moje Ciepło)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/#webapp-prawo",
    "name": "Eksplorator Norm i Stref Klimatycznych OZC",
    "description": "Aplikacja interaktywna pozwalająca inwestorom zrozumieć wymogi prawne, strefy klimatyczne i ich wpływ na odbiór instalacji oraz dotacje.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires HTML5 and JavaScript",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-norm-container" id="rk-norm-app">
    
    <div class="rk-norm-header">
        <div class="rk-norm-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>
            Prawo i Wymogi Budowlane
        </div>
        <h2 class="rk-norm-title">Jakie normy i przepisy prawne regulują obliczenia <span>OZC w Polsce</span>?</h2>
        <p class="rk-norm-lead">
            Obowiązek wykonywania <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/" class="rk-link-norm">obliczeń zapotrzebowania na moc cieplną</a> reguluje <strong>§ 134 ust. 1 Rozporządzenia Ministra Infrastruktury</strong> w sprawie warunków technicznych, jakim powinny odpowiadać budynki. Każdy legalnie budowany lub modernizowany obiekt musi posiadać rzetelną <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-link-norm">charakterystykę energetyczną</a> opartą na tych ściśle określonych wyliczeniach.
        </p>
    </div>

    <div class="rk-norm-interactive">
        
        <div class="rk-norm-tabs" id="normTabs" data-active="zones">
            <div class="rk-norm-tab-glider" id="normGlider"></div>
            <div class="rk-norm-tab active" data-target="zones">
                <svg width="18" height="18" 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>
                Strefy Klimatyczne
            </div>
            <div class="rk-norm-tab" data-target="temps">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Temp. Wewnętrzne
            </div>
            <div class="rk-norm-tab" data-target="law">
                <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" 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>
                Prawo &#038; Dotacje
            </div>
        </div>

        <div class="rk-norm-dashboard" id="normDashboard" data-state="zones">
            
            <div class="rk-norm-svg-box">
                <svg class="rk-svg-layer layer-zones" viewBox="0 0 100 100">
                    <rect x="40" y="10" width="20" height="60" rx="10" fill="#1e293b" stroke="#38bdf8" stroke-width="2"/>
                    <circle cx="50" cy="80" r="15" fill="#1e293b" stroke="#38bdf8" stroke-width="2"/>
                    <rect class="anim-thermo-drop" x="44" y="15" width="12" height="60" rx="6" fill="#38bdf8"/>
                    <circle cx="50" cy="80" r="10" fill="#38bdf8"/>
                    <g class="anim-snowflake" stroke="#ffffff" stroke-width="2" stroke-linecap="round">
                        <line x1="50" y1="20" x2="50" y2="40"/> <line x1="40" y1="30" x2="60" y2="30"/>
                        <line x1="43" y1="23" x2="57" y2="37"/> <line x1="43" y1="37" x2="57" y2="23"/>
                    </g>
                </svg>

                <svg class="rk-svg-layer layer-temps" viewBox="0 0 100 100">
                    <path d="M 15 50 L 50 20 L 85 50 L 85 85 L 15 85 Z" fill="#1e293b" stroke="#f59e0b" stroke-width="2"/>
                    <rect x="25" y="55" width="20" height="30" fill="#334155"/>
                    <text x="35" y="75" fill="#f59e0b" font-size="12" font-weight="bold" text-anchor="middle">20°C</text>
                    <rect x="55" y="55" width="20" height="30" fill="#334155"/>
                    <text x="65" y="75" fill="#ef4444" font-size="12" font-weight="bold" text-anchor="middle">24°C</text>
                    <path class="anim-heat-wave" d="M 60 45 Q 65 35 60 25" fill="none" stroke="#ef4444" stroke-width="2"/>
                </svg>

                <svg class="rk-svg-layer layer-law" viewBox="0 0 100 100">
                    <path class="anim-shield-pulse" d="M 50 15 L 20 25 L 20 55 C 20 75 45 90 50 95 C 55 90 80 75 80 55 L 80 25 Z" fill="#1e293b" stroke="#4338ca" stroke-width="3"/>
                    <polyline points="35 55 45 65 65 40" fill="none" stroke="#10b981" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
            </div>

            <div class="rk-norm-content">
                <h3 id="dynNormTitle">Temperatury Obliczeniowe</h3>
                <p id="dynNormDesc">
                    Norma precyzuje podział Polski na 5 stref klimatycznych, dla których przypisane są obliczeniowe temperatury zewnętrzne. Od <strong>-16°C</strong> w łagodniejszej strefie I (nadmorskiej) aż do <strong>-24°C</strong> w skrajnej strefie V (górskiej).
                </p>
                <div class="rk-norm-tiles">
                    <div class="rk-norm-tile">
                        <span class="rk-tile-lbl" id="dynNormLbl1">Strefa I (Nadmorska)</span>
                        <span class="rk-tile-val" id="dynNormVal1">-16°C</span>
                    </div>
                    <div class="rk-norm-tile">
                        <span class="rk-tile-lbl" id="dynNormLbl2">Strefa V (Górska)</span>
                        <span class="rk-tile-val" id="dynNormVal2">-24°C</span>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Brak H2/H3 w strukturze błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-norm-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy DOM
    const tabsContainer = document.getElementById('normTabs');
    const tabs = document.querySelectorAll('.rk-norm-tab');
    const dashboard = document.getElementById('normDashboard');
    
    // Pola tekstowe do podmiany
    const dynTitle = document.getElementById('dynNormTitle');
    const dynDesc = document.getElementById('dynNormDesc');
    const lbl1 = document.getElementById('dynNormLbl1');
    const val1 = document.getElementById('dynNormVal1');
    const lbl2 = document.getElementById('dynNormLbl2');
    const val2 = document.getElementById('dynNormVal2');

    // Baza danych treści (bezpieczna od backticków)
    const dataContent = {
        zones: {
            title: "5 Stref Klimatycznych",
            desc: "Norma precyzuje podział Polski na 5 stref klimatycznych, dla których przypisane są rygorystyczne obliczeniowe temperatury zewnętrzne. Od -16°C w strefie I (nadmorskiej) do -24°C w strefie V (górskiej).",
            lbl1: "Strefa I (Najcieplejsza)",
            val1: "-16°C",
            lbl2: "Strefa V (Najzimniejsza)",
            val2: "-24°C"
        },
        temps: {
            title: "Temperatury Wewnętrzne",
            desc: "Przepisy ściśle określają wymagane temperatury wewnętrzne dla konkretnych typów pomieszczeń. Wymusza to na projektancie zastosowanie gęstszego rozstawu rur w łazienkach, aby sprostać wyższym wymogom cieplnym.",
            lbl1: "Pokoje, Salon, Kuchnia",
            val1: "20°C",
            lbl2: "Łazienki",
            val2: "24°C"
        },
        law: {
            title: "Odbiór i Dotacje",
            desc: "Oficjalną podstawą prawną jest norma PN-EN 12831-1:2017-08, która narzuca rygorystyczną metodologię. Projektowanie systemów grzewczych bez jej uwzględnienia uniemożliwia uzyskanie odbioru budowlanego oraz pozyskanie dotacji.",
            lbl1: "Obowiązująca Norma",
            val1: "PN-EN 12831-1",
            lbl2: "Programy wsparcia",
            val2: "Czyste Powietrze / Moje Ciepło"
        }
    };

    // 3. Obsługa kliknięć
    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            tabs.forEach(t => t.classList.remove('active'));
            this.classList.add('active');

            const target = this.getAttribute('data-target');
            
            // Animacja pigułki
            tabsContainer.setAttribute('data-active', target);
            // Zmiana stanu dashboardu (kolory + SVG)
            dashboard.setAttribute('data-state', target);

            // Podmiana tekstów
            dynTitle.textContent = dataContent[target].title;
            // Dodanie linków w opisie jeśli to zakładka dotacji (dla SEO)
            if(target === 'law') {
                dynDesc.innerHTML = 'Oficjalną podstawą prawną jest <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" style="color:var(--rk-norm-brand); font-weight:700;">norma PN-EN 12831-1:2017-08</a>, która narzuca rygorystyczną metodologię. Projektowanie bez jej uwzględnienia uniemożliwia uzyskanie odbioru oraz pozyskanie środków z programów takich jak <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/" style="color:var(--rk-norm-brand); font-weight:700;">Czyste Powietrze czy Moje Ciepło</a>.';
            } else {
                dynDesc.textContent = dataContent[target].desc;
            }
            
            lbl1.textContent = dataContent[target].lbl1;
            val1.textContent = dataContent[target].val1;
            lbl2.textContent = dataContent[target].lbl2;
            val2.textContent = dataContent[target].val2;
        });
    });
});
</script>



<style>
:root {
    --rk-tr-dark: #0f172a;
    --rk-tr-brand: #c2410c; /* Ciepły pomarańcz/cegła nawiązujący do przenikania ciepła */
    --rk-tr-brand-light: #ffedd5;
    --rk-tr-accent: #f97316;
    --rk-tr-blue: #0284c7;
    --rk-tr-blue-light: #e0f2fe;
    --rk-tr-bg: #ffffff;
    --rk-tr-panel: #f8fafc;
    --rk-tr-border: #e2e8f0;
    --rk-tr-text: #334155;
    --rk-tr-muted: #64748b;
}

.rk-tr-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-tr-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(194, 65, 12, 0.15);
    border: 1px solid rgba(194, 65, 12, 0.3);
    overflow: hidden;
}

/* Nagłówek i Wstęp Teorii */
.rk-tr-header {
    background: linear-gradient(135deg, var(--rk-tr-dark) 0%, #2a1508 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-tr-brand);
    display: block; /* Wymuszenie bloku, naprawia błędy z globalnym flexem */
}

.rk-tr-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(249, 115, 22, 0.2);
    color: #fdba74;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(249, 115, 22, 0.3);
}

.rk-tr-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-tr-title span { color: var(--rk-tr-accent); }

.rk-tr-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

/* Blok ze Wzorem - Naprawiony układ, zapobiega zgniataniu w pionie */
.rk-tr-equation-box {
    background: rgba(0, 0, 0, 0.4);
    border: 1px solid rgba(249, 115, 22, 0.4);
    border-radius: 16px;
    padding: 25px;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.5);
    width: 100%;
    box-sizing: border-box;
    overflow-x: auto; /* Pozwala na przewijanie na bardzo wąskich ekranach */
}

.rk-tr-equation {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 22px;
    color: #fdba74;
    letter-spacing: 1px;
    margin: 0 0 20px 0;
    text-align: center;
    line-height: 1.6;
    word-break: keep-all; /* Blokuje łamanie słów w dziwnych miejscach */
}

.rk-tr-equation-chunk {
    display: inline-block;
    white-space: nowrap;
}

.rk-tr-equation-legend {
    font-size: 13px;
    color: #94a3b8;
    line-height: 1.6;
    text-align: left;
    margin: 0;
    display: grid;
    /* Automatycznie dopasowuje kolumny, nie zgniata do pionu */
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 12px;
}

.rk-tr-equation-legend div {
    background: rgba(255, 255, 255, 0.05);
    padding: 8px 12px;
    border-radius: 8px;
    border-left: 3px solid rgba(249, 115, 22, 0.5);
}

.rk-tr-equation-legend strong { color: #e2e8f0; font-family: 'Cambria Math', 'Times New Roman', serif; font-size: 14px; }

/* Sekcja Interaktywna - Kalkulator */
.rk-tr-interactive {
    padding: 45px 50px;
    background: var(--rk-tr-panel);
}

.rk-tr-section-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-tr-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

/* Kontrolki - Wybór Standardu */
.rk-tr-controls {
    display: flex;
    gap: 15px;
    margin-bottom: 35px;
}

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

.rk-tr-btn:hover {
    border-color: #cbd5e1;
    transform: translateY(-2px);
}

.rk-tr-btn.active {
    border-color: var(--rk-tr-brand);
    background: var(--rk-tr-brand-light);
    box-shadow: 0 10px 20px -5px rgba(194, 65, 12, 0.15);
}

.rk-tr-btn-title {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-tr-text);
}

.rk-tr-btn.active .rk-tr-btn-title { color: var(--rk-tr-brand); }
.rk-tr-btn-sub { font-size: 12px; color: var(--rk-tr-muted); font-weight: 600; }

/* Wyświetlacz Wyników Grid */
.rk-tr-dashboard {
    display: grid;
    grid-template-columns: 240px 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-tr-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* SVG Wizualizacja Przegrody */
.rk-tr-svg-box {
    background: var(--rk-tr-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
}

.rk-tr-svg { width: 100%; height: auto; max-width: 180px; }

/* Animacje SVG zależne od stanu */
.anim-arrow { stroke-dasharray: 15; stroke-dashoffset: 0; transition: stroke 0.4s; }
.anim-wall-fill { transition: fill 0.4s; }

.state-old .anim-arrow { stroke: #ef4444; stroke-width: 4; animation: heatEscape 0.6s linear infinite; }
.state-old .anim-wall-fill { fill: #64748b; }

.state-wt2021 .anim-arrow { stroke: #f97316; stroke-width: 2.5; animation: heatEscape 1.5s linear infinite; }
.state-wt2021 .anim-wall-fill { fill: #0284c7; }

.state-passive .anim-arrow { stroke: #fbbf24; stroke-width: 1.5; animation: heatEscape 3s linear infinite; }
.state-passive .anim-wall-fill { fill: #10b981; }

@keyframes heatEscape { to { stroke-dashoffset: -30; } }

/* Panele Wynikowe */
.rk-tr-results-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-tr-res-tile {
    background: #f8fafc;
    border: 1px solid var(--rk-tr-border);
    padding: 15px 20px;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
}

.rk-tr-res-tile.tile-total {
    grid-column: 1 / -1;
    background: var(--rk-tr-dark);
    border-color: var(--rk-tr-dark);
}

.rk-tr-res-label { font-size: 12px; text-transform: uppercase; font-weight: 800; color: var(--rk-tr-muted); margin-bottom: 4px; }
.rk-tr-res-tile.tile-total .rk-tr-res-label { color: #94a3b8; }

.rk-tr-res-value { font-size: 20px; font-weight: 900; color: var(--rk-tr-dark); font-variant-numeric: tabular-nums; }
.rk-tr-res-tile.tile-total .rk-tr-res-value { color: var(--rk-tr-accent); font-size: 28px; }

.rk-tr-res-formula { font-size: 11px; color: #94a3b8; margin-top: 6px; font-family: monospace; }
.rk-tr-res-tile.tile-total .rk-tr-res-formula { color: #cbd5e1; }

.rk-tr-insight-box {
    margin-top: 25px;
    padding: 18px 20px;
    background: var(--rk-tr-blue-light);
    border-left: 4px solid var(--rk-tr-blue);
    border-radius: 8px;
    font-size: 14px;
    line-height: 1.6;
    color: #0c4a6e;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-tr-header, .rk-tr-interactive { padding: 35px 20px; }
    .rk-tr-title { font-size: 24px; }
    .rk-tr-controls { flex-direction: column; gap: 10px; }
    .rk-tr-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 20px; }
    .rk-tr-svg-box { height: 160px; max-width: 220px; margin: 0 auto; width: 100%; }
    .rk-tr-results-grid { grid-template-columns: 1fr; }
    .rk-tr-equation { font-size: 18px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-przenikanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak krok po kroku oblicza się straty ciepła przez przenikanie?",
    "description": "Zobacz inżynierski wzór na straty przez przenikanie (ΦT) wg normy PN-EN 12831. Obliczamy OZC dla ściany, okna i mostków cieplnych krok po kroku.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-przenikanie",
    "name": "Analiza strat ciepła przez przegrody budowlane (Przenikanie)",
    "description": "Interaktywne zestawienie wpływu współczynnika przenikania ciepła U przegród (ściana, okno, mostki termiczne) na całkowite straty ciepła pomieszczenia.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczanie strat ciepła przez przenikanie",
      "współczynnik przenikania ciepła U",
      "mostki termiczne OZC",
      "kalkulator strat ciepła budynek",
      "norma PN-EN 12831 wzór"
    ],
    "measurementTechnique": "Analiza porównawcza strumieni strat ciepła przez komponenty ściany zewn. wg normy PN-EN 12831 w 3 standardach budowlanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wzór uwzględnia sumę iloczynów pola powierzchni netto, współczynnika U oraz różnicy temperatur projektowych.",
        "Dla standardu WT 2021 okno i liniowy mostek termiczny wokół ramy generują aż 60,6% strat ciepła przegrody."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-przenikanie",
    "name": "Kalkulator Przenikania Ciepła Przegrody",
    "description": "Narzędzie inżynierskie pozwalające prześledzić krok po kroku obliczenia OZC dla ściany zewnętrznej z oknem, zależnie od standardu izolacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-tr-container" id="rk-tr-calc-app">
    
    <div class="rk-tr-header">
        <div class="rk-tr-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="9" y1="3" x2="9" y2="21"></line></svg>
            Metodologia Normy PN-EN 12831
        </div>
        <h2 class="rk-tr-title">Jak krok po kroku oblicza się <span>straty przez przenikanie?</span></h2>
        <p class="rk-tr-lead">
            Straty ciepła przez przenikanie (&Phi;<sub>T,i</sub>) oblicza się poprzez przemnożenie pola powierzchni przegrody <strong>A [m²]</strong> przez jej współczynnik przenikania ciepła <strong>U [W/(m²·K)]</strong> oraz projektową różnicę temperatur <strong>&Delta;T [K]</strong>. Formuła ta musi bezwzględnie uwzględniać liniowe mostki termiczne <strong>&Psi;</strong> wyrażone w W/(m·K). Ostateczny wynik podaje się z dokładnością do 1 W.
        </p>
        
        <div class="rk-tr-equation-box">
            <div class="rk-tr-equation">
                <span class="rk-tr-equation-chunk">&Phi;<sub>T,i</sub> = &Sigma; (A<sub>k</sub> &times; U<sub>k</sub> &times; f<sub>x,k</sub>)</span> &times; <span class="rk-tr-equation-chunk">(&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)</span> &nbsp;+&nbsp; <span class="rk-tr-equation-chunk">&Sigma; (&Psi;<sub>l</sub> &times; L<sub>l</sub> &times; f<sub>x,l</sub>)</span> &times; <span class="rk-tr-equation-chunk">(&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)</span>
            </div>
            <div class="rk-tr-equation-legend">
                <div><strong>f<sub>x</sub></strong> &#8211; współcz. redukcji temp. (przestrz. nieogrzewane)</div>
                <div><strong>&theta;<sub>int,i</sub></strong> &#8211; temperatura wewnętrzna projektowa</div>
                <div><strong>L</strong> &#8211; długość liniowego mostka termicznego [m]</div>
                <div><strong>&theta;<sub>e</sub></strong> &#8211; temperatura zewnętrzna obliczeniowa</div>
            </div>
        </div>
    </div>

    <div class="rk-tr-interactive">
        <h3 class="rk-tr-section-title">Symulator: Wpływ izolacji na straty ściany z oknem (III strefa, &Delta;T = 40K)</h3>
        
        <div class="rk-tr-controls">
            <button class="rk-tr-btn" data-standard="old">
                <span class="rk-tr-btn-title">Stary Dom</span>
                <span class="rk-tr-btn-sub">Brak izolacji</span>
            </button>
            <button class="rk-tr-btn active" data-standard="wt2021">
                <span class="rk-tr-btn-title">WT 2021</span>
                <span class="rk-tr-btn-sub">Przykład normatywny</span>
            </button>
            <button class="rk-tr-btn" data-standard="passive">
                <span class="rk-tr-btn-title">Dom Pasywny</span>
                <span class="rk-tr-btn-sub">Certyfikowane detale</span>
            </button>
        </div>

        <div class="rk-tr-dashboard">
            <div class="rk-tr-svg-box state-wt2021" id="trSvgBox">
                <svg class="rk-tr-svg" viewBox="0 0 100 100">
                    <rect class="anim-wall-fill" x="20" y="10" width="30" height="80" rx="2" />
                    <rect x="15" y="35" width="40" height="30" fill="#bae6fd" stroke="#0f172a" stroke-width="4" rx="2" />
                    <line x1="15" y1="50" x2="55" y2="50" stroke="#0f172a" stroke-width="2" />
                    
                    <text x="75" y="20" fill="#94a3b8" font-size="10" font-weight="bold">WEWN. (20°C)</text>
                    <text x="5" y="95" fill="#94a3b8" font-size="10" font-weight="bold" transform="rotate(-90 5 95)">ZEWN. (-20°C)</text>
                    
                    <path class="anim-arrow" d="M 70 25 L 10 25" fill="none" stroke-linecap="round" />
                    <path class="anim-arrow" d="M 70 50 L 10 50" fill="none" stroke-linecap="round" />
                    <path class="anim-arrow" d="M 70 75 L 10 75" fill="none" stroke-linecap="round" />
                </svg>
            </div>

            <div>
                <div class="rk-tr-results-grid">
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">1. Ściana netto (13,20 m²)</span>
                        <span class="rk-tr-res-value" id="valWall">79,2 W</span>
                        <span class="rk-tr-res-formula" id="formWall">13,2 &times; 0,15 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">2. Okno 3-szybowe (3,00 m²)</span>
                        <span class="rk-tr-res-value" id="valWin">108,0 W</span>
                        <span class="rk-tr-res-formula" id="formWin">3,00 &times; 0,90 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile">
                        <span class="rk-tr-res-label">3. Mostek Liniowy (7,0 m)</span>
                        <span class="rk-tr-res-value" id="valBridge">14,0 W</span>
                        <span class="rk-tr-res-formula" id="formBridge">7,00 &times; 0,05 &times; 40K</span>
                    </div>
                    <div class="rk-tr-res-tile tile-total">
                        <span class="rk-tr-res-label">Suma strat dla przegrody (&Phi;<sub>T</sub>)</span>
                        <span class="rk-tr-res-value" id="valTotal">201,2 W</span>
                        <span class="rk-tr-res-formula" id="formTotal">79,2 + 108,0 + 14,0 W</span>
                    </div>
                </div>

                <div class="rk-tr-insight-box" id="trInsightText">
                    Wynik pokazuje, że dla ściany o pow. 16,2 m² projektant musi zabezpieczyć <strong>201,2 W</strong> mocy grzewczej. Aż <strong>60,6%</strong> ciepła ucieka przez stolarkę okienną i jej montaż, mimo że okno zajmuje tylko 18,5% powierzchni.
                </div>
            </div>
        </div>
        
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-tr-calc-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji skryptu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja należy do Projekt-Ogrzewania.pl</div></div>';
        return;
    }

    // Elementy DOM
    const btns = document.querySelectorAll('.rk-tr-btn');
    const svgBox = document.getElementById('trSvgBox');
    
    const valWall = document.getElementById('valWall'); const formWall = document.getElementById('formWall');
    const valWin = document.getElementById('valWin'); const formWin = document.getElementById('formWin');
    const valBridge = document.getElementById('valBridge'); const formBridge = document.getElementById('formBridge');
    const valTotal = document.getElementById('valTotal'); const formTotal = document.getElementById('formTotal');
    const insightText = document.getElementById('trInsightText');

    // Baza danych dla 3 wariantów standardu izolacji
    const simData = {
        old: {
            uWall: "1,20", wWall: "633,6 W",
            uWin: "2,80", wWin: "336,0 W",
            uBridge: "0,15", wBridge: "42,0 W",
            total: "1011,6 W",
            formT: "633,6 + 336,0 + 42,0 W",
            insight: "W starym budownictwie przez taką samą ścianę ucieka ponad <strong>1 kW</strong> energii (pięciokrotnie więcej!). Sama pusta ściana bez izolacji odpowiada tu za potężne 62% strat. Wymaga to wysokotemperaturowych grzejników."
        },
        wt2021: {
            uWall: "0,15", wWall: "79,2 W",
            uWin: "0,90", wWin: "108,0 W",
            uBridge: "0,05", wBridge: "14,0 W",
            total: "201,2 W",
            formT: "79,2 + 108,0 + 14,0 W",
            insight: "Wynik pokazuje, że dla ściany o pow. 16,2 m² projektant musi zabezpieczyć <strong>201,2 W</strong> mocy grzewczej. Aż <strong>60,6%</strong> ciepła ucieka przez okno i jego montaż, mimo że zajmuje ono tylko 18,5% powierzchni."
        },
        passive: {
            uWall: "0,10", wWall: "52,8 W",
            uWin: "0,70", wWin: "84,0 W",
            uBridge: "0,01", wBridge: "2,8 W",
            total: "139,6 W",
            formT: "52,8 + 84,0 + 2,8 W",
            insight: "Dzięki ekstremalnej izolacji i tzw. ciepłemu montażowi okna w warstwie ocieplenia (&Psi; bliskie zeru), straty spadają do minimum (<strong>139,6 W</strong>). Ogrzewanie podłogowe może tu pracować na zasilaniu rzędu zaledwie 26°C."
        }
    };

    // Logika przycisków i aktualizacja interfejsu
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const std = this.getAttribute('data-standard');
            const data = simData[std];

            // Zmiana klasy dla animacji SVG (w CSS zmiana koloru ściany i strzałek ciepła)
            svgBox.className = "rk-tr-svg-box state-" + std;

            // Podmiana zawartości paneli liczbowych
            valWall.textContent = data.wWall; formWall.innerHTML = "13,2 &times; " + data.uWall + " &times; 40K";
            valWin.textContent = data.wWin; formWin.innerHTML = "3,00 &times; " + data.uWin + " &times; 40K";
            valBridge.textContent = data.wBridge; formBridge.innerHTML = "7,00 &times; " + data.uBridge + " &times; 40K";
            
            valTotal.textContent = data.total; formTotal.textContent = data.formT;
            insightText.innerHTML = data.insight;
        });
    });
});
</script>



<style>
:root {
    --rk-vent-dark: #0f172a;
    --rk-vent-brand: #0284c7;
    --rk-vent-brand-light: #e0f2fe;
    --rk-vent-accent: #0ea5e9;
    --rk-vent-red: #ef4444;
    --rk-vent-red-bg: #fef2f2;
    --rk-vent-green: #10b981;
    --rk-vent-green-bg: #ecfdf5;
    --rk-vent-bg: #ffffff;
    --rk-vent-panel: #f8fafc;
    --rk-vent-border: #cbd5e1;
    --rk-vent-text: #334155;
    --rk-vent-muted: #64748b;
}

.rk-vent-container {
    max-width: 950px;
    margin: 40px 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.3);
    overflow: hidden;
}

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

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

.rk-vent-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

.rk-vent-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

.rk-link-vent {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: all 0.3s;
}

.rk-link-vent:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Box ze wzorem */
.rk-eq-box {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
}

.rk-eq {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 22px;
    color: #bae6fd;
    letter-spacing: 1px;
    margin: 0 0 10px 0;
}

.rk-eq-desc {
    font-size: 13px;
    color: #94a3b8;
    margin: 0;
}

.rk-eq-desc strong { color: #e2e8f0; }

/* Interaktywny Panel */
.rk-vent-interactive {
    padding: 40px 50px;
    background: var(--rk-vent-panel);
}

.rk-vent-section-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-vent-dark);
    margin: 0 0 25px 0;
    text-align: center;
}

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

.rk-app-toggle {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 600px;
}

.rk-toggle-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

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

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

.rk-app-toggle[data-mode="rek"] .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-vent-green);
}

/* Dashboard Wyników */
.rk-vent-dashboard {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-vent-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
    transition: all 0.4s ease;
}

.rk-vent-dashboard.mode-grav { border-color: rgba(239, 68, 68, 0.3); }
.rk-vent-dashboard.mode-rek { border-color: rgba(16, 185, 129, 0.3); }

/* Kontener SVG */
.rk-vent-svg-stage {
    background: var(--rk-vent-dark);
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.6);
    position: relative;
    overflow: hidden;
}

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s; width: 100%; height: 100%; }
.rk-vent-dashboard.mode-grav .layer-grav { opacity: 1; position: relative; }
.rk-vent-dashboard.mode-rek .layer-rek { opacity: 1; position: relative; }

/* Animacje SVG */
.anim-air-in { stroke-dasharray: 6 6; animation: flowIn 1s linear infinite; }
.anim-air-out { stroke-dasharray: 6 6; animation: flowOut 0.8s linear infinite; }
.anim-air-rek { stroke-dasharray: 6 6; animation: flowIn 2s linear infinite; }
.anim-heat-exch { animation: pulseCore 2s infinite alternate; }

@keyframes flowIn { from { stroke-dashoffset: 24; } to { stroke-dashoffset: 0; } }
@keyframes flowOut { from { stroke-dashoffset: 0; } to { stroke-dashoffset: 24; } }
@keyframes pulseCore { 0% { fill: #3b82f6; } 100% { fill: #ef4444; } }

/* Siatka Wyników */
.rk-vent-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-vent-tile {
    background: #f1f5f9;
    padding: 18px 20px;
    border-radius: 14px;
    border-left: 4px solid transparent;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
}

.rk-vent-dashboard.mode-grav .rk-vent-tile { border-left-color: var(--rk-vent-red); background: var(--rk-vent-red-bg); }
.rk-vent-dashboard.mode-rek .rk-vent-tile { border-left-color: var(--rk-vent-green); background: var(--rk-vent-green-bg); }

.rk-vent-tile.tile-full {
    grid-column: 1 / -1;
    background: var(--rk-vent-dark);
    border-color: var(--rk-vent-dark);
}

.rk-tile-lbl { font-size: 11px; text-transform: uppercase; font-weight: 800; color: var(--rk-vent-muted); margin-bottom: 4px; }
.rk-vent-tile.tile-full .rk-tile-lbl { color: #94a3b8; }

.rk-tile-val { font-size: 18px; font-weight: 900; color: var(--rk-vent-dark); transition: color 0.3s; }
.rk-vent-tile.tile-full .rk-tile-val { font-size: 26px; color: var(--rk-vent-accent); }

.rk-tile-sub { font-size: 12px; color: #94a3b8; margin-top: 6px; font-family: monospace; }

@media (max-width: 768px) {
    .rk-vent-header, .rk-vent-interactive { padding: 35px 20px; }
    .rk-vent-title { font-size: 24px; }
    .rk-app-toggle { flex-direction: column; background: transparent; box-shadow: none; gap: 10px; }
    .rk-toggle-glider { display: none; }
    .rk-toggle-btn { background: #e2e8f0; color: #64748b; }
    .rk-toggle-btn.active[data-target="grav"] { background: var(--rk-vent-red); color: #fff; }
    .rk-toggle-btn.active[data-target="rek"] { background: var(--rk-vent-green); color: #fff; }
    .rk-vent-dashboard { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-vent-svg-stage { max-width: 200px; margin: 0 auto; height: 160px; }
    .rk-vent-grid { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-wentylacja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak rodzaj wentylacji wpływa na projektowe straty wentylacyjne?",
    "description": "Zestawienie strat ciepła dla wentylacji grawitacyjnej i rekuperacji. Obliczanie OZC na przykładzie domu 400m3 wg normy PN-EN 12831.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-wentylacja",
    "name": "Porównanie strat wentylacyjnych: Grawitacja vs Rekuperacja",
    "description": "Obliczenia inżynierskie różnicy w zapotrzebowaniu na moc grzewczą w zależności od wybranego systemu wymiany powietrza dla budynku o kubaturze 400 m³.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "straty wentylacyjne wzór",
      "rekuperacja a pompa ciepła",
      "obliczenia OZC wentylacja",
      "wentylacja grawitacyjna straty ciepła",
      "norma PN-B-03430"
    ],
    "measurementTechnique": "Aplikacja wzoru fizycznego ΦV = V * 0,34 * ΔT w zestawieniu ze sprawnością temperaturową wymiennika rekuperatora (η = 85%).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wentylacja Grawitacyjna: Krotność n=0,5 h-1 przy -18°C generuje potężną stratę 2584 W.",
        "Rekuperacja: Odzysk ciepła z η=85% i kontrolowany strumień redukuje stratę do zaledwie 491 W, oszczędzając 2 kW mocy źródła ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-wentylacja",
    "name": "Kalkulator Strat Wentylacyjnych OZC",
    "description": "Interaktywny symulator pozwalający porównać obciążenie cieplne budynku z wentylacją naturalną i mechaniczną z odzyskiem ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-vent-container" id="rk-ozc-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="M9.59 4.59A2 2 0 1 1 11 8H2m12.41 11.41A2 2 0 1 1 13 16h9m-1.59-7.41A2 2 0 1 0 19 12h3"></path></svg>
            Dynamika Powietrza
        </div>
        <h2 class="rk-vent-title">Jak rodzaj wentylacji wpływa na <span>projektowe straty wentylacyjne?</span></h2>
        <p class="rk-vent-lead">
            Rodzaj wentylacji decyduje o wielkości strumienia powietrza i stratach wentylacyjnych (Φ<sub>V,i</sub>). System grawitacyjny generuje ucieczkę ciepła na poziomie nawet 40–50% całkowitego bilansu budynku. Zastosowanie <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link-vent">rekuperacji</a> o udokumentowanej sprawności temperaturowej 85% zmniejsza te straty o ponad 80%.
        </p>
        
        <div class="rk-eq-box">
            <div class="rk-eq">
                Φ<sub>V,i</sub> = V<sub>i</sub> &times; 0,34 &times; (&theta;<sub>int,i</sub> &minus; &theta;<sub>e</sub>)
            </div>
            <p class="rk-eq-desc">
                Gdzie <strong>V<sub>i</sub></strong> to projektowy strumień objętości powietrza [m³/h], a <strong>0,34 Wh/(m³·K)</strong> to stała cieplna powietrza.
            </p>
        </div>
    </div>

    <div class="rk-vent-interactive">
        <h3 class="rk-vent-section-title">Studium przypadku: Dom 400 m³ (II Strefa klimatyczna, &Delta;T = 38 K)</h3>

        <div class="rk-vent-switcher">
            <div class="rk-app-toggle" id="ventSwitchContainer" data-mode="grav">
                <div class="rk-toggle-glider" id="ventGlider"></div>
                <button class="rk-toggle-btn active" data-target="grav">
                    <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="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Wariant A: Grawitacja
                </button>
                <button class="rk-toggle-btn" data-target="rek">
                    <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="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>
                    Wariant B: Rekuperacja
                </button>
            </div>
        </div>

        <div class="rk-vent-dashboard mode-grav" id="ventDashboard">
            
            <div class="rk-vent-svg-stage">
                <svg class="rk-svg-layer layer-grav" viewBox="0 0 100 100">
                    <path d="M 10 50 L 50 20 L 90 50 L 90 90 L 10 90 Z" fill="#1e293b" stroke="#334155" stroke-width="2"/>
                    <rect x="65" y="10" width="10" height="25" fill="#334155" />
                    <path class="anim-air-in" d="M 0 60 L 25 60" fill="none" stroke="#38bdf8" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-air-in" d="M 100 70 L 75 70" fill="none" stroke="#38bdf8" stroke-width="3" stroke-linecap="round"/>
                    <path class="anim-air-out" d="M 70 30 L 70 -5" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                </svg>
                <svg class="rk-svg-layer layer-rek" viewBox="0 0 100 100">
                    <path d="M 10 50 L 50 20 L 90 50 L 90 90 L 10 90 Z" fill="#1e293b" stroke="#334155" stroke-width="2"/>
                    <rect class="anim-heat-exch" x="40" y="35" width="20" height="15" rx="2" />
                    <path class="anim-air-rek" d="M 10 40 L 40 40" fill="none" stroke="#38bdf8" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 50 65 L 50 50" fill="none" stroke="#ef4444" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 60 40 L 90 40" fill="none" stroke="#f97316" stroke-width="2"/>
                    <path class="anim-air-rek" d="M 50 35 L 50 10" fill="none" stroke="#64748b" stroke-width="2"/>
                </svg>
            </div>

            <div class="rk-vent-grid">
                <div class="rk-vent-tile">
                    <span class="rk-tile-lbl">Strumień Powietrza (V)</span>
                    <span class="rk-tile-val" id="ventValFlow">200 m³/h</span>
                    <span class="rk-tile-sub" id="ventSubFlow">n = 0,5 h<sup>-1</sup> (Infiltracja)</span>
                </div>
                <div class="rk-vent-tile">
                    <span class="rk-tile-lbl">Temp. Nawiewu po wymianie</span>
                    <span class="rk-tile-val" id="ventValTemp">-18°C</span>
                    <span class="rk-tile-sub" id="ventSubTemp">Brak odzysku ciepła</span>
                </div>
                <div class="rk-vent-tile tile-full">
                    <span class="rk-tile-lbl">Projektowa Strata Wentylacyjna (ΦV)</span>
                    <span class="rk-tile-val" id="ventValTotal">2584 W</span>
                    <span class="rk-tile-sub" id="ventSubTotal">200 × 0,34 × 38K</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-vent-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // Elementy DOM
    const switchContainer = document.getElementById('ventSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-toggle-btn');
    const dashboard = document.getElementById('ventDashboard');
    
    // Pola tekstowe - Użyto unikalnych prefiksów "vent" w ID
    const valFlow = document.getElementById('ventValFlow'); 
    const subFlow = document.getElementById('ventSubFlow');
    const valTemp = document.getElementById('ventValTemp'); 
    const subTemp = document.getElementById('ventSubTemp');
    const valTotal = document.getElementById('ventValTotal'); 
    const subTotal = document.getElementById('ventSubTotal');

    const ventData = {
        grav: {
            flow: "200 m³/h", sFlow: "n = 0,5 h-1 (Infiltracja mrozu)",
            temp: "-18°C", sTemp: "Mroźne powietrze wpada do domu",
            total: "2584 W", sTotal: "200 × 0,34 × 38K"
        },
        rek: {
            flow: "120 m³/h", sFlow: "Kontrolowany wymóg higieniczny",
            temp: "+14,3°C", sTemp: "Powietrze dogrzane w wymienniku (η = 85%)",
            total: "490,96 W", sTotal: "Zysk: 2093 W (Zawiera nieszczelności)"
        }
    };

    // Logika przycisków
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const mode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', mode);
            dashboard.className = "rk-vent-dashboard mode-" + mode;

            // Podmiana danych bez błędów krzyżowych
            const d = ventData[mode];
            valFlow.innerHTML = d.flow; subFlow.innerHTML = d.sFlow;
            valTemp.innerHTML = d.temp; subTemp.innerHTML = d.sTemp;
            valTotal.innerHTML = d.total; subTotal.innerHTML = d.sTotal;
        });
    });
});
</script>



<style>
:root {
    --rk-res-dark: #0f172a;
    --rk-res-brand: #ea580c; /* Ciepły pomarańcz dla fizyki przewodzenia ciepła */
    --rk-res-brand-light: #ffedd5;
    --rk-res-accent: #f97316;
    --rk-res-green: #10b981;
    --rk-res-green-bg: #ecfdf5;
    --rk-res-red: #ef4444;
    --rk-res-red-bg: #fef2f2;
    --rk-res-bg: #ffffff;
    --rk-res-panel: #f8fafc;
    --rk-res-border: #cbd5e1;
    --rk-res-text: #334155;
    --rk-res-muted: #64748b;
}

.rk-res-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-res-bg);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.12);
    border: 1px solid var(--rk-res-brand);
    overflow: hidden;
}

/* Nagłówek i Wstęp */
.rk-res-header {
    background: linear-gradient(135deg, var(--rk-res-dark) 0%, #2e1407 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-res-brand);
}

.rk-res-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 88, 12, 0.25);
    color: #ffedd5;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(234, 88, 12, 0.4);
}

.rk-res-header h2 {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-res-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-res-lead strong {
    color: #ffffff;
    font-weight: 800;
}

.rk-res-lead a {
    color: #ffedd5;
    text-decoration: none;
    border-bottom: 1px dashed #ffedd5;
    transition: color 0.3s;
}

.rk-res-lead a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Interaktywny Panel Wyboru */
.rk-res-interactive {
    padding: 40px 50px;
    background: var(--rk-res-panel);
}

/* Selektor kafelków (Materiały wykończeniowe) */
.rk-res-selector-grid {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
    margin-bottom: 35px;
}

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

.rk-res-select-btn:hover {
    background: #f1f5f9;
    border-color: #94a3b8;
    transform: translateY(-2px);
}

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

.rk-btn-txt {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-res-text);
}

.rk-res-select-btn.active .rk-btn-txt {
    color: var(--rk-res-brand);
}

/* Główny Dashboard Prezentacji */
.rk-res-dashboard {
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-res-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 40px;
    align-items: center;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
}

/* Kontener Wizualizacji SVG */
.rk-res-svg-stage {
    background: var(--rk-res-dark);
    border-radius: 16px;
    padding: 20px;
    height: 220px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
    position: relative;
}

.rk-res-svg {
    width: 100%;
    height: auto;
    display: block;
}

/* Dynamiczne modyfikacje SVG przez klasy narzucane z JS */
.anim-cop-needle { transform-origin: 50px 80px; transition: transform 0.6s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-barrier-layer { transition: height 0.4s ease, fill 0.4s ease; transform-origin: bottom; }

/* Tarcza wydajności COP */
.rk-res-svg-stage[data-material="gres"] .anim-cop-needle { transform: rotate(50deg); }
.rk-res-svg-stage[data-material="pvc"] .anim-cop-needle { transform: rotate(35deg); }
.rk-res-svg-stage[data-material="panele"] .anim-cop-needle { transform: rotate(0deg); }
.rk-res-svg-stage[data-material="deska"] .anim-cop-needle { transform: rotate(-30deg); }
.rk-res-svg-stage[data-material="dywan"] .anim-cop-needle { transform: rotate(-55deg); }

/* Wysokość warstwy oporu cieplnego */
.rk-res-svg-stage[data-material="gres"] .anim-barrier-layer { height: 2px; fill: var(--rk-res-green); }
.rk-res-svg-stage[data-material="pvc"] .anim-barrier-layer { height: 6px; fill: #6ee7b7; }
.rk-res-svg-stage[data-material="panele"] .anim-barrier-layer { height: 14px; fill: #fcd34d; }
.rk-res-svg-stage[data-material="deska"] .anim-barrier-layer { height: 22px; fill: var(--rk-res-accent); }
.rk-res-svg-stage[data-material="dywan"] .anim-barrier-layer { height: 32px; fill: var(--rk-res-red); }

/* Siatka parametrów technicznych */
.rk-res-tiles-panel {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 15px;
}

.rk-res-tile {
    background: #f1f5f9;
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-res-brand);
    transition: all 0.3s;
}

.rk-res-tile.tile-full {
    grid-column: 1 / -1;
    background: var(--rk-res-dark);
    border-left-color: var(--rk-res-accent);
}

.rk-res-tile.norm-alert {
    border-left-color: var(--rk-res-red);
    background: var(--rk-res-red-bg);
}

.rk-tile-lbl {
    display: block;
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-res-muted);
    margin-bottom: 4px;
}

.rk-res-tile.tile-full .rk-tile-lbl { color: #94a3b8; }

.rk-tile-val {
    display: block;
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-res-dark);
}

.rk-res-tile.tile-full .rk-tile-val { color: #ffffff; font-size: 18px; }
.rk-res-tile.norm-alert .rk-tile-val { color: var(--rk-res-red); }

.rk-tile-sub {
    display: block;
    font-size: 12px;
    color: #64748b;
    margin-top: 4px;
    font-weight: 500;
}
.rk-res-tile.tile-full .rk-tile-sub { color: #cbd5e1; }

@media (max-width: 768px) {
    .rk-res-header, .rk-res-interactive { padding: 35px 25px; }
    .rk-res-header h2 { font-size: 24px; }
    .rk-res-selector-grid { grid-template-columns: 1fr; gap: 10px; }
    .rk-res-dashboard { grid-template-columns: 1fr; gap: 25px; padding: 25px; }
    .rk-res-svg-stage { height: 180px; max-width: 240px; margin: 0 auto; width: 100%; }
    .rk-res-tiles-panel { grid-template-columns: 1fr; gap: 12px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#article-okladziny",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/"
    },
    "headline": "Jak opór cieplny materiałów wykończeniowych zmienia parametry instalacji?",
    "description": "Analiza wpływu oporu cieplnego okładziny wierzchniej (R) na gęstość strumienia ogrzewania podłogowego i współczynnik COP pompy 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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#dataset-okladziny",
    "name": "Zestawienie oporów cieplnych i wydajności typowych materiałów podłogowych",
    "description": "Twarde dane inżynierskie porównujące opory termiczne, gęstość strumienia cieplnego q oraz niezbędną temperaturę zasilania dla 5 rodzajów wykończenia podłogi.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "opór cieplny okładziny podłogowej",
      "norma PN-EN 1264 ogrzewanie",
      "temperatura zasilania podłogówki pompy ciepła",
      "deska warstwowa na ogrzewaniu podłogowym",
      "spadek efektywności COP pompy"
    ],
    "measurementTechnique": "Kalkulacja hydrauliczna i termiczna przenikania energii przez warstwy jastrychu i wykończenia wierzchniego dla stałej straty pomieszczenia 50 W/m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Gres/płytki: Grubość 10mm, opór R=0,015 m2K/W, idealne parametry zasilania 32°C.",
        "Deska warstwowa klejona: Grubość 14mm, wysoki opór R=0,120 m2K/W, podnosi zasilanie do 43°C.",
        "Gruby dywan z podkładem: Przekracza normatywny limit 0,150 m2K/W, generując spadek sprawności źródła grzewczego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/#webapp-okladziny",
    "name": "Interaktywny Analizator Opóru Termicznego Podłogi",
    "description": "Narzędzie symulacyjne demonstrujące w czasie rzeczywistym przełożenie fizycznego oporu okładziny wierzchniej na temperaturę zasilania i sprawność pompy ciepła (COP).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and modern web browser with SVG rendering capability",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-res-container" id="rk-floor-res-app">
    
    <div class="rk-res-header">
        <div class="rk-res-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>
            Fizyka Przewodzenia Ciepła
        </div>
        <h2>Jak opór cieplny materiałów wykończeniowych zmienia parametry instalacji?</h2>
        <p class="rk-res-lead">
            Opór cieplny okładziny podłogowej (<strong>R<sub>&lambda;,B</sub></strong>) ogranicza strumień energii, a norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a> kategorycznie zabrania przekraczania wartości <strong>0,15 m²·K/W</strong> dla warstw wierzchnich. Wyższy opór cieplny materiału działa niczym izolator, wymuszając podniesienie temperatury zasilania instalacji o <strong>5–12°C</strong>. To bezpośrednio obniża sprawność <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pomp ciepła</a> (spadek COP o ok. 2,5% na każdy stopień w górę). Każdy rodzaj wykończenia musi być precyzyjnie dobrany już na etapie <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">obliczeń projektowych ogrzewania podłogowego</a>.
        </p>
    </div>

    <div class="rk-res-interactive">
        <h3 class="rk-res-section-title">Aplikacja Inżynierska: Porównanie parametrów wykończenia dla straty 50 W/m²</h3>
        
        <div class="rk-res-selector-grid">
            <button class="rk-res-select-btn active" data-mat="gres">
                <span class="rk-btn-txt">Płytki / Gres</span>
            </button>
            <button class="rk-res-select-btn" data-mat="pvc">
                <span class="rk-btn-txt">PVC / LVT</span>
            </button>
            <button class="rk-res-select-btn" data-mat="panele">
                <span class="rk-btn-txt">Panele</span>
            </button>
            <button class="rk-res-select-btn" data-mat="deska">
                <span class="rk-btn-txt">Deska Dąb</span>
            </button>
            <button class="rk-res-select-btn" data-mat="dywan">
                <span class="rk-btn-txt">Gruby Dywan</span>
            </button>
        </div>

        <div class="rk-res-dashboard">
            
            <div class="rk-res-svg-stage" id="resSvgStage" data-material="gres">
                <svg class="rk-res-svg" viewBox="0 0 100 110">
                    <path d="M 15 45 A 35 35 0 0 1 85 45" fill="none" stroke="#334155" stroke-width="6" stroke-linecap="round"/>
                    <path d="M 15 45 A 35 35 0 0 1 50 10" fill="none" stroke="#ef4444" stroke-width="6" stroke-linecap="round"/>
                    <path d="M 50 10 A 35 35 0 0 1 85 45" fill="none" stroke="#10b981" stroke-width="6" stroke-linecap="round"/>
                    <text x="50" y="28" fill="#94a3b8" font-size="7" font-weight="bold" text-anchor="middle">COP POMPY</text>
                    
                    <g class="anim-cop-needle">
                        <line x1="50" y1="45" x2="50" y2="15" stroke="#ffffff" stroke-width="2.5" stroke-linecap="round"/>
                        <circle cx="50" cy="45" r="4" fill="#cbd5e1"/>
                    </g>
                    
                    <rect x="10" y="90" width="80" height="15" fill="#475569" rx="2" />
                    <circle cx="30" cy="97" r="4" fill="#ef4444"/>
                    <circle cx="50" cy="97" r="4" fill="#ef4444"/>
                    <circle cx="70" cy="97" r="4" fill="#ef4444"/>
                    
                    <rect class="anim-barrier-layer" x="10" y="88" width="80" height="2" rx="1"/>
                    <text x="50" y="78" fill="#ffffff" font-size="6" text-anchor="middle" letter-spacing="0.5">BARIERA TERMICZNA</text>
                </svg>
            </div>

            <div class="rk-res-tiles-panel" id="resTilesPanel">
                <div class="rk-res-tile">
                    <span class="rk-tile-lbl">Grubość Materiału</span>
                    <span class="rk-tile-val" id="resValThickness">10 mm</span>
                </div>
                <div class="rk-res-tile" id="resTileLimit">
                    <span class="rk-tile-lbl">Opór cieplny R<sub>&lambda;,B</sub></span>
                    <span class="rk-tile-val" id="resValR">0,015 m²·K/W</span>
                </div>
                <div class="rk-res-tile">
                    <span class="rk-tile-lbl">Max Gęstość Strumienia (q)</span>
                    <span class="rk-tile-val" id="resValQ">95 W/m² (przy t<sub>zas</sub>=35°C)</span>
                </div>
                <div class="rk-res-tile tile-full">
                    <span class="rk-tile-lbl">Wymagana Temp. Zasilania (dla straty 50 W/m²)</span>
                    <span class="rk-tile-val" id="resValZas">32°C (Idealna sprawność układu)</span>
                    <span class="rk-tile-sub" id="resValSub">Zużycie energii elektrycznej w normie projektowej.</span>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Zgodnie z wytycznymi - brak tagów H2/H3 w strukturze blokady)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-floor-res-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd ochrony autorskiej</div><div style="font-size:13px; color:#cbd5e1;">Zestawienia Dataset oraz aplikacja symulatora okładzin wierzchnich stanowią integralną własność Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy sterujące i dashboard
    const btns = document.querySelectorAll('.rk-res-select-btn');
    const svgStage = document.getElementById('resSvgStage');
    const tileLimit = document.getElementById('resTileLimit');
    
    // Pola tekstowe kafelków
    const resThickness = document.getElementById('resValThickness');
    const resR = document.getElementById('resValR');
    const resQ = document.getElementById('resValQ');
    const resZas = document.getElementById('resValZas');
    const resSub = document.getElementById('resValSub');

    // Baza danych parametrów technicznych (czyste sznury znaków bez backticków)
    const materialDb = {
        gres: {
            mode: "gres", thickness: "10 mm", rVal: "0,015 m²·K/W",
            qVal: "95 W/m² (Dedykowana podłogówce)",
            zas: "32°C (Idealna sprawność układu)",
            sub: "Doskonała przewodność cieplna ceramiki. Pompa ciepła pracuje z najwyższym możliwym COP.",
            isOver: false
        },
        pvc: {
            mode: "pvc", thickness: "2,5 mm", rVal: "0,030 m²·K/W",
            qVal: "82 W/m² (Wysoka wydajność)",
            zas: "34°C (Stabilne parametry operacyjne)",
            sub: "Niski opór własny cienkich okładzin LVT klejonych do jastrychu. Bardzo dobry materiał.",
            isOver: false
        },
        panele: {
            mode: "panele", thickness: "8 mm", rVal: "0,070 m²·K/W",
            qVal: "60 W/m² (Średni opór materiałowy)",
            zas: "38°C (Wymaga korekty krzywej grzewczej)",
            sub: "Konieczność zastosowania dedykowanego, cienkiego podkładu kwarcowego maty perforowanej.",
            isOver: false
        },
        deska: {
            mode: "deska", thickness: "14 mm", rVal: "0,120 m²·K/W",
            qVal: "42 L/m² (Niska zdolność emisyjna)",
            zas: "43°C (Wzrost zużycia prądu o ok. 27.5%)",
            sub: "Drewno działa jak barierowy izolator. Wymusza podniesienie temperatury wody o 11 K w stosunku do gresu.",
            isOver: false
        },
        dywan: {
            mode: "dywan", thickness: "12 mm", rVal: "0,160 m²·K/W",
            qVal: "28 W/m² (Układ skrajnie dławiony)",
            zas: "47°C (Przekroczenie progu ekonomicznego)",
            sub: "PRZEKROCZONA NORMA PN-EN 1264 (>0,15 m²·K/W). Pompa ciepła traci efektywność i drastycznie rosną rachunki.",
            isOver: true
        }
    };

    // 3. Logika obsługi kliknięć kafelków selektora
    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const matKey = this.getAttribute('data-mat');
            const data = materialDb[matKey];

            // Aktualizacja stanu SVG
            svgStage.setAttribute('data-material', data.mode);

            // Podmiana danych liczbowych i opisów
            resThickness.textContent = data.thickness;
            resR.textContent = data.rVal;
            resQ.textContent = data.qVal;
            resZas.textContent = data.zas;
            resSub.textContent = data.sub;

            // Obsługa alertu przekroczenia normy PN-EN 1264
            if (data.isOver) {
                tileLimit.className = "rk-res-tile norm-alert";
                resR.style.color = "var(--rk-res-red)";
            } else {
                tileLimit.className = "rk-res-tile";
                resR.style.color = "var(--rk-res-dark)";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-algo-dark: #0f172a;
    --rk-algo-brand: #8b5cf6; /* Inżynieryjny fiolet/indygo */
    --rk-algo-brand-light: #ede9fe;
    --rk-algo-accent: #f59e0b; /* Bursztyn dla akcentów ciepła */
    --rk-algo-blue: #0ea5e9;
    --rk-algo-bg: #ffffff;
    --rk-algo-panel: #f8fafc;
    --rk-algo-border: #e2e8f0;
    --rk-algo-text: #334155;
    --rk-algo-muted: #64748b;
    --rk-algo-green: #10b981;
}

.rk-algo-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-algo-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;
}

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

.rk-algo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.4);
}

.rk-algo-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-algo-title span { color: #c4b5fd; }

.rk-algo-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0;
}

.rk-algo-lead strong {
    color: #ffffff;
    font-weight: 800;
}

/* Sekcja Interaktywna - Blueprint */
.rk-algo-interactive {
    padding: 40px 50px;
    background: var(--rk-algo-panel);
}

/* Nawigacja Krokowa (Step-by-step) */
.rk-algo-steps-nav {
    display: flex;
    justify-content: space-between;
    margin-bottom: 35px;
    position: relative;
}

.rk-algo-steps-nav::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--rk-algo-border);
    z-index: 1;
    transform: translateY(-50%);
}

.rk-step-btn {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: #ffffff;
    border: 2px solid var(--rk-algo-border);
    color: var(--rk-algo-muted);
    font-weight: 900;
    font-size: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    position: relative;
    z-index: 2;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}

.rk-step-btn:hover {
    border-color: var(--rk-algo-brand);
    color: var(--rk-algo-brand);
    transform: scale(1.1);
}

.rk-step-btn.active {
    background: var(--rk-algo-brand);
    border-color: var(--rk-algo-brand);
    color: #ffffff;
    box-shadow: 0 0 15px rgba(139, 92, 246, 0.4);
    transform: scale(1.15);
}

/* Dashboard Zawartości */
.rk-algo-dashboard {
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 35px;
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-algo-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.03);
}

/* Obszar SVG (Styl Blueprint / Schemat) */
.rk-algo-svg-stage {
    background: #1e293b;
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    border: 2px solid #334155;
    background-image: 
        linear-gradient(rgba(255,255,255,0.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.05) 1px, transparent 1px);
    background-size: 20px 20px;
}

.rk-algo-svg { width: 100%; height: auto; max-width: 220px; }

.rk-svg-layer { opacity: 0; position: absolute; transition: opacity 0.4s ease, transform 0.4s ease; transform: scale(0.95); width: 100%; height: 100%; }
.rk-svg-layer.active { opacity: 1; transform: scale(1); position: relative; }

/* Animacje SVG dla poszczególnych kroków */
/* Krok 1: Geometria */
.anim-measure { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawLine 1.5s forwards ease-out; }
/* Krok 2: U-value */
.anim-u-layer { opacity: 0; animation: fadeInDown 0.5s forwards; }
/* Krok 3: Straty bazowe */
.anim-heat-base { stroke-dasharray: 8 8; animation: heatFlowBase 1.5s linear infinite; }
/* Krok 4: Mostki */
.anim-bridge { animation: pulseBridge 1.5s infinite alternate; }
/* Krok 5: Wentylacja */
.anim-fan-spin { transform-origin: 50px 50px; animation: spinFan 2s linear infinite; }
.anim-air-flow { stroke-dasharray: 5 10; animation: heatFlowBase 1s linear infinite; }
/* Krok 6: Suma */
.anim-sum-glow { animation: pulseSum 2s infinite alternate; }

@keyframes drawLine { to { stroke-dashoffset: 0; } }
@keyframes fadeInDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes heatFlowBase { to { stroke-dashoffset: -16; } }
@keyframes pulseBridge { 0% { fill: #ef4444; filter: drop-shadow(0 0 2px #ef4444); } 100% { fill: #fca5a5; filter: drop-shadow(0 0 10px #ef4444); } }
@keyframes spinFan { to { transform: rotate(360deg); } }
@keyframes pulseSum { 0% { fill: #c4b5fd; filter: drop-shadow(0 0 5px #8b5cf6); } 100% { fill: #ffffff; filter: drop-shadow(0 0 20px #8b5cf6); } }

/* Treść Panelu */
.rk-algo-content {
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-algo-step-badge {
    font-size: 11px;
    font-weight: 800;
    color: var(--rk-algo-brand);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 8px;
}

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

.rk-algo-content p {
    margin: 0 0 20px 0;
    font-size: 15px;
    line-height: 1.7;
    color: #475569;
}

/* Sekcja Wzoru (HTML Math zamiast LaTeX) */
.rk-algo-formula-box {
    background: var(--rk-algo-dark);
    border-radius: 12px;
    padding: 15px 20px;
    margin-top: auto;
    border-left: 4px solid var(--rk-algo-brand);
}

.rk-formula-math {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 20px;
    color: #ddd6fe;
    letter-spacing: 1px;
    margin: 0 0 8px 0;
    text-align: center;
}

.rk-formula-desc {
    font-size: 12px;
    color: #94a3b8;
    text-align: center;
    margin: 0;
}
.rk-formula-desc strong { color: #cbd5e1; }

@media (max-width: 768px) {
    .rk-algo-header, .rk-algo-interactive { padding: 35px 20px; }
    .rk-algo-title { font-size: 24px; }
    .rk-algo-dashboard { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-algo-svg-stage { height: 200px; max-width: 100%; margin-bottom: 10px; }
    .rk-step-btn { width: 36px; height: 36px; font-size: 14px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak wygląda uproszczony algorytm kalkulatora OZC?",
    "description": "Poznaj 6 kroków sekwencyjnego obliczania oporów przegród, strat bazowych, mostków termicznych i wentylacji wg normy PN-EN 12831.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-algorytm",
    "name": "Algorytm obliczeniowy OZC - Zestawienie Wzorów",
    "description": "Zbiór uproszczonych formuł fizycznych używanych do wyznaczania projektowego obciążenia cieplnego budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator OZC algorytm",
      "straty bazowe przez przenikanie wzór",
      "poprawka na mostki termiczne",
      "obliczenie strat wentylacyjnych wzór",
      "współczynnik przenikania ciepła U"
    ],
    "measurementTechnique": "Sekwencyjna metoda obliczeniowa zgodna z normą PN-EN 12831 integrująca straty przenikania i wentylacji (ΦHL = ΦT,corr + ΦV,total).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1-2: Geometria (A, ΔT) i opór cieplny (U).",
        "Krok 3-4: Straty bazowe (ΦT,base) i korekta na mostki cieplne (+15%).",
        "Krok 5-6: Straty wentylacyjne (ΦV,total) uwzględniające rekuperację oraz suma końcowa mocy grzewczej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-algorytm",
    "name": "Interaktywny Algorytm OZC",
    "description": "Narzędzie demonstracyjne przeprowadzające użytkownika przez 6 kluczowych kroków inżynieryjnych obliczeń strat ciepła budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-algo-container" id="rk-algo-app">
    
    <div class="rk-algo-header">
        <div class="rk-algo-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="9" y1="3" x2="9" y2="21"></line></svg>
            Inżynieria w pigułce
        </div>
        <h2 class="rk-algo-title">Jak wygląda <span>uproszczony algorytm</span> kalkulatora OZC?</h2>
        <p class="rk-algo-lead">
            Uproszczony algorytm obliczeniowy OZC opiera się na sekwencyjnym wyznaczaniu oporów przegród, strat bazowych oraz dodawaniu poprawek na mostki termiczne i wentylację zgodnie z rygorystyczną metodologią <strong>PN-EN 12831</strong>. Poniżej przedstawiamy 6 kluczowych kroków prowadzących do wyznaczenia ostatecznej mocy źródła ciepła.
        </p>
    </div>

    <div class="rk-algo-interactive">
        
        <div class="rk-algo-steps-nav" id="algoSteps">
            <div class="rk-step-btn active" data-step="1">1</div>
            <div class="rk-step-btn" data-step="2">2</div>
            <div class="rk-step-btn" data-step="3">3</div>
            <div class="rk-step-btn" data-step="4">4</div>
            <div class="rk-step-btn" data-step="5">5</div>
            <div class="rk-step-btn" data-step="6">6</div>
        </div>

        <div class="rk-algo-dashboard">
            
            <div class="rk-algo-svg-stage">
                
                <svg class="rk-svg-layer active" id="svg-step-1" viewBox="0 0 100 100">
                    <rect x="20" y="30" width="60" height="50" fill="none" stroke="#64748b" stroke-width="2"/>
                    <polygon points="20,30 50,10 80,30" fill="none" stroke="#64748b" stroke-width="2"/>
                    <line class="anim-measure" x1="10" y1="30" x2="10" y2="80" stroke="#38bdf8" stroke-width="2" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
                    <line class="anim-measure" x1="20" y1="90" x2="80" y2="90" stroke="#38bdf8" stroke-width="2" marker-start="url(#arrow)" marker-end="url(#arrow)"/>
                    <text x="50" y="55" fill="#38bdf8" font-size="12" font-weight="bold" text-anchor="middle">ΔT</text>
                    <defs>
                        <marker id="arrow" viewBox="0 0 10 10" refX="5" refY="5" markerWidth="4" markerHeight="4" orient="auto-start-reverse">
                            <path d="M 0 0 L 10 5 L 0 10 z" fill="#38bdf8" />
                        </marker>
                    </defs>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-2" viewBox="0 0 100 100">
                    <rect class="anim-u-layer" x="30" y="10" width="10" height="80" fill="#334155" />
                    <rect class="anim-u-layer" x="40" y="10" width="20" height="80" fill="#475569" style="animation-delay: 0.2s" />
                    <rect class="anim-u-layer" x="60" y="10" width="10" height="80" fill="#64748b" style="animation-delay: 0.4s" />
                    <text x="50" y="55" fill="#f59e0b" font-size="14" font-weight="bold" text-anchor="middle" style="animation-delay: 0.6s">U</text>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-3" viewBox="0 0 100 100">
                    <rect x="40" y="10" width="20" height="80" fill="#334155" />
                    <path class="anim-heat-base" d="M 80 30 L 20 30" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                    <path class="anim-heat-base" d="M 80 50 L 20 50" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round" style="animation-delay: 0.3s"/>
                    <path class="anim-heat-base" d="M 80 70 L 20 70" fill="none" stroke="#ef4444" stroke-width="4" stroke-linecap="round" style="animation-delay: 0.6s"/>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-4" viewBox="0 0 100 100">
                    <rect x="20" y="20" width="60" height="60" fill="none" stroke="#475569" stroke-width="6"/>
                    <rect x="35" y="35" width="30" height="30" fill="none" stroke="#64748b" stroke-width="4"/>
                    <circle class="anim-bridge" cx="35" cy="35" r="5" />
                    <circle class="anim-bridge" cx="65" cy="35" r="5" style="animation-delay: 0.2s" />
                    <circle class="anim-bridge" cx="35" cy="65" r="5" style="animation-delay: 0.4s" />
                    <circle class="anim-bridge" cx="65" cy="65" r="5" style="animation-delay: 0.6s" />
                </svg>

                <svg class="rk-svg-layer" id="svg-step-5" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="30" fill="none" stroke="#475569" stroke-width="4"/>
                    <g class="anim-fan-spin">
                        <path d="M 50 50 L 50 25 A 25 25 0 0 1 75 50 Z" fill="#0ea5e9" opacity="0.8"/>
                        <path d="M 50 50 L 50 75 A 25 25 0 0 1 25 50 Z" fill="#0ea5e9" opacity="0.8"/>
                    </g>
                    <path class="anim-air-flow" d="M 10 50 L 30 50" fill="none" stroke="#38bdf8" stroke-width="3"/>
                    <path class="anim-air-flow" d="M 90 50 L 70 50" fill="none" stroke="#ef4444" stroke-width="3"/>
                </svg>

                <svg class="rk-svg-layer" id="svg-step-6" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="40" fill="none" stroke="#475569" stroke-width="2" stroke-dasharray="4 4"/>
                    <text class="anim-sum-glow" x="50" y="58" font-family="serif" font-size="28" font-weight="bold" text-anchor="middle">&Phi;</text>
                </svg>
            </div>

            <div class="rk-algo-content">
                <span class="rk-algo-step-badge" id="algoStepBadge">KROK 1 Z 6</span>
                <h3 id="algoTitle">Zdefiniowanie geometrii</h3>
                <p id="algoDesc">
                    Oblicz pola powierzchni wszystkich przegród zewnętrznych (A) z podziałem na kierunki świata oraz ustal projektową różnicę temperatur (ΔT) na podstawie strefy klimatycznej.
                </p>
                
                <div class="rk-algo-formula-box">
                    <div class="rk-formula-math" id="algoFormulaMath">&Delta;T = (&theta;<sub>int</sub> &minus; &theta;<sub>e</sub>)</div>
                    <p class="rk-formula-desc" id="algoFormulaDesc"><strong>&Delta;T</strong> &#8211; różnica temperatur zewn. i wewn.</p>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-algo-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // Elementy DOM
    const stepBtns = document.querySelectorAll('.rk-step-btn');
    const badge = document.getElementById('algoStepBadge');
    const title = document.getElementById('algoTitle');
    const desc = document.getElementById('algoDesc');
    const fMath = document.getElementById('algoFormulaMath');
    const fDesc = document.getElementById('algoFormulaDesc');

    // Baza danych algorytmu (Używamy zwykłego HTML dla matematyki)
    const algoData = {
        "1": {
            title: "Zdefiniowanie geometrii",
            desc: "Oblicz pola powierzchni wszystkich przegród zewnętrznych (A) z podziałem na kierunki świata oraz ustal projektową różnicę temperatur na podstawie lokalnej strefy klimatycznej.",
            math: "&Delta;T = (&theta;<sub>int</sub> &minus; &theta;<sub>e</sub>)",
            fdesc: "<strong>&Delta;T</strong> - różnica temperatur"
        },
        "2": {
            title: "Wyznaczenie współczynników U",
            desc: "Dla każdej przegrody oblicz opór cieplny warstw materiałowych R (dzieląc grubość przez przewodność), a następnie wyznacz ostateczny współczynnik przenikania ciepła U.",
            math: "U = 1 / (&Sigma;R + R<sub>si</sub> + R<sub>se</sub>)",
            fdesc: "<strong>U</strong> - współczynnik przenikania ciepła [W/(m&sup2;&middot;K)]"
        },
        "3": {
            title: "Kalkulacja strat bazowych",
            desc: "Pomnóż pole powierzchni danej przegrody przez jej współczynnik U oraz wyznaczoną wcześniej różnicę temperatur. Daje to czystą stratę przenikania bez błędów montażowych.",
            math: "&Phi;<sub>T,base</sub> = A &times; U &times; &Delta;T",
            fdesc: "<strong>&Phi;<sub>T,base</sub></strong> - bazowa strata przez przenikanie"
        },
        "4": {
            title: "Poprawka na mostki termiczne",
            desc: "Skoryguj straty bazowe o dodatek na mostki liniowe (miejsca słabszej izolacji m.in. przy oknach i nadprożach). Standardowo przyjmuje się dodatek +15% dla budownictwa tradycyjnego.",
            math: "&Phi;<sub>T,corr</sub> = &Phi;<sub>T,base</sub> &times; 1,15",
            fdesc: "<strong>1,15</strong> - uproszczony globalny dodatek na mostki"
        },
        "5": {
            title: "Obliczenie strat wentylacyjnych",
            desc: "Wyznacz strumień powietrza V [m³/h] zależnie od systemu. Oblicz stratę uwzględniając ciepło właściwe powietrza oraz sprawność odzysku ciepła (rekuperacji).",
            math: "&Phi;<sub>V,total</sub> = V &times; 0,34 &times; &Delta;T &times; (1 &minus; &eta;)",
            fdesc: "<strong>&eta;</strong> - sprawność odzysku ciepła (rekuperacji)"
        },
        "6": {
            title: "Sumowanie końcowe",
            desc: "Dodaj skorygowane straty przez przenikanie do obliczonych strat wentylacyjnych. Otrzymany wynik to całkowita szczytowa moc projektowa budynku, determinująca dobór pompy ciepła.",
            math: "&Phi;<sub>HL</sub> = &Phi;<sub>T,corr</sub> + &Phi;<sub>V,total</sub>",
            fdesc: "<strong>&Phi;<sub>HL</sub></strong> - Projektowe Obciążenie Cieplne (OZC)"
        }
    };

    // Logika kroków
    stepBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            const step = this.getAttribute('data-step');
            
            // Przyciski
            stepBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // SVG Warstwy
            document.querySelectorAll('.rk-svg-layer').forEach(layer => layer.classList.remove('active'));
            document.getElementById('svg-step-' + step).classList.add('active');

            // Teksty
            const data = algoData[step];
            badge.textContent = "KROK " + step + " Z 6";
            title.textContent = data.title;
            desc.textContent = data.desc;
            fMath.innerHTML = data.math;
            fDesc.innerHTML = data.fdesc;
        });
    });
});
</script>



<style>
:root {
    --rk-sim-dark: #0f172a;
    --rk-sim-brand: #8b5cf6; /* Inżynieryjny fiolet */
    --rk-sim-brand-light: #ede9fe;
    --rk-sim-accent: #f59e0b; /* Bursztyn/Ciepło */
    --rk-sim-blue: #0ea5e9;
    --rk-sim-bg: #ffffff;
    --rk-sim-panel: #f8fafc;
    --rk-sim-border: #e2e8f0;
    --rk-sim-text: #334155;
    --rk-sim-muted: #64748b;
    --rk-sim-green: #10b981;
    --rk-sim-red: #ef4444;
}

.rk-sim-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-sim-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;
}

/* Nagłówek */
.rk-sim-header {
    background: linear-gradient(135deg, var(--rk-sim-dark) 0%, #2e1065 100%);
    padding: 40px 50px 30px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-sim-brand);
    text-align: center;
}

.rk-sim-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.25);
    color: #ddd6fe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.4);
}

.rk-sim-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-sim-title span { color: #c4b5fd; }

.rk-sim-lead {
    font-size: 16px;
    line-height: 1.6;
    color: #cbd5e1;
    margin: 0 auto;
    max-width: 800px;
}

/* Główny układ interfejsu */
.rk-sim-interactive {
    padding: 40px 50px;
    background: var(--rk-sim-panel);
}

/* Postęp w symulatorze */
.rk-sim-progress-bar {
    display: flex;
    justify-content: space-between;
    margin-bottom: 30px;
    position: relative;
    padding: 0 10px;
}

.rk-sim-progress-bar::before {
    content: '';
    position: absolute;
    top: 50%;
    left: 20px;
    right: 20px;
    height: 4px;
    background: var(--rk-sim-border);
    z-index: 1;
    transform: translateY(-50%);
    border-radius: 2px;
}

.rk-sim-progress-fill {
    position: absolute;
    top: 50%;
    left: 20px;
    height: 4px;
    background: var(--rk-sim-brand);
    z-index: 1;
    transform: translateY(-50%);
    border-radius: 2px;
    transition: width 0.4s ease;
    width: 0%;
}

.rk-step-node {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-sim-border);
    color: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    z-index: 2;
    transition: all 0.4s ease;
}

.rk-step-node.completed { background: var(--rk-sim-brand); }
.rk-step-node.active { background: var(--rk-sim-brand); box-shadow: 0 0 0 6px var(--rk-sim-brand-light); }

/* Dashboard Symulatora */
.rk-sim-dashboard {
    display: grid;
    grid-template-columns: 1fr 300px;
    gap: 30px;
}

/* Sekcja formularzy (Lewa) */
.rk-sim-controls {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-sim-border);
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.02);
}

.rk-step-view { display: none; animation: fadeIn 0.4s ease; }
.rk-step-view.active { display: block; }

@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

.rk-step-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-sim-dark);
    margin: 0 0 10px 0;
}

.rk-step-desc {
    font-size: 14px;
    color: var(--rk-sim-muted);
    line-height: 1.6;
    margin: 0 0 25px 0;
}

/* Elementy formularza */
.rk-form-group { margin-bottom: 25px; }

.rk-form-label {
    display: block;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-sim-text);
    margin-bottom: 8px;
    text-transform: uppercase;
}

.rk-range-wrap {
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-range-input {
    flex: 1;
    -webkit-appearance: none;
    height: 8px;
    background: #e2e8f0;
    border-radius: 4px;
    outline: none;
}

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

.rk-val-display {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-sim-brand);
    min-width: 60px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Radio Buttons dla standardów (Wymuszono układ pionowy) */
.rk-radio-group { 
    display: flex; 
    flex-direction: column; 
    gap: 10px; 
}

.rk-radio-btn {
    width: 100%;
    padding: 15px 20px;
    text-align: left;
    background: var(--rk-sim-panel);
    border: 2px solid var(--rk-sim-border);
    border-radius: 10px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-sim-muted);
    transition: all 0.2s;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.rk-radio-btn span {
    font-size: 12px;
    font-weight: 400;
}

.rk-radio-btn.selected {
    background: var(--rk-sim-brand-light);
    border-color: var(--rk-sim-brand);
    color: var(--rk-sim-brand);
}

/* Przyciski Nawigacji Wewnętrznej */
.rk-nav-actions {
    display: flex;
    flex-direction: row; /* Zawsze poziomo */
    justify-content: space-between;
    align-items: center;
    gap: 15px; /* Odstęp między przyciskami */
    margin-top: 30px;
    padding-top: 20px;
    border-top: 1px solid var(--rk-sim-border);
}

.rk-action-btn {
    padding: 14px 24px; /* Grubsze buttony */
    border-radius: 10px;
    font-size: 15px;
    font-weight: 800;
    cursor: pointer;
    transition: all 0.2s;
    border: none;
    flex: 1; /* Równy podział szerokości na mobile */
    text-align: center;
}

.rk-btn-prev { background: #e2e8f0; color: #64748b; flex: 0.5; /* Mniejszy guzik "Wróć" */ }
.rk-btn-prev:hover { background: #cbd5e1; }
.rk-btn-prev:disabled { opacity: 0; pointer-events: none; }

.rk-btn-next { background: var(--rk-sim-brand); color: #ffffff; box-shadow: 0 4px 10px rgba(139, 92, 246, 0.3); }
.rk-btn-next:hover { transform: translateY(-2px); box-shadow: 0 6px 15px rgba(139, 92, 246, 0.4); }

/* Sekcja Wyników (Prawa) */
.rk-sim-results-panel {
    background: var(--rk-sim-dark);
    border-radius: 20px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    position: relative;
    overflow: hidden;
}

.rk-res-header-txt {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #94a3b8;
    margin-bottom: 20px;
    letter-spacing: 1px;
}

/* Wiersze podsumowania */
.rk-calc-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 0;
    border-bottom: 1px dashed rgba(255,255,255,0.1);
    font-size: 14px;
}

.rk-calc-row:last-of-type { border-bottom: none; }

.rk-row-lbl { color: #cbd5e1; }
.rk-row-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }
.rk-val-hl { color: var(--rk-sim-accent); }

/* Końcowy Wynik OZC */
.rk-final-result-box {
    margin-top: auto;
    background: rgba(139, 92, 246, 0.2);
    border: 1px solid rgba(139, 92, 246, 0.4);
    border-radius: 14px;
    padding: 20px;
    text-align: center;
}

.rk-final-lbl { font-size: 11px; font-weight: 800; color: #ddd6fe; text-transform: uppercase; margin-bottom: 5px; display: block; }
.rk-final-val { font-size: 32px; font-weight: 900; color: #ffffff; line-height: 1; margin-bottom: 5px; transition: color 0.3s;}
.rk-final-formula { font-size: 11px; color: #a78bfa; font-family: monospace; }

/* SVG Dynamiczny Wykres */
.rk-live-chart {
    height: 100px;
    margin-bottom: 20px;
    width: 100%;
}
.chart-bar { transition: height 0.4s ease, y 0.4s ease; }

@media (max-width: 768px) {
    .rk-sim-header, .rk-sim-interactive { padding: 30px 20px; }
    .rk-sim-title { font-size: 24px; }
    .rk-sim-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-radio-group { flex-direction: column; }
    .rk-step-view { min-height: auto; }
    .rk-action-btn { font-size: 13px; padding: 12px 16px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-algorytm",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak wygląda uproszczony algorytm kalkulatora OZC?",
    "description": "Poznaj 4 kroki sekwencyjnego obliczania oporów przegród, strat bazowych, mostków termicznych i wentylacji wg normy PN-EN 12831.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-algorytm",
    "name": "Algorytm obliczeniowy OZC - Zestawienie Wzorów",
    "description": "Zbiór uproszczonych formuł fizycznych używanych do wyznaczania projektowego obciążenia cieplnego budynku.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kalkulator OZC algorytm",
      "straty bazowe przez przenikanie wzór",
      "poprawka na mostki termiczne",
      "obliczenie strat wentylacyjnych wzór",
      "współczynnik przenikania ciepła U"
    ],
    "measurementTechnique": "Sekwencyjna metoda obliczeniowa zgodna z normą PN-EN 12831 integrująca straty przenikania i wentylacji (ΦHL = ΦT,corr + ΦV,total).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Krok 1: Geometria ściany (A) i różnica temperatur (ΔT).",
        "Krok 2: Ustalenie oporu cieplnego (U) przegrody.",
        "Krok 3: Obliczenie bazowej straty przenikania z uwzględnieniem mostków termicznych.",
        "Krok 4: Dodanie strat wentylacyjnych (ΦV,total) uwzględniających rekuperację oraz suma końcowa mocy grzewczej."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-algorytm",
    "name": "Kalkulator Edukacyjny OZC",
    "description": "Interaktywny symulator pozwalający na żywo przeliczać straty ciepła przykładowej ściany w zależności od parametrów izolacji i wentylacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sim-container" id="rk-sim-app">
    
    <div class="rk-sim-header">
        <div class="rk-sim-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="9" y1="3" x2="9" y2="21"></line></svg>
            Inżynieria na żywo
        </div>
        <h2 class="rk-sim-title">Zrozum fizykę: <span>Uproszczony Kalkulator OZC</span></h2>
        <p class="rk-sim-lead">
            Algorytm obliczeniowy normy <strong>PN-EN 12831</strong> polega na żmudnym, sekwencyjnym wyznaczaniu oporów przegród, strat bazowych, mostków i wentylacji. Abyś zrozumiał skalę ucieczki ciepła ze swojego domu, stworzyliśmy uproszczony symulator. Sprawdź, jak jedna zmiana izolacji wpływa na wynik końcowy dla przykładowego pomieszczenia.
        </p>
    </div>

    <div class="rk-sim-interactive">
        
        <div class="rk-sim-progress-bar">
            <div class="rk-sim-progress-fill" id="simProgressLine"></div>
            <div class="rk-step-node active" id="node-1">1</div>
            <div class="rk-step-node" id="node-2">2</div>
            <div class="rk-step-node" id="node-3">3</div>
            <div class="rk-step-node" id="node-4">4</div>
        </div>

        <div class="rk-sim-dashboard">
            
            <div class="rk-sim-controls">
                
                <div class="rk-step-view active" id="view-1">
                    <h3 class="rk-step-title">Krok 1: Geometria i Klimat</h3>
                    <p class="rk-step-desc">Ustal pole powierzchni analizowanej ściany zewnętrznej oraz projektową różnicę temperatur na zewnątrz (Zima).</p>
                    
                    <div class="rk-form-group">
                        <label class="rk-form-label">Powierzchnia ściany (A)</label>
                        <div class="rk-range-wrap">
                            <input type="range" id="inpArea" class="rk-range-input" min="10" max="40" value="16" step="1">
                            <div class="rk-val-display"><span id="valAreaOut">16</span> m²</div>
                        </div>
                    </div>
                    
                    <div class="rk-form-group">
                        <label class="rk-form-label">Temperatura Zewnętrzna (θe)</label>
                        <div class="rk-range-wrap">
                            <input type="range" id="inpTemp" class="rk-range-input" min="-24" max="-16" value="-20" step="2">
                            <div class="rk-val-display"><span id="valTempOut">-20</span> °C</div>
                        </div>
                        <div style="font-size:11px; color:#94a3b8; margin-top:5px;">Wewn. stała: +20°C (ΔT = <span id="valDeltaOut">40</span>K)</div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-2">
                    <h3 class="rk-step-title">Krok 2: Izolacja (Współczynnik U)</h3>
                    <p class="rk-step-desc">Określ standard izolacji ściany. Zgodnie z prawem, mniejsze U oznacza lepsze zatrzymywanie ciepła.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn" data-u="1.20">
                            <strong>Stary dom</strong>
                            <span>Brak izolacji</span>
                        </div>
                        <div class="rk-radio-btn selected" data-u="0.15">
                            <strong>WT 2021</strong>
                            <span>Standard prawny</span>
                        </div>
                        <div class="rk-radio-btn" data-u="0.10">
                            <strong>Pasywny</strong>
                            <span>Izolacja premium</span>
                        </div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-3">
                    <h3 class="rk-step-title">Krok 3: Mostki termiczne</h3>
                    <p class="rk-step-desc">Pusta ściana to fikcja. Dodaj procentową poprawkę na okna, nadproża i błędy montażowe.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn selected" data-bridge="1.0">
                            <strong>0%</strong>
                            <span>Warunki laboratoryjne</span>
                        </div>
                        <div class="rk-radio-btn" data-bridge="1.15">
                            <strong>+15%</strong>
                            <span>Standard budowlany</span>
                        </div>
                        <div class="rk-radio-btn" data-bridge="1.30">
                            <strong>+30%</strong>
                            <span>Duże przeszklenia</span>
                        </div>
                    </div>
                </div>

                <div class="rk-step-view" id="view-4">
                    <h3 class="rk-step-title">Krok 4: System Wentylacji</h3>
                    <p class="rk-step-desc">Zimne powietrze z zewnątrz wpadające do pokoju trzeba dogrzać. Wybierz rodzaj wentylacji.</p>
                    
                    <div class="rk-radio-group">
                        <div class="rk-radio-btn selected" data-vent="gravity">
                            <strong>Grawitacyjna (Naturalna)</strong>
                            <span>Zimne powietrze zasysane w 100% z zewnątrz.</span>
                        </div>
                        <div class="rk-radio-btn" data-vent="reku">
                            <strong>Rekuperacja (Odzysk 85%)</strong>
                            <span>Powietrze dogrzane w wymienniku ciepła.</span>
                        </div>
                    </div>
                </div>

                <div class="rk-nav-actions">
                    <button class="rk-action-btn rk-btn-prev" id="btnPrev" disabled>Wróć</button>
                    <button class="rk-action-btn rk-btn-next" id="btnNext">Przejdź dalej</button>
                </div>
            </div>

            <div class="rk-sim-results-panel">
                <div class="rk-res-header-txt">Bieżący Bilans Pomieszczenia</div>
                
                <svg class="rk-live-chart" viewBox="0 0 100 100" preserveAspectRatio="none">
                    <rect x="10" y="80" width="30" height="20" fill="#f59e0b" class="chart-bar" id="barTrans"/>
                    <rect x="60" y="80" width="30" height="20" fill="#0ea5e9" class="chart-bar" id="barVent"/>
                </svg>

                <div class="rk-calc-row">
                    <span class="rk-row-lbl">1. Przenikanie ściany:</span>
                    <span class="rk-row-val"><span id="outWall">96</span> W</span>
                </div>
                <div class="rk-calc-row">
                    <span class="rk-row-lbl">2. Poprawka (Mostki):</span>
                    <span class="rk-row-val" style="color:#ef4444;">+<span id="outBridge">0</span> W</span>
                </div>
                <div class="rk-calc-row">
                    <span class="rk-row-lbl">3. Strata wentylacyjna:</span>
                    <span class="rk-row-val" style="color:#38bdf8;">+<span id="outVent">408</span> W</span>
                </div>

                <div class="rk-final-result-box">
                    <span class="rk-final-lbl">Szacunkowe OZC (Moc grzewcza)</span>
                    <div class="rk-final-val"><span id="outTotal">504</span> W</div>
                    <div class="rk-final-formula">ΦHL = ΦT,corr + ΦV,total</div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-sim-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy Nawigacji
    let currentStep = 1;
    const totalSteps = 4;
    const btnNext = document.getElementById('btnNext');
    const btnPrev = document.getElementById('btnPrev');
    const progLine = document.getElementById('simProgressLine');

    // 3. Stan Kalkulatora
    let state = {
        area: 16,
        tempOut: -20,
        tempIn: 20,
        uValue: 0.15,
        bridgeFactor: 1.0,
        ventType: 'gravity'
    };

    // 4. Elementy Formularza
    const inpArea = document.getElementById('inpArea');
    const valAreaOut = document.getElementById('valAreaOut');
    const inpTemp = document.getElementById('inpTemp');
    const valTempOut = document.getElementById('valTempOut');
    const valDeltaOut = document.getElementById('valDeltaOut');

    const radUValues = document.querySelectorAll('#view-2 .rk-radio-btn');
    const radBridges = document.querySelectorAll('#view-3 .rk-radio-btn');
    const radVents = document.querySelectorAll('#view-4 .rk-radio-btn');

    // 5. Elementy Wyjściowe (Wyniki)
    const outWall = document.getElementById('outWall');
    const outBridge = document.getElementById('outBridge');
    const outVent = document.getElementById('outVent');
    const outTotal = document.getElementById('outTotal');
    const barTrans = document.getElementById('barTrans');
    const barVent = document.getElementById('barVent');

    // --- FUNKCJE OBLICZENIOWE ---
    function calculateOZC() {
        const deltaT = state.tempIn - state.tempOut;
        
        // 1. Przenikanie bazy (A * U * dT)
        const phiBase = state.area * state.uValue * deltaT;
        
        // 2. Przenikanie z mostkami
        const phiCorr = phiBase * state.bridgeFactor;
        const bridgeDiff = phiCorr - phiBase;

        // 3. Wentylacja (Uproszczenie dla pokoju: Kubatura ok 40m3. Strumień V=20m3/h)
        const vol = state.area * 2.5; // Kubatura
        let vAir = vol * 0.5; // Krotność wymiany
        let ventLoss = 0;

        if (state.ventType === 'gravity') {
            ventLoss = vAir * 0.34 * deltaT;
        } else {
            // Rekuperacja 85% sprawności
            ventLoss = vAir * 0.34 * deltaT * 0.15;
        }

        // 4. Suma Całkowita
        const totalLoss = phiCorr + ventLoss;

        // Aktualizacja interfejsu z animacją liczb
        animateValue(outWall, Math.round(phiBase));
        animateValue(outBridge, Math.round(bridgeDiff));
        animateValue(outVent, Math.round(ventLoss));
        animateValue(outTotal, Math.round(totalLoss));

        // Aktualizacja słupków SVG (Wizualizacja proporcji)
        // Zakładamy max wartość ok 2000W dla starych domów, by słupki nie wychodziły poza SVG
        const scale = 100 / 2000; 
        let hTrans = Math.min(Math.round(phiCorr * scale), 100);
        let hVent = Math.min(Math.round(ventLoss * scale), 100);
        
        // Zapewnienie minimalnej widoczności słupka
        hTrans = Math.max(hTrans, 2);
        hVent = Math.max(hVent, 2);

        barTrans.setAttribute('height', hTrans);
        barTrans.setAttribute('y', 100 - hTrans);
        barVent.setAttribute('height', hVent);
        barVent.setAttribute('y', 100 - hVent);
        
        // Kolorowanie finału
        const finalValBox = document.querySelector('.rk-final-val');
        if(totalLoss > 1000) { finalValBox.style.color = '#ef4444'; } 
        else if (totalLoss < 300) { finalValBox.style.color = '#10b981'; }
        else { finalValBox.style.color = '#ffffff'; }
    }

    function animateValue(obj, end) {
        // Prosta podmiana dla płynności na mobile, bez ciężkich setInterval
        obj.textContent = end;
    }

    // --- BINDING EVENTÓW ---

    // Krok 1: Suwaki
    inpArea.addEventListener('input', (e) => {
        state.area = parseInt(e.target.value);
        valAreaOut.textContent = state.area;
        calculateOZC();
    });

    inpTemp.addEventListener('input', (e) => {
        state.tempOut = parseInt(e.target.value);
        valTempOut.textContent = state.tempOut;
        valDeltaOut.textContent = state.tempIn - state.tempOut;
        calculateOZC();
    });

    // Funkcja pomocnicza dla Radio Buttonów
    function setupRadioGroup(nodes, stateKey, attrName) {
        nodes.forEach(btn => {
            btn.addEventListener('click', function() {
                nodes.forEach(b => b.classList.remove('selected'));
                this.classList.add('selected');
                const val = this.getAttribute(attrName);
                // Konwersja na float jeśli to liczba, zostaw string jeśli wentylacja
                state[stateKey] = isNaN(parseFloat(val)) ? val : parseFloat(val);
                calculateOZC();
            });
        });
    }

    // Krok 2, 3, 4: Radia
    setupRadioGroup(radUValues, 'uValue', 'data-u');
    setupRadioGroup(radBridges, 'bridgeFactor', 'data-bridge');
    setupRadioGroup(radVents, 'ventType', 'data-vent');


    // --- NAWIGACJA KROKOWA ---
    function updateNav() {
        // Przyciski 
        btnPrev.disabled = currentStep === 1;
        
        if (currentStep === totalSteps) {
            btnNext.textContent = 'Zakończ';
            if(btnNext.classList.contains('finalized')) return;
            
            // Po zamknięciu domknięcia procesu -> przekierowanie na zakup
            btnNext.onclick = function() { window.location.href = 'https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/'; }
            
            btnNext.classList.add('finalized');
        } else {
            btnNext.textContent = 'Przejdź dalej';
            btnNext.onclick = null; // Czyszczenie
            btnNext.classList.remove('finalized');
        }

        // Pasek postępu
        const progress = ((currentStep - 1) / (totalSteps - 1)) * 100;
        progLine.style.width = progress + '%';

        // Kropeczki
        document.querySelectorAll('.rk-step-node').forEach((node, index) => {
            node.classList.remove('active', 'completed');
            if (index + 1 === currentStep) node.classList.add('active');
            if (index + 1 < currentStep) node.classList.add('completed');
        });

        // Widoki (Panele)
        document.querySelectorAll('.rk-step-view').forEach(view => {
            view.classList.remove('active');
        });
        document.getElementById('view-' + currentStep).classList.add('active');
    }

    btnNext.addEventListener('click', () => {
        if (currentStep < totalSteps) {
            currentStep++;
            updateNav();
        }
    });

    btnPrev.addEventListener('click', () => {
        if (currentStep > 1) {
            currentStep--;
            updateNav();
        }
    });

    // Init
    calculateOZC();
});
</script>



<style>
:root {
    --rk-hyd-dark: #0f172a;
    --rk-hyd-brand: #0284c7; /* Inżynieryjny niebieski hydrauliczny */
    --rk-hyd-brand-light: #e0f2fe;
    --rk-hyd-accent: #f59e0b;
    --rk-hyd-screen: #0b1120;
    --rk-hyd-bg: #ffffff;
    --rk-hyd-panel: #f8fafc;
    --rk-hyd-border: #e2e8f0;
    --rk-hyd-text: #334155;
    --rk-hyd-muted: #64748b;
    --rk-hyd-green: #10b981;
    --rk-hyd-red: #ef4444;
}

.rk-hyd-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-hyd-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;
}

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

.rk-hyd-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.25);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(2, 132, 199, 0.4);
}

.rk-hyd-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 20px 0;
    color: #ffffff;
}

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

.rk-hyd-lead {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 0 0 25px 0;
}

.rk-hyd-lead strong { color: #ffffff; font-weight: 800; }

.rk-link-hyd {
    color: #38bdf8;
    text-decoration: none;
    border-bottom: 1px dashed #38bdf8;
    transition: all 0.3s;
}
.rk-link-hyd:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Box ze wzorem termodynamicznym */
.rk-hyd-eq-box {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid rgba(56, 189, 248, 0.3);
    border-radius: 16px;
    padding: 22px;
    text-align: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.4);
}

.rk-hyd-eq {
    font-family: 'Cambria Math', 'Times New Roman', serif;
    font-size: 24px;
    color: #bae6fd;
    letter-spacing: 1px;
    margin: 0 0 10px 0;
}

.rk-hyd-eq-desc {
    font-size: 13px;
    color: #94a3b8;
    margin: 0;
}
.rk-hyd-eq-desc strong { color: #e2e8f0; }

/* Obszar Interaktywny */
.rk-hyd-interactive {
    padding: 40px 50px;
    background: var(--rk-hyd-panel);
}

/* Główny Dashboard */
.rk-hyd-dashboard {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 30px;
}

/* Lewy Panel Kontrolek (Wszystko dostępne od razu) */
.rk-hyd-controls {
    background: #ffffff;
    border-radius: 20px;
    padding: 30px;
    border: 1px solid var(--rk-hyd-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-hyd-panel-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-hyd-dark);
    margin: 0 0 25px 0;
    border-bottom: 2px solid var(--rk-hyd-panel);
    padding-bottom: 10px;
}

/* Grupy Formularzy */
.rk-hyd-group { margin-bottom: 30px; }
.rk-hyd-label { display: block; font-size: 12px; font-weight: 800; color: var(--rk-hyd-dark); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }

.rk-hyd-range-box { display: flex; align-items: center; gap: 15px; }
.rk-hyd-slider { flex: 1; -webkit-appearance: none; height: 8px; background: #e2e8f0; border-radius: 4px; outline: none; }
.rk-hyd-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 24px; height: 24px; border-radius: 50%; background: var(--rk-hyd-brand); cursor: pointer; border: 3px solid #ffffff; box-shadow: 0 2px 6px rgba(0,0,0,0.15); }

.rk-hyd-val-display { font-size: 18px; font-weight: 900; color: var(--rk-hyd-brand); min-width: 75px; text-align: right; font-variant-numeric: tabular-nums; }

/* Przyciski Opcji (Radio kafelki pionowe) */
.rk-hyd-radio-stack { display: flex; flex-direction: column; gap: 10px; }
.rk-hyd-radio-tile { width: 100%; padding: 14px 18px; text-align: left; background: var(--rk-hyd-panel); border: 2px solid var(--rk-hyd-border); border-radius: 12px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; gap: 4px; }
.rk-hyd-radio-tile strong { font-size: 14px; color: var(--rk-hyd-dark); }
.rk-hyd-radio-tile span { font-size: 12px; color: var(--rk-hyd-muted); font-weight: 400; }
.rk-hyd-radio-tile.selected { background: var(--rk-hyd-brand-light); border-color: var(--rk-hyd-brand); }

/* Prawy Panel Diagnostyczny (Rotametr) */
.rk-hyd-results-panel {
    background: var(--rk-hyd-dark);
    border-radius: 20px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    border: 2px solid #1e293b;
}

.rk-hyd-res-title { font-size: 11px; text-transform: uppercase; font-weight: 800; color: #94a3b8; margin-bottom: 20px; letter-spacing: 1px; text-align: center; }

/* Wizualizacja Rotametru SVG */
.rk-rotameter-stage {
    background: var(--rk-hyd-screen);
    border-radius: 14px;
    padding: 15px;
    height: 180px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.6);
    border: 1px solid #1e293b;
    margin-bottom: 20px;
}

.rk-rotameter-svg { width: 100%; height: 100%; max-width: 120px; }
.anim-float { transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1); }
.anim-water { transition: height 0.4s ease, y 0.4s ease; fill: #0ea5e9; fill-opacity: 0.3; }

/* Parametry kafelkowe */
.rk-hyd-rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.rk-hyd-row { display: flex; justify-content: space-between; align-items: center; font-size: 13.5px; padding-bottom: 8px; border-bottom: 1px dashed rgba(255,255,255,0.08); }
.rk-hyd-row:last-child { border-bottom: none; }
.rk-hyd-lbl { color: #cbd5e1; }
.rk-hyd-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }

/* Końcowa Skrzynka Wynikowa */
.rk-hyd-final-box {
    background: rgba(2, 132, 199, 0.15);
    border: 1px solid rgba(2, 132, 199, 0.3);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}
.rk-final-lbl { font-size: 11px; font-weight: 800; color: #38bdf8; text-transform: uppercase; margin-bottom: 4px; display: block; }
.rk-final-val { font-size: 30px; font-weight: 900; color: #ffffff; font-variant-numeric: tabular-nums; line-height: 1.1; }
.rk-final-unit { font-size: 16px; font-weight: 700; color: #38bdf8; }

@media (max-width: 768px) {
    .rk-hyd-header, .rk-hyd-interactive { padding: 30px 20px; }
    .rk-hyd-title { font-size: 22px; }
    .rk-hyd-dashboard { grid-template-columns: 1fr; gap: 25px; }
    .rk-hyd-controls { padding: 20px; }
    .rk-rotameter-stage { height: 150px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak obliczyć wymagany przepływ wody w pętli podłogowej na podstawie OZC?",
    "description": "Zobacz termodynamiczny wzór na przepływ masowy wody (Vmin) w pętlach ogrzewania podłogowego zgodnie z normą PN-EN 1264 na bazie OZC.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-przeplyw",
    "name": "Algorytm Równoważenia Hydraulicznego pętli pex/pert 16x2",
    "description": "Zestawienie obliczeniowe wymaganych przepływów czynnika grzewczego na rotametrach rozdzielacza w korelacji z obciążeniem OZC pomieszczeń.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "wymagany przepływ wody podłogówka",
      "rotametr wskaznik przepływu nastawy",
      "równoważenie hydrauliczne rozdzielacza",
      "wzór na przepływ pętli podłogowej",
      "norma PN-EN 1264 hydraulika"
    ],
    "measurementTechnique": "Przeliczanie strumienia objętościowego czynnika na litry na minutę (l/min) przy ciepłu właściwym wody 4182 J/(kg K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Formuła inżynierska redukuje stałe fizyczne do stabilnego dzielnika 69,7 pomnożonego przez spadek temperatury delta T.",
        "Sypialnia (Przykład 3): Obciążenie OZC 750W przy strefowej pracy pompy ciepła z delta T = 5K generuje precyzyjną nastawę 2,15 l/min."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-przeplyw",
    "name": "Symulator Nastaw Rotametrów Rozdzielacza",
    "description": "Interaktywny symulator wizualizujący unoszenie pływaka w rurce rotametru w oparciu o wprowadzane wartości obciążeń OZC pokoju.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-hyd-container" id="rk-hyd-app">
    
    <div class="rk-hyd-header">
        <div class="rk-hyd-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.5 12H16c-.55 0-1-.45-1-1V9c0-1.1-.9-2-2-2h-2c-1.1 0-2 .9-2 2v2c0 .55-.45 1-1 1H2.5"></path></svg>
            Balans Hydrauliczny Układu
        </div>
        <h2 class="rk-hyd-title">Jak obliczyć wymagany przepływ wody w pętli podłogowej na podstawie <span>OZC?</span></h2>
        <p class="rk-hyd-lead">
            Wymagany przepływ wody (<strong>V<sub>min</sub></strong>) w pętli podłogowej wylicza się ze stosunku obciążenia cieplnego pokoju do iloczynu ciepła właściwego wody i spadku temperatury &Delta;T, co określa norma <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">PN-EN 1264</a>. Prawidłowa wartość przepływu gwarantuje zrównoważenie hydrauliczne układu rozdzielacza, eliminując strefy niedogrzane.
        </p>
        
        <div class="rk-hyd-eq-box">
            <div class="rk-hyd-eq">
                V<sub>min</sub> = &Phi;<sub>HL,i</sub> / (69,7 &times; &Delta;T)
            </div>
            <p class="rk-hyd-eq-desc">
                Gdzie <strong>&Phi;<sub>HL,i</sub></strong> to moc projektowa z OZC [W], a <strong>&Delta;T</strong> to różnica temperatur zasilania i powrotu [K].
            </p>
        </div>
    </div>

    <div class="rk-hyd-interactive">
        <div class="rk-hyd-dashboard">
            
            <div class="rk-hyd-controls">
                <div class="rk-hyd-panel-title">Parametry wejściowe z OZC</div>
                
                <div class="rk-hyd-group">
                    <label class="rk-hyd-label">Obciążenie cieplne pokoju (&Phi;<sub>HL,i</sub>)</label>
                    <div class="rk-hyd-range-box">
                        <input type="range" id="hydInpPower" class="rk-hyd-slider" min="200" max="1500" value="750" step="50">
                        <div class="rk-hyd-val-display"><span id="hydValPowerOut">750</span> W</div>
                    </div>
                </div>

                <div class="rk-hyd-group">
                    <label class="rk-hyd-label">Projektowa różnica temperatur (&Delta;T)</label>
                    <div class="rk-hyd-radio-stack">
                        <div class="rk-hyd-radio-tile" data-dt="3">
                            <strong>&Delta;T = 3 K (Wysoki przepływ)</strong>
                            <span>Dedykowane do łazienek w celu utrzymania wysokiej temperatury podłogi.</span>
                        </div>
                        <div class="rk-hyd-radio-tile selected" data-dt="5">
                            <strong>&Delta;T = 5 K (Standard Pompy Ciepła)</strong>
                            <span>Układ nisko-parametrowy 35/30°C gwarantujący najwyższy współczynnik COP.</span>
                        </div>
                        <div class="rk-hyd-radio-tile" data-dt="8">
                            <strong>&Delta;T = 8 K (Standard Kotłów)</strong>
                            <span>Rzadszy przepływ masowy czynnika, typowy dla układów z kotłami gazowymi.</span>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-hyd-results-panel">
                <div class="rk-hyd-res-title">Nastawa Rotametru Rozdzielacza</div>
                
                <div class="rk-rotameter-stage">
                    <svg class="rk-rotameter-svg" viewBox="0 0 100 100">
                        <rect x="42" y="10" width="16" height="80" fill="none" stroke="#64748b" stroke-width="2" rx="2"/>
                        <rect class="anim-water" x="43" y="50" width="14" height="40" />
                        
                        <line x1="38" y1="20" x2="44" y2="20" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="22" fill="#64748b" font-size="6" font-weight="bold">5</text>
                        <line x1="38" y1="35" x2="44" y2="35" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="37" fill="#64748b" font-size="6" font-weight="bold">4</text>
                        <line x1="38" y1="50" x2="44" y2="50" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="52" fill="#64748b" font-size="6" font-weight="bold">3</text>
                        <line x1="38" y1="65" x2="44" y2="65" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="67" fill="#64748b" font-size="6" font-weight="bold">2</text>
                        <line x1="38" y1="80" x2="44" y2="80" stroke="#94a3b8" stroke-width="1.5"/><text x="34" y="82" fill="#64748b" font-size="6" font-weight="bold">1</text>
                        
                        <g class="anim-float" id="hydRotameterFloat" transform="translate(0, 40)">
                            <polygon points="44,20 56,20 53,25 47,25" fill="#ef4444"/>
                            <rect x="47" y="25" width="6" height="3" fill="#ef4444"/>
                        </g>
                        <line x1="50" y1="10" x2="50" y2="90" stroke="#fbbf24" stroke-width="1" opacity="0.4"/>
                    </svg>
                </div>

                <div class="rk-hyd-rows">
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Moc obiegu (&Phi;):</span>
                        <span class="rk-hyd-val"><span id="lblHydPower">750</span> W</span>
                    </div>
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Projektowe &Delta;T:</span>
                        <span class="rk-hyd-val"><span id="lblHydDT">5</span> K</span>
                    </div>
                    <div class="rk-hyd-row">
                        <span class="rk-hyd-lbl">Stała inżynierska:</span>
                        <span class="rk-hyd-val">69,7</span>
                    </div>
                </div>

                <div class="rk-hyd-final-box">
                    <span class="rk-final-lbl">Wymagany przepływ (Vmin)</span>
                    <div class="rk-final-val"><span id="lblHydTotal">2.15</span> <span class="rk-final-unit">l/min</span></div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków w kodzie błędu)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-hyd-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji skryptu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja rotametryczna oraz struktury danych Dataset są własnością intelektualną Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Stan wejściowy kalkulatora
    let state = {
        power: 750,
        dT: 5
    };

    // 3. Elementy DOM
    const inpPower = document.getElementById('hydInpPower');
    const valPowerOut = document.getElementById('hydValPowerOut');
    const radTiles = document.querySelectorAll('.rk-hyd-radio-tile');

    // Pola wyjściowe wyników (Unikalne prefiksy hyd)
    const lblHydPower = document.getElementById('lblHydPower');
    const lblHydDT = document.getElementById('lblHydDT');
    const lblHydTotal = document.getElementById('lblHydTotal');
    const hydRotameterFloat = document.getElementById('hydRotameterFloat');

    // 4. Silnik obliczeń termodynamicznych przepływu masowego
    function updateFlowKalk() {
        const vMin = state.power / (69.7 * state.dT);
        
        lblHydPower.textContent = state.power;
        lblHydDT.textContent = state.dT;
        lblHydTotal.textContent = vMin.toFixed(2);

        // Skalowanie pozycji czerwonego pływaka rotometru (zakres 0 - 5 l/min)
        let pixelY = 65 - ((vMin - 1) * 15);
        if (pixelY < 0) pixelY = 0;
        if (pixelY > 65) pixelY = 65;

        hydRotameterFloat.setAttribute('transform', 'translate(0, ' + pixelY + ')');
    }

    // 5. Obsługa zdarzeń
    inpPower.addEventListener('input', function(e) {
        state.power = parseInt(e.target.value);
        valPowerOut.textContent = state.power;
        updateFlowKalk();
    });

    radTiles.forEach(tile => {
        tile.addEventListener('click', function() {
            radTiles.forEach(t => t.classList.remove('selected'));
            this.classList.add('selected');
            state.dT = parseInt(this.getAttribute('data-dt'));
            updateFlowKalk();
        });
    });

    // Uruchomienie obliczeń startowych
    updateFlowKalk();
});
</script>



<style>
:root {
    --rk-sum-dark: #0f172a;
    --rk-sum-panel: #1e293b;
    --rk-sum-primary: #10b981; /* Emerald/Green for success/summary */
    --rk-sum-primary-light: #d1fae5;
    --rk-sum-accent: #3b82f6; /* Blue for water */
    --rk-sum-warning: #f59e0b;
    --rk-sum-bg: #f8fafc;
    --rk-sum-border: #cbd5e1;
    --rk-sum-text: #334155;
    --rk-sum-text-dim: #64748b;
}

.rk-summary-container {
    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(16, 185, 129, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.3);
    overflow: hidden;
}

/* Header z ekspertem */
.rk-summary-header {
    background: linear-gradient(135deg, var(--rk-sum-dark) 0%, #1e293b 100%);
    padding: 40px 50px;
    display: flex;
    align-items: center;
    gap: 30px;
    border-bottom: 4px solid var(--rk-sum-primary);
    position: relative;
    overflow: hidden;
}

.rk-summary-header::after {
    content: ''; position: absolute; right: 0; top: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, rgba(16, 185, 129, 0.15) 0%, transparent 70%);
}

.rk-expert-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 0 20px rgba(16, 185, 129, 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(16, 185, 129, 0.2);
    color: #6ee7b7;
    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(110, 231, 183, 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: #94a3b8;
    font-size: 14px;
    margin: 0;
    font-weight: 500;
}

/* Sekcja z zakładkami i wiedzą */
.rk-summary-body {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-sum-border);
    display: flex;
    flex-direction: column;
    gap: 10px;
    background: #f8fafc;
}

.rk-rule-btn {
    background: #ffffff;
    border: 1px solid var(--rk-sum-border);
    padding: 18px 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-sum-primary);
    transform: translateX(4px);
}

.rk-rule-btn.active {
    background: var(--rk-sum-primary-light);
    border-color: var(--rk-sum-primary);
    box-shadow: inset 4px 0 0 var(--rk-sum-primary);
}

.rk-rule-icon {
    width: 32px; height: 32px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-sum-text-dim);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-sum-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-sum-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-sum-text-dim);
    line-height: 1.5;
}

/* Panel Detali (Prawy) */
.rk-rule-details {
    padding: 40px;
    position: relative;
}

.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-sum-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-sum-text);
}

.rk-sum-link {
    color: var(--rk-sum-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dotted var(--rk-sum-accent);
    transition: 0.3s;
}
.rk-sum-link:hover { border-bottom-style: solid; color: #1d4ed8; }

.rk-detail-svg {
    width: 100%;
    height: 160px;
    background: var(--rk-sum-dark);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
}

/* Narzędzie Szybkiego Szacowania (Kalkulator) */
.rk-quick-calc {
    background: var(--rk-sum-panel);
    padding: 35px 50px;
    border-top: 1px solid #1e293b;
    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 2fr;
    gap: 40px;
    align-items: center;
}

.rk-calc-input-area {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.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-sum-range {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-sum-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
    background: var(--rk-sum-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-sum-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: 15px;
    border-radius: 12px;
    text-align: center;
}

.rk-result-box.highlight { border-color: var(--rk-sum-primary); background: rgba(16, 185, 129, 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-sum-primary); }
.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-summary-author {
    background: #f1f5f9;
    padding: 30px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-sum-border);
}

.rk-author-photo-small {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-sum-primary);
    box-shadow: 0 4px 15px rgba(16, 185, 129, 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-sum-dark);
}

.rk-author-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-sum-text);
    line-height: 1.6;
}

.rk-author-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-author-links a {
    color: var(--rk-sum-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: #1d4ed8;
    text-decoration: underline;
}

/* Animacje SVG */
.anim-check-draw { stroke-dasharray: 100; stroke-dashoffset: 100; animation: drawCheck 1.5s forwards ease-out; }
@keyframes drawCheck { to { stroke-dashoffset: 0; } }

.anim-pulse-ring { animation: pulseRing 2s infinite; transform-origin: center; }
@keyframes pulseRing { 0% { transform: scale(0.8); opacity: 1; } 100% { transform: scale(1.5); opacity: 0; } }

.anim-water-wave { animation: waveWater 3s linear infinite; }
@keyframes waveWater { 0% { transform: translateX(0); } 100% { transform: translateX(-20px); } }

@media (max-width: 768px) {
    .rk-summary-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-expert-avatar { width: 70px; height: 70px; }
    .rk-summary-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-sum-border); padding: 20px; }
    .rk-rule-details { padding: 25px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-quick-calc { padding: 30px 20px; }
    .rk-calc-results { grid-template-columns: 1fr; }
    .rk-summary-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/projektowe-obciazenie-cieplne-ozc/#article-summary-final",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Inżynierskie podsumowanie: Rola OZC w systemie grzewczym",
    "description": "Kompaktowe zestawienie reguł projektowych łączących wyniki OZC z geometrią pętli i zrównoważeniem hydraulicznym rozdzielacza.",
    "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/",
      "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-summary",
    "name": "Wskaźniki OZC dla domów jednorodzinnych (WT 2021)",
    "description": "Szacunkowe dane przeliczeniowe łączące metraż budynku w standardzie WT 2021 z mocą pompy ciepła i ilością obiegów grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie instalacji ozc",
      "szybki estymator ozc",
      "zapotrzebowanie na moc cieplną",
      "dobór pompy ciepła na podstawie ozc",
      "ilość pętli ogrzewania podłogowego"
    ],
    "measurementTechnique": "Szacowanie oparte na średnim wskaźniku 40 W/m2 dla budynków spełniających normę WT 2021 oraz optymalnej wielkości obwodu podłogówki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Średnie zapotrzebowanie (WT 2021): ~40 W/m2",
        "Szacunkowa moc urządzenia: OZC + bufor na straty i CWU",
        "Średnia powierzchnia na 1 obieg grzewczy: ~15 m2 (przy rozstawie 15 cm)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-summary",
    "name": "Szybki Estymator OZC (WT 2021)",
    "description": "Moduł podsumowujący. Przelicza powierzchnię domu wybudowanego w standardzie WT 2021 na orientacyjne obciążenie cieplne, moc pompy i ilość pętli.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Forms",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-summary-container" id="rk-summary-app">
    
    <div class="rk-summary-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: OZC to serce instalacji</h2>
            <p>Zebrałem dla Ciebie 3 najważniejsze reguły projektowe łączące OZC z wykonawstwem podłogówki. Brak precyzyjnych obliczeń na etapie projektu to gwarancja problemów i strat finansowych.</p>
        </div>
    </div>

    <div class="rk-summary-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="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"><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-rule-text">
                    <h3>Koniec ze &#8222;zgadywaniem&#8221;</h3>
                    <p>OZC to jedyny matematyczny dowód</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="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>Ochrona kapitału (Pompa)</h3>
                    <p>Zabezpieczenie przed przewymiarowaniem</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="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><line x1="12" y1="16" x2="12" y2="12"></line><line x1="12" y1="8" x2="12.01" y2="8"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>Parametry układu</h3>
                    <p>Rozstaw rur i równoważenie l/min</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="det-1">
                <h4>OZC to fundament projektu</h4>
                <p>Każde pomieszczenie gubi ciepło w innym tempie. Zgadywanie mocy cieplnej &#8222;na oko&#8221; (np. mnożąc m² przez losową wartość) prowadzi do katastrofy w rachunkach. Rzetelne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-sum-link">obliczenia OZC</a> to twardy matematyczny fundament, na którym opiera się cały późniejszy dobór urządzeń.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <path d="M 50 80 L 50 40 L 100 15 L 150 40 L 150 80 Z" fill="none" stroke="#334155" stroke-width="3" stroke-linejoin="round"/>
                        <path d="M 100 35 L 120 45 L 120 65 Q 100 85 100 85 Q 80 65 80 45 Z" fill="#10b981" opacity="0.2" stroke="#10b981" stroke-width="2"/>
                        <path class="anim-check-draw" d="M 90 55 L 98 63 L 112 47" fill="none" stroke="#ffffff" stroke-width="4" stroke-linecap="round" stroke-linejoin="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-2">
                <h4>Stop przewymiarowaniu pomp</h4>
                <p>Zbyt duża pompa ciepła, dobrana przez instalatora &#8222;dla bezpieczeństwa&#8221; bez OZC, będzie <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-sum-link">taktować</a>. Zjawisko to niszczy sprężarkę i podwaja zużycie prądu. OZC upewnia nas, że pompa zostanie dobrana idealnie do obciążenia budynku w punkcie biwalencyjnym.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="75" y="25" width="50" height="50" fill="#1e293b" stroke="#38bdf8" stroke-width="3" rx="4"/>
                        <circle class="anim-pulse-ring" cx="100" cy="50" r="15" fill="none" stroke="#10b981" stroke-width="2"/>
                        <circle cx="100" cy="50" r="15" fill="none" stroke="#38bdf8" stroke-width="2"/>
                        <path d="M 100 40 L 100 60 M 90 50 L 110 50 M 93 43 L 107 57 M 93 57 L 107 43" stroke="#ffffff" stroke-width="2" stroke-linecap="round"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="det-3">
                <h4>Hydraulika bez tajemnic</h4>
                <p>Mając OZC poszczególnych pokoi, projektant wie, gdzie zagęścić rozstaw rur do 10 cm, a gdzie pozostawić 15 cm. Ponadto, wynik OZC (Waty) pozwala przeliczyć <a href="https://projekt-ogrzewania.pl/regulacja-ogrzewania-podlogowego-przeplywy-w-petlach/" class="rk-sum-link">przepływ w l/min</a> dla każdego rotametru na rozdzielaczu. To gwarancja zrównoważenia układu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="85" y="20" width="30" height="60" fill="none" stroke="#cbd5e1" stroke-width="3" rx="4"/>
                        <path class="anim-water-wave" d="M 85 40 Q 92 35 100 40 T 115 40 T 130 40 L 130 80 L 85 80 Z" fill="#3b82f6" opacity="0.8"/>
                        <polygon points="90,45 110,45 105,55 95,55" fill="#ef4444"/>
                        <text x="140" y="52" fill="#10b981" font-size="12" font-weight="bold">V = 1.8 l/min</text>
                    </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-sum-primary)" 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><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>
                Szybki Estymator OZC (Dla standardu WT 2021)
            </h4>
            <span style="font-size:12px; color:#64748b;">(Wartości orientacyjne)</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Powierzchnia ogrzewana domu:
                    <span id="sumAreaOut">150 m²</span>
                </div>
                <input type="range" class="rk-sum-range" id="sumAreaSlider" min="80" max="300" step="10" value="150">
                <p style="font-size: 11px; color:#64748b; margin:0;">*Zakładane zapotrzebowanie ok. 40 W/m² (nowe budownictwo).</p>
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resOzc">6.0 <span style="font-size:14px;color:#64748b;">kW</span></span>
                    <span class="rk-res-lab">Szacunkowe OZC</span>
                </div>
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resPump">7.0 <span style="font-size:14px;color:var(--rk-sum-primary);">kW</span></span>
                    <span class="rk-res-lab">Sugerowana Pompa Ciepła</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resLoops">10 <span style="font-size:14px;color:#64748b;">szt.</span></span>
                    <span class="rk-res-lab">Szacowana liczba obiegów</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-summary-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 błędami i przewymiarowanymi instalacjami.</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() {
    // 1. Zabezpieczenie Domenowe (DOMAIN LOCK)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-summary-app').innerHTML = `
            <div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border:1px solid #ef4444; border-radius:24px; font-weight:800;">
                BŁĄD LICENCJI: Kod podsumowania jest własnością projekt-ogrzewania.pl
            </div>`;
        return;
    }

    // 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', () => {
            // Reset
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Set Active
            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                // Restart animation
                void target.offsetWidth;
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Szybkiego Estymatora OZC
    const slider = document.getElementById('sumAreaSlider');
    const areaOut = document.getElementById('sumAreaOut');
    const resOzc = document.getElementById('resOzc');
    const resPump = document.getElementById('resPump');
    const resLoops = document.getElementById('resLoops');

    function updateEstimator() {
        const area = parseInt(slider.value);
        areaOut.textContent = area + ' m²';

        // Obliczenia:
        // Zakładamy WT2021 (40 W/m2)
        const ozc_W = area * 40;
        const ozc_kW = ozc_W / 1000;
        
        // Pompa Ciepła: OZC + lekki naddatek na straty (np. 1kW)
        const pump_kW = Math.ceil(ozc_kW + 1);

        // Średnio 1 obieg (pętla) na 15 m2
        const loops = Math.ceil(area / 15);

        resOzc.innerHTML = ozc_kW.toFixed(1) + ' <span style="font-size:14px;color:#64748b;">kW</span>';
        resPump.innerHTML = pump_kW.toFixed(1) + ' <span style="font-size:14px;color:var(--rk-sum-primary);">kW</span>';
        resLoops.innerHTML = loops + ' <span style="font-size:14px;color:#64748b;">szt.</span>';
    }

    if(slider) {
        slider.addEventListener('input', updateEstimator);
        updateEstimator(); // Init
    }
});
</script>



<style>
:root {
    --rk-base-dark: #0f172a;
    --rk-base-panel: #1e293b;
    --rk-base-card: #ffffff;
    --rk-brand-primary: #f59e0b; /* Złoty bursztyn jako główny akcent (ciepło) */
    --rk-brand-light: #fef3c7;
    --rk-brand-hover: #d97706;
    --rk-state-green: #10b981;
    --rk-state-red: #ef4444;
    --rk-text-main: #334155;
    --rk-text-muted: #64748b;
    --rk-border-color: #e2e8f0;
}

.rk-geo-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-base-card);
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.25);
    overflow: hidden;
}

/* Sekcja Nagłówka */
.rk-geo-header {
    background: var(--rk-base-dark);
    padding: 40px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-brand-primary);
    position: relative;
}

.rk-geo-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    color: var(--rk-brand-primary);
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(245, 158, 11, 0.4);
}

.rk-geo-header h2 {
    font-size: 26px;
    font-weight: 900;
    line-height: 1.4;
    margin: 0 0 15px 0;
    color: #ffffff;
}

.rk-geo-header h2 span { color: var(--rk-brand-primary); }

.rk-geo-lead {
    font-size: 15px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-geo-lead strong { color: #ffffff; font-weight: 700; }
.rk-link-geo { color: var(--rk-brand-primary); text-decoration: none; border-bottom: 1px dashed var(--rk-brand-primary); transition: all 0.3s; }
.rk-link-geo:hover { color: #ffffff; border-bottom-color: #ffffff; }

/* Pulpit Interaktywny */
.rk-geo-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-geo-dashboard {
    display: grid;
    grid-template-columns: 1fr 340px;
    gap: 30px;
}

/* Panel Kontrolek (Lewy) */
.rk-geo-controls {
    background: #ffffff;
    border-radius: 16px;
    padding: 30px;
    border: 1px solid var(--rk-border-color);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.03);
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-geo-panel-title {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-base-dark);
    margin: 0 0 25px 0;
    border-bottom: 2px solid #f1f5f9;
    padding-bottom: 12px;
}

.rk-geo-group { margin-bottom: 30px; }
.rk-geo-label { display: block; font-size: 12px; font-weight: 800; color: var(--rk-text-muted); margin-bottom: 12px; text-transform: uppercase; letter-spacing: 0.5px; }

.rk-geo-range-box { display: flex; align-items: center; gap: 15px; }
.rk-geo-slider { flex: 1; -webkit-appearance: none; height: 6px; background: #e2e8f0; border-radius: 3px; outline: none; }
.rk-geo-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--rk-brand-primary); cursor: pointer; border: 3px solid #ffffff; box-shadow: 0 2px 4px rgba(0,0,0,0.2); transition: transform 0.1s; }
.rk-geo-slider::-webkit-slider-thumb:active { transform: scale(1.2); }

.rk-geo-val-display { font-size: 20px; font-weight: 900; color: var(--rk-base-dark); min-width: 85px; text-align: right; font-variant-numeric: tabular-nums; }
.rk-geo-val-display span { color: var(--rk-brand-primary); }

/* Kafelki wyboru rozstawu */
.rk-geo-tile-stack { display: flex; flex-direction: column; gap: 12px; }
.rk-geo-tile-option { width: 100%; padding: 14px 18px; text-align: left; background: #ffffff; border: 2px solid var(--rk-border-color); border-radius: 10px; cursor: pointer; transition: all 0.2s; display: flex; flex-direction: column; gap: 4px; position: relative; overflow: hidden; }
.rk-geo-tile-option strong { font-size: 15px; color: var(--rk-base-dark); }
.rk-geo-tile-option span { font-size: 12px; color: var(--rk-text-muted); font-weight: 500; }

.rk-geo-tile-option::before { content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: transparent; transition: background 0.2s; }
.rk-geo-tile-option.selected { background: var(--rk-brand-light); border-color: var(--rk-brand-primary); }
.rk-geo-tile-option.selected::before { background: var(--rk-brand-primary); }
.rk-geo-tile-option.selected strong { color: var(--rk-brand-hover); }

/* Wyniki i Wizualizacja (Prawa) */
.rk-geo-results-panel {
    background: var(--rk-base-panel);
    border-radius: 16px;
    padding: 25px;
    display: flex;
    flex-direction: column;
    border: 1px solid #334155;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
}

.rk-geo-res-title { font-size: 11px; text-transform: uppercase; font-weight: 800; color: #94a3b8; margin-bottom: 15px; letter-spacing: 1px; text-align: center; }

/* Nowy Dwuczęściowy Schemat SVG (Przekrój + Wskaźnik Oporu) */
.rk-geo-svg-stage {
    background: var(--rk-base-dark);
    border-radius: 12px;
    padding: 10px;
    height: 160px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 15px rgba(0,0,0,0.5);
    margin-bottom: 20px;
    position: relative;
    border: 1px solid #334155;
}

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

/* Klasy kontrolujące widoczność warstw termowizji */
.therm-layer { opacity: 0; transition: opacity 0.5s ease; }
.rk-geo-svg-stage[data-spacing="20"] .therm-20 { opacity: 1; }
.rk-geo-svg-stage[data-spacing="15"] .therm-15 { opacity: 1; }
.rk-geo-svg-stage[data-spacing="10"] .therm-10 { opacity: 1; }

/* Animacje statycznego wskaźnika oporu pompy */
.pump-indicator { transition: stroke-dashoffset 0.6s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.6s; stroke-linecap: round; }
.pump-status-icon { transition: fill 0.6s; }

/* Stany pompy obiegowej */
.rk-geo-svg-stage[data-pump="normal"] .pump-indicator { stroke: var(--rk-state-green); stroke-dashoffset: 130; }
.rk-geo-svg-stage[data-pump="normal"] .pump-status-icon { fill: var(--rk-state-green); }

.rk-geo-svg-stage[data-pump="warning"] .pump-indicator { stroke: var(--rk-brand-primary); stroke-dashoffset: 60; }
.rk-geo-svg-stage[data-pump="warning"] .pump-status-icon { fill: var(--rk-brand-primary); }

.rk-geo-svg-stage[data-pump="critical"] .pump-indicator { stroke: var(--rk-state-red); stroke-dashoffset: 10; animation: pulseCritical 0.5s infinite alternate; }
.rk-geo-svg-stage[data-pump="critical"] .pump-status-icon { fill: var(--rk-state-red); animation: pulseCritical 0.5s infinite alternate; }

@keyframes pulseCritical {
    from { opacity: 0.6; filter: drop-shadow(0 0 2px var(--rk-state-red)); }
    to { opacity: 1; filter: drop-shadow(0 0 8px var(--rk-state-red)); }
}

/* Parametry liczbowe */
.rk-geo-rows { display: flex; flex-direction: column; gap: 10px; margin-bottom: 25px; }
.rk-geo-row { display: flex; justify-content: space-between; align-items: center; font-size: 13px; padding-bottom: 8px; border-bottom: 1px dashed rgba(255,255,255,0.05); }
.rk-geo-row:last-child { border-bottom: none; }
.rk-geo-lbl { color: #cbd5e1; }
.rk-geo-val { color: #ffffff; font-weight: 700; font-variant-numeric: tabular-nums; }

.rk-geo-status-box {
    background: rgba(16, 185, 129, 0.1);
    border: 1px solid rgba(16, 185, 129, 0.2);
    border-radius: 10px;
    padding: 15px;
    text-align: center;
    transition: all 0.3s;
    margin-top: auto;
}
.rk-status-lbl { font-size: 10px; font-weight: 800; color: var(--rk-state-green); text-transform: uppercase; margin-bottom: 6px; display: block; letter-spacing: 0.5px; }
.rk-status-val { font-size: 13px; font-weight: 600; color: #ffffff; line-height: 1.4; }

/* Sekcja Mocnego CTA */
.rk-geo-cta-block {
    background: var(--rk-base-panel);
    padding: 30px 50px;
    border-top: 2px solid var(--rk-brand-primary);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
}

.rk-geo-cta-text h4 { font-size: 17px; font-weight: 800; color: #ffffff; margin: 0 0 6px 0; }
.rk-geo-cta-text p { font-size: 13px; color: #94a3b8; margin: 0; line-height: 1.5; }
.rk-geo-cta-btn {
    background: var(--rk-brand-primary);
    color: #ffffff;
    padding: 15px 30px;
    border-radius: 8px;
    font-size: 14px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 4px 15px rgba(245, 158, 11, 0.3);
    transition: all 0.2s;
    white-space: nowrap;
    border: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.rk-geo-cta-btn:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(245, 158, 11, 0.4); background: var(--rk-brand-hover); }

@media (max-width: 768px) {
    .rk-geo-header, .rk-geo-interactive, .rk-geo-cta-block { padding: 30px 20px; }
    .rk-geo-header h2 { font-size: 22px; }
    .rk-geo-dashboard { grid-template-columns: 1fr; gap: 20px; }
    .rk-geo-controls { padding: 20px; }
    .rk-geo-svg-stage { height: 140px; }
    .rk-geo-cta-block { flex-direction: column; text-align: center; gap: 15px; }
    .rk-geo-cta-btn { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-geometria",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Jak OZC wpływa na projekt ogrzewania podłogowego?",
    "description": "Zobacz, jak wyniki projektowego obciążenia cieplnego (OZC) determinują geometrię pętli, rozstaw rur grzewczych oraz zrównoważenie hydrauliczne rozdzielacza.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-geometria",
    "name": "Parametry geometryczno-hydrauliczne pętli podłogówki na bazie OZC",
    "description": "Zależność rozstawu rur grzewczych, oporów ciśnienia oraz długości obiegów grzewczych w funkcji gęstości zapotrzebowania na moc szczytową pomieszczeń.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowanie ogrzewania podłogowego rozstaw",
      "maksymalna długość pętli podłogówki 16mm",
      "strefy brzegowe pod dużymi przeszkleniami",
      "zbalansowanie hydrauliczne rozdzielacza",
      "obciążenie cieplne a opory ciśnienia"
    ],
    "measurementTechnique": "Symulacja gęstości układania rur pex oraz wyznaczanie strat ciśnienia w pętli grzewczej zgodnie z wytycznymi normy PN-EN 1264.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zależność geometryczna: Wyższe obciążenie szczytowe wymusza gęstszy rozstaw rur (co 10 cm) w celu uniknięcia przewymiarowania temperatury zasilania.",
        "Ograniczenie hydrauliczne: Maksymalna długość obwodu dla średnicy 16mm wynosi 100-120m, chroniąc układ przed oporami paraliżującymi pompy obiegowe."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-geometria",
    "name": "Symulator Geometrii i Oporów Hydraulicznych Pętli",
    "description": "Interaktywny analizator pozwalający inwestorom sprawdzić, jak zapotrzebowanie na moc i rozstaw rur wpływają na długość obwodu i ciśnienie instalacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires modern browser with SVG and JavaScript enabled",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-geo-container" id="rk-geo-app">
    
    <div class="rk-geo-header">
        <div class="rk-geo-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="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
            Wpływ OZC na wykonawstwo
        </div>
        <h2>Jak to wpływa na projekt ogrzewania podłogowego?</h2>
        <p class="rk-geo-lead">
            Projektowe Obciążenie Cieplne bezpośrednio determinuje geometrię i parametry hydrauliczne instalacji płaszczyznowej. Na podstawie uzyskanych wyników szczytowych dla każdego pokoju, projektant dobiera optymalny rozstaw rur grzewczych, zapobiegając nadmiernym oporom ciśnienia. 
            <br><br>
            OZC pozwala także na dokładne zlokalizowanie stref brzegowych pod dużymi przeszkleniami oraz precyzyjny dobór pomp ciepła. Bez tych danych <a href="https://projekt-ogrzewania.pl/regulacja-ogrzewania-podlogowego-przeplywy-w-petlach/" class="rk-link-geo">zbalansowanie hydrauliczne rozdzielacza</a> jest niewykonalne, co skazuje inwestora na losowe, nieefektywne działanie systemu.
        </p>
    </div>

    <div class="rk-geo-interactive">
        <div class="rk-geo-dashboard">
            
            <div class="rk-geo-controls">
                <div class="rk-geo-panel-title">Analizator Pętli Grzewczej (Pokój 20 m²)</div>
                
                <div class="rk-geo-group">
                    <label class="rk-geo-label">Obciążenie cieplne pokoju (OZC)</label>
                    <div class="rk-geo-range-box">
                        <input type="range" id="geoInpPower" class="rk-geo-slider" min="300" max="1400" value="800" step="50">
                        <div class="rk-geo-val-display"><span id="geoValPowerOut">800</span> W</div>
                    </div>
                </div>

                <div class="rk-geo-group" style="margin-bottom:0;">
                    <label class="rk-geo-label">Planowany rozstaw rur grzewczych</label>
                    <div class="rk-geo-tile-stack">
                        <div class="rk-geo-tile-option" data-spacing="10">
                            <strong>co 10 cm</strong>
                            <span>Gęsty (Łazienki / Strefy brzegowe)</span>
                        </div>
                        <div class="rk-geo-tile-option selected" data-spacing="15">
                            <strong>co 15 cm</strong>
                            <span>Standard budowlany (WT 2021)</span>
                        </div>
                        <div class="rk-geo-tile-option" data-spacing="20">
                            <strong>co 20 cm</strong>
                            <span>Rzadki / Ekonomiczny (WT 2014)</span>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-geo-results-panel">
                <div class="rk-geo-res-title">Opory i Zagęszczenie Rur (Pętla 16mm)</div>
                
                <div class="rk-geo-svg-stage" id="geoSvgStage" data-spacing="15" data-pump="normal">
                    <svg class="rk-geo-svg" viewBox="0 0 250 110">
                        <defs>
                            <filter id="heatGlow" x="-20%" y="-20%" width="140%" height="140%">
                                <feGaussianBlur stdDeviation="3" result="blur" />
                                <feComposite in="SourceGraphic" in2="blur" operator="over" />
                            </filter>
                        </defs>

                        <text x="75" y="15" fill="#64748b" font-size="7" font-weight="bold" text-anchor="middle" letter-spacing="0.5">ROZKŁAD TEMPERATUR (TERMOWIZJA)</text>
                        <rect x="10" y="25" width="130" height="75" fill="#1e3a8a" rx="4" stroke="#334155" stroke-width="2"/>
                        
                        <g class="therm-layer therm-20">
                            <path d="M 15 35 L 135 35 M 15 55 L 135 55 M 15 75 L 135 75 M 15 90 L 135 90" stroke="#f59e0b" stroke-width="10" filter="url(#heatGlow)"/>
                        </g>
                        <g class="therm-layer therm-15">
                            <path d="M 15 32 L 135 32 M 15 45 L 135 45 M 15 58 L 135 58 M 15 71 L 135 71 M 15 84 L 135 84 M 15 95 L 135 95" stroke="#ef4444" stroke-width="11" filter="url(#heatGlow)"/>
                        </g>
                        <g class="therm-layer therm-10">
                            <path d="M 15 30 L 135 30 M 15 38 L 135 38 M 15 46 L 135 46 M 15 54 L 135 54 M 15 62 L 135 62 M 15 70 L 135 70 M 15 78 L 135 78 M 15 86 L 135 86 M 15 94 L 135 94" stroke="#ef4444" stroke-width="12" filter="url(#heatGlow)"/>
                        </g>

                        <text x="200" y="15" fill="#64748b" font-size="7" font-weight="bold" text-anchor="middle" letter-spacing="0.5">OPÓR POMPY OBIEGOWEJ</text>
                        
                        <path d="M 170 65 A 30 30 0 0 1 230 65" fill="none" stroke="#1e293b" stroke-width="8" stroke-linecap="round"/>
                        <path class="pump-indicator" d="M 170 65 A 30 30 0 0 1 230 65" fill="none" stroke-width="8" stroke-dasharray="94"/>
                        
                        <circle cx="200" cy="60" r="8" class="pump-status-icon"/>
                        <path d="M 197 57 L 204 60 L 197 63 Z" fill="#0b1120"/>

                        <text x="200" y="90" fill="#ffffff" font-size="7" font-weight="bold" text-anchor="middle" id="geoPumpText">STABILNIE</text>
                    </svg>
                </div>

                <div class="rk-geo-rows">
                    <div class="rk-geo-row">
                        <span class="rk-geo-lbl">Szacowana długość rury:</span>
                        <span class="rk-geo-val"><span id="geoOutLength">148</span> m</span>
                    </div>
                    <div class="rk-geo-row">
                        <span class="rk-geo-lbl">Rozkład temperatury:</span>
                        <span class="rk-geo-val" id="geoOutEdge">Równomierny</span>
                    </div>
                </div>

                <div class="rk-geo-status-box" id="geoStatusBox">
                    <span class="rk-status-lbl" id="geoStatusLbl">Status układu</span>
                    <div class="rk-status-val" id="geoStatusVal">Pętla zbyt długa! Wykonawca musi podzielić obieg.</div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-geo-cta-block">
        <div class="rk-geo-cta-text">
            <h4>Nie ryzykuj układania podłogówki „na intuicję” instalatora</h4>
            <p>Zamów profesjonalny, kompletny projekt hydrauliczny oparty o rzetelne obliczenia OZC.</p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-geo-cta-btn">Zamów profesjonalny projekt</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-geo-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd integralności danych</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja symulacji matrycy hydraulicznej stanowi zastrzeżoną część portalu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Stan kalkulatora
    let geoState = {
        power: 800,
        spacing: 15
    };

    // 3. Elementy DOM
    const inpPower = document.getElementById('geoInpPower');
    const valPowerOut = document.getElementById('geoValPowerOut');
    const tileOptions = document.querySelectorAll('.rk-geo-tile-option');
    
    // SVG Elements
    const svgStage = document.getElementById('geoSvgStage');
    const pumpText = document.getElementById('geoPumpText');

    // Elementy wyjściowe
    const outLength = document.getElementById('geoOutLength');
    const outEdge = document.getElementById('geoOutEdge');
    const statusBox = document.getElementById('geoStatusBox');
    const statusLbl = document.getElementById('geoStatusLbl');
    const statusVal = document.getElementById('geoStatusVal');

    // 4. Silnik obliczeń inżynierskich dla pokoju 20m2
    function updateHydraulics() {
        // Obliczenie zapotrzebowania na rurę: Powierzchnia(20) / rozstaw + podejścia(15)
        let calculatedLength = Math.round((20 / (geoState.spacing / 100)) + 15);
        outLength.textContent = calculatedLength;

        // Aktualizacja widoczności warstw termowizji w SVG (data-spacing)
        svgStage.setAttribute('data-spacing', geoState.spacing.toString());

        // Analiza "Zebry termicznej"
        if (geoState.spacing === 20) {
            outEdge.textContent = "Ryzyko niedogrzanych stref";
            outEdge.style.color = "var(--rk-brand-primary)";
        } else if (geoState.spacing === 15) {
            outEdge.textContent = "Normatywny (Dobra dystrybucja)";
            outEdge.style.color = "var(--rk-state-green)";
        } else {
            outEdge.textContent = "Zagęszczony (Idealny rozkład)";
            outEdge.style.color = "var(--rk-state-green)";
        }

        // Klasyfikacja hydrauliczna pompy na podstawie długości (limit 120m)
        if (calculatedLength > 120) {
            svgStage.setAttribute('data-pump', 'critical');
            pumpText.textContent = "KRYTYCZNE (>35 kPa)";
            pumpText.setAttribute("fill", "#ef4444");

            statusBox.style.backgroundColor = "rgba(239, 68, 68, 0.1)";
            statusBox.style.borderColor = "rgba(239, 68, 68, 0.2)";
            statusLbl.style.color = "var(--rk-state-red)";
            statusVal.textContent = "Pętla zbyt długa! Wysokie opory zdławią pompę. Wykonawca musi podzielić obwód.";
        } else if (calculatedLength >= 100 && calculatedLength <= 120) {
            svgStage.setAttribute('data-pump', 'warning');
            pumpText.textContent = "PODWYŻSZONE OPORY";
            pumpText.setAttribute("fill", "#f59e0b");

            statusBox.style.backgroundColor = "rgba(245, 158, 11, 0.1)";
            statusBox.style.borderColor = "rgba(245, 158, 11, 0.2)";
            statusLbl.style.color = "var(--rk-brand-primary)";
            statusVal.textContent = "Granica normy (ok. 100m). Wymaga precyzyjnego równoważenia na rozdzielaczu.";
        } else {
            svgStage.setAttribute('data-pump', 'normal');
            pumpText.textContent = "OPTYMALNE (<15 kPa)";
            pumpText.setAttribute("fill", "#10b981");

            statusBox.style.backgroundColor = "rgba(16, 185, 129, 0.1)";
            statusBox.style.borderColor = "rgba(16, 185, 129, 0.2)";
            statusLbl.style.color = "var(--rk-state-green)";
            statusVal.textContent = "Bezpieczne parametry pętli. Pompa pracuje na maksymalnym współczynniku wydajności.";
        }
    }

    // 5. Zdarzenia wejściowe
    inpPower.addEventListener('input', function(e) {
        geoState.power = parseInt(e.target.value);
        valPowerOut.innerHTML = `<span>${geoState.power}</span> W`;
        updateHydraulics();
    });

    tileOptions.forEach(tile => {
        tile.addEventListener('click', function() {
            tileOptions.forEach(t => t.classList.remove('selected'));
            this.classList.add('selected');
            geoState.spacing = parseInt(this.getAttribute('data-spacing'));
            updateHydraulics();
        });
    });

    // Inicjalizacja formatowania tekstu suwaka
    valPowerOut.innerHTML = `<span>${geoState.power}</span> W`;

    // Uruchomienie kalkulatora
    updateHydraulics();
});
</script>



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-brand: #2563eb; /* Inżynieryjny niebieski */
    --rk-cs-brand-light: #eff6ff;
    --rk-cs-accent: #10b981; /* Zielony dla oszczędności / OZC */
    --rk-cs-alert: #ef4444; /* Czerwony dla błędów instalatora */
    --rk-cs-bg: #ffffff;
    --rk-cs-panel: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #475569;
    --rk-cs-muted: #94a3b8;
}

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

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

.rk-cs-header::after {
    content: '';
    position: absolute;
    top: -50px;
    right: -50px;
    width: 250px;
    height: 250px;
    background: radial-gradient(circle, rgba(37, 99, 235, 0.4) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #bfdbfe;
    padding: 6px 16px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    position: relative;
    z-index: 2;
}

.rk-cs-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.35;
    margin: 0 0 25px 0;
    color: #ffffff;
    position: relative;
    z-index: 2;
}

.rk-cs-title span { color: #60a5fa; }

/* Grid Statystyk w Nagłówku */
.rk-cs-stats-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    position: relative;
    z-index: 2;
}

.rk-cs-stat-box {
    background: rgba(0, 0, 0, 0.25);
    border: 1px solid rgba(255, 255, 255, 0.1);
    padding: 15px;
    border-radius: 12px;
    backdrop-filter: blur(4px);
}

.rk-cs-stat-lbl { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 800; margin-bottom: 6px; letter-spacing: 0.5px; }
.rk-cs-stat-val { display: block; font-size: 16px; font-weight: 900; color: #ffffff; }
.rk-cs-stat-val.highlight { color: #10b981; }

/* Główny Panel Interaktywny */
.rk-cs-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-cs-dashboard {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: #ffffff;
    border-radius: 20px;
    border: 1px solid var(--rk-cs-border);
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.02);
    overflow: hidden;
}

/* Lewa Kolumna - Kontrola i Zestawienie */
.rk-cs-comparison {
    padding: 30px;
    display: flex;
    flex-direction: column;
}

.rk-cs-comp-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-cs-dark);
    margin: 0 0 20px 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Toggle Switch (Przełącznik) */
.rk-cs-toggle-wrapper {
    display: flex;
    background: var(--rk-cs-panel);
    border: 2px solid var(--rk-cs-border);
    border-radius: 12px;
    padding: 4px;
    margin-bottom: 30px;
    position: relative;
}

.rk-cs-toggle-btn {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-cs-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    position: relative;
    z-index: 2;
}

.rk-cs-toggle-btn.active.mode-bad { color: #ffffff; }
.rk-cs-toggle-btn.active.mode-good { color: #ffffff; }

.rk-cs-toggle-bg {
    position: absolute;
    top: 4px;
    bottom: 4px;
    width: calc(50% - 4px);
    border-radius: 8px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

.rk-cs-dashboard[data-mode="bad"] .rk-cs-toggle-bg { left: 4px; background: var(--rk-cs-alert); box-shadow: 0 4px 10px rgba(239, 68, 68, 0.3); }
.rk-cs-dashboard[data-mode="good"] .rk-cs-toggle-bg { left: calc(50%); background: var(--rk-cs-accent); box-shadow: 0 4px 10px rgba(16, 185, 129, 0.3); }

/* Wiersze Danych */
.rk-cs-data-rows { display: flex; flex-direction: column; gap: 15px; }
.rk-cs-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 12px;
    border-bottom: 1px dashed var(--rk-cs-border);
}
.rk-cs-data-row:last-child { border-bottom: none; }
.rk-cs-data-lbl { font-size: 13px; color: var(--rk-cs-text); font-weight: 600; }
.rk-cs-data-val { font-size: 15px; font-weight: 900; transition: color 0.3s; font-variant-numeric: tabular-nums; }

.rk-cs-dashboard[data-mode="bad"] .rk-cs-data-val { color: var(--rk-cs-alert); }
.rk-cs-dashboard[data-mode="good"] .rk-cs-data-val { color: var(--rk-cs-accent); }

/* Prawa Kolumna - Wizualizacja SVG */
.rk-cs-visual {
    background: var(--rk-cs-dark);
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
}

.rk-cs-svg-stage { width: 100%; height: 200px; }

/* SVG Animacje */
.anim-hp-box { transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); transform-origin: center bottom; }
.anim-fan { transform-origin: 150px 100px; }
.anim-pipe { transition: all 0.5s ease; stroke-dasharray: 4 4; }

.rk-cs-dashboard[data-mode="bad"] .anim-hp-box { transform: scale(1.1); fill: #450a0a; stroke: #ef4444; }
.rk-cs-dashboard[data-mode="bad"] .anim-fan { animation: fanSpin 0.5s linear infinite; fill: #ef4444; }
.rk-cs-dashboard[data-mode="bad"] .anim-pipe { stroke: #ef4444; stroke-width: 4; stroke-dasharray: 20 10; }

.rk-cs-dashboard[data-mode="good"] .anim-hp-box { transform: scale(0.85); fill: #064e3b; stroke: #10b981; }
.rk-cs-dashboard[data-mode="good"] .anim-fan { animation: fanSpin 2s linear infinite; fill: #10b981; }
.rk-cs-dashboard[data-mode="good"] .anim-pipe { stroke: #10b981; stroke-width: 2; stroke-dasharray: none; }

@keyframes fanSpin { 100% { transform: rotate(360deg); } }

/* Odznaka Oszczędności (Wyskakująca) */
.rk-cs-savings-badge {
    position: absolute;
    top: 20px;
    right: 20px;
    background: var(--rk-cs-accent);
    color: #ffffff;
    padding: 10px 15px;
    border-radius: 12px;
    font-weight: 900;
    font-size: 16px;
    box-shadow: 0 10px 20px rgba(16, 185, 129, 0.4);
    opacity: 0;
    transform: translateY(-10px) scale(0.9);
    transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.rk-cs-dashboard[data-mode="good"] .rk-cs-savings-badge { opacity: 1; transform: translateY(0) scale(1); }

/* Autor i Opis */
.rk-cs-author-section {
    padding: 0 50px 30px 50px;
    background: #f8fafc;
}

.rk-cs-author-box {
    background: #ffffff;
    border-left: 4px solid var(--rk-cs-brand);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    display: flex;
    align-items: center;
    gap: 20px;
    box-shadow: 0 4px 15px rgba(0,0,0,0.03);
    border: 1px solid var(--rk-cs-border);
    border-left: 4px solid var(--rk-cs-brand);
}

.rk-cs-author-photo {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid var(--rk-cs-brand-light);
    box-shadow: 0 4px 10px rgba(37, 99, 235, 0.2);
    flex-shrink: 0;
}

.rk-cs-author-text p { margin: 0; font-size: 14px; color: var(--rk-cs-text); line-height: 1.6; }
.rk-cs-author-text strong { color: var(--rk-cs-dark); font-weight: 800; }

/* Sekcja Mocnego CTA */
.rk-cs-cta-block {
    background: linear-gradient(135deg, #1e1b4b 0%, var(--rk-cs-dark) 100%);
    padding: 35px 50px;
    border-top: 1px solid rgba(37, 99, 235, 0.2);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
}

.rk-cs-cta-text h4 { font-size: 18px; font-weight: 800; color: #ffffff; margin: 0 0 8px 0; }
.rk-cs-cta-text p { font-size: 14px; color: #94a3b8; margin: 0; line-height: 1.5; }
.rk-cs-cta-btn {
    background: var(--rk-cs-brand);
    color: #ffffff;
    padding: 16px 32px;
    border-radius: 12px;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    box-shadow: 0 10px 20px -5px rgba(37, 99, 235, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    white-space: nowrap;
    border: none;
    text-transform: uppercase;
}
.rk-cs-cta-btn:hover { transform: translateY(-3px); box-shadow: 0 15px 25px -5px rgba(37, 99, 235, 0.6); background: #3b82f6; }

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-interactive, .rk-cs-author-section, .rk-cs-cta-block { padding: 30px 20px; }
    .rk-cs-title { font-size: 24px; }
    .rk-cs-stats-grid { grid-template-columns: 1fr 1fr; }
    .rk-cs-dashboard { grid-template-columns: 1fr; }
    .rk-cs-svg-stage { height: 160px; }
    .rk-cs-author-box { flex-direction: column; text-align: center; }
    .rk-cs-cta-block { flex-direction: column; text-align: center; gap: 20px; }
    .rk-cs-cta-btn { width: 100%; text-align: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Case Study: OZC dla domu w Nowym Targu (174 m²)",
    "description": "Zakończyliśmy pełne opracowanie OZC dla domu 174m2 w V strefie klimatycznej (-24 st C). Zmiana pompy ciepła z 10 kW na 5 kW dała 6500 PLN oszczędności.",
    "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": "2025-04-14",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-casestudy",
    "name": "Wyniki optymalizacji OZC - Nowy Targ",
    "description": "Porównanie doboru pompy ciepła na podstawie intuicji instalatora vs precyzyjne wyliczenia OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa ciepła 5kW vs 10kW",
      "OZC Nowy Targ V strefa klimatyczna",
      "rozstaw rur 15cm i 10cm",
      "przepływ zasilania 1.8 l/min",
      "oszczędność na pompie 6500 PLN"
    ],
    "measurementTechnique": "Analiza cieplna budynku OZC i projektowanie hydrauliczne wg PN-EN 12831.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Lokalizacja: Nowy Targ (V strefa, -24°C), Dom tradycyjny ceramika + 22cm EPS, Wentylacja mechaniczna.",
        "Obciążenie całkowite: 4,85 kW, pozwalające na redukcję pompy z 10 kW na 5 kW.",
        "Zysk: 6500 PLN, rozstaw salon 15 cm / łazienki 10 cm, przepływy: 1.8 l/min."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-casestudy",
    "name": "Kalkulator Oszczędności OZC",
    "description": "Interaktywny panel prezentujący realne oszczędności (6500 PLN) wynikające z przeliczenia instalatora vs inżyniera w Nowym Targu.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires modern browser with SVG and JavaScript enabled",
    "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">Case Study: Kwiecień 2025</div>
        <h2 class="rk-cs-title">Instalator vs Inżynier: <span>Oszczędność 6 500 PLN</span></h2>
        
        <div class="rk-cs-stats-grid">
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Inwestor</span>
                <span class="rk-cs-stat-val">Pan Mariusz</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Lokalizacja</span>
                <span class="rk-cs-stat-val">Nowy Targ (-24°C)</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Powierzchnia</span>
                <span class="rk-cs-stat-val">174 m²</span>
            </div>
            <div class="rk-cs-stat-box">
                <span class="rk-cs-stat-lbl">Obciążenie (OZC)</span>
                <span class="rk-cs-stat-val highlight">4,85 kW</span>
            </div>
        </div>
    </div>

    <div class="rk-cs-interactive">
        
        <div class="rk-cs-dashboard" id="csDashboard" data-mode="bad">
            
            <div class="rk-cs-comparison">
                <h3 class="rk-cs-comp-title">Wybierz scenariusz doboru:</h3>
                
                <div class="rk-cs-toggle-wrapper">
                    <div class="rk-cs-toggle-bg"></div>
                    <div class="rk-cs-toggle-btn active mode-bad" id="btnModeBad" data-target="bad">Intuicja Instalatora</div>
                    <div class="rk-cs-toggle-btn mode-good" id="btnModeGood" data-target="good">Twarde OZC (Inżynieria)</div>
                </div>

                <div class="rk-cs-data-rows">
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Moc Pompy Ciepła:</span>
                        <span class="rk-cs-data-val" id="valPump">10 kW (Przewymiarowana)</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Rozstaw rur (Salon):</span>
                        <span class="rk-cs-data-val" id="valSpace">&#8222;Jak wyjdzie&#8221;</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Nastawy rotametrów:</span>
                        <span class="rk-cs-data-val" id="valFlow">Wszystko na 100%</span>
                    </div>
                    <div class="rk-cs-data-row">
                        <span class="rk-cs-data-lbl">Koszt inwestycji:</span>
                        <span class="rk-cs-data-val" id="valCost">Drogo i nieefektywnie</span>
                    </div>
                </div>
            </div>

            <div class="rk-cs-visual">
                <div class="rk-cs-savings-badge">+ 6 500 PLN w kieszeni!</div>
                
                <div class="rk-cs-svg-stage">
                    <svg viewBox="0 0 300 200" width="100%" height="100%">
                        <path class="anim-pipe" d="M 50 180 L 250 180 M 50 170 L 250 170 M 50 160 L 250 160" stroke-linecap="round"/>
                        
                        <path d="M 150 20 L 50 80 L 50 150 L 250 150 L 250 80 Z" fill="none" stroke="#334155" stroke-width="4" stroke-linejoin="round"/>
                        
                        <g class="anim-hp-box" transform="translate(0, 0)">
                            <rect x="110" y="70" width="80" height="80" rx="8" stroke-width="4"/>
                            <g class="anim-fan">
                                <circle cx="150" cy="110" r="25" fill="#0f172a" opacity="0.5"/>
                                <path d="M 150 85 L 165 110 L 135 110 Z"/>
                                <path d="M 150 135 L 135 110 L 165 110 Z"/>
                                <circle cx="150" cy="110" r="5" fill="#ffffff"/>
                            </g>
                        </g>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-cs-author-section">
        <div class="rk-cs-author-box">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-cs-author-photo" loading="lazy">
            <div class="rk-cs-author-text">
                <p>14 kwietnia 2025 r. zakończyliśmy dokumentację dla budynku w Nowym Targu (ceramika + 22cm EPS, rekuperacja). Projektowe obciążenie wyniosło zaledwie <strong>4,85 kW</strong> przy strefie V (-24°C). Pozwoliło to odrzucić propozycję wykonawcy (10 kW), dobrać pompę 5 kW i wyznaczyć precyzyjny rozstaw rur co 15 cm i 10 cm, z przepływami rzędu 1,8 l/min. <strong>Wynik? Zbalansowany układ i fizyczna oszczędność 6500 zł dla Inwestora.</strong></p>
            </div>
        </div>
    </div>

    <div class="rk-cs-cta-block">
        <div class="rk-cs-cta-text">
            <h4>Przestań przepłacać za przewymiarowane urządzenia</h4>
            <p>Zamów projekt OZC + Ogrzewanie Podłogowe i odzyskaj kontrolę nad budżetem budowy.</p>
        </div>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-cs-cta-btn">Zamów Pakiet Projektowy</a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-cs-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;"><div style="font-size:16px; text-transform:uppercase; margin-bottom:8px;">Błąd autoryzacji modułu</div><div style="font-size:13px; color:#cbd5e1;">Aplikacja Case Study należy do portalu Projekt-Ogrzewania.pl.</div></div>';
        return;
    }

    // 2. Elementy DOM
    const dashboard = document.getElementById('csDashboard');
    const btnBad = document.getElementById('btnModeBad');
    const btnGood = document.getElementById('btnModeGood');
    
    // Pola Danych
    const valPump = document.getElementById('valPump');
    const valSpace = document.getElementById('valSpace');
    const valFlow = document.getElementById('valFlow');
    const valCost = document.getElementById('valCost');

    // 3. Baza Danych Scenariuszy
    const dataScenarios = {
        bad: {
            pump: "10 kW (Przewymiarowana)",
            space: "Intuicyjnie / Losowo",
            flow: "Maksymalne na pompie",
            cost: "Ogromne rachunki i zjawisko taktowania"
        },
        good: {
            pump: "5 kW (Idealnie dobrana OZC)",
            space: "15 cm (Salon) / 10 cm (Łazienka)",
            flow: "Precyzyjne 1,8 l/min",
            cost: "Zoptymalizowane + zysk na starcie"
        }
    };

    // 4. Silnik Przełączania
    function setMode(mode) {
        // Zmiana atrybutu głównego (napędza CSS i SVG)
        dashboard.setAttribute('data-mode', mode);
        
        // Klasy przycisków
        if (mode === 'bad') {
            btnBad.classList.add('active');
            btnGood.classList.remove('active');
        } else {
            btnGood.classList.add('active');
            btnBad.classList.remove('active');
        }

        // Aktualizacja tekstów
        const data = dataScenarios[mode];
        valPump.textContent = data.pump;
        valSpace.textContent = data.space;
        valFlow.textContent = data.flow;
        valCost.textContent = data.cost;
    }

    // Zdarzenia kliknięcia
    btnBad.addEventListener('click', () => setMode('bad'));
    btnGood.addEventListener('click', () => setMode('good'));

});
</script>



<style>
:root {
    --rk-ozcfaq-dark: #0f172a;
    --rk-ozcfaq-brand: #0284c7; /* Ekspercki niebieski OZC */
    --rk-ozcfaq-brand-light: #e0f2fe;
    --rk-ozcfaq-accent: #0ea5e9;
    --rk-ozcfaq-bg: #f8fafc;
    --rk-ozcfaq-border: #cbd5e1;
    --rk-ozcfaq-text: #334155;
    --rk-ozcfaq-hover: #f1f5f9;
}

.rk-ozcfaq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.15);
    border: 1px solid var(--rk-ozcfaq-brand);
    overflow: hidden;
}

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

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

.rk-ozcfaq-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
    color: #ffffff;
}

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

/* Akordeon */
.rk-ozcfaq-interactive {
    padding: 40px 45px;
    background: var(--rk-ozcfaq-bg);
}

.rk-ozcfaq-list {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.rk-ozcfaq-item {
    background: #ffffff;
    border: 1px solid var(--rk-ozcfaq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-ozcfaq-item.active {
    border-color: var(--rk-ozcfaq-brand);
    box-shadow: 0 10px 20px -5px rgba(2, 132, 199, 0.15);
}

/* Przycisk Pytania */
.rk-ozcfaq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 22px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-ozcfaq-dark);
    transition: background 0.3s, color 0.3s;
}

.rk-ozcfaq-question:hover {
    background: var(--rk-ozcfaq-hover);
}

.rk-ozcfaq-item.active .rk-ozcfaq-question {
    background: var(--rk-ozcfaq-brand);
    color: #ffffff;
}

.rk-ozcfaq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-ozcfaq-brand-light);
    color: var(--rk-ozcfaq-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background 0.3s;
}

.rk-ozcfaq-item.active .rk-ozcfaq-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Odpowiedź z Gridem i Animacją SVG */
.rk-ozcfaq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-ozcfaq-item.active .rk-ozcfaq-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-ozcfaq-answer-inner {
    overflow: hidden;
}

.rk-ozcfaq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-ozcfaq-border);
    display: grid;
    grid-template-columns: 1fr 180px;
    gap: 30px;
    align-items: center;
}

.rk-ozcfaq-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-ozcfaq-text);
}

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

.rk-link {
    color: var(--rk-ozcfaq-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: all 0.3s;
}

.rk-link:hover {
    border-bottom-color: var(--rk-ozcfaq-brand);
}

/* Wizualizacje SVG */
.rk-ozcfaq-visual {
    background: var(--rk-ozcfaq-dark);
    border-radius: 12px;
    padding: 15px;
    height: 130px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 10px rgba(0,0,0,0.3);
    position: relative;
    overflow: hidden;
}

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

/* Animacje specyficzne dla każdego SVG zależne od .active w rodzicu */

/* FAQ 1: Pokoje OZC */
.anim-room-1, .anim-room-2, .anim-room-3 { opacity: 0.3; transition: opacity 0.5s; }
.rk-ozcfaq-item.active .anim-room-1 { animation: pulseRed 2s infinite; }
.rk-ozcfaq-item.active .anim-room-2 { animation: pulseOrange 2s 0.6s infinite; }
.rk-ozcfaq-item.active .anim-room-3 { animation: pulseYellow 2s 1.2s infinite; }
@keyframes pulseRed { 50% { fill: #ef4444; opacity: 0.9; } }
@keyframes pulseOrange { 50% { fill: #f97316; opacity: 0.9; } }
@keyframes pulseYellow { 50% { fill: #eab308; opacity: 0.9; } }

/* FAQ 2: Rekuperacja/Aktualizacja */
.anim-fan { transform-origin: center; transition: transform 0.5s; }
.rk-ozcfaq-item.active .anim-fan { animation: spinFan 2s linear infinite; }
@keyframes spinFan { to { transform: rotate(360deg); } }
.anim-insulation { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1s 0.3s; }
.rk-ozcfaq-item.active .anim-insulation { stroke-dashoffset: 0; }

/* FAQ 3: EUco vs OZC */
.anim-bar-euco { transform: scaleX(0); transform-origin: left; transition: transform 1s 0.2s cubic-bezier(0.2, 0.8, 0.2, 1); }
.rk-ozcfaq-item.active .anim-bar-euco { transform: scaleX(1); }
.anim-bar-ozc { transform: scaleX(0); transform-origin: left; transition: transform 1s 0.5s cubic-bezier(0.2, 0.8, 0.2, 1); }
.rk-ozcfaq-item.active .anim-bar-ozc { transform: scaleX(1); }

/* FAQ 4: Zyski (Noc) */
.anim-sun { transition: transform 1s, opacity 1s; }
.anim-moon { opacity: 0; transform: translateY(-20px); transition: transform 1s, opacity 1s; }
.rk-ozcfaq-item.active .anim-sun { transform: translateY(30px); opacity: 0; }
.rk-ozcfaq-item.active .anim-moon { opacity: 1; transform: translateY(0); }
.anim-snow { opacity: 0; }
.rk-ozcfaq-item.active .anim-snow { animation: fallSnow 2s infinite linear; }
@keyframes fallSnow { 0% { opacity: 0; transform: translateY(-10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(20px); } }

/* FAQ 5: Stary Dom */
.anim-scan { transform: translateY(-10px); opacity: 0; }
.rk-ozcfaq-item.active .anim-scan { animation: scanWall 2.5s infinite; }
@keyframes scanWall { 0% { transform: translateY(-10px); opacity: 0; } 10% { opacity: 1; } 90% { opacity: 1; } 100% { transform: translateY(60px); opacity: 0; } }

@media (max-width: 768px) {
    .rk-ozcfaq-header, .rk-ozcfaq-interactive { padding: 30px 20px; }
    .rk-ozcfaq-title { font-size: 24px; }
    .rk-ozcfaq-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-ozcfaq-visual { height: 110px; max-width: 200px; margin: 0 auto; width: 100%; }
    .rk-ozcfaq-question { font-size: 14px; padding: 18px 20px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o OZC",
    "description": "Eksperckie odpowiedzi na pytania dotyczące Projektowego Obciążenia Cieplnego (OZC), różnic z EUco, modernizacji starych domów i aktualizacji projektu.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy obliczenia OZC wykonuje się dla całego budynku, czy dla każdego pomieszczenia osobno?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Obliczenia OZC muszą być bezwzględnie wykonane dla każdego pomieszczenia z osobna, ponieważ każde wnętrze posiada inną strukturę przegród zewnętrznych oraz odmienne straty wentylacyjne. Zbiorczy wynik dla całego budynku jest jedynie sumą składowych służącą do doboru mocy źródła ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Jak często należy aktualizować obliczenia OZC w trakcie trwania budowy domu?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Aktualizację obliczeń OZC należy przeprowadzić zawsze wtedy, gdy w trakcie realizacji inwestycji dojdzie do istotnych zmian w materiałach izolacyjnych lub stolarki otworowej w stosunku do pierwotnego projektu. Zmiana grubości styropianu czy rezygnacja z rekuperacji całkowicie zmienia bilans cieplny budynku."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wskaźnik EUco z charakterystyki energetycznej projektu to samo co Projektowe Obciążenie Cieplne?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, wskaźnik EUco określa sezonowe zapotrzebowanie na energię użytkową w ciągu całego roku wyrażane w kWh/(m2 rok), natomiast OZC to chwilowa, maksymalna moc cieplna wyrażana w kilowatach [kW], potrzebna do pokrycia strat w warunkach skrajnego mrozu. OZC decyduje o fizycznej wielkości urządzeń, a EUco o rocznych kosztach paliwa."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki wpływ na wartość OZC mają zyski ciepła od nasłonecznienia oraz urządzeń wewnętrznych?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Zgodnie z procedurą normy PN-EN 12831, przy obliczaniu Projektowego Obciążenia Cieplnego mającego na celu dobór mocy urządzeń grzewczych, zyski ciepła od nasłonecznienia oraz zyski wewnętrzne są całkowicie pomijane. Założenie to wynika z faktu, że maksymalne, krytyczne obciążenie cieplne może wystąpić w środku nocy, kiedy zyski te nie występują."
        }
      },
      {
        "@type": "Question",
        "name": "Czy stary dom z lat 80. bez dokumentacji projektowej można poprawnie przeliczyć pod kątem OZC?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, dla starych budynków wykonuje się inwentaryzację termomodernizacyjną, odtwarzając strukturę przegród na podstawie odkrywek oraz oceniając stan techniczny stolarki okiennej. Wprowadzając te dane do programu, inżynier jest w stanie z wysoką dokładnością wyznaczyć realne OZC obiektu przed doborem pompy ciepła."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-faq",
    "name": "Baza Wiedzy Inwestorskiej: Parametry Normy PN-EN 12831",
    "description": "Zbiór danych i definicji rozróżniających wartości OZC od charakterystyki energetycznej (EUco) oraz uwzględniających zyski pasywne.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "obliczenia OZC dla pomieszczeń",
      "aktualizacja bilansu cieplnego",
      "EUco a obciążenie cieplne",
      "pasywne zyski ciepła OZC",
      "termomodernizacja starego domu"
    ],
    "measurementTechnique": "Interpretacja wymagań normy PN-EN 12831 w kontekście fizyki budowli i warunków zimowych bez zysków solarnych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC określa szczytowe zapotrzebowanie (kW) w mroźną noc bez słońca.",
        "EUco to roczne zużycie energii wyrażane w kWh/(m2 rok)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-faq",
    "name": "Interaktywny Przewodnik: Mechanika Obliczeń OZC",
    "description": "Interaktywny moduł edukacyjny typu akordeon, wykorzystujący animacje SVG do demonstracji procesów wymiany ciepła, inwentaryzacji oraz bilansu cieplnego budynku.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-ozcfaq-container" id="rk-ozc-faq-app">
    <div class="rk-ozcfaq-header">
        <div class="rk-ozcfaq-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"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-ozcfaq-title">FAQ – <span>Najczęściej zadawane pytania o OZC</span></h2>
    </div>

    <div class="rk-ozcfaq-interactive">
        <div class="rk-ozcfaq-list">
            
            <!-- Pytanie 1 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>1. Czy obliczenia OZC wykonuje się dla całego budynku, czy dla każdego pomieszczenia osobno?</span>
                    <div class="rk-ozcfaq-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-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Obliczenia OZC muszą być <strong>bezwzględnie wykonane dla każdego pomieszczenia z osobna</strong>. Każde wnętrze posiada inną strukturę przegród zewnętrznych oraz odmienne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">straty wentylacyjne</a>. Zbiorczy wynik dla całego budynku jest jedynie sumą matematyczną tych składowych, która służy wyłącznie do określenia całkowitej mocy źródła ciepła (np. pompy ciepła).
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 10 35 L 50 5 L 90 35" fill="none" stroke="#64748b" stroke-width="3" stroke-linejoin="round"/>
                                    <rect x="20" y="35" width="60" height="30" fill="none" stroke="#64748b" stroke-width="2"/>
                                    <line x1="50" y1="35" x2="50" y2="65" stroke="#64748b" stroke-width="2"/>
                                    <line x1="20" y1="50" x2="80" y2="50" stroke="#64748b" stroke-width="2"/>
                                    <rect class="anim-room-1" x="22" y="37" width="26" height="11" fill="#475569"/>
                                    <rect class="anim-room-2" x="52" y="37" width="26" height="11" fill="#475569"/>
                                    <rect class="anim-room-3" x="22" y="52" width="56" height="11" fill="#475569"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 2 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>2. Jak często należy aktualizować obliczenia OZC w trakcie trwania budowy domu?</span>
                    <div class="rk-ozcfaq-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-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Aktualizację obliczeń OZC należy przeprowadzić <strong>zawsze wtedy, gdy dochodzi do istotnych zmian</strong> w strukturze przegród względem pierwotnego projektu architektonicznego. Zmiana grubości styropianu na elewacji, wstawienie gorszych parametrów stolarki okiennej czy rezygnacja z <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link">wentylacji mechanicznej (rekuperacji)</a> na rzecz grawitacyjnej całkowicie zmienia bilans cieplny budynku.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="20" width="60" height="30" fill="none" stroke="#64748b" stroke-width="3" rx="4"/>
                                    <line class="anim-insulation" x1="20" y1="15" x2="80" y2="15" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                                    <g transform="translate(50, 35)">
                                        <circle cx="0" cy="0" r="10" fill="none" stroke="#94a3b8" stroke-width="2"/>
                                        <path class="anim-fan" d="M 0 -8 L 2 -2 L 8 0 L 2 2 L 0 8 L -2 2 L -8 0 L -2 -2 Z" fill="#cbd5e1"/>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 3 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>3. Czy wskaźnik EUco z charakterystyki energetycznej to samo co OZC?</span>
                    <div class="rk-ozcfaq-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-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                <strong>Nie, to dwa zupełnie różne parametry.</strong> Wskaźnik EUco określa sezonowe zapotrzebowanie na energię użytkową w ciągu całego roku (wyrażane w kWh/m2 na rok), czyli informuje o rocznych kosztach paliwa. Natomiast OZC to chwilowa, maksymalna moc cieplna wyrażana w kilowatach [kW], potrzebna do pokrycia strat w warunkach skrajnego mrozu. OZC decyduje o <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/" class="rk-link">fizycznej wielkości i mocy urządzeń</a>.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <text x="10" y="30" fill="#94a3b8" font-size="10" font-family="sans-serif">EUco</text>
                                    <rect x="35" y="22" width="55" height="8" fill="#1e293b" rx="2"/>
                                    <rect class="anim-bar-euco" x="35" y="22" width="45" height="8" fill="#0ea5e9" rx="2"/>
                                    
                                    <text x="10" y="55" fill="#94a3b8" font-size="10" font-family="sans-serif">OZC</text>
                                    <rect x="35" y="47" width="55" height="8" fill="#1e293b" rx="2"/>
                                    <rect class="anim-bar-ozc" x="35" y="47" width="25" height="8" fill="#ef4444" rx="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 4 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>4. Jaki wpływ na wartość OZC mają zyski ciepła od słońca i urządzeń?</span>
                    <div class="rk-ozcfaq-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-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Zgodnie z procedurą normy PN-EN 12831, przy obliczaniu Projektowego Obciążenia Cieplnego mającego na celu dobór mocy urządzeń grzewczych, <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-a-pasywne-zyski-ciepla/" class="rk-link">pasywne zyski ciepła</a> od nasłonecznienia oraz wewnętrzne zyski bytowe są <strong>całkowicie pomijane</strong>. Założenie to jest logiczne – maksymalne, krytyczne obciążenie cieplne budynku zawsze występuje w środku mroźnej nocy, kiedy tych zysków po prostu nie ma.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <g class="anim-sun">
                                        <circle cx="50" cy="35" r="12" fill="#eab308"/>
                                        <path d="M 50 15 L 50 18 M 50 52 L 50 55 M 30 35 L 33 35 M 67 35 L 70 35" stroke="#eab308" stroke-width="2" stroke-linecap="round"/>
                                    </g>
                                    <g class="anim-moon">
                                        <path d="M 50 20 A 12 12 0 1 0 60 40 A 15 15 0 0 1 50 20 Z" fill="#e2e8f0"/>
                                        <circle class="anim-snow" cx="35" cy="25" r="1.5" fill="#ffffff"/>
                                        <circle class="anim-snow" cx="65" cy="45" r="1.5" fill="#ffffff" style="animation-delay: 0.5s"/>
                                        <circle class="anim-snow" cx="45" cy="50" r="1.5" fill="#ffffff" style="animation-delay: 1s"/>
                                    </g>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Pytanie 5 -->
            <div class="rk-ozcfaq-item">
                <button class="rk-ozcfaq-question">
                    <span>5. Czy stary dom z lat 80. bez projektu można policzyć pod kątem OZC?</span>
                    <div class="rk-ozcfaq-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-ozcfaq-answer-wrapper">
                    <div class="rk-ozcfaq-answer-inner">
                        <div class="rk-ozcfaq-content">
                            <div class="rk-ozcfaq-text">
                                Tak, dla starych budynków wykonuje się <strong>inwentaryzację termomodernizacyjną</strong>. Inżynier odtwarza strukturę przegród na podstawie odkrywek fizycznych oraz oceny stanu technicznego stolarki okiennej i stropów. Wprowadzając zebrane dane do oprogramowania inżynierskiego, jest w stanie z wysoką dokładnością wyznaczyć realne OZC, co jest warunkiem koniecznym do weryfikacji, <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/" class="rk-link">czy w starym budynku sprawdzi się instalacja płaszczyznowa</a> z pompą ciepła.
                            </div>
                            <div class="rk-ozcfaq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <g stroke="#64748b" stroke-width="2" fill="none">
                                        <rect x="25" y="15" width="15" height="8"/>
                                        <rect x="42" y="15" width="15" height="8"/>
                                        <rect x="59" y="15" width="15" height="8"/>
                                        <rect x="18" y="25" width="15" height="8"/>
                                        <rect x="35" y="25" width="15" height="8"/>
                                        <rect x="52" y="25" width="15" height="8"/>
                                        <rect x="69" y="25" width="15" height="8"/>
                                        <rect x="25" y="35" width="15" height="8"/>
                                        <rect x="42" y="35" width="15" height="8"/>
                                        <rect x="59" y="35" width="15" height="8"/>
                                    </g>
                                    <line class="anim-scan" x1="15" y1="20" x2="85" y2="20" stroke="#0ea5e9" stroke-width="2" stroke-dasharray="4 4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez wyskakujących H2/H3 z błędami)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-ozc-faq-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900; font-family:sans-serif;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-ozcfaq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-ozcfaq-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-ozc-dark: #0f172a;
    --rk-ozc-blue: #0284c7;
    --rk-ozc-light-blue: #f0f9ff;
    --rk-ozc-green: #059669;
    --rk-ozc-green-light: #ecfdf5;
    --rk-ozc-red: #dc2626;
    --rk-ozc-red-light: #fef2f2;
    --rk-ozc-gold: #fbbf24;
    --rk-ozc-gray: #64748b;
    --rk-ozc-border: #e2e8f0;
    --rk-ozc-bg: #ffffff;
}

.rk-ozc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-ozc-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(2, 132, 199, 0.12);
    border: 1px solid var(--rk-ozc-blue);
    overflow: hidden;
}

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

.rk-ozc-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.3);
    color: #38bdf8;
    padding: 6px 16px;
    border-radius: 999px;
    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-ozc-header h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    color: #ffffff;
    line-height: 1.2;
}

.rk-ozc-intro-text {
    font-size: 17px;
    line-height: 1.7;
    color: #cbd5e1;
    max-width: 800px;
    margin: 0 auto;
    font-weight: 400;
}

.rk-ozc-intro-text a {
    color: #7dd3fc;
    text-decoration: none;
    border-bottom: 1px dashed #7dd3fc;
    transition: color 0.3s;
}

.rk-ozc-intro-text a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Interaktywny Symulator (Mobile App Switch) */
.rk-ozc-interactive {
    padding: 45px 50px;
    background: #f8fafc;
}

.rk-switcher-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 40px;
}

.rk-app-switch {
    background: #e2e8f0;
    border-radius: 99px;
    padding: 6px;
    display: inline-flex;
    position: relative;
    box-shadow: inset 0 2px 5px rgba(0,0,0,0.06);
    width: 100%;
    max-width: 500px;
}

.rk-switch-btn {
    flex: 1;
    position: relative;
    z-index: 2;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    border: none;
    background: transparent;
    color: #64748b;
    cursor: pointer;
    border-radius: 99px;
    transition: color 0.3s ease;
    text-align: center;
}

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

.rk-switch-glider {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-ozc-red);
    border-radius: 99px;
    transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), background-color 0.4s ease;
    box-shadow: 0 4px 10px -2px rgba(0,0,0,0.15);
    z-index: 1;
}

.rk-app-switch[data-mode="pro"] .rk-switch-glider {
    transform: translateX(100%);
    background: var(--rk-ozc-green);
}

/* Wynik symulacji */
.rk-ozc-result-box {
    background: #ffffff;
    border-radius: 20px;
    border: 2px solid var(--rk-ozc-border);
    padding: 35px;
    display: grid;
    grid-template-columns: 160px 1fr;
    gap: 40px;
    align-items: center;
    transition: all 0.4s ease;
}

.rk-ozc-result-box.mode-amateur {
    border-color: var(--rk-ozc-red-light);
    box-shadow: 0 15px 35px -10px rgba(220, 38, 38, 0.12);
}

.rk-ozc-result-box.mode-pro {
    border-color: var(--rk-ozc-green-light);
    box-shadow: 0 15px 35px -10px rgba(5, 150, 105, 0.12);
}

.rk-svg-stage {
    width: 100%;
    max-width: 160px;
    margin: 0 auto;
}

/* Animacje SVG */
.anim-pump-body { transition: fill 0.5s ease; }
.anim-waves { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease; }

.mode-amateur .anim-pump-body { fill: var(--rk-ozc-red); animation: taktowaniePompy 0.3s infinite; }
.mode-amateur .anim-waves { stroke: var(--rk-ozc-red); animation: brokenWaves 1.5s infinite; }

.mode-pro .anim-pump-body { fill: var(--rk-ozc-green); animation: stabilnaPraca 3s infinite; }
.mode-pro .anim-waves { stroke: var(--rk-ozc-green); animation: smoothWaves 2s infinite linear; }

@keyframes taktowaniePompy {
    0% { transform: translate(1px, 1px); }
    25% { transform: translate(-2px, -1px); }
    50% { transform: translate(2px, 2px); }
    75% { transform: translate(-1px, -2px); }
    100% { transform: translate(1px, 1px); }
}

@keyframes stabilnaPraca {
    0% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0)); transform: scale(1); }
    50% { filter: drop-shadow(0 0 15px rgba(16, 185, 129, 0.6)); transform: scale(1.02); }
    100% { filter: drop-shadow(0 0 0 rgba(16, 185, 129, 0)); transform: scale(1); }
}

@keyframes brokenWaves {
    0% { stroke-dashoffset: 100; opacity: 1; }
    50% { stroke-dashoffset: 50; opacity: 0.2; }
    100% { stroke-dashoffset: 0; opacity: 1; }
}

@keyframes smoothWaves {
    0% { stroke-dashoffset: 100; opacity: 0.8; }
    100% { stroke-dashoffset: -100; opacity: 0.8; }
}

.rk-ozc-content h3 {
    margin: 0 0 15px 0;
    font-size: 22px;
    font-weight: 800;
}

.mode-amateur .rk-ozc-content h3 { color: var(--rk-ozc-red); }
.mode-pro .rk-ozc-content h3 { color: var(--rk-ozc-green); }

.rk-ozc-content p {
    margin: 0 0 15px 0;
    font-size: 16px;
    line-height: 1.7;
    color: #475569;
}

.rk-ozc-content a {
    color: var(--rk-ozc-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.3);
    transition: border-color 0.3s;
}

.rk-ozc-content a:hover { border-color: var(--rk-ozc-blue); }

/* Tabela Kafelkowa (Koszty i Efekty) */
.rk-data-tiles {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: 25px;
}

.rk-tile {
    background: #f1f5f9;
    padding: 18px;
    border-radius: 14px;
    border-left: 4px solid transparent;
    transition: all 0.3s ease;
}

.mode-amateur .rk-tile { border-left-color: var(--rk-ozc-red); background: #fef2f2; }
.mode-pro .rk-tile { border-left-color: var(--rk-ozc-green); background: #ecfdf5; }

.rk-tile-label {
    display: block;
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: #64748b;
    margin-bottom: 5px;
}

.rk-tile-value {
    display: block;
    font-size: 17px;
    font-weight: 900;
    color: var(--rk-ozc-dark);
}

/* Mocne CTA */
.rk-ozc-cta-box {
    padding: 45px 50px;
    background: #ffffff;
    text-align: center;
    border-top: 1px solid var(--rk-ozc-border);
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-ozc-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(2, 132, 199, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: 2px solid transparent;
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #0369a1;
    box-shadow: 0 20px 35px -5px rgba(2, 132, 199, 0.5);
    border-color: #7dd3fc;
}

.rk-btn-massive svg { transition: transform 0.3s; }
.rk-btn-massive:hover svg { transform: translateX(6px); }

@media (max-width: 768px) {
    .rk-ozc-header, .rk-ozc-interactive, .rk-ozc-cta-box { padding: 35px 25px; }
    .rk-ozc-result-box { grid-template-columns: 1fr; text-align: center; padding: 25px; gap: 20px; }
    .rk-svg-stage { max-width: 120px; margin-bottom: 10px; }
    .rk-switch-btn { padding: 12px 10px; font-size: 13px; }
    .rk-data-tiles { grid-template-columns: 1fr; gap: 12px; }
    .rk-btn-massive { width: 100%; padding: 18px 20px; font-size: 16px; }
}
</style>

<!-- ==========================================
     INVISIBLE DATA (JSON-LD)
=========================================== -->
<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Podsumowanie techniczne: OZC a przyszłość instalacji",
    "description": "Projektowe Obciążenie Cieplne (OZC) wyznaczone według normy PN-EN 12831 to inżynierski fundament. Chroni przed taktowaniem pompy ciepła i błędami w układaniu podłogówki.",
    "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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-podsumowanie",
    "name": "Wpływ obliczeń OZC na żywotność i koszty instalacji grzewczej",
    "description": "Analiza porównawcza parametrów pracy pompy ciepła i hydrauliki ogrzewania podłogowego w przypadku zastosowania normy PN-EN 12831 oraz doboru szacunkowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne",
      "taktowanie pompy ciepła",
      "zbalansowanie hydrauliczne rotametry",
      "bezwładność termiczna jastrychu",
      "norma PN-EN 12831"
    ],
    "measurementTechnique": "Symulacja skutków doboru mocy źródła ciepła oraz nastaw rozdzielacza w oparciu o wyliczenia strat ciepła vs. przeliczniki W/m2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant Szacunkowy: Przewymiarowana pompa ciepła, ciągłe taktowanie, brak możliwości zbalansowania pętli po wylaniu betonu.",
        "Wariant z OZC: Precyzyjnie dobrana moc, stabilna praca sprężarki, zbilansowane przepływy gwarantujące bezawaryjność."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-podsumowanie",
    "name": "Symulator Efektywności: OZC vs Zgadywanie",
    "description": "Interaktywny panel demonstrujący mechaniczne i finansowe skutki braku precyzyjnego Projektowego Obciążenia Cieplnego w systemach ogrzewania płaszczyznowego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<!-- ==========================================
     HTML KONTENERA
=========================================== -->
<div class="rk-ozc-container" id="ozc-sum-app">
    <!-- Nagłówek -->
    <div class="rk-ozc-header">
        <div class="rk-ozc-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>
            Podsumowanie Techniczne
        </div>
        <h2>OZC a przyszłość Twojej instalacji</h2>
        <p class="rk-ozc-intro-text">
            Projektowe Obciążenie Cieplne (OZC) wyznaczone zgodnie z normą <strong>PN-EN 12831</strong> to kluczowa decyzja inżynierska na etapie budowy lub modernizacji domu. Wodne ogrzewanie podłogowe jako system niskotemperaturowy o ogromnej <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności termicznej</a> nie wybacza błędów – rury zalane betonem jastrychowym stają się elementem konstrukcyjnym budynku.
        </p>
    </div>

    <!-- Symulator Standardu -->
    <div class="rk-ozc-interactive">
        <div class="rk-switcher-wrapper">
            <div class="rk-app-switch" id="ozcSwitchContainer" data-mode="amateur">
                <div class="rk-switch-glider" id="ozcGlider"></div>
                <button class="rk-switch-btn active" data-target="amateur">Przelicznik &#8222;Na oko&#8221;</button>
                <button class="rk-switch-btn" data-target="pro">Projekt OZC (PN-EN 12831)</button>
            </div>
        </div>

        <div class="rk-ozc-result-box mode-amateur" id="ozcResultContent">
            <div class="rk-svg-stage">
                <!-- SVG animowane z kodu -->
                <svg viewBox="0 0 100 100" width="100%" height="100%">
                    <!-- Pompa Ciepła -->
                    <rect x="25" y="30" width="50" height="60" rx="6" class="anim-pump-body" />
                    <circle cx="50" cy="50" r="14" fill="#ffffff" opacity="0.9" />
                    <path d="M 45 45 L 55 50 L 45 55 Z" fill="#1e293b" />
                    <!-- Fale Ciepła (podłogówka) -->
                    <path d="M 10 95 Q 30 80 50 95 T 90 95" fill="none" stroke-width="4" stroke-linecap="round" class="anim-waves" />
                    <path d="M 10 105 Q 30 90 50 105 T 90 105" fill="none" stroke-width="4" stroke-linecap="round" class="anim-waves" style="animation-delay: 0.3s" />
                </svg>
            </div>
            
            <div class="rk-ozc-content">
                <h3 id="dynTitle">Taktowanie i nieodwracalne błędy</h3>
                <p id="dynDesc">
                    Rezygnacja z precyzyjnych obliczeń komputerowych na rzecz archaicznych przeliczników powierzchniowych to prosta droga do zakupu przewymiarowanej, stale taktującej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, generującej wysokie koszty eksploatacji i skazanej na szybką awarię. Wadliwy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> czy błędne zbalansowanie hydrauliczne na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> są niemal niemożliwe do skorygowania po fakcie.
                </p>
                
                <div class="rk-data-tiles">
                    <div class="rk-tile">
                        <span class="rk-tile-label" id="dynLabel1">Ryzyko dla sprężarki</span>
                        <span class="rk-tile-value" id="dynVal1">Krytyczne (Taktowanie)</span>
                    </div>
                    <div class="rk-tile">
                        <span class="rk-tile-label" id="dynLabel2">Regulacja hydrauliczna</span>
                        <span class="rk-tile-value" id="dynVal2">Niemożliwa do kalibracji</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Mocne CTA -->
    <div class="rk-ozc-cta-box">
        <h3 style="font-size: 24px; font-weight: 900; color: var(--rk-ozc-dark); margin: 0 0 15px 0;">Zbuduj instalację, która przetrwa dekady</h3>
        <p class="rk-ozc-intro-text" style="color: #64748b; margin-bottom: 30px;">
            Nie pozwól, by błędy na etapie planowania uderzyły Cię po portfelu. Wykorzystaj inżynierską wiedzę, sprawdzone normy i narzędzia, które gwarantują spokój.
        </p>
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-massive">
            PRZEJDŹ DO BAZY WIEDZY I PORADNIKÓW
            <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>

<!-- ==========================================
     LOGIKA JS I ZABEZPIECZENIE (DOMAIN LOCK)
=========================================== -->
<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez H2/H3 w alercie)
    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('ozc-sum-app');
        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;">
                    <div style="font-size: 36px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 18px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #cbd5e1; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Kontener podsumowujący oraz struktura JSON-LD są własnością serwisu Projekt-Ogrzewania.pl. Wykryto próbę kradzieży kodu na nieautoryzowanej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora (Mobile App Switch)
    const switchContainer = document.getElementById('ozcSwitchContainer');
    const btns = switchContainer.querySelectorAll('.rk-switch-btn');
    const resultBox = document.getElementById('ozcResultContent');
    
    // Elementy tekstowe do podmiany
    const dynTitle = document.getElementById('dynTitle');
    const dynDesc = document.getElementById('dynDesc');
    const dynLabel1 = document.getElementById('dynLabel1');
    const dynVal1 = document.getElementById('dynVal1');
    const dynLabel2 = document.getElementById('dynLabel2');
    const dynVal2 = document.getElementById('dynVal2');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Animacja przełącznika
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            const targetMode = this.getAttribute('data-target');
            switchContainer.setAttribute('data-mode', targetMode);

            // Aktualizacja treści i klas kontenera SVG
            if (targetMode === 'pro') {
                resultBox.className = 'rk-ozc-result-box mode-pro';
                
                dynTitle.textContent = "Cicha, energooszczędna praca na dekady";
                dynDesc.innerHTML = `Jedynie precyzyjne powiązanie strat ciepła każdego pomieszczenia z geometrią <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczych</a> gwarantuje bezawaryjną, cichą i maksymalnie energooszczędną pracę całego systemu przez dekady. Wykluczasz awarie jeszcze na papierze.`;
                
                dynLabel1.textContent = "Żywotność układu";
                dynVal1.textContent = "Maksymalna wydajność (COP)";
                dynVal1.style.color = "var(--rk-ozc-green)";
                
                dynLabel2.textContent = "Przepływy w pętlach";
                dynVal2.textContent = "Idealnie zbalansowane";
                dynVal2.style.color = "var(--rk-ozc-green)";

            } else {
                resultBox.className = 'rk-ozc-result-box mode-amateur';
                
                dynTitle.textContent = "Taktowanie i nieodwracalne błędy";
                dynDesc.innerHTML = `Rezygnacja z precyzyjnych obliczeń komputerowych na rzecz archaicznych przeliczników powierzchniowych to prosta droga do zakupu przewymiarowanej, stale taktującej <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>, generującej wysokie koszty eksploatacji i skazanej na szybką awarię. Wadliwy <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> czy błędne zbalansowanie hydrauliczne na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> są niemal niemożliwe do skorygowania po fakcie.`;
                
                dynLabel1.textContent = "Ryzyko dla sprężarki";
                dynVal1.textContent = "Krytyczne (Taktowanie)";
                dynVal1.style.color = "var(--rk-ozc-dark)";
                
                dynLabel2.textContent = "Regulacja hydrauliczna";
                dynVal2.textContent = "Niemożliwa do kalibracji";
                dynVal2.style.color = "var(--rk-ozc-dark)";
            }
        });
    });
});
</script>



<style>
:root {
    --rk-ozcdl-dark: #0f172a;
    --rk-ozcdl-brand: #ea580c; /* Ognisty pomarańcz nawiązujący do ciepła */
    --rk-ozcdl-brand-dark: #c2410c;
    --rk-ozcdl-bg: #f8fafc;
    --rk-ozcdl-border: #e2e8f0;
    --rk-ozcdl-text: #334155;
    --rk-ozcdl-white: #ffffff;
    --rk-ozcdl-accent: #38bdf8;
}

.rk-ozcdl-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-ozcdl-white);
    border-radius: 24px;
    border: 1px solid var(--rk-ozcdl-border);
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.15);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCI */
.rk-ozcdl-header {
    background: linear-gradient(135deg, var(--rk-ozcdl-dark) 0%, #311505 100%);
    padding: 45px 50px;
    color: var(--rk-ozcdl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    overflow: hidden;
}

.rk-ozcdl-header::after {
    content: '';
    position: absolute;
    bottom: -50px;
    right: -20px;
    width: 200px;
    height: 200px;
    background: radial-gradient(circle, rgba(234, 88, 12, 0.4) 0%, rgba(255,255,255,0) 70%);
    border-radius: 50%;
    pointer-events: none;
}

.rk-ozcdl-header-content { position: relative; z-index: 2; max-width: 65%; }

.rk-ozcdl-badge {
    display: inline-block;
    background: rgba(234, 88, 12, 0.2);
    border: 1px solid rgba(234, 88, 12, 0.3);
    color: #ffedd5;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-ozcdl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 12px 0;
    line-height: 1.3;
    letter-spacing: -0.5px;
}

.rk-ozcdl-header h2 span { color: #f97316; }

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

/* WIZUALIZACJA IKONY Z ANIMACJĄ CIEPŁA */
.rk-ozcdl-visual {
    position: relative;
    z-index: 2;
}

.rk-ozcdl-icon-svg {
    width: 90px;
    height: auto;
    filter: drop-shadow(0 15px 20px rgba(0,0,0,0.4));
    animation: ozcFloat 3.5s infinite ease-in-out alternate;
}

@keyframes ozcFloat {
    from { transform: translateY(0) rotate(0deg); }
    to { transform: translateY(-12px) rotate(3deg); }
}

/* GŁÓWNY WORKSPACE */
.rk-ozcdl-workspace {
    display: flex;
    padding: 40px 50px;
    gap: 40px;
    background: var(--rk-ozcdl-white);
}

.rk-ozcdl-preview-box {
    flex: 1;
    background: var(--rk-ozcdl-bg);
    border: 2px dashed #cbd5e1;
    border-radius: 16px;
    padding: 10px;
    position: relative;
    cursor: zoom-in;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-ozcdl-preview-box:hover {
    transform: scale(1.03);
    border-color: var(--rk-ozcdl-brand);
    border-style: solid;
    box-shadow: 0 20px 30px -10px rgba(234, 88, 12, 0.2);
}

.rk-ozcdl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
}

.rk-ozcdl-zoom-badge {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: rgba(15, 23, 42, 0.85);
    color: white;
    padding: 8px 16px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    backdrop-filter: blur(4px);
    transition: background 0.3s;
}

.rk-ozcdl-preview-box:hover .rk-ozcdl-zoom-badge {
    background: var(--rk-ozcdl-brand);
}

/* INTERAKTYWNY PANEL (PRAWA STRONA) */
.rk-ozcdl-info-side {
    flex: 1.2;
    display: flex;
    flex-direction: column;
}

/* Zakładki (Tabs) */
.rk-ozcdl-tabs {
    display: flex;
    background: #f1f5f9;
    border-radius: 12px;
    padding: 6px;
    margin-bottom: 25px;
}

.rk-ozcdl-tab {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 13.5px;
    font-weight: 800;
    color: var(--rk-ozcdl-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.2s ease;
}

.rk-ozcdl-tab.active {
    background: var(--rk-ozcdl-white);
    color: var(--rk-ozcdl-brand);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

.rk-ozcdl-panel {
    display: none;
    animation: fadeInTab 0.3s ease;
}

.rk-ozcdl-panel.active {
    display: block;
}

@keyframes fadeInTab {
    from { opacity: 0; transform: translateY(5px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-ozcdl-feature-list {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
}

.rk-ozcdl-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 18px;
    font-size: 14.5px;
    font-weight: 600;
    color: var(--rk-ozcdl-text);
    line-height: 1.5;
}

.rk-ozcdl-feature-item svg {
    width: 22px;
    height: 22px;
    color: var(--rk-ozcdl-brand);
    flex-shrink: 0;
    margin-top: 2px;
}

/* PRZYCISK POBIERANIA */
.rk-ozcdl-main-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-ozcdl-brand);
    color: var(--rk-ozcdl-white);
    text-decoration: none !important;
    padding: 18px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.3s;
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.4);
    margin-top: auto;
    border: 2px solid transparent;
}

.rk-ozcdl-main-btn:hover {
    background: var(--rk-ozcdl-brand-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 35px -5px rgba(234, 88, 12, 0.5);
    border-color: #fdba74;
}

.rk-ozcdl-main-btn svg { width: 24px; height: 24px; animation: bounceDl 2s infinite; }

@keyframes bounceDl {
    0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
    40% { transform: translateY(-4px); }
    60% { transform: translateY(-2px); }
}

/* STOPKA MODUŁU */
.rk-ozcdl-footer {
    padding: 20px 50px;
    background: var(--rk-ozcdl-bg);
    border-top: 1px solid var(--rk-ozcdl-border);
    font-size: 13px;
    color: var(--rk-ozcdl-text);
    text-align: center;
}

.rk-ozcdl-footer a {
    color: var(--rk-ozcdl-brand);
    font-weight: 800;
    text-decoration: none;
    transition: color 0.2s;
}

.rk-ozcdl-footer a:hover { text-decoration: underline; }

@media (max-width: 800px) {
    .rk-ozcdl-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-ozcdl-header-content { max-width: 100%; margin-bottom: 30px; }
    .rk-ozcdl-workspace { flex-direction: column; padding: 30px 25px; }
    .rk-ozcdl-preview-box { margin-bottom: 10px; }
    .rk-ozcdl-footer { padding: 20px 25px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#article-infografika",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/"
    },
    "headline": "Infografika: Projektowe Obciążenie Cieplne (OZC)",
    "description": "Pobierz kompleksową infografikę PDF omawiającą kluczowe parametry OZC, typowe wartości dla budynków i najczęstsze błędy instalatorów.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.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-16",
    "dateModified": "2026-05-16"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#dataset-infografika",
    "name": "Wskaźniki zapotrzebowania cieplnego budynków (W/m²)",
    "description": "Zestawienie średniego zapotrzebowania na moc (OZC) w zależności od standardu izolacji budynku oraz rozkład strat ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika OZC pdf",
      "pobierz OZC",
      "wskaźniki W/m2 dom",
      "straty ciepła schemat",
      "obliczanie zapotrzebowania na ciepło"
    ],
    "measurementTechnique": "Analiza normatywna zapotrzebowania mocy szczytowej w zależności od standardu termicznego budynku.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Typowe wartości OZC: Dom stary (90-150 W/m²), Modernizowany (50-80 W/m²), Energooszczędny (30-50 W/m²).",
        "Rozkład strat ciepła: Okna (35%), Ściany (26%), Dach (25%), Wentylacja (20%).",
        "Efekty poprawnie wykonanego OZC: Redukcja kosztów ogrzewania o 30% i odpowiedni dobór mocy pompy ciepła."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/#webapp-infografika",
    "name": "Centrum Pobierania Wiedzy: Infografika OZC",
    "description": "Interaktywny moduł edukacyjny udostępniający graficzne kompendium wiedzy o Projektowym Obciążeniu Cieplnym w formacie PDF.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ozcdl-container" id="app-ozc-dl">
    
    <div class="rk-ozcdl-header">
        <div class="rk-ozcdl-header-content">
            <div class="rk-ozcdl-badge">Darmowe Materiały Edukacyjne</div>
            <h2>Pobierz Kompletny <span>Poradnik OZC</span></h2>
            <p>Zabierz inżynierską wiedzę ze sobą. Kompendium parametrów cieplnych, wskaźniki W/m² oraz schemat ucieczki ciepła z budynku w jednym, czytelnym pliku PDF.</p>
        </div>
        <div class="rk-ozcdl-visual">
            <svg class="rk-ozcdl-icon-svg" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M75 15 L25 15 C19.5 15 15 19.5 15 25 L15 75 C15 80.5 19.5 85 25 85 L75 85 C80.5 85 85 80.5 85 75 L85 25 C85 19.5 80.5 15 75 15 Z" fill="#ea580c"/>
                <path d="M55 15 L85 45 L85 25 C85 19.5 80.5 15 75 15 Z" fill="#c2410c"/>
                <text x="50" y="65" fill="#ffffff" font-size="24" font-weight="900" font-family="sans-serif" text-anchor="middle">PDF</text>
                <path d="M50 25 C45 35 35 40 45 50 C55 60 65 35 50 25 Z" fill="#fbd38d" opacity="0.8"/>
            </svg>
        </div>
    </div>

    <div class="rk-ozcdl-workspace">
        
        <div class="rk-ozcdl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.webp" alt="Infografika Projektowe Obciążenie Cieplne OZC" class="rk-ozcdl-preview-img" loading="lazy">
            <div class="rk-ozcdl-zoom-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" style="vertical-align: middle; margin-right: 5px;"><circle cx="11" cy="11" r="8"></circle><line x1="21" y1="21" x2="16.65" y2="16.65"></line><line x1="11" y1="8" x2="11" y2="14"></line><line x1="8" y1="11" x2="14" y2="11"></line></svg>
                Powiększ podgląd
            </div>
        </div>

        <div class="rk-ozcdl-info-side">
            
            <div class="rk-ozcdl-tabs">
                <div class="rk-ozcdl-tab active" data-tab="tab-content">Co znajdziesz w środku?</div>
                <div class="rk-ozcdl-tab" data-tab="tab-why">Dlaczego warto?</div>
            </div>

            <div class="rk-ozcdl-panel active" id="tab-content">
                <ul class="rk-ozcdl-feature-list">
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Tabela wskaźników: Porównanie OZC (W/m²) dla starego i nowego budownictwa.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Schemat ucieczki ciepła: % podział strat przez dach, ściany, okna i wentylację.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Checklista inżyniera: 3 krytyczne błędy instalatorów, których musisz unikać.
                    </li>
                </ul>
            </div>

            <div class="rk-ozcdl-panel" id="tab-why">
                <ul class="rk-ozcdl-feature-list">
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"/></svg>
                        Oszczędność do 30% na kosztach ogrzewania dzięki poprawnemu doborowi pompy.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Zabezpieczenie przed kosztownym przewymiarowaniem urządzeń grzewczych.
                    </li>
                    <li class="rk-ozcdl-feature-item">
                        <svg fill="none" viewBox="0 0 24 24" stroke="currentColor" style="color: #10b981;"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>
                        Gwarancja optymalnego zrównoważenia hydraulicznego instalacji podłogowej.
                    </li>
                </ul>
            </div>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Projektowe-Obciazenie-Cieplne-OZC.pdf" class="rk-ozcdl-main-btn" target="_blank">
                <svg 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 INFOGRAFIKĘ (PDF)
            </a>
            
        </div>

    </div>

    <div class="rk-ozcdl-footer">
        © 2026 Projekt-Ogrzewania.pl | Autor merytoryczny: <strong>Robert Kucharski</strong>.<br>
        Udostępnianie pliku jest dozwolone wyłącznie z zachowaniem <a href="https://projekt-ogrzewania.pl/">linku do źródła</a>.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. OCHRONA DOMENOWA (DOMAIN LOCK)
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('app-ozc-dl');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #fff7ed; border: 2px solid #ea580c; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 900; color: #9a3412;">Zasoby Chronione</div>
                    <p style="color: #c2410c; font-size: 14px;">Ta infografika i dokumentacja OZC są własnością serwisu Projekt-Ogrzewania.pl.</p>
                </div>
            `;
        }
        return;
    }

    // 2. LOGIKA ZAKŁADEK (INTERAKTYWNOŚĆ)
    const tabs = document.querySelectorAll('.rk-ozcdl-tab');
    const panels = document.querySelectorAll('.rk-ozcdl-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', () => {
            // Usuń aktywną klasę ze wszystkich zakładek i paneli
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Dodaj aktywną klasę do klikniętej zakładki
            tab.classList.add('active');
            
            // Pokaż odpowiedni panel
            const targetId = tab.getAttribute('data-tab');
            const targetPanel = document.getElementById(targetId);
            if(targetPanel) {
                targetPanel.classList.add('active');
            }
        });
    });
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowe Obciążenie Cieplne (OZC).</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projekt ogrzewania podłogowego z pompą ciepła.</title>
		<link>https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sun, 08 Feb 2026 09:42:12 +0000</pubDate>
				<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie niskotemperaturowe]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki inwestora]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[budownictwo nowoczesne]]></category>
		<category><![CDATA[chłodzenie płaszczyznowe]]></category>
		<category><![CDATA[cop]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje hvac]]></category>
		<category><![CDATA[jastrych anhydrytowy]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[niskie parametry zasilania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3414</guid>

					<description><![CDATA[<p>Wybór systemu grzewczego to jedna z najważniejszych decyzji podczas budowy nowoczesnego domu. Samo urządzenie to jednak tylko połowa sukcesu. Aby instalacja była naprawdę energooszczędna, niezbędny jest rzetelny i precyzyjnie wykonany projekt ogrzewania podłogowego z pompą ciepła, który połączy fizykę budowli z charakterystyką pracy inwertera. W tym artykule wchodzimy głęboko w techniczne aspekty synergii systemów niskotemperaturowych. Analizujemy wpływ temperatury zasilania na współczynnik COP, wyjaśniamy znaczenie bezwładności jastrychu dla żywotności sprężarki oraz podpowiadamy, jak uniknąć błędów hydraulicznych, które mogą drastycznie podnieść Twoje rachunki za prąd. To obowiązkowa lektura dla każdego świadomego inwestora.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">Projekt ogrzewania podłogowego z pompą ciepła.</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: #1e293b;
    --rk-intro-primary: #06b6d4; /* Cyjan/Teal - idealny do tematów pomp ciepła */
    --rk-intro-primary-glow: rgba(6, 182, 212, 0.4);
    --rk-intro-success: #10b981;
    --rk-intro-danger: #f43f5e;
    --rk-intro-text: #e2e8f0;
    --rk-intro-muted: #94a3b8;
    --rk-intro-bg: #ffffff;
}

.rk-intro-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-intro-bg);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid #e2e8f0;
    overflow: hidden;
}

/* Sekcja Wstępu - Ciemny motyw dla kontrastu */
.rk-intro-hero {
    background: linear-gradient(145deg, var(--rk-intro-dark), var(--rk-intro-card));
    padding: 50px 45px;
    color: #ffffff;
    position: relative;
}

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.15);
    color: var(--rk-intro-primary);
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid rgba(6, 182, 212, 0.3);
}

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

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

.rk-intro-text-block {
    font-size: 17px;
    line-height: 1.8;
    color: var(--rk-intro-text);
}

.rk-intro-text-block p {
    margin: 0 0 15px 0;
}

.rk-intro-text-block strong {
    color: #ffffff;
    font-weight: 800;
}

.rk-intro-text-block a {
    color: var(--rk-intro-primary);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dashed var(--rk-intro-primary);
    transition: all 0.3s;
}

.rk-intro-text-block a:hover {
    color: #ffffff;
    border-bottom-color: #ffffff;
}

/* Interaktywny Dashboard */
.rk-intro-dashboard {
    padding: 40px 45px;
    background: #f8fafc;
}

.rk-intro-dash-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 30px;
    flex-wrap: wrap;
    gap: 20px;
}

.rk-intro-dash-title h3 {
    margin: 0 0 5px 0;
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-intro-dash-title p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-intro-muted);
}

/* Przełącznik (Toggle) */
.rk-toggle-wrapper {
    display: inline-flex;
    background: #e2e8f0;
    border-radius: 999px;
    padding: 4px;
    position: relative;
}

.rk-toggle-btn {
    padding: 10px 20px;
    border: none;
    background: transparent;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-intro-muted);
    cursor: pointer;
    border-radius: 999px;
    transition: all 0.3s;
    position: relative;
    z-index: 2;
}

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

.rk-toggle-pill {
    position: absolute;
    top: 4px;
    left: 4px;
    height: calc(100% - 8px);
    background: var(--rk-intro-danger);
    border-radius: 999px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
}

/* Wskaźniki Grid */
.rk-gauge-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
}

.rk-gauge-card {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 20px;
    padding: 25px 20px;
    text-align: center;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-gauge-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

.rk-gauge-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-intro-muted);
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-gauge-value {
    font-size: 36px;
    font-weight: 900;
    color: var(--rk-intro-dark);
    line-height: 1;
    margin-bottom: 10px;
    transition: color 0.4s;
}

/* SVG Animations */
.rk-svg-icon {
    width: 60px;
    height: 60px;
    margin: 0 auto 15px auto;
}

.svg-rotor {
    transform-origin: center;
}

/* State: Bad (No Project) */
.state-bad .svg-rotor {
    animation: spin-erratic 0.8s infinite;
    stroke: var(--rk-intro-danger);
}
.state-bad .val-cop { color: var(--rk-intro-danger); }
.state-bad .val-bill { color: var(--rk-intro-danger); }

/* State: Good (Project) */
.state-good .svg-rotor {
    animation: spin-smooth 3s linear infinite;
    stroke: var(--rk-intro-success);
}
.state-good .val-cop { color: var(--rk-intro-success); }
.state-good .val-bill { color: var(--rk-intro-success); }

@keyframes spin-smooth {
    100% { transform: rotate(360deg); }
}

@keyframes spin-erratic {
    0% { transform: rotate(0deg); }
    30% { transform: rotate(120deg); }
    50% { transform: rotate(100deg); }
    80% { transform: rotate(280deg); }
    100% { transform: rotate(360deg); }
}

/* Wskaźnik Łukowy (Gauge) SVG */
.gauge-bg {
    fill: none;
    stroke: #e2e8f0;
    stroke-width: 8;
    stroke-linecap: round;
}
.gauge-fill {
    fill: none;
    stroke-width: 8;
    stroke-linecap: round;
    transition: stroke-dasharray 0.8s cubic-bezier(0.4, 0, 0.2, 1), stroke 0.4s;
}

@media (max-width: 768px) {
    .rk-intro-hero, .rk-intro-dashboard { padding: 35px 25px; }
    .rk-gauge-grid { grid-template-columns: 1fr; gap: 15px; }
    .rk-intro-dash-header { flex-direction: column; align-items: flex-start; }
    .rk-toggle-wrapper { width: 100%; display: flex; }
    .rk-toggle-btn { flex: 1; text-align: center; padding: 12px 10px; font-size: 13px; }
    .rk-intro-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Wstęp – Synergia Pompy Ciepła i Ogrzewania Podłogowego",
    "description": "Kluczowy dokument techniczny definiujący synergię między źródłem ciepła a hydrauliką. Brak obliczeń to drastyczny spadek COP i taktowanie sprężarki.",
    "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-02-08",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-wstep",
    "name": "Wpływ braku projektu na parametry pracy pompy ciepła",
    "description": "Dane wyjściowe pokazujące spadek współczynnika efektywności (COP) oraz wzrost kosztów operacyjnych przy braku optymalizacji hydraulicznej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "współczynnik COP pompy ciepła",
      "taktowanie sprężarki",
      "zużycie prądu przez pompę ciepła",
      "optymalizacja hydrauliki instalacji",
      "projekt ogrzewania podłogowego z pompą ciepła"
    ],
    "measurementTechnique": "Porównanie deklarowanego wskaźnika COP pompy inwerterowej z rzeczywistym poborem prądu przy błędnie ułożonych pętlach i braku zładu wodnego (taktowanie).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalizacja (Z Projektem): COP 4.5 - 5.0, płynna praca inwertera.",
        "Błąd wykonawczy (Bez Projektu): Spadek COP do 3.0, rachunki wyższe o 35%, taktowanie niszczące sprężarkę."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-wstep",
    "name": "Symulator Taktowania i COP",
    "description": "Interaktywne narzędzie przełącznikowe (toggle) pokazujące wizualną różnicę w żywotności sprężarki i wartości COP w zależności od wykonania inżynieryjnego projektu hydraulicznego OZC.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    
    <div class="rk-intro-hero">
        <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>
            Wprowadzenie Techniczne
        </div>
        <h2 class="rk-intro-title">Osiągnij <span>Synergię</span> Źródła Ciepła i Podłogi</h2>
        
        <div class="rk-intro-text-block">
            <p>
                <strong>Projekt ogrzewania podłogowego z pompą ciepła</strong> to kluczowy dokument techniczny, który definiuje synergię między niskotemperaturowym źródłem ciepła a płaszczyznowym układem oddawania energii.
            </p>
            <p>
                Prawidłowo wykonany projekt optymalizuje hydraulikę instalacji, ustalając rozstaw rur, <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">przepływy masowe oraz nastawy zaworów</a>, co pozwala na osiągnięcie maksymalnego współczynnika <strong>COP na poziomie 4,5–5,0</strong>. 
            </p>
            <p>
                Ignorowanie <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń inżynieryjnych (OZC)</a> w <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">systemach z pompą ciepła</a> prowadzi do drastycznego wzrostu rachunków za prąd (nawet o <strong>35%</strong>) oraz przedwczesnego zużycia sprężarki wskutek tzw. <strong>taktowania</strong>.
            </p>
        </div>
    </div>

    <div class="rk-intro-dashboard state-bad" id="rkDashState">
        <div class="rk-intro-dash-header">
            <div class="rk-intro-dash-title">
                <h3>Symulacja Pracy Sprężarki</h3>
                <p>Zobacz, jak projekt wpływa na żywotność i efektywność systemu.</p>
            </div>
            
            <div class="rk-toggle-wrapper">
                <div class="rk-toggle-pill" id="rkTogglePill" style="width: 145px; transform: translateX(0);"></div>
                <button class="rk-toggle-btn active" data-state="bad" id="btnBad">Montaż &#8222;Na oko&#8221;</button>
                <button class="rk-toggle-btn" data-state="good" id="btnGood">Projekt OZC</button>
            </div>
        </div>

        <div class="rk-gauge-grid">
            <div class="rk-gauge-card">
                <div class="rk-gauge-title">Praca Sprężarki</div>
                <svg class="rk-svg-icon" viewBox="0 0 100 100">
                    <circle cx="50" cy="50" r="40" fill="none" stroke="#e2e8f0" stroke-width="6"/>
                    <path class="svg-rotor" d="M50 15 L50 45 M50 55 L50 85 M15 50 L45 50 M55 50 L85 50 M25 25 L43 43 M57 57 L75 75 M75 25 L57 43 M43 57 L25 75" stroke-width="6" stroke-linecap="round"/>
                    <circle cx="50" cy="50" r="10" fill="#cbd5e1" />
                </svg>
                <div class="rk-gauge-value" id="valStatus" style="font-size: 24px;">Taktowanie!</div>
                <div style="font-size: 13px; color: var(--rk-intro-muted);">Szybkie zużycie</div>
            </div>

            <div class="rk-gauge-card">
                <div class="rk-gauge-title">Efektywność (COP)</div>
                <svg class="rk-svg-icon" viewBox="0 0 100 80">
                    <path class="gauge-bg" d="M 10 70 A 40 40 0 0 1 90 70" />
                    <path id="svgCopGauge" class="gauge-fill" d="M 10 70 A 40 40 0 0 1 90 70" stroke="var(--rk-intro-danger)" stroke-dasharray="35 125"/>
                </svg>
                <div class="rk-gauge-value val-cop" id="valCop">3.1</div>
                <div style="font-size: 13px; color: var(--rk-intro-muted);">Zasilanie 45°C</div>
            </div>

            <div class="rk-gauge-card">
                <div class="rk-gauge-title">Koszty Prądu</div>
                <svg class="rk-svg-icon" viewBox="0 0 100 100" style="margin-bottom: 5px;">
                    <rect x="25" y="20" width="50" height="60" rx="8" fill="none" stroke="#cbd5e1" stroke-width="6"/>
                    <line x1="40" y1="40" x2="60" y2="40" stroke="#cbd5e1" stroke-width="6" stroke-linecap="round"/>
                    <line x1="40" y1="55" x2="60" y2="55" stroke="#cbd5e1" stroke-width="6" stroke-linecap="round"/>
                </svg>
                <div class="rk-gauge-value val-bill" id="valBill">+35%</div>
                <div style="font-size: 13px; color: var(--rk-intro-muted);">Straty finansowe</div>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków HX)
    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: 50px 30px; text-align: center; background: #0f172a; color: #f43f5e; border: 2px solid #e11d48; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 48px; margin-bottom: 20px;">🚫</div>
                    <div style="font-size: 22px; font-weight: 900; margin-bottom: 15px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.7;">
                        Ten komponent interaktywny oraz zintegrowane dane ustrukturyzowane (JSON-LD) stanowią własność intelektualną serwisu <strong>Projekt-Ogrzewania.pl</strong>. Skrypt został zablokowany.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Dashboardu / Przełącznika
    const dashContainer = document.getElementById('rkDashState');
    const pill = document.getElementById('rkTogglePill');
    const btnBad = document.getElementById('btnBad');
    const btnGood = document.getElementById('btnGood');
    
    // Zmienne DOM wartości
    const valStatus = document.getElementById('valStatus');
    const valCop = document.getElementById('valCop');
    const valBill = document.getElementById('valBill');
    const svgCopGauge = document.getElementById('svgCopGauge');

    // Funkcja zmieniająca stan
    function setState(state) {
        if (state === 'bad') {
            // Stylizacja przycisków
            btnBad.classList.add('active');
            btnGood.classList.remove('active');
            pill.style.transform = 'translateX(0)';
            pill.style.width = btnBad.offsetWidth + 'px';
            pill.style.backgroundColor = 'var(--rk-intro-danger)';
            
            // Stylizacja Kontenera
            dashContainer.className = 'rk-intro-dashboard state-bad';
            
            // Aktualizacja Wartości
            valStatus.innerText = 'Taktowanie!';
            valCop.innerText = '3.0';
            valCop.nextElementSibling.innerText = 'Zasilanie 40-45°C';
            valBill.innerText = '+35%';
            valBill.nextElementSibling.innerText = 'Straty finansowe';
            
            // Animacja Gauge COP (Mniej zielonego, mały obwód)
            // Obwód dla r=40 (półokrąg) to ok 125px
            svgCopGauge.setAttribute('stroke', 'var(--rk-intro-danger)');
            svgCopGauge.style.strokeDasharray = '35 125'; 

        } else {
            // Stylizacja przycisków
            btnGood.classList.add('active');
            btnBad.classList.remove('active');
            pill.style.transform = `translateX(${btnBad.offsetWidth}px)`;
            pill.style.width = btnGood.offsetWidth + 'px';
            pill.style.backgroundColor = 'var(--rk-intro-success)';
            
            // Stylizacja Kontenera
            dashContainer.className = 'rk-intro-dashboard state-good';
            
            // Aktualizacja Wartości
            valStatus.innerText = 'Płynna praca';
            valCop.innerText = '4.8';
            valCop.nextElementSibling.innerText = 'Zasilanie 30°C';
            valBill.innerText = 'Optymalne';
            valBill.nextElementSibling.innerText = 'Niskie rachunki';
            
            // Animacja Gauge COP (Pełny łuk)
            svgCopGauge.setAttribute('stroke', 'var(--rk-intro-success)');
            svgCopGauge.style.strokeDasharray = '120 125'; 
        }
    }

    // Event Listenery
    btnBad.addEventListener('click', () => setState('bad'));
    btnGood.addEventListener('click', () => setState('good'));

    // Fix rozmiaru pigułki na start
    setTimeout(() => {
        pill.style.width = btnBad.offsetWidth + 'px';
    }, 100);
    
    // Inicjalizacja domyślnego widoku (Ostrzegawczy)
    setState('bad');
});
</script>



<style>
:root {
    --rk-temp-dark: #111827;
    --rk-temp-card: #1f2937;
    --rk-temp-brand: #3b82f6;
    --rk-temp-optimal: #10b981; /* Zielony (Optymalnie) */
    --rk-temp-warning: #f59e0b; /* Pomarańczowy (Ostrzeżenie) */
    --rk-temp-danger: #ef4444; /* Czerwony (Błąd) */
    --rk-temp-text: #334155;
    --rk-temp-muted: #64748b;
    --rk-temp-bg: #f8fafc;
    --rk-temp-border: #cbd5e1;
}

.rk-temp-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 20px;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.1);
    border: 1px solid var(--rk-temp-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-temp-header {
    background: var(--rk-temp-dark);
    padding: 45px 50px 35px;
    color: #ffffff;
    position: relative;
    border-bottom: 5px solid var(--rk-temp-brand);
}

.rk-temp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.2);
    color: #60a5fa;
    padding: 8px 18px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(96, 165, 250, 0.3);
}

.rk-temp-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
    color: #ffffff;
}

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

/* Kontener Interaktywny */
.rk-temp-interactive {
    padding: 40px 50px;
    background: var(--rk-temp-bg);
}

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

/* Panel Kontrolny */
.rk-temp-control-panel {
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-temp-border);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-temp-slider-wrap {
    margin-bottom: 25px;
}

.rk-temp-slider-label {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
    font-weight: 800;
    font-size: 15px;
    color: var(--rk-temp-dark);
}

.rk-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 10px;
    border-radius: 5px;
    background: linear-gradient(to right, var(--rk-temp-optimal) 0%, var(--rk-temp-warning) 50%, var(--rk-temp-danger) 100%);
    outline: none;
    cursor: pointer;
}

.rk-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-temp-dark);
    cursor: grab;
    box-shadow: 0 4px 6px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

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

/* Wyniki (Odczyty) */
.rk-temp-readings {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-reading-box {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 15px 20px;
    background: var(--rk-temp-bg);
    border-radius: 12px;
    border: 1px solid var(--rk-temp-border);
}

.rk-reading-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-temp-muted);
    text-transform: uppercase;
}

.rk-reading-value {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-temp-dark);
    transition: color 0.3s;
}

/* Wizualizacja SVG (Termowizja podłogi) */
.rk-temp-visual {
    position: relative;
    width: 100%;
    height: 280px;
    background: var(--rk-temp-dark);
    border-radius: 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    border: 4px solid #334155;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
}

.rk-visual-title {
    position: absolute;
    top: 15px;
    left: 20px;
    color: rgba(255,255,255,0.6);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: 2px;
    text-transform: uppercase;
    z-index: 2;
}

.rk-svg-floor {
    width: 80%;
    height: auto;
    z-index: 1;
}

.svg-pipe {
    fill: none;
    stroke-width: 8;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: stroke 0.4s;
}

.svg-heat-glow {
    transition: stop-color 0.4s, stop-opacity 0.4s;
}

/* Tekst i Wyjaśnienie */
.rk-temp-content {
    padding: 0 50px 45px 50px;
    background: #ffffff;
}

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

.rk-temp-content p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-temp-text);
    margin-bottom: 20px;
}

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

.rk-temp-content a {
    color: var(--rk-temp-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(59, 130, 246, 0.2);
    transition: border-color 0.3s;
}

.rk-temp-content a:hover {
    border-color: var(--rk-temp-brand);
}

.rk-alert-box {
    background: #fef2f2;
    border-left: 4px solid var(--rk-temp-danger);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 25px;
}

.rk-alert-box p {
    margin: 0;
    color: #991b1b;
    font-size: 15px;
}

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-interactive, .rk-temp-content { padding: 30px 25px; }
    .rk-temp-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-temp-title { font-size: 22px; }
    .rk-reading-value { font-size: 18px; }
    .rk-temp-visual { height: 220px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-temperatura",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Maksymalna temperatura zasilania w projekcie ogrzewania podłogowego z pompą ciepła",
    "description": "Optymalna temperatura zasilania (Tz) dla pompy ciepła to 28-32°C zgodnie z PN-EN 1264. Poznaj skutki finansowe błędnego rozstawu rur wymuszającego pracę na 40°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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-temperatura",
    "name": "Korelacja: Rozstaw rur a temperatura zasilania i koszty eksploatacji",
    "description": "Zestawienie wykazujące, jak oszczędności na rurach (rozstaw 15 cm zamiast 10 cm) wymuszają wyższą temperaturę zasilania (Tz), obniżając sprawność pompy ciepła o 2,5-3% na każdy stopień.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna temperatura zasilania podłogówki",
      "norma PN-EN 1264 parametry",
      "rozstaw rur 10 czy 15 cm",
      "spadek COP pompy ciepła",
      "straty finansowe ogrzewanie podłogowe"
    ],
    "measurementTechnique": "Symulacja strat finansowych w okresie 20 lat w oparciu o spadek współczynnika COP wywołany koniecznością podniesienia krzywej grzewczej dla zrekompensowania małej powierzchni grzewczej (rzadki rozstaw rur).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Projekt zgodny z PN-EN 1264: Rozstaw 10 cm, Tz = 30°C, maksymalna sprawność sprężarki.",
        "Instalacja 'na oko': Rozstaw 15 cm, Tz = 40°C+, generuje od 25 000 do 40 000 PLN strat po 20 latach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-temperatura",
    "name": "Kalkulator Strat Termo-Ekonomicznych",
    "description": "Interaktywny suwak pozwalający użytkownikowi manipulować rozstawem rur (od 10 cm do 15 cm) i obserwować bezpośredni wzrost temperatury zasilania oraz skumulowaną stratę finansową w ciągu 20 lat pracy pompy ciepła.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "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="M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z"></path></svg>
            Termodynamika Układu
        </div>
        <h2 class="rk-temp-title">Maksymalna temperatura zasilania a <span>Koszty Ukryte</span></h2>
    </div>

    <div class="rk-temp-interactive">
        <div class="rk-temp-grid">
            
            <div class="rk-temp-control-panel">
                <div class="rk-temp-slider-wrap">
                    <div class="rk-temp-slider-label">
                        <span>Rozstaw Projektowy (10 cm)</span>
                        <span style="color: var(--rk-temp-danger);">Wykonawstwo &#8222;Na oko&#8221; (15 cm)</span>
                    </div>
                    <input type="range" min="0" max="100" value="0" class="rk-slider" id="rkTzSlider">
                </div>

                <div class="rk-temp-readings">
                    <div class="rk-reading-box">
                        <span class="rk-reading-title">Gęstość Rur (OZC)</span>
                        <span class="rk-reading-value" id="valSpacing">10 cm</span>
                    </div>
                    <div class="rk-reading-box">
                        <span class="rk-reading-title">Wymagane Zasilanie (Tz)</span>
                        <span class="rk-reading-value" id="valTz" style="color: var(--rk-temp-optimal);">30.0 °C</span>
                    </div>
                    <div class="rk-reading-box">
                        <span class="rk-reading-title">Strata po 20 latach</span>
                        <span class="rk-reading-value" id="valLoss" style="color: var(--rk-temp-optimal);">0 PLN</span>
                    </div>
                </div>
            </div>

            <div class="rk-temp-visual">
                <div class="rk-visual-title">Kamera Termowizyjna (Symulacja)</div>
                <svg class="rk-svg-floor" viewBox="0 0 200 120" preserveAspectRatio="xMidYMid meet">
                    <defs>
                        <linearGradient id="heatGradient" x1="0%" y1="0%" x2="0%" y2="100%">
                            <stop offset="0%" stop-color="#ef4444" stop-opacity="0.8" id="glowTop"/>
                            <stop offset="100%" stop-color="#ef4444" stop-opacity="0.1" id="glowBottom"/>
                        </linearGradient>
                    </defs>
                    <rect x="10" y="20" width="180" height="90" rx="4" fill="url(#heatGradient)" />
                    <rect x="10" y="20" width="180" height="90" rx="4" fill="none" stroke="#475569" stroke-width="2" />
                    
                    <path id="svgPipeHeat" class="svg-pipe" stroke="#ef4444" d="M 30 110 L 30 40 A 10 10 0 0 1 50 40 L 50 110 A 10 10 0 0 0 70 110 L 70 40 A 10 10 0 0 1 90 40 L 90 110 A 10 10 0 0 0 110 110 L 110 40 A 10 10 0 0 1 130 40 L 130 110 A 10 10 0 0 0 150 110 L 150 40 A 10 10 0 0 1 170 40 L 170 110" />
                </svg>
            </div>

        </div>
    </div>

    <div class="rk-temp-content">
        <h3>Jaka jest maksymalna temperatura zasilania w projekcie?</h3>
        <p>
            Maksymalna <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">temperatura zasilania podłogówki</a> w nowoczesnym projekcie z pompą ciepła nie powinna przekraczać <strong>35°C</strong> przy obliczeniowej temperaturze zewnętrznej (np. -20°C dla III strefy klimatycznej w Polsce). Zgodnie z <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normą PN-EN 1264</a>, optymalnym parametrem dla domów energooszczędnych jest zakres <strong>28–32°C</strong>, co gwarantuje najwyższą sprawność kompresora.
        </p>
        
        <p>
            Podniesienie temperatury zasilania o każde 1°C skutkuje drastycznym spadkiem sprawności pompy ciepła o około <strong>2,5–3%</strong>. Jeśli instalator „na oko” przyjmie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstaw rur</a> co 15 cm zamiast obliczeniowych 10 cm, wymusi to na pompie pracę na parametrze 40°C lub wyższym, aby fizycznie pokryć straty ciepła budynku.
        </p>

        <div class="rk-alert-box">
            <p><strong>Konsekwencje Inwestycyjne:</strong> W <a href="https://projekt-ogrzewania.pl/zwrot-z-inwestycji-w-ogrzewanie-podlogowe-realne-wyliczenia-na-2026-rok/">skali 20 lat eksploatacji</a>, brak precyzyjnego projektu generuje straty rzędu <strong>25 000 – 40 000 PLN</strong> wynikające wyłącznie z wyższych rachunków za energię. Fizyki nie da się oszukać rzadszym ułożeniem rury.</p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków HX)
    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; color: #ef4444; border: 2px solid #b91c1c; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Praw Autorskich</div>
                    <div style="font-size: 14px; color: #94a3b8; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Ten komponent oraz dane ustrukturyzowane (JSON-LD) należą do serwisu <strong>Projekt-Ogrzewania.pl</strong>. Wykryto nieautoryzowane użycie skryptu.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Suwaka i Obliczeń
    const slider = document.getElementById('rkTzSlider');
    const valSpacing = document.getElementById('valSpacing');
    const valTz = document.getElementById('valTz');
    const valLoss = document.getElementById('valLoss');
    
    const svgPipe = document.getElementById('svgPipeHeat');
    const glowTop = document.getElementById('glowTop');
    const glowBottom = document.getElementById('glowBottom');

    // Funkcja aktualizująca interfejs
    function updateCalc(val) {
        // Obliczenia interpolowane (0 -> 100)
        // Spacing: 10cm do 15cm
        const spacing = 10 + (val / 20);
        // Tz: 30°C do 42°C
        const tz = 30 + (val * 0.12);
        // Strata finansowa: od 0 do 35 000 PLN (zaokrąglone do setek)
        const loss = Math.round((val / 100) * 35000 / 100) * 100;

        // Aktualizacja DOM tekst
        valSpacing.innerText = spacing.toFixed(1) + ' cm';
        valTz.innerText = tz.toFixed(1) + ' °C';
        
        if (loss > 0) {
            valLoss.innerText = '-' + loss.toLocaleString('pl-PL') + ' PLN';
        } else {
            valLoss.innerText = '0 PLN';
        }

        // ==========================================
        // Logika Kolorów dla Tekstu (Aspekt Finansowy)
        // ==========================================
        let colorText = '';
        
        if (val <= 33) {
            colorText = 'var(--rk-temp-optimal)'; // Zielony
        } else if (val <= 66) {
            colorText = 'var(--rk-temp-warning)'; // Pomarańczowy
        } else {
            colorText = 'var(--rk-temp-danger)'; // Czerwony
        }

        // Aplikacja kolorów dla wartości tekstowych
        valTz.style.color = colorText;
        valLoss.style.color = colorText;

        // ==========================================
        // Logika Kolorów Kamery (Efektywność cieplna)
        // ==========================================
        // Czerwień blednąca wraz ze spadkiem efektywności (wzrostem rozstawu)
        // val rośnie od 0 do 100, opacity spada od 1.0 do ok. 0.15
        const heatOpacity = 1 - (val / 115); 
        const pipeColor = `rgba(239, 68, 68, ${heatOpacity})`; // Używa czerwieni #ef4444
        
        // Aplikacja blaknącej czerwieni do kamery termowizyjnej
        svgPipe.setAttribute('stroke', pipeColor);
        glowTop.setAttribute('stop-color', '#ef4444');
        glowTop.setAttribute('stop-opacity', heatOpacity * 0.8); // Zmiana intensywności poświaty
        glowBottom.setAttribute('stop-color', '#ef4444');
        glowBottom.setAttribute('stop-opacity', heatOpacity * 0.1);
        
        // Zmiana gęstości rur na obrazku - ciągła linia dla wszystkich stanów
        if (val > 66) {
            svgPipe.style.strokeDasharray = 'none';
        } else if (val > 33) {
            svgPipe.style.strokeDasharray = 'none';
        } else {
            svgPipe.style.strokeDasharray = 'none';
        }
    }

    // Event Listener dla suwaka
    slider.addEventListener('input', function(e) {
        updateCalc(e.target.value);
    });

    // Inicjalizacja (Stan startowy)
    updateCalc(0);
});
</script>



<style>
:root {
    --rk-ozc-dark: #0f172a;
    --rk-ozc-card: #1e293b;
    --rk-ozc-brand: #f59e0b;
    --rk-ozc-brand-light: #fef3c7;
    --rk-ozc-blue: #3b82f6;
    --rk-ozc-text: #334155;
    --rk-ozc-muted: #64748b;
    --rk-ozc-bg: #ffffff;
    --rk-ozc-border: #e2e8f0;
}

.rk-ozc-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-ozc-bg);
    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;
}

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

.rk-ozc-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: 1.5px;
    margin-bottom: 20px;
    border: 1px solid rgba(245, 158, 11, 0.4);
}

.rk-ozc-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
    color: #ffffff;
}

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

/* Interaktywny Symulator OZC */
.rk-ozc-interactive {
    padding: 40px 45px;
    background: #f8fafc;
}

.rk-ozc-tabs {
    display: flex;
    gap: 15px;
    margin-bottom: 30px;
    background: #e2e8f0;
    padding: 6px;
    border-radius: 16px;
}

.rk-ozc-tab {
    flex: 1;
    padding: 16px 20px;
    background: transparent;
    border: none;
    border-radius: 12px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-ozc-muted);
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

.rk-ozc-tab:hover {
    color: var(--rk-ozc-dark);
}

.rk-ozc-tab.active {
    background: #ffffff;
    color: var(--rk-ozc-brand);
    box-shadow: 0 4px 10px rgba(0,0,0,0.05);
}

/* Grid Wyników i Wizualizacji */
.rk-ozc-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 30px;
    align-items: stretch;
}

.rk-ozc-visual {
    background: var(--rk-ozc-dark);
    border-radius: 20px;
    padding: 25px;
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
    border: 4px solid #334155;
    min-height: 280px;
}

.rk-ozc-svg-room {
    width: 100%;
    height: 100%;
    max-height: 220px;
}

/* Elementy SVG */
.ozc-pipe {
    fill: none;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: stroke 0.5s, opacity 0.5s;
}

.ozc-window {
    fill: rgba(59, 130, 246, 0.2);
    stroke: var(--rk-ozc-blue);
    stroke-width: 4;
    transition: opacity 0.5s;
}

.ozc-bathtub {
    fill: none;
    stroke: rgba(255,255,255,0.4);
    stroke-width: 3;
    stroke-dasharray: 6 4;
    transition: opacity 0.5s;
}

/* Karta z danymi (OZC) */
.rk-ozc-data {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

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

.rk-ozc-card.highlight {
    border-left: 6px solid var(--rk-ozc-brand);
}

.rk-ozc-card-title {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-ozc-muted);
    letter-spacing: 1px;
    margin-bottom: 8px;
}

.rk-ozc-card-value {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-ozc-dark);
    line-height: 1;
    display: flex;
    align-items: baseline;
    gap: 5px;
    transition: color 0.3s;
}

.rk-ozc-card-unit {
    font-size: 16px;
    color: var(--rk-ozc-muted);
}

/* Treść Merytoryczna */
.rk-ozc-content {
    padding: 45px 50px;
    background: #ffffff;
}

.rk-ozc-content p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-ozc-text);
    margin: 0 0 20px 0;
}

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

.rk-ozc-content a {
    color: var(--rk-ozc-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(245, 158, 11, 0.4);
    transition: all 0.3s;
}

.rk-ozc-content a:hover {
    color: #d97706;
    border-bottom-style: solid;
}

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

.rk-ozc-h3::before {
    content: '';
    display: block;
    width: 24px;
    height: 4px;
    background: var(--rk-ozc-brand);
    border-radius: 2px;
}

/* Mocne CTA z animacją SVG */
.rk-ozc-cta-box {
    padding: 40px 50px;
    background: var(--rk-ozc-brand-light);
    text-align: center;
    border-top: 1px solid rgba(245, 158, 11, 0.2);
}

.rk-ozc-cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 15px;
    background: var(--rk-ozc-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(245, 158, 11, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border: 2px solid transparent;
}

.rk-ozc-cta-btn:hover {
    transform: translateY(-4px);
    background: #d97706;
    box-shadow: 0 20px 35px -5px rgba(245, 158, 11, 0.5);
    border-color: #fcd34d;
}

@keyframes ctaPulse {
    0% { stroke-opacity: 1; transform: scale(1); }
    50% { stroke-opacity: 0.4; transform: scale(1.1); }
    100% { stroke-opacity: 1; transform: scale(1); }
}

@keyframes ctaMove {
    0%, 100% { transform: translateX(0); }
    50% { transform: translateX(4px); }
}

.cta-anim-circle {
    animation: ctaPulse 2s infinite ease-in-out;
    transform-origin: center;
}

.cta-anim-arrow {
    animation: ctaMove 2s infinite ease-in-out;
}

@media (max-width: 768px) {
    .rk-ozc-header, .rk-ozc-interactive, .rk-ozc-content, .rk-ozc-cta-box { padding: 30px 25px; }
    .rk-ozc-tabs { flex-direction: column; }
    .rk-ozc-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-ozc-title { font-size: 24px; }
    .rk-ozc-card-value { font-size: 28px; }
    .rk-ozc-cta-btn { width: 100%; padding: 18px 20px; font-size: 15px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-ozc",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Dlaczego obliczenie OZC to fundament projektu instalacji podłogowej?",
    "description": "OZC (Projektowe Obciążenie Cieplne) to jedyna precyzyjna metoda doboru rozstawu rur w podłogówce i mocy pompy ciepła wg normy PN-EN 12831.",
    "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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-ozc",
    "name": "Porównanie Zapotrzebowania Cieplnego (OZC) dla typowych pomieszczeń",
    "description": "Analiza różnic w zapotrzebowaniu na moc grzewczą (W/m²) pomiędzy strefami o wysokich zyskach słonecznych a pomieszczeniami o podwyższonej temperaturze wymaganej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenia OZC podłogówka",
      "zapotrzebowanie na moc cieplną",
      "rozstaw rur w łazience",
      "strefa brzegowa podłogówka",
      "projekt ogrzewania podłogowego PN-EN 12831"
    ],
    "measurementTechnique": "Analiza porównawcza zapotrzebowania cieplnego (W/m²) dla różnych typów pomieszczeń z uwzględnieniem strat przez przegrody i zysków słonecznych w celu zrównoważenia hydraulicznego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Salon z dużymi przeszkleniami: Zapotrzebowanie ok. 30 W/m², temperatura 20°C, rozstaw rur 10-12.5 cm (zagęszczenie pod oknami do 5-7.5 cm).",
        "Łazienka: Zapotrzebowanie ok. 80 W/m², temperatura 24°C, rozstaw rur 10 cm, powierzchnia grzejna ograniczona armaturą."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-ozc",
    "name": "Symulator Zapotrzebowania Cieplnego (OZC) dla Pomieszczeń",
    "description": "Interaktywny panel przełączający schematy hydrauliczne (rozstaw rur) pomiędzy salonem a łazienką w oparciu o wyniki Projektowego Obciążenia Cieplnego.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-ozc-container" id="rk-ozc-app">
    
    <div class="rk-ozc-header">
        <div class="rk-ozc-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>
            Fundament Hydrauliki
        </div>
        <h2 class="rk-ozc-title">Dlaczego obliczenie <span>OZC</span> to absolutna podstawa projektu?</h2>
    </div>

    <div class="rk-ozc-interactive">
        
        <div class="rk-ozc-tabs">
            <button class="rk-ozc-tab active" data-room="salon">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Salon z oknami HS (20°C)
            </button>
            <button class="rk-ozc-tab" data-room="lazienka">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 13v-2a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v2"></path><path d="M3 13v5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5"></path><path d="M6 20v2"></path><path d="M18 20v2"></path><path d="M8 9V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v4"></path></svg>
                Łazienka (24°C)
            </button>
        </div>

        <div class="rk-ozc-grid">
            <div class="rk-ozc-visual">
                <svg class="rk-ozc-svg-room" viewBox="0 0 300 200" preserveAspectRatio="xMidYMid meet">
                    <rect x="10" y="10" width="280" height="180" fill="none" stroke="#475569" stroke-width="4" rx="8" />
                    
                    <rect id="svgWindow" class="ozc-window" x="40" y="5" width="220" height="10" rx="2" />
                    
                    <rect id="svgBathtub" class="ozc-bathtub" x="180" y="15" width="100" height="70" rx="10" style="opacity: 0;" />
                    
                    <path id="pipeSalon" class="ozc-pipe" stroke="#f59e0b" stroke-width="6" d="M 20 180 L 20 20 A 10 10 0 0 1 40 20 L 40 180 A 10 10 0 0 0 60 180 L 60 20 A 10 10 0 0 1 80 20 L 80 180 A 10 10 0 0 0 100 180 L 100 20 A 10 10 0 0 1 120 20 L 120 180 A 10 10 0 0 0 140 180 L 140 20 A 10 10 0 0 1 160 20 L 160 180 A 10 10 0 0 0 180 180 L 180 20 A 10 10 0 0 1 200 20 L 200 180 A 10 10 0 0 0 220 180 L 220 20 A 10 10 0 0 1 240 20 L 240 180 A 10 10 0 0 0 260 180 L 260 20 A 10 10 0 0 1 280 20 L 280 180" />
                    
                    <path id="pipeLazienka" class="ozc-pipe" stroke="#ef4444" stroke-width="6" style="opacity: 0;" d="M 20 180 L 20 20 A 10 10 0 0 1 40 20 L 40 180 A 10 10 0 0 0 60 180 L 60 20 A 10 10 0 0 1 80 20 L 80 180 A 10 10 0 0 0 100 180 L 100 20 A 10 10 0 0 1 120 20 L 120 180 A 10 10 0 0 0 140 180 L 140 20 A 10 10 0 0 1 160 20 L 160 180 A 10 10 0 0 0 180 180 L 180 100 A 10 10 0 0 1 200 100 L 200 180 A 10 10 0 0 0 220 180 L 220 100 A 10 10 0 0 1 240 100 L 240 180 A 10 10 0 0 0 260 180 L 260 100 A 10 10 0 0 1 280 100 L 280 180" />
                </svg>
            </div>

            <div class="rk-ozc-data">
                <div class="rk-ozc-card highlight">
                    <div class="rk-ozc-card-title">Zapotrzebowanie na moc</div>
                    <div class="rk-ozc-card-value" id="valPower">
                        30 <span class="rk-ozc-card-unit">W/m²</span>
                    </div>
                </div>
                <div class="rk-ozc-card">
                    <div class="rk-ozc-card-title">Wymagana Temperatura</div>
                    <div class="rk-ozc-card-value" id="valTemp">
                        20 <span class="rk-ozc-card-unit">°C</span>
                    </div>
                </div>
                <div class="rk-ozc-card">
                    <div class="rk-ozc-card-title">Rozstaw Rur PEX/PERT</div>
                    <div class="rk-ozc-card-value" id="valSpacing" style="font-size: 22px;">
                        10–12.5 cm (Brzeg: 5 cm)
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-ozc-content">
        <p>
            <strong>OZC (Projektowe Obciążenie Cieplne)</strong> to jedyna metoda precyzyjnego określenia zapotrzebowania na moc grzewczą każdego pomieszczenia z osobna, wyrażona w W/m². Zgodnie z <a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/">normą PN-EN 12831</a>, projektant musi uwzględnić przenikanie ciepła przez przegrody, mostki termiczne oraz straty na wentylację, aby dobrać odpowiednią gęstość rur w każdej strefie z uwzględnieniem <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansu cieplnego budynku</a>.
        </p>
        
        <p>
            Bez OZC projekt ogrzewania podłogowego jest jedynie ryzykownym zgadywaniem. W łazience, gdzie oczekujemy komfortowych <strong>24°C</strong>, a powierzchnia grzejna jest drastycznie ograniczona przez wannę czy duży brodzik, zapotrzebowanie może wynosić nawet <strong>80 W/m²</strong>. Dla kontrastu, w nowoczesnym salonie z dużymi przeszkleniami generującymi zyski słoneczne, to zapotrzebowanie może wynosić zaledwie <strong>30 W/m²</strong>. Projektant musi zrównoważyć te różnice hydraulicznie, dobierając odpowiednie długości pętli i przepływy na rotametrach.
        </p>

        <h3 class="rk-ozc-h3">Jak to wpływa na projekt wykonawczy?</h3>
        <p>
            Wynik OZC bezpośrednio determinuje wybór mocy pompy ciepła (np. zakup urządzenia <strong>5 kW</strong> zamiast przewymiarowanego <strong>7 kW</strong>) oraz <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">gęstość ułożenia rur</a>. Przykładowo, w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefach podokiennych (strefy brzegowe)</a> projektant planuje gęsty rozstaw co <strong>5–7,5 cm</strong>, aby zniwelować chłód napływający od szyb, podczas gdy w centrum pokoju wystarczy standardowe <strong>10–12,5 cm</strong>.
        </p>
    </div>

    <div class="rk-ozc-cta-box">
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-ozc-cta-btn">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="26" height="26" 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" class="cta-anim-circle"></circle>
                <polyline points="12 16 16 12 12 8" class="cta-anim-arrow"></polyline>
                <line x1="8" y1="12" x2="16" y2="12" class="cta-anim-arrow"></line>
            </svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków HX)
    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-ozc-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #ef4444; border: 2px solid #b91c1c; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Licencji Kodu</div>
                    <div style="font-size: 14px; color: #94a3b8; max-width: 500px; margin: 0 auto; line-height: 1.6;">
                        Ten komponent oraz załączone dane ustrukturyzowane JSON-LD są własnością serwisu <strong>Projekt-Ogrzewania.pl</strong>. Uruchamianie na nieautoryzowanej domenie zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Zakładek (OZC Symulator)
    const tabs = document.querySelectorAll('.rk-ozc-tab');
    const valPower = document.getElementById('valPower');
    const valTemp = document.getElementById('valTemp');
    const valSpacing = document.getElementById('valSpacing');
    
    // Elementy SVG
    const svgWindow = document.getElementById('svgWindow');
    const svgBathtub = document.getElementById('svgBathtub');
    const pipeSalon = document.getElementById('pipeSalon');
    const pipeLazienka = document.getElementById('pipeLazienka');

    function switchRoom(roomType) {
        // Reset aktywnych zakładek
        tabs.forEach(t => t.classList.remove('active'));
        document.querySelector(`.rk-ozc-tab[data-room="${roomType}"]`).classList.add('active');

        if (roomType === 'salon') {
            // Aktualizacja Danych
            valPower.innerHTML = '30 <span class="rk-ozc-card-unit">W/m²</span>';
            valTemp.innerHTML = '20 <span class="rk-ozc-card-unit">°C</span>';
            valSpacing.innerText = '10–12.5 cm (Brzeg: 5 cm)';
            
            valPower.style.color = '#f59e0b'; // Kolor umiarkowany
            
            // Animacja SVG
            svgWindow.style.opacity = '1';
            svgBathtub.style.opacity = '0';
            pipeSalon.style.opacity = '1';
            pipeLazienka.style.opacity = '0';
            
        } else if (roomType === 'lazienka') {
            // Aktualizacja Danych
            valPower.innerHTML = '80 <span class="rk-ozc-card-unit">W/m²</span>';
            valTemp.innerHTML = '24 <span class="rk-ozc-card-unit">°C</span>';
            valSpacing.innerText = '10 cm (Mniej powierzchni)';
            
            valPower.style.color = '#ef4444'; // Kolor wysoki/czerwony
            
            // Animacja SVG
            svgWindow.style.opacity = '0';
            svgBathtub.style.opacity = '1';
            pipeSalon.style.opacity = '0';
            pipeLazienka.style.opacity = '1';
        }
    }

    // Event Listenery
    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            switchRoom(this.getAttribute('data-room'));
        });
    });
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-brand: #0284c7; /* Intensywny niebieski - hydraulika */
    --rk-flow-accent: #f59e0b; /* Pomarańczowy - wskaźnik przepływu */
    --rk-flow-light: #f0f9ff;
    --rk-flow-success: #10b981;
    --rk-flow-text: #334155;
    --rk-flow-muted: #64748b;
    --rk-flow-border: #e2e8f0;
}

.rk-flow-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(2, 132, 199, 0.12);
    border: 1px solid var(--rk-flow-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-flow-header {
    background: var(--rk-flow-dark);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-flow-brand);
}

.rk-flow-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(2, 132, 199, 0.2);
    color: #38bdf8;
    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(56, 189, 248, 0.3);
}

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

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

/* Interaktywny Kalkulator Przepływu */
.rk-flow-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-flow-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 40px;
    align-items: center;
}

/* Panel Kontrolny */
.rk-flow-controls {
    background: #ffffff;
    padding: 30px;
    border-radius: 20px;
    border: 1px solid var(--rk-flow-border);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-control-group {
    margin-bottom: 25px;
}

.rk-label-wrap {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
    font-weight: 800;
    font-size: 14px;
    color: var(--rk-flow-dark);
}

.rk-flow-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #e2e8f0;
    outline: none;
}

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

/* Wizualizacja Rotametru */
.rk-flow-visual {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--rk-flow-dark);
    border-radius: 20px;
    padding: 30px;
    min-height: 350px;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.4);
}

.rotameter-svg {
    width: 120px;
    height: auto;
}

.rotameter-float {
    transition: transform 0.5s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-flow-result-text {
    margin-top: 25px;
    text-align: center;
    color: #ffffff;
}

.rk-flow-val-large {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-flow-brand);
}

/* Sekcja merytoryczna */
.rk-flow-content {
    padding: 45px 50px;
    background: #ffffff;
}

.rk-flow-content p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-flow-text);
    margin-bottom: 20px;
}

.rk-flow-formula {
    background: var(--rk-flow-light);
    padding: 25px;
    border-radius: 16px;
    border-left: 5px solid var(--rk-flow-brand);
    margin: 30px 0;
    font-family: 'Courier New', monospace;
}

.rk-flow-step {
    margin-bottom: 10px;
    display: flex;
    gap: 15px;
}

.rk-step-num {
    background: var(--rk-flow-brand);
    color: #ffffff;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 900;
    flex-shrink: 0;
}

.rk-flow-cta {
    padding: 40px 50px;
    background: #f8fafc;
    text-align: center;
    border-top: 1px solid var(--rk-flow-border);
}

.rk-btn-flow {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-flow-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    transition: all 0.3s;
    box-shadow: 0 10px 20px rgba(2, 132, 199, 0.3);
}

.rk-btn-flow:hover {
    transform: translateY(-3px);
    background: #0369a1;
}

@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-interactive, .rk-flow-content { padding: 30px 25px; }
    .rk-flow-grid { grid-template-columns: 1fr; }
    .rk-flow-title { font-size: 22px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Jak obliczyć wymagany przepływ masowy w pętlach podłogówki?",
    "description": "Przewodnik inżynieryjny dotyczący obliczania strumienia wody (qm) w instalacji niskotemperaturowej. Poznaj wzór i algorytm nastaw rotametró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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-przeplyw",
    "name": "Tabela korelacji mocy grzewczej i przepływu masowego",
    "description": "Zestawienie obliczonych wartości przepływu (l/h i l/min) dla typowych obciążeń cieplnych pętli ogrzewania podłogowego przy ΔT=5K.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "przepływ masowy podłogówka wzór",
      "ustawienie rotametru l/min",
      "delta T pompa ciepła 5K",
      "obliczanie hydrauliki ogrzewania",
      "projektowanie pętli grzewczych"
    ],
    "measurementTechnique": "Algorytm obliczeniowy oparty na stałej fizycznej ciepła właściwego wody (1.163 Wh/kgK) i bilansie mocy cieplnej pętli.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Moc 1000W przy ΔT=5K: Przepływ 172 l/h (2.8 l/min)",
        "Moc 1500W przy ΔT=5K: Przepływ 258 l/h (4.3 l/min)",
        "Moc 2000W przy ΔT=5K: Przepływ 344 l/h (5.7 l/min) - Przekroczenie zakresu standardowego rotametru!"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-przeplyw",
    "name": "Kalkulator Nastaw Rotametrów Podłogówki",
    "description": "Interaktywny symulator rotametru przeliczający moc cieplną pętli na wymaganą nastawę w litrach na minutę.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "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="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>
            Hydraulika Projektowa
        </div>
        <h2 class="rk-flow-title">Jak obliczyć wymagany <span>przepływ masowy</span> w pętlach?</h2>
    </div>

    <div class="rk-flow-interactive">
        <div class="rk-flow-grid">
            
            <div class="rk-flow-controls">
                <div class="rk-control-group">
                    <div class="rk-label-wrap">
                        <span>Moc cieplna pętli (Q)</span>
                        <span id="valPowerLabel" style="color: var(--rk-flow-brand);">1400 W</span>
                    </div>
                    <input type="range" min="200" max="2500" step="50" value="1400" class="rk-flow-slider" id="inputPower">
                </div>

                <div class="rk-control-group">
                    <div class="rk-label-wrap">
                        <span>Delta T (&Delta;T)</span>
                        <span id="valDeltaLabel" style="color: var(--rk-flow-brand);">5 K</span>
                    </div>
                    <input type="range" min="3" max="10" step="1" value="5" class="rk-flow-slider" id="inputDelta">
                </div>

                <div style="background: var(--rk-flow-light); padding: 15px; border-radius: 12px; font-size: 13px; color: var(--rk-flow-muted);">
                    <strong>Wskazówka:</strong> Standardowy <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametr</a> ma skalę do 5 l/min. Jeśli wynik przekracza tę wartość, pętla musi zostać podzielona na dwie.
                </div>
            </div>

            <div class="rk-flow-visual">
                <svg class="rotameter-svg" viewBox="0 0 100 300">
                    <rect x="30" y="20" width="40" height="240" rx="5" fill="rgba(255,255,255,0.1)" stroke="#ffffff" stroke-width="2"/>
                    <line x1="30" y1="210" x2="45" y2="210" stroke="#ffffff" stroke-width="1"/> <text x="15" y="215" fill="#ffffff" font-size="10">1</text>
                    <line x1="30" y1="170" x2="45" y2="170" stroke="#ffffff" stroke-width="1"/> <text x="15" y="175" fill="#ffffff" font-size="10">2</text>
                    <line x1="30" y1="130" x2="45" y2="130" stroke="#ffffff" stroke-width="1"/> <text x="15" y="135" fill="#ffffff" font-size="10">3</text>
                    <line x1="30" y1="90" x2="45" y2="90" stroke="#ffffff" stroke-width="1"/> <text x="15" y="95" fill="#ffffff" font-size="10">4</text>
                    <line x1="30" y1="50" x2="45" y2="50" stroke="#ffffff" stroke-width="1"/> <text x="15" y="55" fill="#ffffff" font-size="10">5</text>
                    
                    <rect id="svgWater" x="32" y="258" width="36" height="0" fill="var(--rk-flow-brand)" fill-opacity="0.3"/>
                    
                    <g id="svgFloat" class="rotameter-float" transform="translate(0, 210)">
                        <rect x="35" y="0" width="30" height="15" rx="2" fill="var(--rk-flow-accent)"/>
                        <circle cx="50" cy="7.5" r="3" fill="#ffffff"/>
                    </g>
                </svg>
                <div class="rk-flow-result-text">
                    <div style="font-size: 14px; font-weight: 800; text-transform: uppercase; margin-bottom: 5px;">Wymagany Przepływ:</div>
                    <div class="rk-flow-val-large" id="valResultFlow">4.0 l/min</div>
                    <div id="valResultLh" style="font-size: 16px; opacity: 0.8;">240.7 l/h</div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-flow-content">
        <p>
            Wymagany przepływ masowy (q<sub>m</sub>) obliczamy na podstawie zapotrzebowania na moc cieplną pomieszczenia (Q) wyliczoną w <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">OZC</a> oraz założonej różnicy temperatur (&Delta;T). Dla systemów z rewersyjną <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/">pompą ciepła</a> delta ta wynosi zazwyczaj <strong>5 K</strong>. 
        </p>
        
        <p>
            Zapewnienie odpowiedniego przepływu jest krytyczne, aby pompa mogła oddać wyprodukowane ciepło do masy betonu bez nagłego wzrostu temperatury powrotu, co skutkowałoby podnoszeniem ciśnienia w układzie chłodniczym i wyłączeniem sprężarki.
        </p>

        <div class="rk-flow-formula">
            <strong style="font-family: 'Inter', sans-serif;">Wzór Inżynierski:</strong><br>
            <span style="font-size: 18px; line-height: 2;">q<sub>m</sub> = Q / (c<sub>w</sub> &middot; &Delta;T)</span>
        </div>

        <div style="display: flex; flex-direction: column; gap: 10px;">
            <div class="rk-flow-step">
                <div class="rk-step-num">1</div>
                <div>Wyznacz moc pętli Q (np. <strong>1400 W</strong> dla salonu 40 m<sup>2</sup>).</div>
            </div>
            <div class="rk-flow-step">
                <div class="rk-step-num">2</div>
                <div>Przyjmij stałą c<sub>w</sub> = <strong>1.163 Wh/(kg&middot;K)</strong> dla wody.</div>
            </div>
            <div class="rk-flow-step">
                <div class="rk-step-num">3</div>
                <div>Oblicz przepływ godzinowy: q<sub>m</sub> = 1400 / (1.163 &middot; 5) &approx; <strong>240.7 l/h</strong>.</div>
            </div>
            <div class="rk-flow-step">
                <div class="rk-step-num">4</div>
                <div>Przelicz na minuty: 240.7 / 60 &approx; <strong>4.0 l/min</strong> – to wartość, którą ustawisz na rotametrze.</div>
            </div>
        </div>

        <p style="margin-top: 25px;">
            Jeśli projektant zaplanuje zbyt długą pętlę (np. powyżej <strong>100-120 m</strong>), opory hydrauliczne wzrosną do poziomu, przy którym nawet nowoczesna <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> nie będzie w stanie przepchnąć wymaganej ilości wody, co skutkować będzie trwałym niedogrzaniem strefy.
        </p>
    </div>

    <div class="rk-flow-cta">
        <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/" class="rk-btn-flow">
            URUCHOM KOMPLEKSOWY KALKULATOR PRZEPŁYWÓW
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></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)) {
        document.getElementById('rk-flow-app').innerHTML = '<div style="padding:40px; text-align:center; color:red; font-weight:bold;">BŁĄD LICENCJI: Kod należy do Projekt-Ogrzewania.pl</div>';
        return;
    }

    // 2. Logika Kalkulatora
    const inPower = document.getElementById('inputPower');
    const inDelta = document.getElementById('inputDelta');
    const labelPower = document.getElementById('valPowerLabel');
    const labelDelta = document.getElementById('valDeltaLabel');
    const resFlowMin = document.getElementById('valResultFlow');
    const resFlowH = document.getElementById('valResultLh');
    const svgFloat = document.getElementById('svgFloat');
    const svgWater = document.getElementById('svgWater');

    function updateFlow() {
        const Q = parseFloat(inPower.value);
        const DT = parseFloat(inDelta.value);
        const cw = 1.163;

        // Obliczenia
        const qmH = Q / (cw * DT);
        const qmMin = qmH / 60;

        // Aktualizacja etykiet
        labelPower.innerText = Q + ' W';
        labelDelta.innerText = DT + ' K';
        resFlowMin.innerText = qmMin.toFixed(1) + ' l/min';
        resFlowH.innerText = qmH.toFixed(1) + ' l/h';

        // Kolorowanie przy przekroczeniu skali
        if (qmMin > 5) {
            resFlowMin.style.color = '#ef4444';
        } else {
            resFlowMin.style.color = 'var(--rk-flow-brand)';
        }

        // Animacja Rotametru
        // 0 l/min = y: 250 (dół)
        // 5 l/min = y: 50 (góra)
        // Zakres 200px na 5 jednostek = 40px na jednostkę
        let floatY = 250 - (qmMin * 40);
        if (floatY < 30) floatY = 30; // Limit górny
        if (floatY > 250) floatY = 250; // Limit dolny

        svgFloat.setAttribute('transform', `translate(0, ${floatY})`);
        
        // Dynamiczny poziom "wody" w rurce
        const waterHeight = 250 - floatY;
        svgWater.setAttribute('y', floatY + 10);
        svgWater.setAttribute('height', waterHeight);
    }

    inPower.addEventListener('input', updateFlow);
    inDelta.addEventListener('input', updateFlow);

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



<style>
:root {
    --rk-mass-dark: #0f172a;
    --rk-mass-card: #1e293b;
    --rk-mass-brand: #0284c7; /* Hydrauliczny błękit */
    --rk-mass-accent: #38bdf8;
    --rk-mass-success: #10b981;
    --rk-mass-warning: #f59e0b;
    --rk-mass-danger: #ef4444;
    --rk-mass-text: #334155;
    --rk-mass-muted: #64748b;
    --rk-mass-bg: #f8fafc;
    --rk-mass-border: #cbd5e1;
}

.rk-mass-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(2, 132, 199, 0.15);
    border: 1px solid var(--rk-mass-border);
    overflow: hidden;
}

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

.rk-mass-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(56, 189, 248, 0.2);
    color: var(--rk-mass-accent);
    padding: 8px 18px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(56, 189, 248, 0.4);
}

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

.rk-mass-title span { color: var(--rk-mass-accent); }

/* Interfejs Symulatora */
.rk-mass-interactive {
    padding: 40px 50px;
    background: var(--rk-mass-bg);
}

.rk-mass-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 35px;
}

/* Panel sterowania */
.rk-mass-controls {
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-mass-border);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-mass-slider-group {
    margin-bottom: 25px;
}

.rk-mass-label {
    display: flex;
    justify-content: space-between;
    margin-bottom: 12px;
    font-weight: 800;
    font-size: 14px;
    color: var(--rk-mass-dark);
}

.rk-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #e2e8f0;
    outline: none;
    transition: background 0.3s;
}

.rk-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-mass-brand);
    cursor: pointer;
    border: 3px solid #ffffff;
    box-shadow: 0 3px 6px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}

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

.rk-mass-readouts {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
    margin-top: 20px;
}

.rk-readout-card {
    background: var(--rk-mass-bg);
    padding: 15px;
    border-radius: 12px;
    border: 1px solid var(--rk-mass-border);
    text-align: center;
}

.rk-readout-title {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-mass-muted);
    letter-spacing: 1px;
    margin-bottom: 5px;
}

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

/* Wizualizacja SVG */
.rk-mass-visual {
    background: var(--rk-mass-card);
    border-radius: 16px;
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
    border: 4px solid #334155;
    position: relative;
    overflow: hidden;
}

.rk-mass-status-overlay {
    position: absolute;
    top: 15px;
    left: 15px;
    right: 15px;
    padding: 10px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    text-align: center;
    letter-spacing: 1px;
    z-index: 10;
    transition: all 0.3s;
}

.status-ok { background: rgba(16, 185, 129, 0.2); color: #34d399; border: 1px solid #10b981; }
.status-warn { background: rgba(245, 158, 11, 0.2); color: #fbbf24; border: 1px solid #f59e0b; }
.status-err { background: rgba(239, 68, 68, 0.2); color: #f87171; border: 1px solid #ef4444; }

.rk-svg-system {
    width: 100%;
    height: auto;
    max-height: 200px;
    margin-top: 20px;
}

/* SVG Animations */
.anim-pump-rotor {
    transform-origin: 50px 50px;
}
.spin-fast { animation: spin 0.8s linear infinite; }
.spin-slow { animation: spin 3s linear infinite; }
.spin-stall { animation: shake 0.5s ease-in-out infinite; stroke: var(--rk-mass-danger); }

@keyframes spin { 100% { transform: rotate(360deg); } }
@keyframes shake {
    0%, 100% { transform: rotate(0deg); }
    25% { transform: rotate(10deg); }
    75% { transform: rotate(-10deg); }
}

.anim-flow-line {
    stroke-dasharray: 10 10;
    animation: flowMove 1s linear infinite;
}
@keyframes flowMove { to { stroke-dashoffset: -20; } }

/* Treść Merytoryczna */
.rk-mass-content {
    padding: 0 50px 45px 50px;
    background: #ffffff;
}

.rk-mass-intro {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-mass-text);
    margin-bottom: 25px;
}

.rk-mass-formula-box {
    background: var(--rk-mass-dark);
    color: #ffffff;
    padding: 20px 25px;
    border-radius: 12px;
    border-left: 5px solid var(--rk-mass-accent);
    margin-bottom: 30px;
    display: flex;
    align-items: center;
    gap: 20px;
}

.rk-formula-text {
    font-family: 'Courier New', monospace;
    font-size: 20px;
    font-weight: 700;
    color: var(--rk-mass-accent);
}

.rk-step-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-bottom: 30px;
}

.rk-step-card {
    background: var(--rk-mass-bg);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-mass-border);
    position: relative;
}

.rk-step-number {
    position: absolute;
    top: -12px;
    left: -12px;
    width: 28px;
    height: 28px;
    background: var(--rk-mass-brand);
    color: #ffffff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 13px;
    box-shadow: 0 4px 6px rgba(2, 132, 199, 0.3);
}

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

.rk-alert-critical {
    background: #fef2f2;
    border-left: 4px solid var(--rk-mass-danger);
    padding: 20px;
    border-radius: 0 12px 12px 0;
}

.rk-alert-critical p {
    margin: 0;
    color: #991b1b;
    font-size: 15px;
    line-height: 1.6;
}

.rk-link {
    color: var(--rk-mass-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid rgba(2, 132, 199, 0.3);
    transition: all 0.3s;
}

.rk-link:hover {
    border-bottom-color: var(--rk-mass-brand);
}

@media (max-width: 768px) {
    .rk-mass-header, .rk-mass-interactive, .rk-mass-content { padding: 30px 25px; }
    .rk-mass-grid, .rk-step-grid { grid-template-columns: 1fr; }
    .rk-mass-title { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Jak obliczyć wymagany przepływ masowy w pętlach podłogówki?",
    "description": "Przewodnik obliczeniowy strumienia wody (qm). Dowiedz się, dlaczego zbyt długa pętla (np. 140 m) dławi pompę obiegową i uniemożliwia oddanie 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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-przeplyw",
    "name": "Opory hydrauliczne a wydajność pompy obiegowej",
    "description": "Korelacja między długością pętli grzewczej, wymaganym przepływem w l/min, a zdolnością standardowej pompy obiegowej do pokonania oporów hydraulicznych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "przepływ masowy ogrzewanie podłogowe",
      "nastawa rotametru l/min",
      "za długa pętla podłogówki",
      "opory hydrauliczne pompy ciepła",
      "wzór na przepływ wody grzewczej"
    ],
    "measurementTechnique": "Algorytm bazujący na równaniu qm = Q / (cw * ΔT), uwzględniający krytyczne ograniczenia fizyczne pomp obiegowych przy pętlach przekraczających 100-120 metrów bieżących rury 16x2.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Stan Optymalny: Pętla < 90m, przepływ ok. 2 l/min, niskie opory.",
        "Stan Krytyczny: Pętla 140m, wymagany przepływ 4 l/min, opory przekraczają wysokość podnoszenia standardowej pompy = strefa niedogrzana."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-przeplyw",
    "name": "Symulator Oporów i Przepływu Hydraulicznego",
    "description": "Interaktywny kalkulator pozwalający manipulować mocą pętli (Q) oraz jej długością (L), wizualizujący ryzyko zadławienia pompy obiegowej przy przekroczeniu limitów hydraulicznych.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-mass-container" id="rk-mass-app">
    
    <div class="rk-mass-header">
        <div class="rk-mass-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 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><circle cx="12" cy="12" r="4"></circle></svg>
            Mechanika Płynów
        </div>
        <h2 class="rk-mass-title">Jak obliczyć wymagany <span>przepływ masowy</span> w pętlach podłogówki?</h2>
    </div>

    <div class="rk-mass-interactive">
        <div class="rk-mass-grid">
            
            <div class="rk-mass-controls">
                <div class="rk-mass-slider-group">
                    <div class="rk-mass-label">
                        <span>Zapotrzebowanie Pętli (Q)</span>
                        <span id="valQ" style="color: var(--rk-mass-brand);">1400 W</span>
                    </div>
                    <input type="range" min="300" max="2000" step="50" value="1400" class="rk-slider" id="slideQ">
                </div>

                <div class="rk-mass-slider-group" style="margin-bottom: 10px;">
                    <div class="rk-mass-label">
                        <span>Długość Pętli 16x2 (L)</span>
                        <span id="valL" style="color: var(--rk-mass-brand);">140 m</span>
                    </div>
                    <input type="range" min="40" max="180" step="5" value="140" class="rk-slider" id="slideL">
                </div>

                <div class="rk-mass-readouts">
                    <div class="rk-readout-card">
                        <div class="rk-readout-title">Przepływ (Rotametr)</div>
                        <div class="rk-readout-val" id="valFlow">4.0 <span style="font-size: 14px; font-weight:700;">l/min</span></div>
                    </div>
                    <div class="rk-readout-card">
                        <div class="rk-readout-title">Opory liniowe</div>
                        <div class="rk-readout-val" id="valPress">28 <span style="font-size: 14px; font-weight:700;">kPa</span></div>
                    </div>
                </div>
            </div>

            <div class="rk-mass-visual">
                <div id="statusOverlay" class="rk-mass-status-overlay status-err">
                    Krytyczne Opory - Pompa Zadławiona
                </div>
                
                <svg class="rk-svg-system" viewBox="0 0 200 100">
                    <path d="M 10 50 L 50 50" fill="none" stroke="#e2e8f0" stroke-width="8" stroke-linecap="round"/>
                    <path id="svgLoop" d="M 150 50 L 190 50" fill="none" stroke="#e2e8f0" stroke-width="8" stroke-linecap="round"/>
                    
                    <path id="svgFlowAnim" class="anim-flow-line" d="M 10 50 L 190 50" fill="none" stroke="var(--rk-mass-accent)" stroke-width="4" stroke-linecap="round"/>

                    <circle cx="50" cy="50" r="25" fill="#1e293b" stroke="var(--rk-mass-accent)" stroke-width="4" id="svgPumpBorder"/>
                    <path id="svgPumpRotor" class="anim-pump-rotor spin-stall" d="M 50 25 L 50 45 M 50 55 L 50 75 M 25 50 L 45 50 M 55 50 L 75 50 M 32 32 L 46 46 M 54 54 L 68 68 M 68 32 L 54 46 M 46 54 L 32 68" stroke="var(--rk-mass-accent)" stroke-width="4" stroke-linecap="round"/>
                    <circle cx="50" cy="50" r="6" fill="var(--rk-mass-accent)" id="svgPumpCenter"/>

                    <rect x="130" y="20" width="20" height="60" rx="4" fill="#334155" stroke="#64748b" stroke-width="2"/>
                    <rect x="135" y="10" width="10" height="30" rx="2" fill="#e2e8f0"/>
                    <rect id="svgRotameterFill" x="135" y="30" width="10" height="10" fill="var(--rk-mass-brand)"/>
                </svg>
            </div>

        </div>
    </div>

    <div class="rk-mass-content">
        <div class="rk-mass-intro">
            Wymagany przepływ masowy (q<sub>m</sub>) obliczamy na podstawie zapotrzebowania na moc cieplną pomieszczenia (Q) oraz założonej delty temperatur (&Delta;T), która dla pomp ciepła wynosi zazwyczaj <strong>5 K</strong>. Zapewnienie odpowiedniego przepływu jest krytyczne, aby pompa mogła oddać wyprodukowane ciepło do betonu bez podnoszenia ciśnienia w układzie chłodniczym.
        </div>

        <div class="rk-mass-formula-box">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="var(--rk-mass-accent)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><line x1="9" y1="9" x2="15" y2="15"></line><line x1="15" y1="9" x2="9" y2="15"></line></svg>
            <div>
                <div style="font-size: 13px; text-transform: uppercase; letter-spacing: 1px; color: #94a3b8; margin-bottom: 5px;">Równanie Inżynierskie</div>
                <div class="rk-formula-text">q<sub>m</sub> = Q / (C<sub>w</sub> &middot; &Delta;T)</div>
            </div>
        </div>

        <div class="rk-step-grid">
            <div class="rk-step-card">
                <div class="rk-step-number">1</div>
                <p><strong>Moc całkowita pętli (Q):</strong> W naszym przykładzie dla salonu (40 m<sup>2</sup> przy 35 W/m<sup>2</sup>) wynosi <strong>1400 W</strong>.</p>
            </div>
            <div class="rk-step-card">
                <div class="rk-step-number">2</div>
                <p><strong>Delta T (&Delta;T):</strong> Założona różnica temperatur zasilanie/powrót (np. 35°C i 30°C) to <strong>5 K</strong>.</p>
            </div>
            <div class="rk-step-card">
                <div class="rk-step-number">3</div>
                <p><strong>Ciepło właściwe wody (C<sub>w</sub>):</strong> Stała fizyczna wynosi <strong>1.163 Wh/(kg&middot;K)</strong>.</p>
            </div>
            <div class="rk-step-card">
                <div class="rk-step-number">4</div>
                <p><strong>Obliczenie (l/h):</strong> q<sub>m</sub> = 1400 / (1.163 &middot; 5) &approx; <strong>240.7 l/h</strong>.</p>
            </div>
        </div>

        <div class="rk-alert-critical">
            <p>
                <strong>Konsekwencje wykonawcze:</strong> Przy przepływie rzędu 240 l/h, na <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/" class="rk-link">rozdzielaczu</a> musisz ustawić rotametr na ok. <strong>4.0 l/min</strong>. 
                Jeśli projektant zaplanuje <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" class="rk-link">zbyt długą pętlę</a> (np. 140 m), opory hydrauliczne wzrosną do poziomu, przy którym standardowa <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-link">pompa obiegowa</a> nie będzie w stanie przepchnąć wymaganej ilości wody, co skutkować będzie niedogrzaniem salonu.
            </p>
        </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)) {
        document.getElementById('rk-mass-app').innerHTML = '<div style="padding:40px; text-align:center; color:red; font-weight:bold; background:#0f172a;">BŁĄD LICENCJI: Kod należy do Projekt-Ogrzewania.pl</div>';
        return;
    }

    // 2. Logika Symulatora
    const slideQ = document.getElementById('slideQ');
    const slideL = document.getElementById('slideL');
    const valQ = document.getElementById('valQ');
    const valL = document.getElementById('valL');
    const valFlow = document.getElementById('valFlow');
    const valPress = document.getElementById('valPress');
    
    // Elementy SVG i UI
    const statusOverlay = document.getElementById('statusOverlay');
    const svgPumpRotor = document.getElementById('svgPumpRotor');
    const svgPumpBorder = document.getElementById('svgPumpBorder');
    const svgPumpCenter = document.getElementById('svgPumpCenter');
    const svgFlowAnim = document.getElementById('svgFlowAnim');
    const svgRotameterFill = document.getElementById('svgRotameterFill');

    function calculateSystem() {
        const Q = parseFloat(slideQ.value);
        const L = parseFloat(slideL.value);
        const cw = 1.163;
        const dT = 5; // Stała dla pompy ciepła wg treści

        // 1. Przepływ (l/min)
        const qmH = Q / (cw * dT);
        const flowMin = qmH / 60;
        
        // 2. Szacunkowe opory (kPa) - Uproszczony model wizualny (Przepływ * Długość * wsp)
        // Zakładamy, że 4 l/min przy 140m daje ogromne opory rzędu 35-40 kPa
        const baseResistance = (flowMin * flowMin) * (L / 100) * 1.5; 
        const pressLoss = Math.max(1, baseResistance);

        // Aktualizacja UI Tekst
        valQ.innerText = Q + ' W';
        valL.innerText = L + ' m';
        valFlow.innerHTML = flowMin.toFixed(1) + ' <span style="font-size: 14px; font-weight:700;">l/min</span>';
        valPress.innerHTML = pressLoss.toFixed(0) + ' <span style="font-size: 14px; font-weight:700;">kPa</span>';

        // Logika Statusu (Kolory i animacje)
        // Pompki obiegowe standardowe radzą sobie do ok 20-25 kPa na najdłuższej pętli.
        
        let color = '';
        let rotorClass = '';
        
        if (pressLoss > 25 || flowMin > 5) {
            // STAN KRYTYCZNY (Czerwony)
            color = 'var(--rk-mass-danger)';
            statusOverlay.className = 'rk-mass-status-overlay status-err';
            statusOverlay.innerText = 'Krytyczne Opory - Pompa Zadławiona';
            rotorClass = 'anim-pump-rotor spin-stall';
            svgFlowAnim.style.animationDuration = '0s'; // Przepływ stoi
        } else if (pressLoss > 15 || flowMin > 3.5) {
            // OSTRZEŻENIE (Pomarańczowy)
            color = 'var(--rk-mass-warning)';
            statusOverlay.className = 'rk-mass-status-overlay status-warn';
            statusOverlay.innerText = 'Wysokie Opory - Ryzyko Szumów';
            rotorClass = 'anim-pump-rotor spin-fast';
            svgFlowAnim.style.animationDuration = '0.4s'; // Przepływ szybki, wymuszony
        } else {
            // OPTYMALNIE (Zielony)
            color = 'var(--rk-mass-success)';
            statusOverlay.className = 'rk-mass-status-overlay status-ok';
            statusOverlay.innerText = 'Przepływ Laminarny - Optymalnie';
            rotorClass = 'anim-pump-rotor spin-slow';
            svgFlowAnim.style.animationDuration = '1.5s'; // Przepływ spokojny
        }

        // Aplikacja kolorów do odczytów i SVG
        valFlow.style.color = color;
        valPress.style.color = color;
        
        svgPumpBorder.setAttribute('stroke', color);
        svgPumpCenter.setAttribute('fill', color);
        svgFlowAnim.setAttribute('stroke', color);
        
        // Klasy wirnika (animacja)
        svgPumpRotor.className.baseVal = rotorClass;
        
        // Zmiana wysokości słupka rotametru (0-30px, max 5 l/min to h=30)
        let fillHeight = (flowMin / 5) * 30;
        if (fillHeight > 30) fillHeight = 30;
        svgRotameterFill.setAttribute('height', fillHeight);
        svgRotameterFill.setAttribute('y', 40 - fillHeight);
        svgRotameterFill.setAttribute('fill', color);
    }

    slideQ.addEventListener('input', calculateSystem);
    slideL.addEventListener('input', calculateSystem);

    calculateSystem(); // Start
});
</script>



<style>
:root {
    --rk-loop-dark: #0f172a;
    --rk-loop-brand: #3b82f6; /* Niebieski - inżynieria */
    --rk-loop-accent: #06b6d4; /* Cyjan - przepływ */
    --rk-loop-success: #10b981;
    --rk-loop-warning: #f59e0b;
    --rk-loop-danger: #ef4444;
    --rk-loop-bg: #f8fafc;
    --rk-loop-card: #ffffff;
    --rk-loop-border: #e2e8f0;
}

.rk-loop-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-loop-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-loop-border);
    overflow: hidden;
}

/* Header */
.rk-loop-header {
    background: linear-gradient(135deg, var(--rk-loop-dark) 0%, #1e293b 100%);
    padding: 50px 45px 40px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-loop-brand);
}

.rk-loop-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(59, 130, 246, 0.15);
    color: #60a5fa;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 25px;
    border: 1px solid rgba(56, 189, 248, 0.3);
}

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

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

/* Simulator Section */
.rk-loop-interactive {
    padding: 40px 45px;
    background: #f1f5f9;
}

.rk-loop-sim-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
}

.rk-loop-controls {
    background: #ffffff;
    padding: 30px;
    border-radius: 20px;
    border: 1px solid var(--rk-loop-border);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-slider-label {
    display: flex;
    justify-content: space-between;
    margin-bottom: 15px;
    font-weight: 800;
    color: var(--rk-loop-dark);
}

.rk-loop-range {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    border-radius: 4px;
    background: #e2e8f0;
    outline: none;
    margin-bottom: 30px;
}

.rk-loop-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--rk-loop-brand);
    cursor: pointer;
    border: 3px solid #ffffff;
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}

/* Gauge Visual */
.rk-loop-visual {
    background: var(--rk-loop-dark);
    padding: 30px;
    border-radius: 20px;
    text-align: center;
    position: relative;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
}

.rk-loop-indicator {
    font-size: 48px;
    font-weight: 900;
    margin: 10px 0;
    transition: color 0.4s;
}

.rk-loop-status-text {
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 2px;
}

/* Dane Porównawcze */
.rk-loop-data-box {
    padding: 40px 45px;
}

.rk-loop-data-box h3 {
    font-size: 22px;
    font-weight: 900;
    margin-bottom: 25px;
    color: var(--rk-loop-dark);
}

/* Układ Desktop - Tabela */
.rk-loop-table-wrapper {
    overflow-x: auto;
}

.rk-loop-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 15px;
}

.rk-loop-table th {
    background: #f8fafc;
    text-align: left;
    padding: 18px;
    border-bottom: 2px solid var(--rk-loop-brand);
    font-weight: 800;
    color: var(--rk-loop-dark);
    text-transform: uppercase;
    font-size: 12px;
    letter-spacing: 0.5px;
}

.rk-loop-table td {
    padding: 18px;
    border-bottom: 1px solid #f1f5f9;
    color: #475569;
}

.rk-loop-table tr:hover td {
    background: #f0f9ff;
}

.rk-val-highlight {
    font-weight: 800;
    color: var(--rk-loop-brand);
}

/* Układ Mobilny - Kafelki (Domyślnie ukryte) */
.rk-loop-mobile-cards {
    display: none;
    grid-template-columns: 1fr;
    gap: 15px;
}

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

.rk-mc-title {
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-loop-muted);
    margin-bottom: 15px;
    letter-spacing: 1px;
}

.rk-mc-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid #f1f5f9;
    font-size: 14px;
}

.rk-mc-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}

.rk-mc-label {
    color: #64748b;
}

.rk-mc-val {
    font-weight: 700;
    color: var(--rk-loop-dark);
}

.rk-mc-val.highlight {
    color: var(--rk-loop-brand);
    font-size: 16px;
    font-weight: 900;
}

/* SVG Anim */
.rk-pipe-svg {
    width: 100%;
    max-width: 250px;
    height: auto;
    margin-bottom: 15px;
}

.anim-flow {
    stroke-dasharray: 15 15;
    animation: flowMove 1s linear infinite;
}

@keyframes flowMove { to { stroke-dashoffset: -30; } }

/* Footer/CTA */
.rk-loop-cta {
    padding: 40px 45px;
    background: var(--rk-loop-bg);
    text-align: center;
}

.rk-btn-engineering {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-loop-brand);
    color: #ffffff;
    padding: 20px 40px;
    border-radius: 16px;
    font-size: 18px;
    font-weight: 800;
    text-decoration: none;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 25px -5px rgba(59, 130, 246, 0.4);
}

.rk-btn-engineering:hover {
    background: #2563eb;
    transform: translateY(-4px);
    box-shadow: 0 20px 35px -5px rgba(59, 130, 246, 0.5);
}

/* Media Queries */
@media (max-width: 768px) {
    .rk-loop-header, .rk-loop-interactive, .rk-loop-data-box, .rk-loop-cta { padding: 30px 20px; }
    .rk-loop-sim-grid { grid-template-columns: 1fr; }
    .rk-loop-title { font-size: 22px; }
    
    /* Ukrycie tabeli i pokazanie kafelków na mobilce */
    .rk-loop-table-wrapper { display: none; }
    .rk-loop-mobile-cards { display: grid; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-loop-length",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Maksymalna długość pętli i średnica rur w instalacji z pompą ciepła",
    "description": "Analiza inżynierska dopuszczalnych długości pętli (80-90m) dla rur 16x2mm. Poznaj wpływ oporów liniowych na sprawność układu hydraulicznego.",
    "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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-loops",
    "name": "Zestawienie parametrów hydraulicznych: Standard vs Pompa Ciepła",
    "description": "Dane porównawcze dotyczące temperatury zasilania, różnicy temperatur (Delta T) oraz granicznych długości pętli rur PEX/PERT dla niskotemperaturowych źródeł ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "maksymalna długość pętli podłogówki",
      "średnica rury 16x2 opory",
      "delta T pompa ciepła",
      "projektowanie instalacji niskotemperaturowej",
      "opory liniowe w rurach PEX"
    ],
    "measurementTechnique": "Obliczenia strat ciśnienia na podstawie natężenia przepływu masowego wymaganego do utrzymania niskiej delty temperatur (5-7K).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Projekt Optymalny: Pętla 80-90m, Tz 30-33°C, Delta T 5K.",
        "System Standardowy: Pętla 100-120m, Tz 40-45°C, Delta T 10K."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-hydraulics",
    "name": "Symulator Oporów Liniowych Pętli Grzewczej",
    "description": "Interaktywny kalkulator wizualizujący wzrost oporów hydraulicznych i obciążenia pompy obiegowej w funkcji długości rury grzewczej.",
    "applicationCategory": "Inżynieria/Kalkulator",
    "operatingSystem": "Wszystkie",
    "browserRequirements": "Obsługa JavaScript i SVG",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-loop-container" id="rk-loop-app">
    
    <div class="rk-loop-header">
        <div class="rk-loop-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"><circle cx="12" cy="12" r="10"></circle><path d="M12 16V12M12 8h.01"></path></svg>
            Inżynieria Hydrauliczna
        </div>
        <h2 class="rk-loop-title">Jaka powinna być maksymalna <span>długość pętli</span> i średnica rur?</h2>
    </div>

    <div class="rk-loop-interactive">
        <div class="rk-loop-sim-grid">
            
            <div class="rk-loop-controls">
                <div class="rk-slider-label">
                    <span>Długość Pętli (rura 16mm)</span>
                    <span id="valLoopLength" style="color: var(--rk-loop-brand);">85 m</span>
                </div>
                <input type="range" min="40" max="150" value="85" class="rk-loop-range" id="loopSlider">
                
                <p style="font-size: 14px; color: #64748b; line-height: 1.6; margin: 0;">
                    Zgodnie z normą <strong>PN-EN 1264</strong>, przekroczenie 90m przy rurze 16mm w układzie z pompą ciepła generuje opory, których standardowa pompa obiegowa nie jest w stanie pokonać przy niskiej delcie T.
                </p>
            </div>

            <div class="rk-loop-visual" id="rkVisualBox">
                <svg class="rk-pipe-svg" viewBox="0 0 200 60">
                    <path d="M 10 30 Q 100 0 190 30" fill="none" stroke="#334155" stroke-width="12" stroke-linecap="round"/>
                    <path id="svgFlowPath" class="anim-flow" d="M 10 30 Q 100 0 190 30" fill="none" stroke="var(--rk-loop-accent)" stroke-width="6" stroke-linecap="round"/>
                </svg>
                <div class="rk-loop-status-text" id="statusLabel">Stan: Optymalny</div>
                <div class="rk-loop-indicator" id="resistanceVal">18 kPa</div>
                <div style="color: #94a3b8; font-size: 12px; font-weight: 700;">OPÓR LINII POWROTNEJ</div>
            </div>

        </div>
    </div>

    <div class="rk-loop-data-box">
        <h3>Porównanie standardu i optymalizacji PC</h3>
        
        <div class="rk-loop-table-wrapper">
            <table class="rk-loop-table">
                <thead>
                    <tr>
                        <th>Parametr Techniczny</th>
                        <th>Standard (Kocioł)</th>
                        <th>Optymalizacja (PC)</th>
                        <th>Różnica / Zysk</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>Temperatura zasilania (Tz)</td>
                        <td>40–45°C</td>
                        <td class="rk-val-highlight">30–33°C</td>
                        <td><strong>+25% wyższy COP</strong></td>
                    </tr>
                    <tr>
                        <td>Delta T (Zas.-Powrót)</td>
                        <td>10 K</td>
                        <td class="rk-val-highlight">5–7 K</td>
                        <td>Stabilna praca inwertera</td>
                    </tr>
                    <tr>
                        <td>Max. długość pętli (16x2)</td>
                        <td>100–120 m</td>
                        <td class="rk-val-highlight">80–90 m</td>
                        <td>Opory niższe o 40%</td>
                    </tr>
                    <tr>
                        <td>Rozstaw rur (średni)</td>
                        <td>15 cm</td>
                        <td class="rk-val-highlight">10 cm</td>
                        <td>Niższa Tz o ok. 5°C</td>
                    </tr>
                    <tr>
                        <td>Rodzaj wylewki</td>
                        <td>Cementowa</td>
                        <td class="rk-val-highlight">Anhydrytowa</td>
                        <td>Przewodzenie k = 1,8</td>
                    </tr>
                </tbody>
            </table>
        </div>

        <div class="rk-loop-mobile-cards">
            <div class="rk-mobile-card">
                <div class="rk-mc-title">Temperatura zasilania (Tz)</div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Standard:</span>
                    <span class="rk-mc-val">40–45°C</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Pompa Ciepła:</span>
                    <span class="rk-mc-val highlight">30–33°C</span>
                </div>
                <div class="rk-mc-row" style="background:#f0fdf4; padding: 10px; border-radius: 8px; margin-top: 10px; border: 1px solid #bbf7d0;">
                    <span class="rk-mc-label" style="color: #15803d; font-weight:800;">ZYSK:</span>
                    <span class="rk-mc-val" style="color: #15803d;">+25% wyższy COP</span>
                </div>
            </div>

            <div class="rk-mobile-card">
                <div class="rk-mc-title">Delta T (Zas.-Powrót)</div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Standard:</span>
                    <span class="rk-mc-val">10 K</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Pompa Ciepła:</span>
                    <span class="rk-mc-val highlight">5–7 K</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label" style="font-weight:700;">Efekt:</span>
                    <span class="rk-mc-val">Stabilna praca inwertera</span>
                </div>
            </div>

            <div class="rk-mobile-card">
                <div class="rk-mc-title">Max. długość pętli (16x2)</div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Standard:</span>
                    <span class="rk-mc-val">100–120 m</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Pompa Ciepła:</span>
                    <span class="rk-mc-val highlight">80–90 m</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label" style="font-weight:700;">Efekt:</span>
                    <span class="rk-mc-val">Opory niższe o 40%</span>
                </div>
            </div>

            <div class="rk-mobile-card">
                <div class="rk-mc-title">Rozstaw rur (średni)</div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Standard:</span>
                    <span class="rk-mc-val">15 cm</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Pompa Ciepła:</span>
                    <span class="rk-mc-val highlight">10 cm</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label" style="font-weight:700;">Efekt:</span>
                    <span class="rk-mc-val">Niższa Tz o ok. 5°C</span>
                </div>
            </div>

            <div class="rk-mobile-card">
                <div class="rk-mc-title">Rodzaj wylewki</div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Standard:</span>
                    <span class="rk-mc-val">Cementowa</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label">Pompa Ciepła:</span>
                    <span class="rk-mc-val highlight">Anhydrytowa</span>
                </div>
                <div class="rk-mc-row">
                    <span class="rk-mc-label" style="font-weight:700;">Efekt:</span>
                    <span class="rk-mc-val">Przewodzenie k = 1,8</span>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-loop-cta">
        <p style="margin-bottom: 25px; color: #475569; font-size: 15px; max-width: 700px; margin-left: auto; margin-right: auto;">
            Maksymalna długość pętli dla <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/" style="color:var(--rk-loop-brand); font-weight:700;">rury o średnicy 16x2 mm</a> w systemie z pompą ciepła to <strong>80–90 metrów</strong>. Przekroczenie tej wartości powoduje gwałtowny wzrost oporów liniowych, co zmusza <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" style="color:var(--rk-loop-brand); font-weight:700;">pompę obiegową</a> do pracy na najwyższym biegu, generując szumy i straty prądu.
        </p>
        <a href="https://projekt-ogrzewania.pl/sklep/" class="rk-btn-engineering">
            DOBIERZ MATERIAŁY PROJEKTOWE
            <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() {
    // 1. Domain Lock
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-loop-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#f87171; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Simulator Logic
    const slider = document.getElementById('loopSlider');
    const lengthLabel = document.getElementById('valLoopLength');
    const resistanceLabel = document.getElementById('resistanceVal');
    const statusLabel = document.getElementById('statusLabel');
    const visualBox = document.getElementById('rkVisualBox');
    const flowAnim = document.getElementById('svgFlowPath');

    function updateHydraulics(val) {
        lengthLabel.innerText = val + ' m';
        
        // Obliczenie oporu (model nieliniowy)
        // val 80 -> ok 18 kPa, val 120 -> ok 35 kPa, val 150 -> ok 55 kPa
        let baseRes = (val * val * 0.0025) + (val * 0.05);
        resistanceLabel.innerText = Math.round(baseRes) + ' kPa';

        if (val <= 95) {
            // Stan OK
            resistanceLabel.style.color = 'var(--rk-loop-success)';
            statusLabel.innerText = 'Stan: Optymalny';
            statusLabel.style.color = 'var(--rk-loop-success)';
            flowAnim.style.stroke = 'var(--rk-loop-success)';
            flowAnim.style.animationDuration = '1.5s';
        } else if (val <= 115) {
            // Stan Warning
            resistanceLabel.style.color = 'var(--rk-loop-warning)';
            statusLabel.innerText = 'Stan: Wysokie Opory';
            statusLabel.style.color = 'var(--rk-loop-warning)';
            flowAnim.style.stroke = 'var(--rk-loop-warning)';
            flowAnim.style.animationDuration = '0.7s';
        } else {
            // Stan Danger
            resistanceLabel.style.color = 'var(--rk-loop-danger)';
            statusLabel.innerText = 'Stan: Przeciążenie Pompy';
            statusLabel.style.color = 'var(--rk-loop-danger)';
            flowAnim.style.stroke = 'var(--rk-loop-danger)';
            flowAnim.style.animationDuration = '0.3s';
        }
    }

    slider.addEventListener('input', function(e) {
        updateHydraulics(e.target.value);
    });

    updateHydraulics(85);
});
</script>



<style>
:root {
    --rk-buf-dark: #0f172a;
    --rk-buf-card: #1e293b;
    --rk-buf-brand: #8b5cf6; /* Fiolet/Indygo - symbolizuje mieszanie ciepła i chłodu */
    --rk-buf-brand-light: #f5f3ff;
    --rk-buf-hot: #ef4444; /* Czerwony - zasilanie */
    --rk-buf-cold: #3b82f6; /* Niebieski - powrót */
    --rk-buf-mix: #d946ef; /* Róż/Fiolet - zmieszanie w sprzęgle */
    --rk-buf-success: #10b981;
    --rk-buf-warning: #f59e0b;
    --rk-buf-text: #334155;
    --rk-buf-muted: #64748b;
    --rk-buf-bg: #ffffff;
    --rk-buf-border: #e2e8f0;
}

.rk-buf-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-buf-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;
}

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

.rk-buf-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.4);
}

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

.rk-buf-title span { color: #a78bfa; }

/* Interfejs Symulatora */
.rk-buf-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

/* Przyciski Wyboru Schematu */
.rk-buf-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-buf-tab {
    background: #ffffff;
    border: 2px solid var(--rk-buf-border);
    padding: 15px 10px;
    border-radius: 16px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-buf-muted);
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    text-align: center;
}

.rk-buf-tab:hover {
    border-color: #a78bfa;
    color: var(--rk-buf-brand);
    background: var(--rk-buf-brand-light);
}

.rk-buf-tab.active {
    background: var(--rk-buf-brand-light);
    border-color: var(--rk-buf-brand);
    color: var(--rk-buf-brand);
    box-shadow: 0 10px 15px -3px rgba(139, 92, 246, 0.1);
}

.rk-tab-icon {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rk-buf-border);
    color: #ffffff;
    transition: all 0.3s;
}

.rk-buf-tab.active .rk-tab-icon {
    background: var(--rk-buf-brand);
}

/* Wizualizacja SVG */
.rk-buf-visual-box {
    background: var(--rk-buf-dark);
    border-radius: 20px;
    padding: 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.6);
    border: 4px solid #334155;
    position: relative;
}

.rk-buf-svg {
    width: 100%;
    max-width: 500px;
    height: auto;
}

/* Elementy SVG */
.svg-pipe {
    fill: none;
    stroke-width: 6;
    stroke-linecap: butt; /* Zapobiega efektowi nakładania fasolek */
    stroke-linejoin: round;
    transition: opacity 0.5s, stroke 0.5s;
}

.svg-flow-anim {
    fill: none;
    stroke-width: 4;
    stroke-dasharray: 8 8;
    stroke-linecap: butt;
    animation: flowMove 1.5s linear infinite;
    transition: opacity 0.5s, stroke 0.5s;
}

@keyframes flowMove {
    to { stroke-dashoffset: -16; }
}

.svg-component {
    fill: #1e293b;
    stroke: #64748b;
    stroke-width: 3;
    transition: opacity 0.5s;
}

.svg-text {
    fill: #ffffff;
    font-family: 'Inter', sans-serif;
    font-size: 10px;
    font-weight: 800;
}

/* Karta Wynikowa */
.rk-buf-results {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-top: 25px;
}

.rk-buf-metric {
    background: #ffffff;
    border: 1px solid var(--rk-buf-border);
    padding: 15px;
    border-radius: 12px;
    text-align: center;
}

.rk-metric-label {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-buf-muted);
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

.rk-metric-val {
    font-size: 18px;
    font-weight: 900;
    transition: color 0.3s;
}

/* Treść Merytoryczna */
.rk-buf-content {
    padding: 0 50px 45px 50px;
}

.rk-buf-content p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-buf-text);
    margin: 0 0 20px 0;
}

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

.rk-buf-list {
    list-style: none;
    padding: 0;
    margin: 30px 0;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-buf-list-item {
    background: var(--rk-buf-bg);
    border: 1px solid var(--rk-buf-border);
    border-left: 5px solid var(--rk-buf-brand);
    padding: 20px 25px;
    border-radius: 12px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-item-title {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-buf-dark);
    margin-bottom: 10px;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-item-badge {
    font-size: 11px;
    padding: 4px 10px;
    border-radius: 6px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.badge-rec { background: #dcfce7; color: #15803d; }
.badge-warn { background: #fef3c7; color: #b45309; }
.badge-alert { background: #fee2e2; color: #b91c1c; }

.rk-link {
    color: var(--rk-buf-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(139, 92, 246, 0.4);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #6d28d9;
    border-bottom-style: solid;
}

@media (max-width: 768px) {
    .rk-buf-header, .rk-buf-interactive, .rk-buf-content { padding: 30px 25px; }
    .rk-buf-tabs { grid-template-columns: 1fr; gap: 10px; }
    .rk-buf-results { grid-template-columns: 1fr; }
    .rk-buf-tab { flex-direction: row; justify-content: flex-start; padding: 15px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-bufor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Jaką rolę pełni bufor ciepła w projekcie z pompą ciepła?",
    "description": "Przewodnik po schematach hydraulicznych: bufor szeregowy, równoległy (sprzęgło) i układ bezpośredni. Poznaj ich wpływ na sprawność i defrost 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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-bufor",
    "name": "Wpływ schematu połączenia bufora na parametry pracy pompy ciepła",
    "description": "Zestawienie porównujące wpływ bufora szeregowego, równoległego oraz układu bezpośredniego na sprawność (COP), bezpieczeństwo defrostu oraz temperaturę zasilania (Tz).",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "bufor szeregowy czy sprzęgło",
      "zład wody w ogrzewaniu podłogowym",
      "defrost pompy ciepła bufor",
      "sprzęgło hydrauliczne pompa ciepła",
      "schemat instalacji pompa ciepła"
    ],
    "measurementTechnique": "Analiza wahań temperatury zasilania (Tz) oraz ocena bezpieczeństwa hydraulicznego podczas cyklu odszraniania (defrost) parownika w oparciu o dostępne pojemności zładu wodnego.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szeregowy na powrocie: Najwyższy COP, brak mieszania Tz, pełne bezpieczeństwo defrostu (zład 15-20 l/kW).",
        "Równoległy (Sprzęgło): Spadek COP, wzrost Tz o 2-3 K z powodu mieszania strumieni w buforze.",
        "Bezpośredni (Open Loop): Wymaga idealnego projektu, ryzyko zablokowania przepływu przez siłowniki termoelektryczne."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-bufor",
    "name": "Symulator Przepływów w Schematach Buforowych",
    "description": "Interaktywne narzędzie wizualizujące kierunki przepływu i proces mieszania się wody grzewczej w zależności od wybranego sposobu wpięcia bufora ciepła do instalacji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-buf-container" id="rk-buf-app">
    
    <div class="rk-buf-header">
        <div class="rk-buf-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="4" y="4" width="16" height="16" rx="2" ry="2"></rect><path d="M4 12h16"></path><path d="M12 4v16"></path></svg>
            Architektura Systemu
        </div>
        <h2 class="rk-buf-title">Jaką rolę pełni <span>bufor ciepła</span> w projekcie?</h2>
    </div>

    <div class="rk-buf-interactive">
        
        <div class="rk-buf-tabs">
            <div class="rk-buf-tab active" data-mode="szereg">
                <div class="rk-tab-icon">1</div>
                Szeregowy na powrocie
            </div>
            <div class="rk-buf-tab" data-mode="rownoleg">
                <div class="rk-tab-icon">2</div>
                Równoległy (Sprzęgło)
            </div>
            <div class="rk-buf-tab" data-mode="bezposred">
                <div class="rk-tab-icon">3</div>
                Układ Bezpośredni
            </div>
        </div>

        <div class="rk-buf-visual-box">
            <svg class="rk-buf-svg" viewBox="0 0 400 200">
                <rect class="svg-component" x="10" y="60" width="60" height="80" rx="6" />
                <text class="svg-text" x="25" y="105">PC</text>
                
                <rect class="svg-component" x="330" y="40" width="40" height="120" rx="4" />
                <text class="svg-text" x="342" y="105">OP</text>

                <g id="g-szereg" style="opacity: 1;">
                    <rect class="svg-component" x="170" y="110" width="60" height="70" rx="4" />
                    <text class="svg-text" x="180" y="150">BUFOR</text>
                    
                    <path class="svg-pipe" stroke="var(--rk-buf-hot)" d="M 70 75 L 330 75" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 70 75 L 330 75" />
                    
                    <path class="svg-pipe" stroke="var(--rk-buf-cold)" d="M 330 130 L 230 130" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 330 130 L 230 130" />
                    
                    <path class="svg-pipe" stroke="var(--rk-buf-cold)" d="M 170 130 L 70 130" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 170 130 L 70 130" />
                </g>

                <g id="g-rownoleg" style="opacity: 0;">
                    <rect class="svg-component" x="170" y="40" width="60" height="120" rx="6" />
                    <text class="svg-text" x="180" y="105">BUFOR</text>
                    
                    <path class="svg-pipe" stroke="var(--rk-buf-hot)" d="M 70 70 L 170 70" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 70 70 L 170 70" />
                    <path class="svg-pipe" stroke="var(--rk-buf-cold)" d="M 170 130 L 70 130" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 170 130 L 70 130" />
                    
                    <path class="svg-pipe" stroke="var(--rk-buf-mix)" d="M 230 70 L 330 70" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 230 70 L 330 70" />
                    <path class="svg-pipe" stroke="var(--rk-buf-cold)" d="M 330 130 L 230 130" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 330 130 L 230 130" />
                </g>

                <g id="g-bezposred" style="opacity: 0;">
                    <path class="svg-pipe" stroke="var(--rk-buf-hot)" d="M 70 75 L 330 75" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 70 75 L 330 75" />
                    
                    <path class="svg-pipe" stroke="var(--rk-buf-cold)" d="M 330 125 L 70 125" />
                    <path class="svg-flow-anim" stroke="#ffffff" d="M 330 125 L 70 125" />
                    
                    <circle cx="200" cy="100" r="30" fill="none" stroke="#ef4444" stroke-width="4" stroke-dasharray="8 4"/>
                    <line x1="180" y1="80" x2="220" y2="120" stroke="#ef4444" stroke-width="4"/>
                </g>
            </svg>
        </div>

        <div class="rk-buf-results">
            <div class="rk-buf-metric">
                <div class="rk-metric-label">Sprawność (COP)</div>
                <div class="rk-metric-val" id="valCop" style="color: var(--rk-buf-success);">Maksymalna</div>
            </div>
            <div class="rk-buf-metric">
                <div class="rk-metric-label">Temperatura Zasilania</div>
                <div class="rk-metric-val" id="valTz" style="color: var(--rk-buf-success);">Bez strat (30°C)</div>
            </div>
            <div class="rk-buf-metric">
                <div class="rk-metric-label">Odmrażanie (Defrost)</div>
                <div class="rk-metric-val" id="valDefrost" style="color: var(--rk-buf-success);">W 100% Bezpieczne</div>
            </div>
        </div>

    </div>

    <div class="rk-buf-content">
        <p>
            Wbrew obiegowym opiniom, <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> w projekcie ogrzewania podłogowego pełni funkcję stricte hydrauliczną, a nie magazynową (rolę wielkiego akumulatora ciepła przejmuje wylewka betonowa lub anhydrytowa). 
        </p>
        <p>
            Jego głównym zadaniem jest zapewnienie <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/">odpowiedniego zładu wody</a> wymaganego do procesu odmrażania parownika (tzw. <strong>defrostu</strong>). Pompa ciepła w tym trybie pobiera nagle dużą ilość energii z instalacji, aby stopić lód na jednostce zewnętrznej. Jeśli system nie zapewni stałego przepływu, pompa wyrzuci błąd.
        </p>

        <ul class="rk-buf-list">
            <li class="rk-buf-list-item">
                <div class="rk-item-title">
                    1. Szeregowy na powrocie
                    <span class="rk-item-badge badge-rec">Zalecany</span>
                </div>
                <p>
                    Rozwiązanie najlepsze dla inwerterowych pomp powietrznych. Woda wracająca z podłogówki przepływa przez bufor (zbiornik 50–100 litrów), a zasilanie idzie bezpośrednio do rozdzielacza. <strong>Nie tracimy temperatury zasilania</strong> (brak zjawiska mieszania), a pompa ma zagwarantowany zład wody do odszraniania. Zalecana pojemność: ok. 15–20 litrów na każdy 1 kW mocy urządzenia.
                </p>
            </li>
            
            <li class="rk-buf-list-item">
                <div class="rk-item-title">
                    2. Równoległy (Sprzęgło hydrauliczne)
                    <span class="rk-item-badge badge-warn">Wymusza spadek COP</span>
                </div>
                <p>
                    Stosowany najczęściej w układach z mieszaczami (np. gdy podłogówka działa razem z kaloryferami). Woda z pompy ciepła wpada do bufora, miesza się, i dopiero stamtąd jest tłoczona do obiegów przez <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">niezależne pompy obiegowe</a>. Niestety, wymieszanie wody zawsze <strong>podnosi wymaganą temperaturę pracy sprężarki o ok. 2–3 K</strong>, co bezpośrednio obniża współczynnik COP.
                </p>
            </li>

            <li class="rk-buf-list-item">
                <div class="rk-item-title">
                    3. Układ Bezpośredni
                    <span class="rk-item-badge badge-alert">Wymaga rygoru</span>
                </div>
                <p>
                    Całkowity brak bufora. Układ dopuszczalny <strong>wyłącznie</strong> jako tzw. "Open Loop". Inwestor i instalator muszą zagwarantować stały przepływ masowy przez podłogę. Wymaga to rezygnacji ze <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">strefowych siłowników termoelektrycznych</a> na rozdzielaczach, aby nie dopuścić do sytuacji, w której termostaty zamkną pętle, gdy pompa rozpocznie defrost.
                </p>
            </li>
        </ul>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-buf-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Logika Symulatora
    const tabs = document.querySelectorAll('.rk-buf-tab');
    const svgSzereg = document.getElementById('g-szereg');
    const svgRownoleg = document.getElementById('g-rownoleg');
    const svgBezposred = document.getElementById('g-bezposred');
    
    const valCop = document.getElementById('valCop');
    const valTz = document.getElementById('valTz');
    const valDefrost = document.getElementById('valDefrost');

    function switchMode(mode) {
        // Reset Tabs
        tabs.forEach(t => t.classList.remove('active'));
        document.querySelector(`.rk-buf-tab[data-mode="${mode}"]`).classList.add('active');

        // Reset SVGs
        svgSzereg.style.opacity = '0';
        svgRownoleg.style.opacity = '0';
        svgBezposred.style.opacity = '0';

        if (mode === 'szereg') {
            svgSzereg.style.opacity = '1';
            
            valCop.innerText = 'Maksymalna';
            valCop.style.color = 'var(--rk-buf-success)';
            
            valTz.innerText = 'Bez strat (30°C)';
            valTz.style.color = 'var(--rk-buf-success)';
            
            valDefrost.innerText = 'W 100% Bezpieczne';
            valDefrost.style.color = 'var(--rk-buf-success)';
            
        } else if (mode === 'rownoleg') {
            svgRownoleg.style.opacity = '1';
            
            valCop.innerText = 'Obniżona o ok. 8%';
            valCop.style.color = 'var(--rk-buf-warning)';
            
            valTz.innerText = 'Wzrost o 2–3 K';
            valTz.style.color = 'var(--rk-buf-warning)';
            
            valDefrost.innerText = 'W 100% Bezpieczne';
            valDefrost.style.color = 'var(--rk-buf-success)';
            
        } else if (mode === 'bezposred') {
            svgBezposred.style.opacity = '1';
            
            valCop.innerText = 'Maksymalna';
            valCop.style.color = 'var(--rk-buf-success)';
            
            valTz.innerText = 'Bez strat (30°C)';
            valTz.style.color = 'var(--rk-buf-success)';
            
            valDefrost.innerHTML = 'Krytyczne Ryzyko!';
            valDefrost.style.color = 'var(--rk-buf-hot)';
        }
    }

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            switchMode(this.getAttribute('data-mode'));
        });
    });
});
</script>



<style>
:root {
    --rk-screed-dark: #0f172a;
    --rk-screed-card: #1e293b;
    --rk-screed-brand: #ea580c; /* Ciepły pomarańczowy - symbolizujący przewodnictwo */
    --rk-screed-brand-light: #ffedd5;
    --rk-screed-concrete: #94a3b8; /* Szary beton */
    --rk-screed-anhydrite: #fcd34d; /* Jasny, płynny anhydryt */
    --rk-screed-success: #10b981;
    --rk-screed-danger: #ef4444;
    --rk-screed-bg: #f8fafc;
    --rk-screed-border: #e2e8f0;
    --rk-screed-text: #334155;
}

.rk-screed-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(234, 88, 12, 0.15);
    border: 1px solid rgba(234, 88, 12, 0.3);
    overflow: hidden;
}

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

.rk-screed-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-screed-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

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

/* Sekcja Interaktywna */
.rk-screed-interactive {
    padding: 40px 50px;
    background: var(--rk-screed-bg);
}

/* Przełącznik Wylewki */
.rk-screed-toggle-wrapper {
    display: flex;
    background: #e2e8f0;
    padding: 6px;
    border-radius: 16px;
    margin-bottom: 30px;
    position: relative;
}

.rk-screed-btn {
    flex: 1;
    padding: 16px 20px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-screed-text);
    background: transparent;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-screed-pill {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    background: var(--rk-screed-concrete); /* Domyślny kolor betonu */
    border-radius: 12px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
}

/* Grid Layout */
.rk-screed-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 30px;
    align-items: center;
}

/* SVG Wizualizacja */
.rk-screed-visual {
    background: var(--rk-screed-dark);
    border-radius: 20px;
    padding: 20px;
    box-shadow: inset 0 0 40px rgba(0,0,0,0.5);
    border: 4px solid #334155;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.rk-svg-crosssection {
    width: 100%;
    max-width: 250px;
    height: auto;
}

/* Style SVG */
.svg-screed-mass {
    transition: fill 0.5s, height 0.5s, y 0.5s;
}

.svg-air-gap {
    transition: stroke-width 0.5s, stroke 0.5s;
}

.svg-bubbles {
    transition: opacity 0.5s;
}

.svg-heat-wave {
    fill: none;
    stroke-linecap: round;
    transition: stroke 0.5s, stroke-width 0.5s;
}

.anim-heat-slow {
    stroke-dasharray: 10 20;
    animation: riseUp 3s linear infinite;
}

.anim-heat-fast {
    stroke-dasharray: 20 10;
    animation: riseUp 1s linear infinite;
}

@keyframes riseUp {
    to { stroke-dashoffset: -30; }
}

/* Karty Danych */
.rk-screed-data-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.rk-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-screed-border);
    padding: 20px;
    border-radius: 16px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    transition: border-color 0.3s;
}

.rk-data-label {
    font-size: 11px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-screed-text);
    opacity: 0.7;
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

.rk-data-val {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-screed-dark);
    display: flex;
    align-items: baseline;
    gap: 4px;
    transition: color 0.3s;
}

.rk-data-unit {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-screed-text);
    opacity: 0.6;
}

.card-full {
    grid-column: span 2;
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: var(--rk-screed-brand-light);
    border-color: rgba(234, 88, 12, 0.3);
}

.card-full .rk-data-val {
    color: var(--rk-screed-brand);
}

/* Treść Artykułu */
.rk-screed-content {
    padding: 45px 50px;
}

.rk-screed-content p {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-screed-text);
    margin-bottom: 20px;
}

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

.rk-alert-error {
    background: #fef2f2;
    border-left: 4px solid var(--rk-screed-danger);
    padding: 20px 25px;
    border-radius: 0 12px 12px 0;
    margin-top: 30px;
}

.rk-alert-error h4 {
    margin: 0 0 10px 0;
    color: #991b1b;
    font-size: 16px;
    font-weight: 900;
    display: flex;
    align-items: center;
    gap: 8px;
}

.rk-alert-error p {
    margin: 0;
    color: #7f1d1d;
    font-size: 15px;
}

.rk-link {
    color: var(--rk-screed-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px dashed rgba(234, 88, 12, 0.4);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #c2410c;
    border-bottom-style: solid;
}

/* CTA */
.rk-screed-cta {
    padding: 40px 50px;
    background: var(--rk-screed-bg);
    text-align: center;
    border-top: 1px solid var(--rk-screed-border);
}

.rk-btn-screed {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-screed-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    transition: all 0.3s;
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.4);
}

.rk-btn-screed:hover {
    transform: translateY(-4px);
    background: #c2410c;
    box-shadow: 0 20px 35px -5px rgba(234, 88, 12, 0.5);
}

@media (max-width: 768px) {
    .rk-screed-header, .rk-screed-interactive, .rk-screed-content, .rk-screed-cta { padding: 30px 20px; }
    .rk-screed-grid { grid-template-columns: 1fr; }
    .rk-screed-btn { font-size: 14px; padding: 12px; flex-direction: column; gap: 5px; text-align: center; }
    .rk-screed-title { font-size: 24px; }
    .card-full { flex-direction: column; align-items: flex-start; gap: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#article-wplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/"
    },
    "headline": "Jak rodzaj wylewki wpływa na wydajność pompy ciepła?",
    "description": "Porównanie przewodnictwa cieplnego jastrychu anhydrytowego i betonu. Anhydryt eliminuje pustki powietrzne, obniża temperaturę zasilania i zwiększa SCOP o 6-8%.",
    "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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#dataset-wylewki",
    "name": "Właściwości termofizyczne jastrychów grzewczych",
    "description": "Zestawienie współczynników przewodzenia ciepła oraz wpływu grubości wylewki na efektywność instalacji ogrzewania podłogowego z pompą ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "jastrych anhydrytowy przewodzenie ciepła",
      "wylewka betonowa pod ogrzewanie podłogowe",
      "bezwładność cieplna podłogówki",
      "wzrost SCOP pompy ciepła",
      "grubość wylewki na podłogówkę"
    ],
    "measurementTechnique": "Analiza współczynnika lambda [W/(mK)] materiałów budowlanych oraz zjawiska oporu cieplnego wywołanego pustkami powietrznymi (złe otulenie rury w betonie).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Jastrych Anhydrytowy: λ ≈ 1.8-2.0 W/(mK), idealne otulenie rury, wzrost SCOP o 6-8%, niska bezwładność.",
        "Tradycyjny Beton: λ ≈ 1.1-1.2 W/(mK), mikropory powietrzne działające jako izolator, duża bezwładność (szczególnie przy warstwie 10 cm)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/#webapp-screed",
    "name": "Symulator Przewodnictwa Cieplnego Wylewki",
    "description": "Narzędzie interaktywne pokazujące różnice w otuleniu rury i propagacji ciepła pomiędzy betonem a anhydrytem w systemie płaszczyznowym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG support",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-screed-container" id="rk-screed-app">
    
    <div class="rk-screed-header">
        <div class="rk-screed-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"><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>
            Fizyka Budowli
        </div>
        <h2 class="rk-screed-title">Jak rodzaj wylewki wpływa na <span>wydajność pompy ciepła?</span></h2>
    </div>

    <div class="rk-screed-interactive">
        
        <div class="rk-screed-toggle-wrapper">
            <div class="rk-screed-pill" id="screedPill"></div>
            <button class="rk-screed-btn active" data-type="beton" id="btnBeton">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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><circle cx="15.5" cy="15.5" r="1.5"></circle><circle cx="15.5" cy="8.5" r="1.5"></circle><circle cx="8.5" cy="15.5" r="1.5"></circle></svg>
                Tradycyjny Beton
            </button>
            <button class="rk-screed-btn" data-type="anhydryt" id="btnAnhydryt">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 2.69l5.66 4.2c3.11 3.11 3.11 8.14 0 11.25a7.94 7.94 0 0 1-11.32 0c-3.11-3.11-3.11-8.14 0-11.25L12 2.69z"></path></svg>
                Jastrych Anhydrytowy
            </button>
        </div>

        <div class="rk-screed-grid">
            
            <div class="rk-screed-visual">
                <div style="color: #cbd5e1; font-size: 11px; font-weight: 800; letter-spacing: 1px; margin-bottom: 15px; text-transform: uppercase;">Przekrój - Promieniowanie</div>
                <svg class="rk-svg-crosssection" viewBox="0 0 200 160">
                    <rect x="10" y="130" width="180" height="30" fill="#cbd5e1" stroke="#94a3b8" stroke-width="2" />
                    <line x1="10" y1="140" x2="190" y2="140" stroke="#94a3b8" stroke-dasharray="4 4"/>
                    
                    <rect id="svgScreed" class="svg-screed-mass" x="10" y="40" width="180" height="90" fill="var(--rk-screed-concrete)" />
                    
                    <g id="svgBubbles" class="svg-bubbles" fill="#ffffff" opacity="0.4">
                        <circle cx="30" cy="60" r="3"/><circle cx="50" cy="110" r="4"/><circle cx="80" cy="50" r="2"/>
                        <circle cx="150" cy="70" r="5"/><circle cx="170" cy="100" r="3"/><circle cx="120" cy="115" r="4"/>
                        <circle cx="40" cy="80" r="2"/><circle cx="140" cy="50" r="3"/><circle cx="100" cy="120" r="2"/>
                    </g>

                    <circle cx="100" cy="90" r="22" fill="none" class="svg-air-gap" id="svgAirGap" stroke="#ffffff" stroke-width="4"/>
                    <circle cx="100" cy="90" r="16" fill="#ef4444" stroke="#b91c1c" stroke-width="2"/>
                    
                    <g id="svgHeatWaves" stroke="#ef4444">
                        <path class="svg-heat-wave anim-heat-slow" d="M 60 70 Q 60 40 60 10" />
                        <path class="svg-heat-wave anim-heat-slow" d="M 100 60 Q 100 30 100 10" />
                        <path class="svg-heat-wave anim-heat-slow" d="M 140 70 Q 140 40 140 10" />
                    </g>
                </svg>
            </div>

            <div class="rk-screed-data-grid">
                <div class="rk-data-card">
                    <div class="rk-data-label">Przewodnictwo (&lambda;)</div>
                    <div class="rk-data-val" id="valLambda">1.2 <span class="rk-data-unit">W/(m&middot;K)</span></div>
                </div>
                <div class="rk-data-card">
                    <div class="rk-data-label">Otulenie Rury</div>
                    <div class="rk-data-val" id="valContact" style="color: var(--rk-screed-text); font-size: 20px;">Słabe (Izolator)</div>
                </div>
                <div class="rk-data-card card-full">
                    <div>
                        <div class="rk-data-label">Wpływ na pompę ciepła</div>
                        <div class="rk-data-val" id="valEffect" style="color: var(--rk-screed-text); font-size: 20px; display: block;">Wymaga wyższej o 3&deg;C Tz</div>
                    </div>
                    <div style="text-align: right;">
                        <div class="rk-data-label" style="color: var(--rk-screed-danger);" id="lblScop">Spadek SCOP</div>
                        <div class="rk-data-val" id="valScop" style="color: var(--rk-screed-danger);">Brak zysku</div>
                    </div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-screed-content">
        <p>
            Wybór jastrychu to decyzja stricte inżynieryjna, a nie tylko kosmetyczna czy wykończeniowa. <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/" class="rk-link">Jastrych anhydrytowy</a> posiada współczynnik przewodzenia ciepła &lambda; &approx; <strong>1,8&ndash;2,0 W/(m&middot;K)</strong>, podczas gdy dla tradycyjnego betonu z miksikreta wartość ta wynosi zaledwie <strong>1,1&ndash;1,2 W/(m&middot;K)</strong>.
        </p>

        <p>
            Dzięki płynnej, samopoziomującej konsystencji, anhydryt w 100% szczelnie otula rurę grzewczą. Eliminuje to puste mikropęcherzyki powietrza, które w betonie działają jak naturalny izolator hamujący przepływ energii. W efekcie, aby uzyskać tę samą temperaturę odczuwalną na powierzchni kafli, woda w układzie z anhydrytem może być o <strong>2&ndash;3&deg;C chłodniejsza</strong>. To z kolei przekłada się na mniejsze zużycie prądu i realny wzrost współczynnika SCOP pompy ciepła o około <strong>6&ndash;8%</strong>.
        </p>

        <div class="rk-alert-error">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Konsekwencje błędów wykonawczych
            </h4>
            <p>
                Wylanie zbyt grubej warstwy betonu (np. 10 cm, co często ma miejsce przy łataniu nierówności chudziaka) drastycznie zwiększa <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/" class="rk-link">bezwładność cieplną</a>. System staje się ociężały, nie reaguje na chwilowe zyski słoneczne wpadające przez okna, co prowadzi do notorycznego przegrzewania pomieszczeń i ogromnych strat energii.
            </p>
        </div>
    </div>

    <div class="rk-screed-cta">
        <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/" class="rk-btn-screed">
            PRZECZYTAJ KOMPLETNY PRZEWODNIK O WYLEWKACH
            <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="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z"></path><path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domeny
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-screed-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // 2. Elementy DOM
    const btnBeton = document.getElementById('btnBeton');
    const btnAnhydryt = document.getElementById('btnAnhydryt');
    const pill = document.getElementById('screedPill');
    
    // SVG Elements
    const svgScreed = document.getElementById('svgScreed');
    const svgBubbles = document.getElementById('svgBubbles');
    const svgAirGap = document.getElementById('svgAirGap');
    const svgHeatWaves = document.querySelectorAll('.svg-heat-wave');
    
    // Data Elements
    const valLambda = document.getElementById('valLambda');
    const valContact = document.getElementById('valContact');
    const valEffect = document.getElementById('valEffect');
    const lblScop = document.getElementById('lblScop');
    const valScop = document.getElementById('valScop');

    // 3. Logika Przełączania
    function setScreedType(type) {
        if (type === 'beton') {
            // UI Toggle
            btnBeton.classList.add('active');
            btnAnhydryt.classList.remove('active');
            pill.style.transform = 'translateX(0)';
            pill.style.width = btnBeton.offsetWidth + 'px';
            pill.style.backgroundColor = 'var(--rk-screed-concrete)';

            // SVG Update (Grubszy, z bąblami, powolne ciepło, air gap)
            svgScreed.setAttribute('fill', 'var(--rk-screed-concrete)');
            svgScreed.setAttribute('height', '90'); // Grubsza
            svgScreed.setAttribute('y', '40');
            svgBubbles.style.opacity = '0.4';
            svgAirGap.setAttribute('stroke-width', '4'); // Szpara powietrzna widoczna
            
            svgHeatWaves.forEach(wave => {
                wave.className.baseVal = 'svg-heat-wave anim-heat-slow';
                wave.setAttribute('stroke', '#f87171'); // Słabsze czerwone
            });

            // Data Update
            valLambda.innerHTML = '1.2 <span class="rk-data-unit">W/(m&middot;K)</span>';
            valContact.innerText = 'Słabe (Izolator)';
            valContact.style.color = 'var(--rk-screed-text)';
            valEffect.innerText = 'Wymaga wyższej o 3°C Tz';
            
            lblScop.innerText = 'Spadek efektywności';
            lblScop.style.color = 'var(--rk-screed-danger)';
            valScop.innerText = 'Brak zysku';
            valScop.style.color = 'var(--rk-screed-danger)';

        } else {
            // UI Toggle
            btnAnhydryt.classList.add('active');
            btnBeton.classList.remove('active');
            pill.style.transform = `translateX(${btnBeton.offsetWidth}px)`;
            pill.style.width = btnAnhydryt.offsetWidth + 'px';
            pill.style.backgroundColor = 'var(--rk-screed-brand)';

            // SVG Update (Cieńszy, bez bąbli, szybkie ciepło, idealne otulenie)
            svgScreed.setAttribute('fill', 'var(--rk-screed-anhydrite)');
            svgScreed.setAttribute('height', '60'); // Cieńsza wylewka
            svgScreed.setAttribute('y', '70');
            svgBubbles.style.opacity = '0';
            svgAirGap.setAttribute('stroke-width', '0'); // Brak szpary powietrznej
            
            svgHeatWaves.forEach(wave => {
                wave.className.baseVal = 'svg-heat-wave anim-heat-fast';
                wave.setAttribute('stroke', '#ea580c'); // Intensywne pomarańczowe
            });

            // Data Update
            valLambda.innerHTML = '2.0 <span class="rk-data-unit">W/(m&middot;K)</span>';
            valContact.innerText = 'W 100% Idealne';
            valContact.style.color = 'var(--rk-screed-success)';
            valEffect.innerText = 'Obniża Tz o 2-3°C';
            
            lblScop.innerText = 'Zysk dla pompy ciepła';
            lblScop.style.color = 'var(--rk-screed-brand)';
            valScop.innerText = '+ 8% SCOP';
            valScop.style.color = 'var(--rk-screed-brand)';
        }
    }

    // Inicjalizacja wymiarów pigułki (fix na start)
    setTimeout(() => {
        pill.style.width = btnBeton.offsetWidth + 'px';
    }, 100);

    // Event Listeners
    btnBeton.addEventListener('click', () => setScreedType('beton'));
    btnAnhydryt.addEventListener('click', () => setScreedType('anhydryt'));
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-card: #1e293b;
    --rk-err-brand: #ef4444; /* Czerwony - sygnalizacja błędu/ostrzeżenia */
    --rk-err-accent: #f87171;
    --rk-err-warn: #f59e0b;
    --rk-err-info: #3b82f6;
    --rk-err-bg: #f8fafc;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
    --rk-err-border: #e2e8f0;
}

.rk-err-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(239, 68, 68, 0.15);
    border: 1px solid rgba(239, 68, 68, 0.3);
    overflow: hidden;
}

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

.rk-err-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-err-title {
    font-size: 28px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0;
}

.rk-err-title span { color: var(--rk-err-accent); }

.rk-err-intro {
    font-size: 16px;
    line-height: 1.8;
    color: #cbd5e1;
    margin: 20px 0 0 0;
    max-width: 800px;
}

/* Sekcja Kafelków */
.rk-err-interactive {
    padding: 40px 50px;
    background: var(--rk-err-bg);
}

.rk-err-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 25px;
}

/* Pojedynczy Kafelek */
.rk-err-card {
    background: #ffffff;
    border: 1px solid var(--rk-err-border);
    border-radius: 16px;
    padding: 25px;
    position: relative;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    cursor: pointer;
}

.rk-err-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 4px;
    background: var(--rk-err-border);
    transition: background 0.4s;
}

.rk-err-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -5px rgba(239, 68, 68, 0.15);
    border-color: rgba(239, 68, 68, 0.3);
}

.rk-err-card:hover::before {
    background: var(--rk-err-brand);
}

.rk-err-card-header {
    display: flex;
    align-items: center;
    gap: 15px;
    margin-bottom: 20px;
}

.rk-err-num {
    width: 36px;
    height: 36px;
    background: var(--rk-err-bg);
    color: var(--rk-err-muted);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.4s;
}

.rk-err-card:hover .rk-err-num {
    background: var(--rk-err-brand);
    color: #ffffff;
}

.rk-err-card h3 {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
    line-height: 1.4;
}

.rk-err-desc {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-err-text);
    margin: 0 0 20px 0;
    flex-grow: 1;
}

/* Wizualizacje SVG */
.rk-err-visual {
    background: var(--rk-err-dark);
    height: 140px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
}

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

/* 1. Strefy Brzegowe */
.anim-cold-draft { stroke-dasharray: 5 10; animation: dropDown 2s linear infinite; opacity: 0.2; }
.rk-err-card:hover .anim-cold-draft { opacity: 1; stroke: #3b82f6; }
@keyframes dropDown { to { stroke-dashoffset: -30; } }

/* 2. Zbyt długa pętla */
.anim-pump-fail { transform-origin: center; }
.rk-err-card:hover .anim-pump-fail { animation: shakeErr 0.4s ease-in-out infinite; fill: var(--rk-err-brand); }
.pipe-fail-gradient { transition: stop-color 0.5s; }
.rk-err-card:hover .pipe-fail-gradient { stop-color: #3b82f6; } 
@keyframes shakeErr { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(15deg); } 75% { transform: rotate(-15deg); } }

/* 3. EVOH Bariera */
.anim-o2 { opacity: 0; transform: translateY(10px); transition: all 0.5s; }
.rk-err-card:hover .anim-o2 { opacity: 1; transform: translateY(0); animation: floatUp 2s infinite alternate; }
.pipe-rust { transition: fill 1s; }
.rk-err-card:hover .pipe-rust { fill: #9a3412; }
@keyframes floatUp { to { transform: translateY(-15px); } }

/* 4. Dylatacje */
.anim-crack { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.8s ease-out; }
.rk-err-card:hover .anim-crack { stroke-dashoffset: 0; }
.anim-expand-l { transition: transform 0.8s; }
.anim-expand-r { transition: transform 0.8s; }
.rk-err-card:hover .anim-expand-l { transform: translateX(-5px); }
.rk-err-card:hover .anim-expand-r { transform: translateX(5px); }

/* 5. Zabudowa Stała */
.anim-heat-trap { opacity: 0.3; transition: all 0.8s; }
.rk-err-card:hover .anim-heat-trap { opacity: 1; fill: #b91c1c; }
.anim-bounce { stroke-dasharray: 4 4; animation: bounceBack 1.5s infinite; opacity: 0;}
.rk-err-card:hover .anim-bounce { opacity: 1; }
@keyframes bounceBack { 0% { stroke-dashoffset: 0; } 50% { stroke-dashoffset: -10; } 100% { stroke-dashoffset: 0; } }

/* 6. Brak Równoważenia (Nowy) */
.anim-flow-imbalance { stroke-dasharray: 10 10; animation: flowRun 1s linear infinite; }
@keyframes flowRun { to { stroke-dashoffset: -20; } }
.rk-err-card:hover .flow-cold { stroke: #1e293b; transition: stroke 0.5s; }

.rk-err-consequence {
    background: #fef2f2;
    color: #991b1b;
    padding: 12px 15px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    margin-top: 15px;
    border-left: 3px solid var(--rk-err-brand);
}

.rk-link {
    color: var(--rk-err-info);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 1px dashed rgba(59, 130, 246, 0.4);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #1d4ed8;
    border-bottom-style: solid;
}

/* CTA */
.rk-err-cta {
    padding: 40px 50px;
    background: var(--rk-err-bg);
    text-align: center;
    border-top: 1px solid var(--rk-err-border);
}

.rk-btn-safe {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-err-dark);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    transition: all 0.3s;
    box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.4);
}

.rk-btn-safe:hover {
    transform: translateY(-4px);
    background: #334155;
    box-shadow: 0 20px 35px -5px rgba(15, 23, 42, 0.5);
}

@media (max-width: 768px) {
    .rk-err-header, .rk-err-interactive, .rk-err-cta { padding: 30px 20px; }
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-title { font-size: 24px; }
}
</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-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/"
    },
    "headline": "Top 6 krytycznych błędów w projektach ogrzewania podłogowego",
    "description": "Lista najczęstszych błędów instalacyjnych: brak stref brzegowych, zbyt długie pętle, brak bariery EVOH, brak dylatacji, błędy zabudowy oraz brak równoważenia hydraulicznego.",
    "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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/#dataset-bledy",
    "name": "Zestawienie krytycznych błędów hydraulicznych i termicznych v2",
    "description": "Analiza skutków 6 najczęstszych pomyłek wykonawczych w systemach płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "błędy w ogrzewaniu podłogowym",
      "brak stref brzegowych",
      "rura bez bariery antydyfuzyjnej",
      "brak równoważenia podłogówki",
      "pękanie posadzki dylatacja"
    ],
    "measurementTechnique": "Wizualizacja procesów degradacji systemu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Brak stref brzegowych = wychłodzenie przy oknach.",
        "Zbyt długa pętla = brak przepływu.",
        "Rura bez EVOH = korozja pompy.",
        "Brak dylatacji = pękanie płytek.",
        "Zabudowa stała = uwięzienie ciepła.",
        "Brak równoważenia = zimne pokoje."
      ]
    }
  }
]
</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="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>
            Audyt Techniczny 2026
        </div>
        <h2 class="rk-err-title">Top 6 najczęstszych <span>błędów</span> w projektach</h2>
        <p class="rk-err-intro">Nawet najdroższa pompa ciepła nie zrekompensuje błędów popełnionych na etapie projektu i montażu. Poznaj 6 krytycznych pomyłek, które bezpowrotnie niszczą efektywność Twojego domu. Najedź na kafelek, aby zobaczyć fizykę problemu.</p>
    </div>

    <div class="rk-err-interactive">
        <div class="rk-err-grid">
            
            <div class="rk-err-card">
                <div class="rk-err-card-header">
                    <div class="rk-err-num">1</div>
                    <h3>Brak stref brzegowych</h3>
                </div>
                <p class="rk-err-desc">Niezagęszczenie rur pod oknami tarasowymi. Zimne powietrze swobodnie opada na podłogę bez bariery cieplnej.</p>
                <div class="rk-err-visual">
                    <svg class="rk-svg-box" viewBox="0 0 200 140">
                        <rect x="20" y="20" width="10" height="100" fill="#cbd5e1"/>
                        <rect x="30" y="20" width="40" height="80" fill="rgba(59, 130, 246, 0.2)" stroke="#3b82f6" stroke-width="2"/>
                        <circle cx="100" cy="115" r="5" fill="#f87171"/>
                        <circle cx="150" cy="115" r="5" fill="#f87171"/>
                        <path class="anim-cold-draft" d="M 60 100 Q 90 110 160 110" fill="none" stroke="#64748b" stroke-width="3" stroke-linecap="round"/>
                    </svg>
                </div>
                <div class="rk-err-consequence">Skutek: „Roszenie” szyb i chłód przy oknach. <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-link">Czytaj o strefach</a>.</div>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-card-header">
                    <div class="rk-err-num">2</div>
                    <h3>Zbyt długie pętle</h3>
                </div>
                <p class="rk-err-desc">Pętle powyżej 100m przy rurze 16mm generują opory, których pompa obiegowa nie jest w stanie pokonać.</p>
                <div class="rk-err-visual">
                    <svg class="rk-svg-box" viewBox="0 0 200 140">
                        <path d="M 20 100 L 20 40 A 10 10 0 0 1 40 40 L 40 100 A 10 10 0 0 0 60 100 L 60 40 A 10 10 0 0 1 80 40 L 80 100 A 10 10 0 0 0 100 100 L 100 40 A 10 10 0 0 1 120 40 L 120 100 A 10 10 0 0 0 140 100 L 140 40 A 10 10 0 0 1 160 40 L 160 100" fill="none" stroke="#ef4444" stroke-width="6" stroke-linecap="round"/>
                        <circle cx="20" cy="115" r="15" fill="#334155" class="anim-pump-fail"/>
                    </svg>
                </div>
                <div class="rk-err-consequence">Skutek: Zimna podłoga mimo pracy pompy. <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/" class="rk-link">Limity pętli</a>.</div>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-card-header">
                    <div class="rk-err-num">3</div>
                    <h3>Brak bariery EVOH</h3>
                </div>
                <p class="rk-err-desc">Przenikanie tlenu przez ścianki rury powoduje rdzewienie wymienników ciepła i elementów PC.</p>
                <div class="rk-err-visual">
                    <svg class="rk-svg-box" viewBox="0 0 200 140">
                        <rect x="20" y="40" width="160" height="60" rx="10" fill="#38bdf8" class="pipe-rust"/>
                        <text x="80" y="25" fill="#94a3b8" font-size="12" font-weight="bold" class="anim-o2">O&sup2;</text>
                        <circle cx="50" cy="70" r="4" fill="#78350f" opacity="0.8"/>
                    </svg>
                </div>
                <div class="rk-err-consequence">Skutek: Korozja i zapowietrzanie. <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/" class="rk-link">Znaczenie EVOH</a>.</div>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-card-header">
                    <div class="rk-err-num">4</div>
                    <h3>Brak dylatacji</h3>
                </div>
                <p class="rk-err-desc">Brak nacięć przy dużych powierzchniach uniemożliwia jastrychowi swobodną pracę termiczną.</p>
                <div class="rk-err-visual">
                    <svg class="rk-svg-box" viewBox="0 0 200 140">
                        <rect x="20" y="40" width="75" height="60" fill="#94a3b8" class="anim-expand-l"/>
                        <rect x="105" y="40" width="75" height="60" fill="#94a3b8" class="anim-expand-r"/>
                        <path d="M 95 30 L 100 60 L 90 80 L 105 110" fill="none" stroke="#ef4444" stroke-width="3" class="anim-crack"/>
                    </svg>
                </div>
                <div class="rk-err-consequence">Skutek: Pękanie płytek i fug. <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link">Zasady dylatacji</a>.</div>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-card-header">
                    <div class="rk-err-num">5</div>
                    <h3>Zabudowa Stała</h3>
                </div>
                <p class="rk-err-desc">Rury pod szafkami czy wyspami kuchennymi przegrzewają meble zamiast oddawać ciepło do pokoju.</p>
                <div class="rk-err-visual">
                    <svg class="rk-svg-box" viewBox="0 0 200 140">
                        <rect x="40" y="30" width="120" height="60" fill="#854d0e" rx="4"/>
                        <rect x="40" y="100" width="120" height="20" fill="#f87171" class="anim-heat-trap"/>
                        <path d="M 90 95 L 90 85 L 80 90" fill="none" stroke="#ef4444" stroke-width="2" class="anim-bounce"/>
                    </svg>
                </div>
                <div class="rk-err-consequence">Skutek: Niszczenie mebli i strata energii. <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/" class="rk-link">Wpływ mebli</a>.</div>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-card-header">
                    <div class="rk-err-num">6</div>
                    <h3>Brak równoważenia</h3>
                </div>
                <p class="rk-err-desc">Brak nastaw na rotametrach rozdzielacza powoduje, że woda płynie tylko tam, gdzie ma najmniejszy opór.</p>
                <div class="rk-err-visual">
                    <svg class="rk-svg-box" viewBox="0 0 200 140">
                        <rect x="20" y="20" width="20" height="100" fill="#334155"/>
                        <path d="M 40 40 L 120 40 L 120 60 L 40 60" fill="none" stroke="#ef4444" stroke-width="6" class="anim-flow-imbalance"/>
                        <path d="M 40 80 L 170 80 L 170 100 L 40 100" fill="none" stroke="#64748b" stroke-width="6" class="flow-cold"/>
                    </svg>
                </div>
                <div class="rk-err-consequence">Skutek: Jeden pokój przegrzany, drugi lodowaty. <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-link">Rola rotametrów</a>.</div>
            </div>

        </div>
    </div>

    <div class="rk-err-cta">
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-safe">
            PROJEKTUJ Z EKSPERTAMI - UNIKNIJ BŁĘDÓW
            <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="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-err-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }
    const cards = document.querySelectorAll('.rk-err-card');
    cards.forEach(card => {
        card.addEventListener('touchstart', function() {
            this.classList.toggle('hovered'); 
        }, {passive: true});
    });
});
</script>



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



<style>
:root {
    --rk-inv-dark: #0f172a;
    --rk-inv-card: #1e293b;
    --rk-inv-brand: #10b981; /* Szmaragdowa zieleń - symbol oszczędności i zysku */
    --rk-inv-brand-light: #dcfce7;
    --rk-inv-accent: #3b82f6; /* Zaufany niebieski */
    --rk-inv-warn: #f59e0b;
    --rk-inv-danger: #ef4444; /* Czerwony - straty */
    --rk-inv-danger-light: #fee2e2;
    --rk-inv-bg: #f8fafc;
    --rk-inv-border: #e2e8f0;
    --rk-inv-text: #334155;
    --rk-inv-muted: #64748b;
}

.rk-inv-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(16, 185, 129, 0.15);
    border: 1px solid rgba(16, 185, 129, 0.3);
    overflow: hidden;
}

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

.rk-inv-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    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(16, 185, 129, 0.3);
}

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

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

/* Interaktywny Symulator Kosztów */
.rk-inv-interactive {
    padding: 40px 50px;
    background: var(--rk-inv-bg);
}

.rk-inv-toggle-wrap {
    display: flex;
    background: #e2e8f0;
    padding: 6px;
    border-radius: 16px;
    margin-bottom: 35px;
    position: relative;
}

.rk-inv-btn {
    flex: 1;
    padding: 18px 20px;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-inv-text);
    background: transparent;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

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

.rk-inv-pill {
    position: absolute;
    top: 6px;
    left: 6px;
    height: calc(100% - 12px);
    background: var(--rk-inv-danger);
    border-radius: 12px;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
    z-index: 1;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
}

/* Grid layout dla wykresu i wyników */
.rk-inv-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 35px;
    align-items: center;
}

/* Animowany Wykres Słupkowy SVG */
.rk-inv-chart-box {
    background: #ffffff;
    border: 1px solid var(--rk-inv-border);
    border-radius: 20px;
    padding: 30px;
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
    height: 280px;
    display: flex;
    flex-direction: column;
}

.rk-chart-title {
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-inv-muted);
    letter-spacing: 1px;
    text-align: center;
    margin-bottom: 15px;
}

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

.svg-bar {
    transition: height 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), y 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), fill 0.4s;
    rx: 6;
}

.svg-bar-label {
    font-family: 'Inter', sans-serif;
    font-size: 12px;
    font-weight: 800;
    fill: var(--rk-inv-muted);
    text-anchor: middle;
    transition: fill 0.4s;
}

.svg-bar-val {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 900;
    fill: var(--rk-inv-dark);
    text-anchor: middle;
    transition: y 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* Karty Wynikowe */
.rk-inv-data-group {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-inv-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-inv-border);
    padding: 20px 25px;
    border-radius: 16px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all 0.3s;
}

.rk-inv-data-card.highlight {
    background: var(--rk-inv-danger-light);
    border-color: rgba(239, 68, 68, 0.4);
}

.rk-inv-data-info h4 {
    margin: 0 0 5px 0;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-inv-dark);
    text-transform: uppercase;
}

.rk-inv-data-info p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-inv-muted);
}

.rk-inv-data-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-inv-danger);
    transition: color 0.3s;
}

/* Treść Merytoryczna - Kafelki na Desktop i Mobile */
.rk-inv-content {
    padding: 45px 50px;
    background: #ffffff;
}

.rk-inv-intro {
    font-size: 16px;
    line-height: 1.8;
    color: var(--rk-inv-text);
    margin-bottom: 30px;
}

.rk-benefit-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 35px;
}

.rk-b-card {
    background: var(--rk-inv-bg);
    border: 1px solid var(--rk-inv-border);
    border-top: 4px solid var(--rk-inv-brand);
    padding: 25px 20px;
    border-radius: 12px;
    text-align: center;
    transition: transform 0.3s, box-shadow 0.3s;
}

.rk-b-card:hover {
    transform: translateY(-5px);
    box-shadow: 0 10px 20px -5px rgba(0,0,0,0.05);
}

.rk-b-icon {
    width: 48px;
    height: 48px;
    background: #ffffff;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    margin: 0 auto 15px auto;
    color: var(--rk-inv-brand);
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

.rk-b-card h4 {
    margin: 0 0 10px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-inv-dark);
}

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

.rk-subsidies-box {
    background: #f0f9ff;
    border-left: 4px solid var(--rk-inv-accent);
    padding: 25px;
    border-radius: 0 12px 12px 0;
}

.rk-subsidies-box h3 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 900;
    color: #0369a1;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-subsidies-box p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: #0c4a6e;
}

.rk-link {
    color: var(--rk-inv-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(59, 130, 246, 0.4);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #1d4ed8;
    border-bottom-style: solid;
}

/* CTA */
.rk-inv-cta {
    padding: 40px 50px;
    background: var(--rk-inv-bg);
    text-align: center;
    border-top: 1px solid var(--rk-inv-border);
}

.rk-btn-inv {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    background: var(--rk-inv-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    transition: all 0.3s;
    box-shadow: 0 10px 25px -5px rgba(16, 185, 129, 0.4);
}

.rk-btn-inv:hover {
    transform: translateY(-4px);
    background: #059669;
    box-shadow: 0 20px 35px -5px rgba(16, 185, 129, 0.5);
}

/* Responsywność */
@media (max-width: 768px) {
    .rk-inv-header, .rk-inv-interactive, .rk-inv-content, .rk-inv-cta { padding: 30px 20px; }
    .rk-inv-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-benefit-cards { grid-template-columns: 1fr; } /* Kafelki pod sobą na mobile */
    .rk-inv-btn { font-size: 14px; padding: 12px; flex-direction: column; gap: 5px; }
    .rk-inv-title { font-size: 24px; }
    .rk-inv-data-card { flex-direction: column; text-align: center; gap: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-inwestycja",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Dlaczego warto zamówić profesjonalny projekt? Zwrot z inwestycji",
    "description": "Profesjonalny projekt podłogówki zapobiega przewymiarowaniu pompy ciepła, eliminuje odpady rur i jest niezbędny do uzyskania dotacji Czyste Powietrze.",
    "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/"
    },
    "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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-inwestycja",
    "name": "Kalkulacja redukcji kosztów inwestycyjnych (CAPEX)",
    "description": "Zestawienie obrazujące oszczędności wynikające z optymalizacji OZC i dokładnego trasowania rur względem montażu 'na oko'.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "cena projektu ogrzewania podłogowego",
      "dotacje czyste powietrze 2026 wymogi",
      "przewymiarowana pompa ciepła koszty",
      "ile rury na podłogówkę",
      "zwrot z inwestycji OZC"
    ],
    "measurementTechnique": "Szacowanie oszczędności na podstawie redukcji mocy znamionowej pompy ciepła (np. z 9kW na 6kW) oraz eliminacji zakupu nadwyżek materiałowych (rury, izolacja).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pompa Ciepła: Oszczędność 3000-5000 PLN na różnicy w cenie urządzenia.",
        "Materiały Hydrauliczne: Oszczędność rzędu 15% dzięki dokładnemu zestawieniu z programu CAD.",
        "Formalności: Zgodność z audytami programów Moje Ciepło i Czyste Powietrze."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-inwestycja",
    "name": "Symulator Redukcji Kosztów Inwestycyjnych",
    "description": "Interaktywny wykres słupkowy ilustrujący różnice w nakładach finansowych pomiędzy instalacją intuicyjną a projektowaną inżynieryjnie.",
    "applicationCategory": "FinancialApplication",
    "operatingSystem": "All",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<div class="rk-inv-container" id="rk-inv-app">
    <div class="rk-inv-header">
        <div class="rk-inv-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"><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>
            Ekonomia i Opłacalność
        </div>
        <h2 class="rk-inv-title">Dlaczego profesjonalny projekt <span>zwraca się natychmiast?</span></h2>
    </div>

    <div class="rk-inv-interactive">
        
        <div class="rk-inv-toggle-wrap">
            <div class="rk-inv-pill" id="invPill"></div>
            <button class="rk-inv-btn active" data-type="bad" id="btnInvBad">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Instalator "Na oko"
            </button>
            <button class="rk-inv-btn" data-type="good" id="btnInvGood">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><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>
                Projekt Inżynierski
            </button>
        </div>

        <div class="rk-inv-grid">
            
            <div class="rk-inv-chart-box">
                <div class="rk-chart-title">Porównanie Kosztów (CAPEX)</div>
                <svg class="rk-svg-chart" viewBox="0 0 200 180">
                    <line x1="20" y1="30" x2="180" y2="30" stroke="#e2e8f0" stroke-width="1" stroke-dasharray="2 2"/>
                    <line x1="20" y1="80" x2="180" y2="80" stroke="#e2e8f0" stroke-width="1" stroke-dasharray="2 2"/>
                    <line x1="20" y1="130" x2="180" y2="130" stroke="#e2e8f0" stroke-width="1" stroke-dasharray="2 2"/>
                    
                    <rect id="barHeatPump" class="svg-bar" x="40" y="30" width="45" height="100" fill="var(--rk-inv-danger)"/>
                    <text id="valHeatPumpSvg" class="svg-bar-val" x="62.5" y="22">32 k</text>
                    <text class="svg-bar-label" x="62.5" y="148">Pompa C.</text>

                    <rect id="barMaterials" class="svg-bar" x="115" y="60" width="45" height="70" fill="var(--rk-inv-warn)"/>
                    <text id="valMaterialsSvg" class="svg-bar-val" x="137.5" y="52">12 k</text>
                    <text class="svg-bar-label" x="137.5" y="148">Rury</text>
                    
                    <line x1="20" y1="130" x2="180" y2="130" stroke="#94a3b8" stroke-width="2" stroke-linecap="round"/>
                </svg>
            </div>

            <div class="rk-inv-data-group">
                <div class="rk-inv-data-card highlight" id="cardHp">
                    <div class="rk-inv-data-info">
                        <h4>Moc Pompy Ciepła</h4>
                        <p id="descHp">Przewymiarowana (np. 9 kW)</p>
                    </div>
                    <div class="rk-inv-data-val" id="valHpCost">32 000 zł</div>
                </div>
                
                <div class="rk-inv-data-card highlight" id="cardMat">
                    <div class="rk-inv-data-info">
                        <h4>Koszty Rur (Zapas)</h4>
                        <p id="descMat">Kupione "na górkę" + ścinki</p>
                    </div>
                    <div class="rk-inv-data-val" id="valMatCost">12 000 zł</div>
                </div>

                <div class="rk-inv-data-card" style="background: var(--rk-inv-dark); border-color: var(--rk-inv-dark);">
                    <div class="rk-inv-data-info">
                        <h4 style="color: #ffffff;">Bilans Inwestycji</h4>
                        <p style="color: #94a3b8;">Łączne koszty materiałowe</p>
                    </div>
                    <div class="rk-inv-data-val" id="valTotalCost" style="color: #ffffff;">44 000 zł</div>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-inv-content">
        <p class="rk-inv-intro">
            Profesjonalny projekt ogrzewania podłogowego to inwestycja, która zwraca się już w dniu wizyty w hurtowni instalacyjnej. Oszacowania "na oko" i przewymiarowywanie urządzeń z obawy przed niedogrzaniem to najdroższe błędy na budowie. Dzięki dokładnym wyliczeniom zyskujesz trzykrotnie:
        </p>

        <div class="rk-benefit-cards">
            <div class="rk-b-card">
                <div class="rk-b-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="2" y="7" width="20" height="14" rx="2" ry="2"></rect><path d="M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path></svg>
                </div>
                <h4>Zero Odpadów</h4>
                <p>Kupujesz dokładnie tyle <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/" class="rk-link">metrów rury grzewczej</a>, ile wynika z rzutu CAD, unikając zakupu drogich zwojów "na zapas".</p>
            </div>
            
            <div class="rk-b-card">
                <div class="rk-b-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"><polyline points="23 6 13.5 15.5 8.5 10.5 1 18"></polyline><polyline points="17 6 23 6 23 12"></polyline></svg>
                </div>
                <h4>Tańsza Pompa</h4>
                <p>Precyzyjne <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">OZC</a> często wykazuje, że zamiast jednostki 9 kW, budynek obsłuży tańszy model 6 kW (oszczędność rzędu 4 000 PLN).</p>
            </div>

            <div class="rk-b-card">
                <div class="rk-b-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="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>
                <h4>Idealny Komfort</h4>
                <p>Zrównoważone pętle i zaplanowane nastawy na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-link">rotametrach</a> eliminują problem "zimnej sypialni".</p>
            </div>
        </div>

        <div class="rk-subsidies-box">
            <h3>
                <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 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                Wymogi formalne dotacji 2026
            </h3>
            <p>
                Kompletna dokumentacja projektowa zawiera szczegółowe rysunki z trasowaniem rur, tabele nastaw rozdzielaczy oraz profesjonalny wynik OZC. Posiadanie takich dokumentów jest prawnie wymagane podczas audytów technicznych, by uzyskać dofinansowanie z programów takich jak <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-a-dotacje-czyste-powietrze-i-moje-cieplo-2026/" class="rk-link">"Czyste Powietrze" czy "Moje Ciepło"</a>.
            </p>
        </div>
    </div>

    <div class="rk-inv-cta">
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-inv">
            ZAMÓW PROJEKT I ZACZNIJ OSZCZĘDZAĆ
            <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 Domeny
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-inv-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    // Elementy DOM
    const btnBad = document.getElementById('btnInvBad');
    const btnGood = document.getElementById('btnInvGood');
    const pill = document.getElementById('invPill');
    
    const barHp = document.getElementById('barHeatPump');
    const barMat = document.getElementById('barMaterials');
    const valHpSvg = document.getElementById('valHeatPumpSvg');
    const valMatSvg = document.getElementById('valMaterialsSvg');
    
    const cardHp = document.getElementById('cardHp');
    const descHp = document.getElementById('descHp');
    const valHpCost = document.getElementById('valHpCost');
    
    const cardMat = document.getElementById('cardMat');
    const descMat = document.getElementById('descMat');
    const valMatCost = document.getElementById('valMatCost');
    
    const valTotalCost = document.getElementById('valTotalCost');

    function setMode(mode) {
        if (mode === 'bad') {
            // UI Toggle
            btnBad.classList.add('active');
            btnGood.classList.remove('active');
            pill.style.transform = 'translateX(0)';
            pill.style.width = btnBad.offsetWidth + 'px';
            pill.style.backgroundColor = 'var(--rk-inv-danger)';

            // Animacja SVG Słupków (Wysokie koszty)
            barHp.setAttribute('y', '30');
            barHp.setAttribute('height', '100');
            barHp.style.fill = 'var(--rk-inv-danger)';
            valHpSvg.setAttribute('y', '22');
            valHpSvg.textContent = '32 k';

            barMat.setAttribute('y', '60');
            barMat.setAttribute('height', '70');
            barMat.style.fill = 'var(--rk-inv-warn)';
            valMatSvg.setAttribute('y', '52');
            valMatSvg.textContent = '12 k';

            // Animacja Kart HTML
            cardHp.classList.add('highlight');
            descHp.innerText = 'Przewymiarowana (np. 9 kW)';
            valHpCost.innerText = '32 000 zł';
            valHpCost.style.color = 'var(--rk-inv-danger)';

            cardMat.classList.add('highlight');
            descMat.innerText = 'Kupione "na górkę" + ścinki';
            valMatCost.innerText = '12 000 zł';
            valMatCost.style.color = 'var(--rk-inv-warn)';

            valTotalCost.innerText = '44 000 zł';

        } else {
            // UI Toggle
            btnGood.classList.add('active');
            btnBad.classList.remove('active');
            pill.style.transform = `translateX(${btnBad.offsetWidth}px)`;
            pill.style.width = btnGood.offsetWidth + 'px';
            pill.style.backgroundColor = 'var(--rk-inv-brand)';

            // Animacja SVG Słupków (Zoptymalizowane/niskie)
            barHp.setAttribute('y', '70');
            barHp.setAttribute('height', '60');
            barHp.style.fill = 'var(--rk-inv-brand)';
            valHpSvg.setAttribute('y', '62');
            valHpSvg.textContent = '28 k';

            barMat.setAttribute('y', '95');
            barMat.setAttribute('height', '35');
            barMat.style.fill = 'var(--rk-inv-brand)';
            valMatSvg.setAttribute('y', '87');
            valMatSvg.textContent = '9 k';

            // Animacja Kart HTML
            cardHp.classList.remove('highlight');
            descHp.innerText = 'Wyliczona z OZC (np. 6 kW)';
            valHpCost.innerText = '28 000 zł';
            valHpCost.style.color = 'var(--rk-inv-brand)';

            cardMat.classList.remove('highlight');
            descMat.innerText = 'Dokładna specyfikacja z rzutu CAD';
            valMatCost.innerText = '9 000 zł';
            valMatCost.style.color = 'var(--rk-inv-brand)';

            valTotalCost.innerText = '37 000 zł';
        }
    }

    // Inicjalizacja szerokości pigułki
    setTimeout(() => { pill.style.width = btnBad.offsetWidth + 'px'; }, 100);

    // Eventy
    btnBad.addEventListener('click', () => setMode('bad'));
    btnGood.addEventListener('click', () => setMode('good'));
});
</script>



<style>
:root {
    --rk-quote-primary: #0f172a;
    --rk-quote-accent: #0284c7;
    --rk-quote-accent-light: #e0f2fe;
    --rk-quote-danger: #ef4444;
    --rk-quote-bg: #f8fafc;
    --rk-quote-border: #e2e8f0;
}

.rk-expert-wrapper {
    max-width: 950px;
    margin: 50px auto 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
}

.rk-expert-header {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-bottom: 25px;
}

.rk-expert-header-title {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-quote-primary);
    margin: 0;
}

.rk-expert-container {
    background: #ffffff;
    border-radius: 24px;
    padding: 35px 40px;
    display: flex;
    gap: 30px;
    align-items: flex-start;
    border: 1px solid var(--rk-quote-border);
    box-shadow: 0 20px 40px -15px rgba(2, 132, 199, 0.1);
    position: relative;
    overflow: hidden;
}

/* Dekoracyjne tło */
.rk-expert-container::before {
    content: '';
    position: absolute;
    top: 0; left: 0; width: 6px; height: 100%;
    background: linear-gradient(to bottom, var(--rk-quote-accent), #38bdf8);
}

.rk-expert-container::after {
    content: '”';
    position: absolute;
    top: -20px;
    right: 20px;
    font-family: serif;
    font-size: 140px;
    color: var(--rk-quote-bg);
    line-height: 1;
    z-index: 0;
}

/* Animowane zdjęcie */
.rk-expert-photo-wrap {
    flex-shrink: 0;
    width: 110px;
    height: 110px;
    position: relative;
    z-index: 1;
}

.rk-expert-photo-ring {
    position: absolute;
    top: -5px; left: -5px; right: -5px; bottom: -5px;
    border-radius: 50%;
    border: 2px dashed var(--rk-quote-accent);
    animation: spinRing 10s linear infinite;
}

@keyframes spinRing {
    100% { transform: rotate(360deg); }
}

.rk-expert-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    object-position: center top;
    border: 4px solid #ffffff;
    box-shadow: 0 8px 15px rgba(0,0,0,0.1);
    position: relative;
    z-index: 2;
}

.rk-expert-badge-icon {
    position: absolute;
    bottom: -5px;
    right: -5px;
    background: var(--rk-quote-accent);
    color: #ffffff;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.4);
    z-index: 3;
}

/* Treść cytatu */
.rk-expert-content {
    flex-grow: 1;
    position: relative;
    z-index: 1;
}

.rk-expert-label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    font-weight: 800;
    color: var(--rk-quote-accent);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 12px;
    background: var(--rk-quote-accent-light);
    padding: 4px 12px;
    border-radius: 20px;
}

.rk-expert-text {
    font-size: 18px;
    line-height: 1.7;
    color: var(--rk-quote-primary);
    font-style: italic;
    margin: 0 0 15px 0;
    font-weight: 500;
}

.rk-expert-text strong {
    color: var(--rk-quote-accent);
    font-weight: 800;
}

.rk-expert-text a {
    color: var(--rk-quote-primary);
    text-decoration: underline;
    text-decoration-color: var(--rk-quote-accent);
    text-underline-offset: 3px;
    transition: color 0.2s;
}

.rk-expert-text a:hover {
    color: var(--rk-quote-accent);
}

.rk-expert-signature {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: #64748b;
    border-top: 1px solid var(--rk-quote-border);
    padding-top: 15px;
    margin-top: 15px;
}

/* Interaktywny Panel Ukryty */
.rk-expert-interactive {
    margin-top: 20px;
}

.rk-expert-btn {
    background: #ffffff;
    border: 2px solid var(--rk-quote-border);
    color: var(--rk-quote-primary);
    padding: 10px 20px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    transition: all 0.3s ease;
}

.rk-expert-btn:hover {
    border-color: var(--rk-quote-accent);
    color: var(--rk-quote-accent);
    background: var(--rk-quote-accent-light);
}

.rk-expert-btn svg {
    transition: transform 0.3s;
}

.rk-expert-btn.active svg {
    transform: rotate(180deg);
}

.rk-expert-data-panel {
    display: none;
    margin-top: 15px;
    padding: 20px;
    background: var(--rk-quote-bg);
    border-radius: 12px;
    border: 1px dashed var(--rk-quote-border);
    animation: fadeInDown 0.4s ease forwards;
}

.rk-expert-data-panel.active {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
}

@keyframes fadeInDown {
    from { opacity: 0; transform: translateY(-10px); }
    to { opacity: 1; transform: translateY(0); }
}

.rk-data-stat {
    text-align: center;
    background: #ffffff;
    padding: 15px;
    border-radius: 8px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-data-val {
    display: block;
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-quote-accent);
    margin-bottom: 5px;
}

.rk-data-lab {
    font-size: 11px;
    color: #64748b;
    text-transform: uppercase;
    font-weight: 800;
}

@media (max-width: 768px) {
    .rk-expert-container { flex-direction: column; text-align: center; padding: 30px 25px; align-items: center; }
    .rk-expert-header-title { font-size: 22px; text-align: center; }
    .rk-expert-container::before { width: 100%; height: 6px; }
    .rk-expert-data-panel.active { grid-template-columns: 1fr; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-cytat",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Robert Kucharski: Instalatorskie 'na oko' to najdroższy system grzewczy świata",
    "description": "Ekspercka opinia na temat ryzyka łączenia pomp ciepła z instalacjami układanymi bez projektu OZC. Zobacz kluczowe parametry.",
    "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/",
      "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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Quotation",
    "license": "https://projekt-ogrzewania.pl/",
    "text": "Instalatorskie 'na oko' to najdroższy system grzewczy świata. Kiedy łączymy pompę ciepła z ogrzewaniem podłogowym, każdy centymetr rury i każdy stopień temperatury zasilania mają krytyczne znaczenie. Brak projektu OZC i zgadywanie rozstawów to gwarancja przewymiarowanej sprężarki, taktowania i rachunków wyższych o 30 procent. Fizyki nie da się oszukać intuicją, a beton nie wybacza błędów.",
    "spokenByCharacter": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "jobTitle": "Inżynier HVAC & Projektant",
      "url": "https://projekt-ogrzewania.pl",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ],
      "worksFor": {
        "@type": "Organization",
        "name": "Projekt-Ogrzewania.pl"
      }
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-cytat",
    "name": "Eksperckie parametry graniczne dla pomp ciepła",
    "description": "Zestawienie inżynierskich wartości bazowych wymaganych do skutecznej i taniej eksploatacji układu z rewersyjną pompą ciepła.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt OZC podłogówka",
      "rozstaw rur pompa ciepła cytat",
      "inżynier hvac robert kucharski",
      "taktowanie pompy ciepła",
      "przewymiarowana sprężarka skutki"
    ],
    "measurementTechnique": "Określenie krytycznych wartości brzegowych weryfikacji projektu instalacji przed wylaniem jastrychu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Max temperatura zasilania (Tz): 35 stopni Celsjusza",
        "Zalecany rozstaw pętli (środek): 10 cm",
        "Spadek COP pompy: ok. 2.5% na każdy podniesiony 1 stopień Celsjusza"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-cytat",
    "name": "Panel Analityczny: Weryfikacja parametrów OZC",
    "description": "Interaktywny interfejs wyświetlający twarde dane liczbowe i parametry graniczne wynikające z norm hydraulicznych przytoczonych przez inżyniera.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-expert-wrapper" id="rk-expert-quote-app">
    <div class="rk-expert-header">
        <svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="var(--rk-quote-accent)" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path></svg>
        <div class="rk-expert-header-title">Głos Inżyniera</div>
    </div>
    
    <div class="rk-expert-container">
        <div class="rk-expert-photo-wrap">
            <div class="rk-expert-photo-ring"></div>
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-photo" loading="lazy">
            <div class="rk-expert-badge-icon">
                <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="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            </div>
        </div>
        
        <div class="rk-expert-content">
            <span class="rk-expert-label">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                Ostrzeżenie przed "intuicją"
            </span>
            <p class="rk-expert-text">
                "Instalatorskie 'na oko' to <strong>najdroższy system grzewczy świata</strong>. Kiedy łączymy pompę ciepła z ogrzewaniem podłogowym, każdy centymetr rury i każdy stopień temperatury zasilania mają krytyczne znaczenie. Brak <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektu OZC</a> i zgadywanie rozstawów to gwarancja przewymiarowanej sprężarki, taktowania i rachunków wyższych o 30%. Fizyki nie da się oszukać intuicją, a <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylany beton</a> nie wybacza błędów."
            </p>
            <span class="rk-expert-signature">— Robert Kucharski, Inżynier HVAC Projekt-Ogrzewania.pl</span>
            
            <div class="rk-expert-interactive">
                <button class="rk-expert-btn" id="toggleDataBtn">
                    Rozwiń twarde dane projektowe
                    <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </button>
                
                <div class="rk-expert-data-panel" id="expertDataPanel">
                    <div class="rk-data-stat">
                        <span class="rk-data-val">Max 35&deg;C</span>
                        <span class="rk-data-lab">Temperatura (Tz)</span>
                    </div>
                    <div class="rk-data-stat">
                        <span class="rk-data-val">10 cm</span>
                        <span class="rk-data-lab">Optymalny rozstaw</span>
                    </div>
                    <div class="rk-data-stat">
                        <span class="rk-data-val" style="color: var(--rk-quote-danger);">-2.5%</span>
                        <span class="rk-data-lab">Strata COP na 1&deg;C</span>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <noscript>
        <div style="padding: 20px; background: #f8fafc; border-radius: 16px; margin-top: 20px; font-family: sans-serif;">
            <p style="font-size: 14px; font-weight: bold; color: #0f172a; margin-top:0;">Parametry graniczne weryfikacji (Robert Kucharski):</p>
            <ul style="font-size: 14px; color: #475569; margin-bottom:0;">
                <li>Maksymalna zalecana temperatura zasilania (Tz): 35°C</li>
                <li>Zalecany rozstaw pętli grzewczych: 10 cm</li>
                <li>Strata sprawności (COP): 2.5% na każdy podniesiony 1°C</li>
            </ul>
        </div>
    </noscript>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Brak nagłówków H-tag)
    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-expert-quote-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px 20px; text-align: center; background: #fef2f2; color: #dc2626; border-radius: 20px; border: 2px dashed #ef4444;">
                    <div style="font-size: 32px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 800; text-transform: uppercase; margin-bottom: 10px;">Blokada bezpieczeństwa</div>
                    <div style="font-size: 14px; color: #7f1d1d;">Cytat inżynierski jest chroniony prawem autorskim serwisu Projekt-Ogrzewania.pl.</div>
                </div>
            `;
            container.style.borderLeft = 'none';
            container.style.background = 'transparent';
            container.style.boxShadow = 'none';
            return;
        }
    }

    // 2. Interakcja z panelem danych
    const toggleBtn = document.getElementById('toggleDataBtn');
    const dataPanel = document.getElementById('expertDataPanel');

    if (toggleBtn && dataPanel) {
        toggleBtn.addEventListener('click', function() {
            this.classList.toggle('active');
            dataPanel.classList.toggle('active');
            
            if(this.classList.contains('active')) {
                this.innerHTML = `Zwiń dane projektowe <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
            } else {
                this.innerHTML = `Rozwiń twarde dane projektowe <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg>`;
            }
        });
    }
});
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-card: #1e293b;
    --rk-case-brand: #10b981; /* Szmaragdowy - wysoka wydajność */
    --rk-case-accent: #3b82f6; /* Niebieski - technologia */
    --rk-case-danger: #ef4444; /* Czerwony - straty */
    --rk-case-bg: #f8fafc;
    --rk-case-border: #e2e8f0;
    --rk-case-text: #334155;
    --rk-case-muted: #64748b;
}

.rk-case-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(16, 185, 129, 0.12);
    border: 1px solid var(--rk-case-border);
    overflow: hidden;
}

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

.rk-case-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(16, 185, 129, 0.2);
    color: #6ee7b7;
    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(110, 231, 183, 0.3);
}

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

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

/* Kontener Interaktywny */
.rk-case-interactive {
    padding: 40px 50px;
    background: var(--rk-case-bg);
}

/* Selektor Wariantów */
.rk-case-tabs {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-case-tab {
    background: #ffffff;
    border: 2px solid var(--rk-case-border);
    padding: 20px 15px;
    border-radius: 16px;
    cursor: pointer;
    text-align: center;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-case-tab:hover {
    border-color: var(--rk-case-accent);
    transform: translateY(-2px);
}

.rk-case-tab.active {
    background: var(--rk-case-dark);
    border-color: var(--rk-case-brand);
    color: #ffffff;
}

.rk-tab-label {
    display: block;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 5px;
    opacity: 0.7;
}

.rk-tab-name {
    font-size: 15px;
    font-weight: 900;
}

/* Dashboard Wyników */
.rk-case-grid {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    gap: 35px;
    align-items: center;
}

.rk-case-visual {
    background: var(--rk-case-dark);
    border-radius: 20px;
    padding: 30px;
    box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
    border: 4px solid #334155;
    position: relative;
    height: 300px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

/* Animacje słupków energii */
.svg-energy-bar {
    transition: height 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), y 0.6s cubic-bezier(0.34, 1.56, 0.64, 1), fill 0.3s;
}

.svg-text-val {
    font-family: 'Inter', sans-serif;
    font-weight: 900;
    fill: #ffffff;
    transition: y 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}

/* Karty Szczegółów */
.rk-case-data {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

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

.rk-data-info h4 {
    margin: 0 0 4px 0;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-case-muted);
}

.rk-data-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-case-text);
    font-weight: 700;
}

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

.rk-savings-highlight {
    background: var(--rk-case-brand);
    color: #ffffff;
    padding: 20px;
    border-radius: 16px;
    text-align: center;
}

.rk-savings-label { font-size: 12px; font-weight: 800; text-transform: uppercase; opacity: 0.9; margin-bottom: 5px; }
.rk-savings-val { font-size: 32px; font-weight: 900; }

/* Sekcja Treści */
.rk-case-content {
    padding: 45px 50px;
}

.rk-case-content h3 { font-size: 22px; font-weight: 900; color: var(--rk-case-dark); margin: 0 0 20px 0; }
.rk-case-content p { font-size: 16px; line-height: 1.8; color: var(--rk-case-text); margin-bottom: 20px; }
.rk-case-content strong { font-weight: 800; color: var(--rk-case-dark); }

.rk-check-list { list-style: none; padding: 0; margin: 25px 0; }
.rk-check-list li { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 12px; font-size: 15px; }
.rk-check-icon { color: var(--rk-case-brand); flex-shrink: 0; margin-top: 3px; }

.rk-link { color: var(--rk-case-accent); font-weight: 700; text-decoration: none; border-bottom: 1px dashed rgba(59, 130, 246, 0.4); transition: all 0.3s; }
.rk-link:hover { border-bottom-style: solid; }

@media (max-width: 768px) {
    .rk-case-header, .rk-case-interactive, .rk-case-content { padding: 30px 20px; }
    .rk-case-tabs { grid-template-columns: 1fr; }
    .rk-case-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-case-title { font-size: 22px; }
    .rk-data-card { flex-direction: column; text-align: center; gap: 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-case-study",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Case Study: Optymalizacja temperatury zasilania a oszczędności energii",
    "description": "Analiza rzeczywistego projektu domu 145 m2 w Warszawie. Dowiedz się, jak zmiana temperatury zasilania z 35 na 30 stopni Celsjusza obniża zużycie prądu.",
    "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/"
    },
    "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-02-08",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-case-study",
    "name": "Porównanie efektywności systemów grzewczych (SCOP)",
    "description": "Dane techniczne zużycia energii elektrycznej (kWh/rok) dla trzech wariantów instalacji w domu o obciążeniu 8 kW.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
        "SCOP pompy ciepła podłogówka",
        "zużycie prądu pompa ciepła dom 150m2",
        "projektowanie podłogówki 10 cm rozstaw",
        "oszczędności na ogrzewaniu podłogowym",
        "jastrych anhydrytowy wydajność"
    ],
    "measurementTechnique": "Symulacja rocznego zapotrzebowania na energię końcową na podstawie wskaźnika SCOP dla różnych parametrów zasilania (55stC, 40stC, 30stC).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wariant A: Grzejniki (55stC), Zużycie 8500 kWh/rok, SCOP 2.8.",
        "Wariant B: Podłogówka 15cm (40stC), Zużycie 6600 kWh/rok, SCOP 3.6.",
        "Wariant C: Podłogówka Opti 10cm (30stC), Zużycie 5400 kWh/rok, SCOP 4.4."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-case-study",
    "name": "Kalkulator Oszczędności Termo-Modernizacyjnych",
    "description": "Interaktywny symulator porównujący koszty eksploatacji pompy ciepła w zależności od gęstości ułożenia rur grzewczych i rodzaju wylewki.",
    "applicationCategory": "CalculatorApplication",
    "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="16" height="16" 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>
            Analiza Rzeczywista: Dom 145 m&sup2;
        </div>
        <h2 class="rk-case-title">Case Study: Jak <span>-1200 PLN</span> rocznie zostaje w Twoim portfelu?</h2>
    </div>

    <div class="rk-case-interactive">
        <div class="rk-case-tabs">
            <div class="rk-case-tab" data-variant="A">
                <span class="rk-tab-label">Wariant A</span>
                <span class="rk-tab-name">Grzejniki (55&deg;C)</span>
            </div>
            <div class="rk-case-tab" data-variant="B">
                <span class="rk-tab-label">Wariant B</span>
                <span class="rk-tab-name">Podłogówka (15cm)</span>
            </div>
            <div class="rk-case-tab active" data-variant="C">
                <span class="rk-tab-label">Wariant C</span>
                <span class="rk-tab-name">Projekt RK (10cm)</span>
            </div>
        </div>

        <div class="rk-case-grid">
            <div class="rk-case-visual">
                <div style="color: #94a3b8; font-size: 11px; font-weight: 800; text-transform: uppercase; margin-bottom: 15px; letter-spacing: 1px;">Roczne zużycie energii (kWh)</div>
                <svg class="rk-svg-dashboard" viewBox="0 0 200 180">
                    <line x1="20" y1="150" x2="180" y2="150" stroke="#475569" stroke-width="2"/>
                    <rect id="barEnergy" class="svg-energy-bar" x="70" y="40" width="60" height="110" fill="var(--rk-case-brand)"/>
                    <text id="textEnergy" class="svg-text-val" x="100" y="30" text-anchor="middle" font-size="16">5400</text>
                    <text x="100" y="170" text-anchor="middle" fill="#94a3b8" font-size="10" font-weight="800">kWh / ROK</text>
                </svg>
            </div>

            <div class="rk-case-data">
                <div class="rk-data-card">
                    <div class="rk-data-info">
                        <h4>Współczynnik SCOP</h4>
                        <p id="descScop">Zoptymalizowana sprawność</p>
                    </div>
                    <div class="rk-data-val" id="valScop">4.4</div>
                </div>

                <div class="rk-data-card">
                    <div class="rk-data-info">
                        <h4>Parametr Zasilania</h4>
                        <p id="descTemp">Zasilanie niskotemperaturowe</p>
                    </div>
                    <div class="rk-data-val" id="valTemp">30&deg;C</div>
                </div>

                <div class="rk-savings-highlight">
                    <div class="rk-savings-label">Zysk roczny względem standardu</div>
                    <div class="rk-savings-val" id="valSavings">1 200 PLN</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-case-content">
        <h3>Precyzyjny projekt to czysta matematyka oszczędności</h3>
        <p>
            W październiku 2025 roku, realizując projekt dla Pani Anny w Warszawie (nowoczesny dom szkieletowy o powierzchni 145 m&sup2;, spełniający standardy WT 2021), udowodniliśmy, że inżynieryjne podejście do instalacji bije na głowę tradycyjne wykonawstwo. Rozważyliśmy budynek o realnym obciążeniu cieplnym <strong>8 kW</strong> (przy temperaturze obliczeniowej -20&deg;C).
        </p>

        <ul class="rk-check-list">
            <li>
                <svg class="rk-check-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><polyline points="20 6 9 17 4 12"></polyline></svg>
                <span><strong>Wariant A (Najdroższy):</strong> System oparty na grzejnikach wymusza temperaturę 55&deg;C. SCOP spada do 2,8, co generuje rachunek za 8500 kWh prądu rocznie.</span>
            </li>
            <li>
                <svg class="rk-check-icon" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3"><polyline points="20 6 9 17 4 12"></polyline></svg>
                <span><strong>Wariant B (Standardowy):</strong> Podłogówka układana "na oko" (rozstaw 15 cm) wymaga 40&deg;C. SCOP wynosi 3,6 przy zużyciu 6600 kWh rocznie.</span>
            </li>
            <li>
                <svg class="rk-check-icon" 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 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
                <span><strong>Wariant C (Zoptymalizowany RK):</strong> Gęsty <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/" class="rk-link">rozstaw rur co 10 cm</a> oraz jastrych anhydrytowy pozwoliły obniżyć Tz do 30&ndash;32&deg;C. SCOP wzrósł do <strong>4,4</strong>, redukując zużycie do 5400 kWh.</span>
            </li>
        </ul>

        <p>
            Różnica między wariantem B a C to aż <strong>1200 kWh rocznie</strong>. Przy obecnej rynkowej cenie energii elektrycznej (1 PLN/kWh), inwestorka oszczędza 1200 PLN każdego roku. Dodatkowy koszt rur i profesjonalnego projektu <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link">OZC</a> zwraca się całkowicie już po 3 latach eksploatacji, a przez kolejne 20 lat instalacja generuje czysty zysk.
        </p>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-case-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    const tabs = document.querySelectorAll('.rk-case-tab');
    const barEnergy = document.getElementById('barEnergy');
    const textEnergy = document.getElementById('textEnergy');
    const valScop = document.getElementById('valScop');
    const valTemp = document.getElementById('valTemp');
    const valSavings = document.getElementById('valSavings');
    const descScop = document.getElementById('descScop');
    const descTemp = document.getElementById('descTemp');

    const data = {
        'A': { energy: 8500, scop: '2.8', temp: '55°C', savings: '- 1 900 zł', color: '#ef4444', dS: 'Niska wydajność PC', dT: 'Wysoki parametr' },
        'B': { energy: 6600, scop: '3.6', temp: '40°C', savings: '0 PLN', color: '#f59e0b', dS: 'Wydajność standardowa', dT: 'Parametr średni' },
        'C': { energy: 5400, scop: '4.4', temp: '30°C', savings: '+ 1 200 zł', color: '#10b981', dS: 'Zoptymalizowana sprawność', dT: 'Zasilanie niskotemperaturowe' }
    };

    function updateVariant(v) {
        tabs.forEach(t => t.classList.remove('active'));
        document.querySelector(`.rk-case-tab[data-variant="${v}"]`).classList.add('active');

        const d = data[v];
        
        // Animacja Słupka (max energy 8500 -> height 130px)
        const h = (d.energy / 8500) * 130;
        barEnergy.setAttribute('height', h);
        barEnergy.setAttribute('y', 150 - h);
        barEnergy.setAttribute('fill', d.color);
        
        textEnergy.textContent = d.energy;
        textEnergy.setAttribute('y', 140 - h);
        textEnergy.style.fill = d.color;

        // Dane tekstowe
        valScop.innerText = d.scop;
        valScop.style.color = d.color;
        valTemp.innerText = d.temp;
        valSavings.innerText = d.savings;
        
        descScop.innerText = d.dS;
        descTemp.innerText = d.dT;
    }

    tabs.forEach(tab => {
        tab.addEventListener('click', () => updateVariant(tab.getAttribute('data-variant')));
    });

    // Start na wariancie C
    updateVariant('C');
});
</script>



<style>
:root {
    --rk-faq-dark: #0f172a;
    --rk-faq-card: #1e293b;
    --rk-faq-brand: #4f46e5; /* Eksperckie Indygo */
    --rk-faq-brand-light: #e0e7ff;
    --rk-faq-accent: #06b6d4; /* Cyjan dla kontrastu */
    --rk-faq-success: #10b981;
    --rk-faq-bg: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #334155;
    --rk-faq-muted: #64748b;
}

.rk-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(79, 70, 229, 0.15);
    border: 1px solid rgba(79, 70, 229, 0.3);
    overflow: hidden;
}

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

.rk-faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(79, 70, 229, 0.3);
    color: #a5b4fc;
    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(165, 180, 252, 0.3);
}

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

.rk-faq-title span { color: #818cf8; }

/* Sekcja Akordeonu */
.rk-faq-interactive {
    padding: 40px 50px;
    background: var(--rk-faq-bg);
}

.rk-faq-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: #ffffff;
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-brand);
    box-shadow: 0 10px 25px -5px rgba(79, 70, 229, 0.15);
}

/* Przycisk Pytania */
.rk-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-faq-dark);
    transition: background 0.3s, color 0.3s;
}

.rk-faq-question:hover {
    background: var(--rk-faq-brand-light);
}

.rk-faq-item.active .rk-faq-question {
    background: var(--rk-faq-brand);
    color: #ffffff;
}

.rk-faq-icon {
    flex-shrink: 0;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-faq-brand-light);
    color: var(--rk-faq-brand);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active .rk-faq-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Kontener Odpowiedzi (Animacja Grid) */
.rk-faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active .rk-faq-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-faq-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi (Grid: Tekst + SVG) */
.rk-faq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-faq-border);
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 30px;
    align-items: center;
}

.rk-faq-text {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-faq-text);
}

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

.rk-link {
    color: var(--rk-faq-brand);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(79, 70, 229, 0.4);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #3730a3;
    border-bottom-style: solid;
}

/* Wizualizacje SVG */
.rk-faq-visual {
    background: var(--rk-faq-dark);
    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. Pompa + Podłogówka */
.anim-heat-rise { stroke-dasharray: 6 12; animation: heatRise 2s linear infinite; opacity: 0; }
.rk-faq-item.active .anim-heat-rise { opacity: 1; stroke: #ef4444; }
@keyframes heatRise { to { stroke-dashoffset: -36; } }

/* 2. Pogodówka (Krzywa) */
.anim-curve { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 1s 0.3s ease-out; }
.rk-faq-item.active .anim-curve { stroke-dashoffset: 0; }
.anim-weather-sun { animation: spinSun 10s linear infinite; transform-origin: 25px 25px; }
@keyframes spinSun { to { transform: rotate(360deg); } }

/* 3. Rozstaw 10cm */
.anim-pipe-close { transition: transform 0.8s 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); }
.rk-faq-item.active .pipe-top { transform: translateY(15px); }
.rk-faq-item.active .pipe-bot { transform: translateY(-15px); }

/* 4. Bufor (Defrost) */
.anim-defrost { opacity: 0; transition: opacity 0.5s 0.5s; }
.rk-faq-item.active .anim-defrost { opacity: 1; animation: pulseBlue 2s infinite alternate; }
@keyframes pulseBlue { from { fill: #3b82f6; } to { fill: #93c5fd; } }

/* 5. Wylewka Anhydryt */
.anim-liquid { transform: scaleY(0); transform-origin: bottom; transition: transform 1s 0.3s ease-out; }
.rk-faq-item.active .anim-liquid { transform: scaleY(1); }

@media (max-width: 768px) {
    .rk-faq-header, .rk-faq-interactive { padding: 30px 20px; }
    .rk-faq-title { font-size: 24px; }
    .rk-faq-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-faq-visual { height: 120px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-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/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania o ogrzewanie podłogowe i pompy ciepła",
    "description": "Eksperckie odpowiedzi na pytania dotyczące rozstawu rur, buforów ciepła, sterowania pokojowego i doboru wylewki przy pompie 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/"
    },
    "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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy pompa ciepła poradzi sobie z ogrzaniem domu tylko podłogówką?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, jest to rozwiązanie wręcz idealne. Pompa inwerterowa osiąga najwyższą sprawność (COP) zasilając instalację niskotemperaturową na poziomie 30-35 stopni Celsjusza. Połączenie to gwarantuje najniższe rachunki i pełny komfort."
        }
      },
      {
        "@type": "Question",
        "name": "Czy mogę sterować każdym pokojem osobno przy pompie ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Jest to technicznie możliwe, ale w nowoczesnych domach odradzane. Lepszym wyborem jest sterowanie pogodowe. Szybkie zamykanie pętli przez siłowniki termoelektryczne zaburza przepływy masowe i powoduje tzw. taktowanie sprężarki."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki rozstaw rur jest najlepszy: 10 cm czy 15 cm?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Dla pomp ciepła bezwzględnym standardem projektowym jest 10 cm. Zagęszczenie rur pozwala na drastyczne obniżenie temperatury zasilania do 30°C, co maksymalizuje wskaźnik COP. W strefach brzegowych pod oknami stosuje się rozstaw 5-7,5 cm."
        }
      },
      {
        "@type": "Question",
        "name": "Czy potrzebuję bufora ciepła, jeśli mam tylko ogrzewanie podłogowe?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie do magazynowania ciepła (tę rolę pełni wylewka), ale niewielki bufor na powrocie (15-20 litrów/kW) gwarantuje zład wody wymagany do procesu bezpiecznego odszraniania (defrostu) parownika zewnętrznego zimą."
        }
      },
      {
        "@type": "Question",
        "name": "Jaka wylewka jest optymalna do podłogówki z pompą ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Najlepszym wyborem jest jastrych anhydrytowy. Posiada prawie dwukrotnie lepszy współczynnik przewodzenia ciepła niż beton z miksokreta (ok. 1,8-2,0 W/mK) i idealnie, płynnie otula rury grzewcze bez pozostawiania pustek powietrznych."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-faq",
    "name": "Baza Wiedzy: Parametry operacyjne instalacji niskotemperaturowych",
    "description": "Zbiór kluczowych pytań i odpowiedzi inwestorskich dotyczących optymalizacji parametrów fizycznych dla systemów ogrzewania płaszczyznowego współpracujących z OZE.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-faq",
    "name": "Interaktywny Przewodnik Techniczny",
    "description": "Aplikacja edukacyjna w formie akordeonu ze zintegrowanymi animacjami SVG ułatwiająca wizualizację procesów hydraulicznych i termicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<div class="rk-faq-container" id="rk-faq-app">
    <div class="rk-faq-header">
        <div class="rk-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"><circle cx="12" cy="12" r="10"></circle><path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-faq-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-faq-interactive">
        <div class="rk-faq-list">
            
            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>1. Czy pompa ciepła poradzi sobie z ogrzaniem domu tylko podłogówką?</span>
                    <div class="rk-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-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Tak, jest to rozwiązanie <strong>wręcz idealne</strong>. <a href="https://projekt-ogrzewania.pl/czy-pompa-ciepla-ogrzeje-dom-z-podlogowka/" class="rk-link">Pompa ciepła pracuje najwydajniej</a> przy bardzo niskich temperaturach (30&ndash;35&deg;C na zasilaniu), które są standardem i wymogiem dla komfortowego ogrzewania podłogowego. Brak tradycyjnych kaloryferów oznacza brak konieczności podnoszenia temperatury do 50&deg;C, co drastycznie tnie rachunki za prąd.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="50" width="60" height="10" fill="#64748b" rx="2"/>
                                    <path class="anim-heat-rise" d="M 30 50 L 30 10 M 50 50 L 50 10 M 70 50 L 70 10" fill="none" stroke-width="3" stroke-linecap="round"/>
                                    <rect x="10" y="20" width="15" height="30" fill="#3b82f6" rx="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>2. Czy mogę sterować każdym pokojem osobno przy pompie ciepła?</span>
                    <div class="rk-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-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Można, ale w nowoczesnych domach inżynieryjnie <strong>zdecydowanie lepiej sprawdza się</strong> tzw. autoadaptacja lub <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/" class="rk-link">sterowanie pogodowe (krzywa grzewcza)</a>. Wylewka betonowa ma ogromną bezwładność. Szybkie odcinanie <a href="https://projekt-ogrzewania.pl/petla-grzewcza/" class="rk-link">pętli</a> przez zamykanie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/" class="rk-link">siłowników termoelektrycznych</a> powoduje zadławienia układu i niszczące dla kompresora taktowanie.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <g class="anim-weather-sun"><circle cx="25" cy="25" r="8" fill="#eab308"/><path d="M 25 10 L 25 15 M 25 35 L 25 40 M 10 25 L 15 25 M 35 25 L 40 25" stroke="#eab308" stroke-width="2" stroke-linecap="round"/></g>
                                    <path d="M 20 60 L 90 60 M 20 60 L 20 10" stroke="#475569" stroke-width="2"/>
                                    <path class="anim-curve" d="M 20 50 Q 50 40 90 15" fill="none" stroke="#ef4444" stroke-width="3" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>3. Jaki rozstaw rur jest najlepszy: 10 cm czy 15 cm?</span>
                    <div class="rk-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-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Dla pomp ciepła <strong>standardem jest 10 cm</strong>. Zagęszczenie ułożenia pozwala na sztuczne "powiększenie" grzejnika, jakim jest podłoga, co z kolei pozwala obniżyć temperaturę zasilania na kotłowni do 30&deg;C. To drastycznie poprawia współczynnik COP w porównaniu do rozstawu 15 cm (zysk rzędu kilkunastu procent oszczędności rocznie). Przy dużych oknach stosuje się 5-7,5 cm (<a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/" class="rk-link">strefa brzegowa</a>).
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <line x1="20" y1="10" x2="80" y2="10" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                                    <line class="anim-pipe-close pipe-top" x1="20" y1="20" x2="80" y2="20" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                                    <line x1="20" y1="40" x2="80" y2="40" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                                    <line class="anim-pipe-close pipe-bot" x1="20" y1="60" x2="80" y2="60" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                                    <line x1="20" y1="70" x2="80" y2="70" stroke="#3b82f6" stroke-width="4" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>4. Czy potrzebuję bufora, jeśli mam tylko podłogówkę?</span>
                    <div class="rk-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-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                System ogrzewania podłogowego sam w sobie to wielki magazyn ciepła, więc <strong>duży bufor nie jest wymagany</strong>. Jednak ze względów bezpieczeństwa hydraulicznego, zaleca się stosowanie niewielkiego <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">bufora szeregowego na powrocie</a> (ok. 15-20 litrów na kW). Zabezpiecza to pompę, dostarczając zład wody niezbędny do procesu odszraniania (defrostu) urządzenia z lodu.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path d="M 20 20 L 80 20 M 20 50 L 50 50" fill="none" stroke="#64748b" stroke-width="4" stroke-linecap="round"/>
                                    <rect x="50" y="35" width="20" height="30" fill="#334155" rx="4"/>
                                    <rect x="52" y="37" width="16" height="26" class="anim-defrost" fill="#3b82f6" rx="2"/>
                                    <path d="M 70 50 L 80 50" fill="none" stroke="#64748b" stroke-width="4" stroke-linecap="round"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-faq-item">
                <button class="rk-faq-question">
                    <span>5. Jakie wylewki są najlepsze pod pompę ciepła?</span>
                    <div class="rk-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-faq-answer-wrapper">
                    <div class="rk-faq-answer-inner">
                        <div class="rk-faq-content">
                            <div class="rk-faq-text">
                                Inżynieryjnie najlepszym wyborem jest <strong>jastrych anhydrytowy</strong>. Posiada on wyższy współczynnik przewodzenia ciepła niż beton z miksokreta. Co ważniejsze, jego płynna konsystencja <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-link">szczelnie otula rury</a>, eliminując puste komory powietrzne, które działają jak izolator. Dzięki temu instalacja nagrzewa się szybciej i może pracować na niższych parametrach.
                            </div>
                            <div class="rk-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="10" y="50" width="80" height="15" fill="#475569" rx="2"/>
                                    <circle cx="30" cy="50" r="6" fill="#ef4444"/>
                                    <circle cx="50" cy="50" r="6" fill="#ef4444"/>
                                    <circle cx="70" cy="50" r="6" fill="#ef4444"/>
                                    <rect class="anim-liquid" x="10" y="20" width="80" height="30" fill="#fcd34d" opacity="0.8"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    if (!allowed.includes(domain)) {
        document.getElementById('rk-faq-app').innerHTML = '<div style="padding:40px; text-align:center; background:#0f172a; color:#ef4444; border-radius:20px; font-weight:900;">BŁĄD LICENCJI: KOD NALEŻY DO PROJEKT-OGRZEWANIA.PL</div>';
        return;
    }

    const faqItems = document.querySelectorAll('.rk-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-faq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            faqItems.forEach(i => i.classList.remove('active'));
            
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-pmp-dark: #0f172a;
    --rk-pmp-primary: #2563eb;
    --rk-pmp-light: #eff6ff;
    --rk-pmp-accent: #f59e0b;
    --rk-pmp-success: #10b981;
    --rk-pmp-success-bg: #d1fae5;
    --rk-pmp-danger: #ef4444;
    --rk-pmp-danger-bg: #fee2e2;
    --rk-pmp-gray: #64748b;
    --rk-pmp-border: #e2e8f0;
    --rk-pmp-bg: #ffffff;
}

.rk-pmp-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-pmp-bg);
    border-radius: 24px;
    box-shadow: 0 30px 60px -15px rgba(37, 99, 235, 0.15);
    border: 1px solid rgba(37, 99, 235, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-pmp-header {
    padding: 50px 40px;
    background: radial-gradient(circle at top right, #1e293b, var(--rk-pmp-dark));
    color: #ffffff;
    text-align: center;
    position: relative;
    border-bottom: 4px solid var(--rk-pmp-primary);
}

.rk-pmp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.3);
    color: #60a5fa;
    padding: 8px 20px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
    margin-bottom: 25px;
    border: 1px solid rgba(96, 165, 250, 0.3);
}

.rk-pmp-quote {
    font-size: 24px;
    font-weight: 800;
    line-height: 1.5;
    color: #ffffff;
    max-width: 750px;
    margin: 0 auto 20px auto;
}

.rk-pmp-quote span {
    color: var(--rk-pmp-accent);
}

/* Interaktywny Symulator Kosztów */
.rk-pmp-interactive {
    padding: 40px 50px;
    background: #f8fafc;
}

.rk-pmp-sim-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-pmp-sim-header h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-pmp-dark);
    margin: 0 0 10px 0;
}

.rk-pmp-sim-header p {
    color: var(--rk-pmp-gray);
    font-size: 15px;
    margin: 0;
}

/* Suwak (Slider) */
.rk-pmp-slider-box {
    background: #ffffff;
    padding: 30px;
    border-radius: 20px;
    border: 1px solid var(--rk-pmp-border);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
    margin-bottom: 30px;
}

.rk-pmp-labels {
    display: flex;
    justify-content: space-between;
    margin-bottom: 15px;
    font-weight: 700;
    font-size: 14px;
}

.rk-pmp-label-left { color: var(--rk-pmp-danger); }
.rk-pmp-label-right { color: var(--rk-pmp-success); }

.rk-range-slider {
    -webkit-appearance: none;
    width: 100%;
    height: 12px;
    border-radius: 6px;
    background: linear-gradient(to right, var(--rk-pmp-danger) 0%, #cbd5e1 50%, var(--rk-pmp-success) 100%);
    outline: none;
    transition: opacity .2s;
    cursor: pointer;
}

.rk-range-slider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: #ffffff;
    border: 4px solid var(--rk-pmp-primary);
    cursor: grab;
    box-shadow: 0 4px 6px rgba(0,0,0,0.2);
    transition: transform 0.2s;
}

.rk-range-slider::-webkit-slider-thumb:active {
    transform: scale(1.1);
    cursor: grabbing;
}

/* Wynik symulacji */
.rk-pmp-result-grid {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 30px;
    align-items: center;
}

.rk-pmp-data-card {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 2px solid var(--rk-pmp-border);
    text-align: center;
    transition: all 0.3s;
}

.rk-pmp-data-value {
    font-size: 42px;
    font-weight: 900;
    line-height: 1;
    margin: 10px 0;
    transition: color 0.3s;
}

.rk-pmp-data-label {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    letter-spacing: 1px;
    color: var(--rk-pmp-gray);
}

.rk-pmp-svg-container {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-pmp-border);
    padding: 20px;
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 200px;
}

/* SVG Animations */
.pipe-path {
    fill: none;
    stroke-width: 12;
    stroke-linecap: round;
    stroke-linejoin: round;
    transition: stroke 0.5s, stroke-dashoffset 0.5s;
}

.thermometer-fill {
    transition: height 0.5s, y 0.5s, fill 0.5s;
}

/* Treść podsumowania */
.rk-pmp-content {
    padding: 40px 50px;
    background: #ffffff;
    font-size: 16px;
    line-height: 1.8;
    color: #475569;
}

.rk-pmp-content p {
    margin-bottom: 20px;
}

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

.rk-pmp-content a {
    color: var(--rk-pmp-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid transparent;
    transition: border-color 0.3s;
}

.rk-pmp-content a:hover {
    border-color: var(--rk-pmp-primary);
}

/* CTA */
.rk-pmp-cta {
    padding: 40px 50px;
    background: var(--rk-pmp-light);
    text-align: center;
    border-top: 1px solid var(--rk-pmp-border);
}

.rk-btn-hero {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    background: var(--rk-pmp-dark);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 22px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(15, 23, 42, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-btn-hero:hover {
    transform: translateY(-4px);
    background: var(--rk-pmp-primary);
    box-shadow: 0 20px 35px -5px rgba(37, 99, 235, 0.5);
}

.rk-btn-hero svg {
    transition: transform 0.3s;
}

.rk-btn-hero:hover svg {
    transform: translateX(6px);
}

@media (max-width: 768px) {
    .rk-pmp-header, .rk-pmp-interactive, .rk-pmp-content, .rk-pmp-cta { padding: 30px 20px; }
    .rk-pmp-result-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-pmp-quote { font-size: 20px; }
    .rk-btn-hero { width: 100%; padding: 18px 20px; font-size: 15px; justify-content: center; }
    .rk-pmp-data-value { font-size: 32px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Podsumowanie: Projekt podłogówki to fundament wydajności pompy ciepła",
    "description": "Zakończenie analizy inżynieryjnej: dlaczego optymalizacja hydrauliki, rozstawu rur i bezwładności termicznej jest kluczem do niskich rachunków w domach z pompą 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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-koszty",
    "name": "Porównanie kosztów eksploatacji pompy ciepła: Montaż standardowy vs Inżynieryjny (2026)",
    "description": "Zestawienie obrazujące wpływ jakości projektu ogrzewania podłogowego (rozstaw rur, obliczenia OZC) na ostateczny rachunek za prąd przy użyciu pompy ciepła w sezonie zimowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "koszty ogrzewania dom z pompą ciepła",
      "oszczędności na pompie ciepła",
      "rozstaw rur a COP",
      "rachunki za ogrzewanie 2026",
      "projekt ogrzewania podłogowego ROI"
    ],
    "measurementTechnique": "Kalkulacja kosztów miesięcznych na podstawie symulacji zużycia prądu (COP) względem temperatury zasilania narzuconej przez parametry hydrauliczne podłogówki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Montaż 'na oko' (Rozstaw 15 cm, Tz 40°C): Rachunek ok. 750 PLN / mc. Niska sprawność.",
        "Projekt Optymalny (Rozstaw 10 cm, Tz 30°C, obliczone OZC): Rachunek ok. 250 PLN / mc. Wysoka sprawność."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-symulator",
    "name": "Symulator Rachunków: Wpływ Projektu na Pompę Ciepła",
    "description": "Interaktywny suwak demonstrujący, jak przejście od amatorskiego układania rur do profesjonalnego projektu OZC drastycznie obniża temperaturę zasilania (Tz) i redukuje miesięczne koszty prądu.",
    "applicationCategory": "CalculatorApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pmp-container" id="rk-pmp-sum-app">
    <div class="rk-pmp-header">
        <div class="rk-pmp-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"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg>
            Podsumowanie Eksperckie
        </div>
        <h2 class="rk-pmp-quote">
            "Pompa ciepła jest <span>tylko tak dobra</span>, jak instalacja podłogowa, którą zasila."
        </h2>
    </div>

    <div class="rk-pmp-interactive">
        <div class="rk-pmp-sim-header">
            <h3>Symulator COP i Rachunków</h3>
            <p>Przesuń suwak, aby zobaczyć, jak brak obliczeń niszczy portfel inwestora.</p>
        </div>

        <div class="rk-pmp-slider-box">
            <div class="rk-pmp-labels">
                <span class="rk-pmp-label-left">Montaż "na oko" (bez projektu)</span>
                <span class="rk-pmp-label-right">Projekt Inżynierski (OZC)</span>
            </div>
            <input type="range" min="0" max="100" value="100" class="rk-range-slider" id="rkSimSlider">
        </div>

        <div class="rk-pmp-result-grid">
            <div class="rk-pmp-data-card" id="rkDataCard">
                <div class="rk-pmp-data-label">Szacowany koszt miesięczny</div>
                <div class="rk-pmp-data-value" id="rkCostVal">250 PLN</div>
                <div class="rk-pmp-data-label" style="margin-top: 15px; color: #94a3b8;">Temp. Zasilania (Tz)</div>
                <div style="font-size: 20px; font-weight: 800; color: var(--rk-pmp-dark);" id="rkTzVal">30°C</div>
            </div>

            <div class="rk-pmp-svg-container">
                <svg width="100%" height="150" viewBox="0 0 300 150">
                    <rect x="20" y="20" width="20" height="100" rx="10" fill="#f1f5f9" stroke="#cbd5e1" stroke-width="2"/>
                    <rect id="svgThermo" class="thermometer-fill" x="22" y="90" width="16" height="28" rx="8" fill="var(--rk-pmp-success)"/>
                    <circle cx="30" cy="120" r="15" fill="inherit" id="svgThermoBase" style="fill: var(--rk-pmp-success); transition: fill 0.5s;"/>
                    
                    <path id="svgPipe" class="pipe-path" d="M80 120 L80 40 A10 10 0 0 1 100 40 L100 120 A10 10 0 0 0 120 120 L120 40 A10 10 0 0 1 140 40 L140 120 A10 10 0 0 0 160 120 L160 40 A10 10 0 0 1 180 40 L180 120 A10 10 0 0 0 200 120 L200 40 A10 10 0 0 1 220 40 L220 120 A10 10 0 0 0 240 120 L240 40" stroke="var(--rk-pmp-success)" />
                    
                    <circle cx="260" cy="80" r="25" fill="none" stroke="var(--rk-pmp-dark)" stroke-width="4"/>
                    <polygon points="255,65 275,80 255,95" fill="var(--rk-pmp-dark)"/>
                </svg>
            </div>
        </div>
    </div>

    <div class="rk-pmp-content">
        <p>
            Prawidłowy projekt ogrzewania podłogowego z pompą ciepła to fundament nowoczesnego, energooszczędnego budynku. Jeśli zlekceważysz fazę inżynieryjną, zgadując długości pętli i <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">zakładając uniwersalny rozstaw rur (np. co 15 cm)</a>, zniwelujesz cały zysk technologiczny nowoczesnej sprężarki inwerterowej. Zbyt rzadko ułożone rury i niepoliczone przepływy wymuszą podniesienie temperatury zasilania.
        </p>
        <p>
            <strong>Optymalna hydraulika instalacji</strong>, minimalne opory liniowe (krótkie pętle do 80-90 m) oraz maksymalna powierzchnia wymiany ciepła (zagęszczony układ w oparciu o wyliczenia z OZC) to jedyna techniczna droga, aby utrzymać <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">koszty ogrzewania domu na poziomie 200–300 PLN miesięcznie</a> w środku zimy.
        </p>
    </div>

    <div class="rk-pmp-cta">
        <a href="https://projekt-ogrzewania.pl/blog/" class="rk-btn-hero">
            ODKRYJ BAZĘ WIEDZY O POMPACH CIEPŁA
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><polyline points="12 16 16 12 12 8"></polyline><line x1="8" y1="12" x2="16" y2="12"></line></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków HX w alercie)
    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-pmp-sum-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 50px 30px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 48px; margin-bottom: 20px;">⚠️</div>
                    <div style="font-size: 22px; font-weight: 900; margin-bottom: 15px; text-transform: uppercase;">Naruszenie Licencji Kodu</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.7;">
                        Ten komponent interaktywny oraz zintegrowane dane JSON-LD stanowią własność intelektualną serwisu <strong>Projekt-Ogrzewania.pl</strong>. Uruchamianie skryptu na nieautoryzowanej domenie zostało zablokowane ze względów bezpieczeństwa.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora (Slider)
    const slider = document.getElementById('rkSimSlider');
    const costVal = document.getElementById('rkCostVal');
    const tzVal = document.getElementById('rkTzVal');
    const card = document.getElementById('rkDataCard');
    const pipe = document.getElementById('svgPipe');
    const thermo = document.getElementById('svgThermo');
    const thermoBase = document.getElementById('svgThermoBase');

    function updateSimulation(value) {
        // Obliczenia interpolowane
        // value: 0 (Na oko) -> 100 (Projekt OZC)
        const invertVal = 100 - value; // 100 to na oko, 0 to OZC
        
        // Koszty: od 250 PLN (pro) do 750 PLN (amator)
        const cost = 250 + (invertVal * 5); 
        
        // Tz: od 30°C do 42°C
        const tz = 30 + (invertVal * 0.12);

        // Aktualizacja DOM
        costVal.innerText = Math.round(cost) + ' PLN';
        tzVal.innerText = tz.toFixed(1) + '°C';

        // Wizualizacja kolorów i wysokości termometru
        let colorStr = '';
        let borderColor = '';
        let thermoHeight = 28; // Min height
        let thermoY = 90; // Start Y

        if (value >= 70) {
            // Stan idealny (Zielony)
            colorStr = 'var(--rk-pmp-success)';
            borderColor = 'var(--rk-pmp-success)';
            card.style.borderColor = 'var(--rk-pmp-success)';
            card.style.backgroundColor = 'var(--rk-pmp-success-bg)';
            costVal.style.color = 'var(--rk-pmp-success)';
            thermoHeight = 30;
            thermoY = 88;
            pipe.style.strokeDasharray = 'none'; // Ciągła linia
        } else if (value >= 40) {
            // Stan średni (Pomarańczowy)
            colorStr = 'var(--rk-pmp-accent)';
            borderColor = 'var(--rk-pmp-accent)';
            card.style.borderColor = 'var(--rk-pmp-accent)';
            card.style.backgroundColor = '#fef3c7';
            costVal.style.color = '#d97706';
            thermoHeight = 60;
            thermoY = 58;
            pipe.style.strokeDasharray = 'none'; // Ciągła linia
        } else {
            // Stan krytyczny (Czerwony)
            colorStr = 'var(--rk-pmp-danger)';
            borderColor = 'var(--rk-pmp-danger)';
            card.style.borderColor = 'var(--rk-pmp-danger)';
            card.style.backgroundColor = 'var(--rk-pmp-danger-bg)';
            costVal.style.color = 'var(--rk-pmp-danger)';
            thermoHeight = 90;
            thermoY = 28;
            pipe.style.strokeDasharray = 'none'; // Ciągła linia
        }

        // Aplikacja kolorów do SVG
        pipe.style.stroke = colorStr;
        thermo.style.fill = colorStr;
        thermoBase.style.fill = colorStr;
        
        // Animacja termometru
        thermo.setAttribute('height', thermoHeight);
        thermo.setAttribute('y', thermoY);
    }

    // Inicjalizacja
    slider.addEventListener('input', function(e) {
        updateSimulation(e.target.value);
    });
    
    // Uruchomienie na starcie (wartość 100)
    updateSimulation(100);
});
</script>



<style>
:root {
    --dl-primary: #0f172a;
    --dl-accent: #0ea5e9;
    --dl-accent-dark: #0284c7;
    --dl-bg: #f8fafc;
    --dl-border: #e2e8f0;
    --dl-text: #334155;
    --dl-white: #ffffff;
}

.download-hub-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--dl-white);
    border-radius: 24px;
    border: 1px solid var(--dl-border);
    box-shadow: 0 20px 40px -10px rgba(0,0,0,0.05);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCI */
.dl-header {
    background: linear-gradient(135deg, var(--dl-primary) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: var(--dl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
}

.dl-header-content { position: relative; z-index: 2; max-width: 60%; }

.dl-badge {
    display: inline-block;
    background: rgba(14, 165, 233, 0.2);
    border: 1px solid rgba(14, 165, 233, 0.3);
    color: #7dd3fc;
    padding: 6px 12px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.dl-header h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 10px 0;
    letter-spacing: -0.5px;
}

.dl-header p {
    font-size: 15px;
    color: #94a3b8;
    margin: 0;
    line-height: 1.5;
}

/* WIZUALIZACJA PDF / IKONA */
.dl-header-visual {
    position: relative;
    z-index: 2;
}

.dl-pdf-icon-svg {
    width: 80px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.3));
    animation: floatIcon 3s infinite ease-in-out alternate;
}

@keyframes floatIcon {
    from { transform: translateY(0); }
    to { transform: translateY(-10px); }
}

/* GŁÓWNY WORKSPACE */
.dl-workspace {
    display: flex;
    padding: 40px 50px;
    gap: 40px;
    background: var(--dl-white);
}

.dl-preview-box {
    flex: 1;
    background: var(--dl-bg);
    border: 1px solid var(--dl-border);
    border-radius: 16px;
    padding: 10px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.3s;
}

.dl-preview-box:hover {
    transform: scale(1.02);
}

.dl-preview-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
}

.dl-info-side {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.dl-feature-list {
    list-style: none;
    padding: 0;
    margin: 0 0 30px 0;
}

.dl-feature-item {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 15px;
    font-size: 15px;
    font-weight: 600;
    color: var(--dl-text);
}

.dl-check-svg {
    width: 20px;
    height: 20px;
    color: var(--dl-accent);
    flex-shrink: 0;
}

/* PRZYCISK POBIERANIA */
.dl-main-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--dl-accent);
    color: var(--dl-white);
    text-decoration: none !important;
    padding: 18px 30px;
    border-radius: 14px;
    font-weight: 800;
    font-size: 16px;
    transition: all 0.3s;
    box-shadow: 0 10px 20px -5px rgba(14, 165, 233, 0.4);
}

.dl-main-btn:hover {
    background: var(--dl-accent-dark);
    transform: translateY(-3px);
    box-shadow: 0 15px 30px -5px rgba(14, 165, 233, 0.5);
}

.dl-main-btn span { font-size: 20px; }

/* STOPKA MODUŁU */
.dl-footer {
    padding: 20px 50px;
    background: var(--dl-bg);
    border-top: 1px solid var(--dl-border);
    font-size: 13px;
    color: var(--dl-muted);
    text-align: center;
}

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

@media (max-width: 800px) {
    .dl-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .dl-header-content { max-width: 100%; margin-bottom: 25px; }
    .dl-workspace { flex-direction: column; padding: 30px 20px; }
    .dl-preview-box { margin-bottom: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#infografika-download",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/"
    },
    "headline": "Kompletna Infografika PDF: Projekt ogrzewania podłogowego z pompą ciepła",
    "description": "Pobierz inżynierskie zestawienie wytycznych dla systemów płaszczyznowych. Wykres COP, długość pętli, dobór wylewki oraz parametry zasilania w jednym pliku PDF.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Projekt-ogrzewania-podlogowego-z-pompa-ciepla.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-11",
    "dateModified": "2026-05-11"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#dataset-infografika",
    "name": "Wytyczne projektowe dla ogrzewania podłogowego z PC",
    "description": "Zbiór kluczowych danych: krzywa sprawności COP w funkcji temperatury, optymalna długość rury 16x2 oraz niezbędny przepływ hydrauliczny l/h.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "infografika ogrzewanie podłogowe pdf",
      "wykres cop pompy ciepła",
      "projekt podłogówki schemat",
      "rozstaw rur 10cm parametry",
      "jak pobrać projekt podłogówki"
    ],
    "measurementTechnique": "Zestawienie optymalnych parametrów termodynamicznych na grafice 2D.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Schemat optymalizacji i najczęstsze błędy instalacyjne"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/#webapp-download",
    "name": "Centrum Pobierania: Arkusz Projektowy PC",
    "description": "Interaktywny moduł umożliwiający pogląd w wysokiej rozdzielczości i bezpośrednie pobranie dokumentacji technicznej.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="download-hub-container" id="app-pc-infographic-dl">
    
    <div class="dl-header">
        <div class="dl-header-content">
            <div class="dl-badge">Darmowe Materiały 2026</div>
            <h2>Pobierz Arkusz Inżynierski</h2>
            <p>Zabierz ekspercką wiedzę bezpośrednio na budowę. Wykresy sprawności COP, parametry hydrauliczne i schematy montażowe w jednym pliku PDF.</p>
        </div>
        <div class="dl-header-visual">
            <svg class="dl-pdf-icon-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="#ef4444" stroke="#ffffff" stroke-width="1"/>
                <path d="M14 2V8H20" stroke="#ffffff" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
                <text x="7" y="18" fill="white" font-size="5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="dl-workspace">
        
        <div class="dl-preview-box" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Projekt-ogrzewania-podlogowego-z-pompa-ciepla.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Projekt-ogrzewania-podlogowego-z-pompa-ciepla.webp" alt="Infografika - Projekt ogrzewania podłogowego z pompą ciepła. Schematy budowy, wykresy COP i kluczowe parametry techniczne." class="dl-preview-img" loading="lazy">
            <div style="position:absolute; bottom:20px; right:20px; background:rgba(0,0,0,0.7); color:white; padding:8px 12px; border-radius:8px; font-size:12px; font-weight:700;">🔍 Kliknij, aby powiększyć</div>
        </div>

        <div class="dl-info-side">
            <ul class="dl-feature-list">
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" 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>
                    Wykres: Efektywność COP a temp. zasilania
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" 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>
                    Przekrój: Optymalny jastrych i masa (150 kg/m²)
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" 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>
                    Zestawienie: Najczęstsze błędy instalacyjne
                </li>
                <li class="dl-feature-item">
                    <svg class="dl-check-svg" 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>
                    Limity fizyki: Długości pętli rury 16mm
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/02/Infografika-Projekt-ogrzewania-podlogowego-z-pompa-ciepla.pdf" class="dl-main-btn" target="_blank" rel="noopener">
                <span>📥</span> POBIERZ DOKUMENT (PDF)
            </a>
            
            <p style="margin-top: 20px; font-size: 13px; color: var(--dl-muted); line-height: 1.5;">
                Pragniesz przełożyć tę teorię na praktykę we własnym domu? <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" style="color:var(--dl-accent-dark); font-weight:800;">Zamów indywidualny projekt OZC</a> i uzyskaj pełną dokumentację wykonawczą dla swojego instalatora.
            </p>
        </div>

    </div>

    <div class="dl-footer">
        © 2026 Projekt-Ogrzewania.pl | Autor: <strong>Robert Kucharski</strong>. Udostępnianie materiału w formie niezmienionej jest w pełni dozwolone.
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // --- OCHRONA DOMENOWA ---
    const domain = window.location.hostname;
    const allowed = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowed.includes(domain)) {
        const container = document.getElementById('app-pc-infographic-dl');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #fef2f2; border: 2px solid #dc2626; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 10px;">🔒</div>
                    <div style="font-size: 18px; font-weight: 800; color: #991b1b;">Zasoby Chronione</div>
                    <p style="color: #b91c1c; font-size: 14px;">Ta infografika i dokumentacja PDF są własnością serwisu Projekt-Ogrzewania.pl. Pobieranie z zewnętrznych serwerów jest zabronione.</p>
                </div>
            `;
        }
    }
});
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">Projekt ogrzewania podłogowego z pompą ciepła.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
