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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Hydraulika budowlana - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/hydraulika-budowlana/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Kocioł na pellet.</title>
		<link>https://projekt-ogrzewania.pl/kociol-na-pellet/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 14 Jan 2026 10:09:49 +0000</pubDate>
				<category><![CDATA[Budowa domu]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Hydraulika budowlana]]></category>
		<category><![CDATA[Instalacje domowe]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Koszty instalacji grzewczych]]></category>
		<category><![CDATA[Koszty ogrzewania]]></category>
		<category><![CDATA[Kotły na pellet]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[bufor ciepła]]></category>
		<category><![CDATA[ekologia]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[kocioł na pellet]]></category>
		<category><![CDATA[koszty ogrzewania]]></category>
		<category><![CDATA[niskotemperaturowe ogrzewanie]]></category>
		<category><![CDATA[ogrzewanie domu]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pellet drzewny]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3170</guid>

					<description><![CDATA[<p>Planując nowoczesny i ekonomiczny system grzewczy, coraz więcej inwestorów zwraca uwagę na kocioł na pellet jako stabilne, ekologiczne i przewidywalne źródło ciepła. W połączeniu z wodnym ogrzewaniem podłogowym tworzy on układ, który doskonale wykorzystuje niskotemperaturowy charakter instalacji i pozwala osiągnąć bardzo dobre parametry eksploatacyjne. W artykule szczegółowo omawiamy, dlaczego kocioł na pellet idealnie współpracuje z podłogówką, jakie komponenty są kluczowe, jak wygląda projektowanie takiego systemu oraz jakie realne koszty inwestycyjne i eksploatacyjne należy wziąć pod uwagę.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/">Kocioł na pellet.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-intro-dark: #0f172a;
    --rk-intro-card: #ffffff;
    --rk-intro-pellet: #d97706; /* Bursztyn/Pellet */
    --rk-intro-pellet-light: #fef3c7;
    --rk-intro-eco: #059669; /* Eko zieleń */
    --rk-intro-eco-light: #d1fae5;
    --rk-intro-alert: #dc2626;
    --rk-intro-bg: #f8fafc;
    --rk-intro-border: #cbd5e1;
    --rk-intro-text: #334155;
    --rk-intro-muted: #64748b;
}

.rk-intro-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-intro-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -10px rgba(217, 119, 6, 0.15);
    border: 1px solid rgba(217, 119, 6, 0.3);
    overflow: hidden;
}

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

.rk-intro-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(217, 119, 6, 0.2);
    color: #fcd34d;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(217, 119, 6, 0.3);
}

.rk-intro-h2 {
    font-size: 32px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-intro-h2 span { color: var(--rk-intro-pellet); }

.rk-intro-paragraph {
    font-size: 18px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Moduł Synergii */
.rk-intro-interactive {
    padding: 40px 50px;
    background: var(--rk-intro-bg);
}

.rk-intro-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-intro-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Przełącznik */
.rk-intro-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
}

.rk-intro-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-intro-muted);
    cursor: pointer;
    transition: color 0.3s;
}

.rk-intro-label.active-eco { color: var(--rk-intro-eco); }
.rk-intro-label.active-alert { color: var(--rk-intro-alert); }

.rk-intro-switch {
    position: relative;
    display: inline-block;
    width: 64px;
    height: 32px;
}

.rk-intro-switch input { opacity: 0; width: 0; height: 0; }

.rk-intro-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-intro-eco);
    transition: .4s;
    border-radius: 32px;
}

.rk-intro-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-intro-slider { background-color: var(--rk-intro-alert); }
input:checked + .rk-intro-slider:before { transform: translateX(32px); }

/* Grid Zawartości */
.rk-intro-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    background: var(--rk-intro-card);
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-intro-border);
    transition: all 0.4s ease;
}

/* Stan Synergia (Zaznaczone) */
.state-synergy .rk-intro-grid {
    border-color: var(--rk-intro-eco);
    box-shadow: 0 10px 30px -10px rgba(5, 150, 105, 0.2);
}

/* Stan Brak Synergii */
.state-error .rk-intro-grid {
    border-color: var(--rk-intro-alert);
    box-shadow: 0 10px 30px -10px rgba(220, 38, 38, 0.2);
}

/* Animacje SVG */
.rk-intro-svg-box {
    background: #1e293b;
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

.rk-svg-main { width: 100%; max-width: 280px; height: auto; }

/* Obiekty SVG i animacje */
.anim-pellet-drop { opacity: 0; transform: translateY(-10px); }
.state-synergy .anim-pellet-drop { animation: dropPellet 1.5s infinite linear; }
.state-error .anim-pellet-drop { animation: jamPellet 0.5s infinite alternate; }

.anim-heat-flow { stroke-dasharray: 10 15; stroke-dashoffset: 0; transition: stroke 0.3s; }
.state-synergy .anim-heat-flow { stroke: var(--rk-intro-eco); animation: flowSmooth 2s linear infinite; }
.state-error .anim-heat-flow { stroke: var(--rk-intro-alert); animation: flowStutter 1s linear infinite; stroke-dasharray: 5 25; }

.anim-fire { transform-origin: bottom center; transition: fill 0.3s; }
.state-synergy .anim-fire { fill: var(--rk-intro-pellet); animation: steadyBurn 2s infinite alternate; }
.state-error .anim-fire { fill: var(--rk-intro-alert); animation: wildBurn 0.3s infinite alternate; }

@keyframes dropPellet { 0% { opacity: 0; transform: translateY(-10px); } 50% { opacity: 1; } 100% { opacity: 0; transform: translateY(30px); } }
@keyframes jamPellet { 0% { transform: translateY(0) rotate(-10deg); fill: #ef4444; } 100% { transform: translateY(2px) rotate(10deg); fill: #fca5a5; } }
@keyframes flowSmooth { to { stroke-dashoffset: -50; } }
@keyframes flowStutter { 0%, 100% { opacity: 1; } 50% { opacity: 0.2; } to { stroke-dashoffset: -10; } }
@keyframes steadyBurn { from { transform: scaleY(0.9); } to { transform: scaleY(1.1); } }
@keyframes wildBurn { from { transform: scaleY(0.5) scaleX(1.2); } to { transform: scaleY(1.5) scaleX(0.8); } }

/* Panel Danych */
.rk-intro-data-panel {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
}

.rk-intro-data-row {
    background: var(--rk-intro-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border-left: 4px solid var(--rk-intro-border);
    transition: all 0.3s;
}

.state-synergy .rk-intro-data-row { border-left-color: var(--rk-intro-eco); }
.state-error .rk-intro-data-row { border-left-color: var(--rk-intro-alert); }

.rk-intro-data-title {
    font-size: 13px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-intro-muted);
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.rk-intro-data-val {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-intro-dark);
}

.rk-link {
    color: var(--rk-intro-pellet);
    text-decoration: none;
    border-bottom: 2px dashed rgba(217, 119, 6, 0.4);
    font-weight: 700;
    transition: all 0.3s;
}

.rk-link:hover {
    color: #b45309;
    border-bottom-style: solid;
}

@media (max-width: 768px) {
    .rk-intro-header, .rk-intro-interactive { padding: 30px 20px; }
    .rk-intro-h2 { font-size: 26px; }
    .rk-intro-grid { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-intro-svg-box { padding: 30px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Kocioł na pellet – Zautomatyzowane serce nowoczesnego systemu grzewczego",
    "description": "Analiza synergii między zautomatyzowanym kotłem na pellet a niskotemperaturową instalacją płaszczyznową. Jak wyeliminować błędy wykonawcze i obniżyć koszty eksploatacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-wstep",
    "name": "Wskaźniki efektywności energetycznej dla biomasy (2026)",
    "description": "Zestawienie inżynierskie obrazujące parametry zautomatyzowanego kotła na pellet pracującego w synergii z instalacją płaszczyznową.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zautomatyzowany kocioł na pellet",
      "koszty eksploatacji podłogówki",
      "system grzewczy z podajnikiem",
      "sprawność normatywna pieca",
      "niskotemperaturowa instalacja płaszczyznowa"
    ],
    "measurementTechnique": "Porównanie parametrów pracy ciągłej (zbuforowanej) z układem obarczonym błędami wykonawczymi (taktowanie).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Optymalna sprawność normatywna: >92% przy prawidłowej integracji.",
        "Kluczowy element: Automatyczny podajnik sprasowanych granulatów drzewnych.",
        "Kompatybilność: Wymaga rozprzężenia hydraulicznego z niskotemperaturowym jastrychem."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-wstep",
    "name": "Symulator Synergii Grzewczej",
    "description": "Interaktywna aplikacja wizualizująca na żywo przepływ energii między zautomatyzowanym kotłem stałopalnym a układem płaszczyznowym, uwidaczniająca wpływ błędów montażowych.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Canvas/SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-intro-container" id="rk-intro-app">
    <div class="rk-intro-header">
        <div class="rk-intro-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Inwestycja w przyszłość
        </div>
        <h2 class="rk-intro-h2">Kocioł na pellet – <span>Zautomatyzowane serce systemu</span></h2>
        <p class="rk-intro-paragraph">
            Planując system grzewczy dla nowoczesnego lub modernizowanego budynku, inwestorzy szukają synergii między niskimi kosztami eksploatacji a bezobsługowością. Kocioł na pellet z automatycznym podajnikiem paliwa zyskuje miano jednego z najbardziej stabilnych źródeł biomasowych. Ten zaawansowany technologicznie generator ciepła, spalający sprasowane pod wysokim ciśnieniem granulaty drzewne, doskonale wpisuje się w wymagania współczesnego budownictwa. Kluczem do sukcesu jest jego prawidłowa integracja z <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/" style="color:#fcd34d; font-weight:700;">niskotemperaturową instalacją płaszczyznową</a>, co pozwala uzyskać maksymalną sprawność normatywną i pełną kontrolę nad mikroklimatem w pomieszczeniach, eliminując jednocześnie <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color:#fcd34d; font-weight:700;">typowe błędy wykonawcze</a> spotykane na polskich budowach.
        </p>
    </div>

    <div class="rk-intro-interactive">
        <h3 class="rk-intro-h3">Synergia technologii: Od granulatu po komfort cieplny</h3>
        
        <div class="rk-intro-toggle-box">
            <span class="rk-intro-label active-eco" id="rk-lbl-synergy" onclick="document.getElementById('rk-intro-toggle').click()">Prawidłowa Integracja (Synergia)</span>
            <label class="rk-intro-switch">
                <input type="checkbox" id="rk-intro-toggle">
                <span class="rk-intro-slider"></span>
            </label>
            <span class="rk-intro-label" id="rk-lbl-error" onclick="document.getElementById('rk-intro-toggle').click()">Błędy Wykonawcze</span>
        </div>

        <div class="rk-intro-grid state-synergy" id="rk-dynamic-grid">
            
            <div class="rk-intro-svg-box">
                <svg class="rk-svg-main" viewBox="0 0 200 150">
                    <polygon points="20,20 60,20 50,70 30,70" fill="#475569" stroke="#94a3b8" stroke-width="2"/>
                    <circle class="anim-pellet-drop" cx="40" cy="40" r="3" fill="#f59e0b"/>
                    <circle class="anim-pellet-drop" cx="35" cy="50" r="3" fill="#f59e0b" style="animation-delay: 0.3s;"/>
                    <circle class="anim-pellet-drop" cx="45" cy="45" r="3" fill="#f59e0b" style="animation-delay: 0.6s;"/>
                    
                    <rect x="25" y="70" width="80" height="60" fill="#334155" rx="4"/>
                    <path class="anim-fire" d="M65 120 C50 120, 50 90, 65 80 C80 90, 80 120, 65 120 Z"/>
                    
                    <path class="anim-heat-flow" d="M105 100 L140 100 L140 130 L180 130" fill="none" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
                    
                    <rect x="130" y="120" width="60" height="20" fill="#cbd5e1" rx="2" opacity="0.5"/>
                    <circle cx="150" cy="130" r="4" fill="#ef4444"/>
                    <circle cx="170" cy="130" r="4" fill="#ef4444"/>
                </svg>
            </div>

            <div class="rk-intro-data-panel">
                <div class="rk-intro-data-row">
                    <div class="rk-intro-data-title">Zasilanie paliwem</div>
                    <div class="rk-intro-data-val" id="rk-val-fuel">Płynne dawkowanie automatyczne</div>
                </div>
                <div class="rk-intro-data-row">
                    <div class="rk-intro-data-title">Sprawność normatywna</div>
                    <div class="rk-intro-data-val" id="rk-val-eff">> 92% (Praca stabilna)</div>
                </div>
                <div class="rk-intro-data-row">
                    <div class="rk-intro-data-title">Koszty eksploatacji</div>
                    <div class="rk-intro-data-val" id="rk-val-cost">Niskie i przewidywalne</div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Strict no H2/H3 for fallback)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-intro-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">⚠️</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Naruszenie Licencji Algorytmicznej</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Ten komponent inżynieryjny (w tym symulacje SVG i warstwa danych Schema.org) jest chroniony. Wykryto nieautoryzowane uruchomienie poza domeną docelową.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Przełącznika Synergii
    const toggle = document.getElementById('rk-intro-toggle');
    const grid = document.getElementById('rk-dynamic-grid');
    const lblSyn = document.getElementById('rk-lbl-synergy');
    const lblErr = document.getElementById('rk-lbl-error');
    
    // Pola tekstowe
    const valFuel = document.getElementById('rk-val-fuel');
    const valEff = document.getElementById('rk-val-eff');
    const valCost = document.getElementById('rk-val-cost');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // Stan Błędu
            grid.className = 'rk-intro-grid state-error';
            lblSyn.classList.remove('active-eco');
            lblErr.classList.add('active-alert');
            
            valFuel.innerHTML = 'Zablokowany / Zsyp nienormatywny';
            valEff.innerHTML = '< 70% (Taktowanie i straty)';
            valCost.innerHTML = 'Wysokie (Marnotrawstwo paliwa)';
        } else {
            // Stan Synergii
            grid.className = 'rk-intro-grid state-synergy';
            lblErr.classList.remove('active-alert');
            lblSyn.classList.add('active-eco');
            
            valFuel.innerHTML = 'Płynne dawkowanie automatyczne';
            valEff.innerHTML = '> 92% (Praca stabilna)';
            valCost.innerHTML = 'Niskie i przewidywalne';
        }
    });
});
</script>



<style>
:root {
    --rk-sync-dark: #111827;
    --rk-sync-card: #ffffff;
    --rk-sync-fire: #ea580c; /* Ogień / Pellet */
    --rk-sync-fire-light: #ffedd5;
    --rk-sync-water: #0ea5e9; /* Woda / Bufor */
    --rk-sync-water-light: #e0f2fe;
    --rk-sync-error: #dc2626; /* Błąd / Przegrzanie */
    --rk-sync-bg: #f8fafc;
    --rk-sync-border: #cbd5e1;
    --rk-sync-text: #334155;
    --rk-sync-muted: #64748b;
}

.rk-sync-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-sync-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(234, 88, 12, 0.15);
    border: 1px solid rgba(234, 88, 12, 0.3);
    overflow: hidden;
}

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

.rk-sync-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(234, 88, 12, 0.2);
    color: #fdba74;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(234, 88, 12, 0.3);
}

.rk-sync-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-sync-h2 span { color: var(--rk-sync-fire); }

.rk-sync-paragraph {
    font-size: 17px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Sekcja Symulatora */
.rk-sync-interactive {
    padding: 40px 50px;
    background: var(--rk-sync-bg);
}

.rk-sync-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-sync-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Switcher / Toggle */
.rk-sync-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 15px;
    border-radius: 100px;
    border: 1px solid var(--rk-sync-border);
    max-width: 600px;
    margin-left: auto;
    margin-right: auto;
}

.rk-sync-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-sync-muted);
    cursor: pointer;
    transition: color 0.3s;
    user-select: none;
}

.rk-sync-label.active-safe { color: var(--rk-sync-water); }
.rk-sync-label.active-error { color: var(--rk-sync-error); }

.rk-sync-switch {
    position: relative;
    display: inline-block;
    width: 64px;
    height: 32px;
    flex-shrink: 0;
}

.rk-sync-switch input { opacity: 0; width: 0; height: 0; }

.rk-sync-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-sync-water);
    transition: .4s;
    border-radius: 32px;
}

.rk-sync-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-sync-slider { background-color: var(--rk-sync-error); }
input:checked + .rk-sync-slider:before { transform: translateX(32px); }

/* Layout Danych */
.rk-sync-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-sync-panel {
    background: var(--rk-sync-card);
    border: 1px solid var(--rk-sync-border);
    border-radius: 16px;
    padding: 30px;
    transition: all 0.4s ease;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

/* Stany Wizualne */
.state-safe .rk-sync-panel { border-color: var(--rk-sync-water); box-shadow: 0 10px 30px -10px rgba(14, 165, 233, 0.2); }
.state-error .rk-sync-panel { border-color: var(--rk-sync-error); box-shadow: 0 10px 30px -10px rgba(220, 38, 38, 0.2); }

/* SVG Canvas przeniesiony na pełną szerokość pod spód */
.rk-sync-svg-wrapper {
    grid-column: 1 / -1;
    background: #0f172a;
    border-radius: 12px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    border: 1px solid var(--rk-sync-border);
    transition: border-color 0.4s ease;
}

.state-safe .rk-sync-svg-wrapper { border-color: var(--rk-sync-water); }
.state-error .rk-sync-svg-wrapper { border-color: var(--rk-sync-error); }

.rk-svg-main {
    width: 100%;
    max-width: 450px;
    height: auto;
}

/* Animacje SVG: Kocioł i Ogień */
.anim-flame { transform-origin: bottom center; transition: fill 0.3s; }
.state-safe .anim-flame { fill: #f59e0b; animation: burnSteady 2s infinite alternate; }
.state-error .anim-flame { fill: #ef4444; animation: burnStutter 0.3s infinite alternate; }

@keyframes burnSteady { from { transform: scaleY(0.9); } to { transform: scaleY(1.1); } }
@keyframes burnStutter { from { transform: scaleY(0.4) scaleX(1.2); opacity: 0.5; } to { transform: scaleY(1.3) scaleX(0.8); opacity: 1; } }

/* Animacje SVG: Rury i Woda */
.anim-flow-hot { stroke-dasharray: 6 12; stroke-dashoffset: 0; }
.state-safe .anim-flow-hot { stroke: #f97316; animation: flowSmooth 1.5s linear infinite; }
.state-error .anim-flow-hot { stroke: #dc2626; animation: flowFast 0.5s linear infinite; }

.anim-flow-mix { stroke-dasharray: 6 12; stroke-dashoffset: 0; transition: opacity 0.3s; }
.state-safe .anim-flow-mix { stroke: #0ea5e9; animation: flowSmooth 2s linear infinite; opacity: 1; }
.state-error .anim-flow-mix { opacity: 0; }

@keyframes flowSmooth { to { stroke-dashoffset: -36; } }
@keyframes flowFast { to { stroke-dashoffset: -36; } }

/* Animacje SVG: Bufor i Mieszacz */
.anim-buffer { transition: opacity 0.4s, transform 0.4s; transform-origin: bottom; }
.state-safe .anim-buffer { opacity: 1; transform: scaleY(1); }
.state-error .anim-buffer { opacity: 0.2; transform: scaleY(0); }

/* Animacje SVG: Wylewka i Pęknięcia */
.anim-floor { transition: fill 1s; }
.state-safe .anim-floor { fill: #94a3b8; }
.state-error .anim-floor { fill: #fca5a5; animation: throbRed 1.5s infinite alternate; }

.anim-crack { stroke-dasharray: 50; stroke-dashoffset: 50; transition: stroke-dashoffset 0.1s; opacity: 0; }
.state-error .anim-crack { stroke-dashoffset: 0; opacity: 1; transition: stroke-dashoffset 1s 0.5s ease-out, opacity 0.1s 0.5s; }

@keyframes throbRed { from { fill: #fca5a5; } to { fill: #ef4444; } }

/* Typografia Danych */
.rk-data-block {
    height: 100%; /* Wyrównanie wysokości kafelków na desktopie */
}

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

.rk-data-val {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-sync-text);
}

.rk-data-val strong {
    font-weight: 800;
    color: var(--rk-sync-dark);
}

.rk-link {
    color: var(--rk-sync-water);
    text-decoration: none;
    border-bottom: 2px dashed rgba(14, 165, 233, 0.4);
    font-weight: 700;
    transition: all 0.3s;
}
.state-error .rk-link { color: var(--rk-sync-error); border-bottom-color: rgba(220, 38, 38, 0.4); }
.rk-link:hover { border-bottom-style: solid; }

@media (max-width: 768px) {
    .rk-sync-header, .rk-sync-interactive { padding: 30px 20px; }
    .rk-sync-h2 { font-size: 26px; }
    .rk-sync-grid { grid-template-columns: 1fr; gap: 20px; }
    .rk-sync-toggle-box { flex-direction: column; text-align: center; gap: 15px; border-radius: 20px; }
    .rk-sync-svg-wrapper { grid-column: auto; padding: 20px 10px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-podlogowka",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Czy kocioł na pellet nadaje się do ogrzewania podłogowego?",
    "description": "Szczegółowa analiza synchronizacji hydraulicznej: sprawność kotła pelletowego, bezwładność cieplna wylewki oraz konsekwencje braku bufora ciepła wg normy PN-EN 1264.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-podlogowka",
    "name": "Parametry synchronizacji hydraulicznej: Pellet i Ogrzewanie Podłogowe",
    "description": "Baza danych termodynamicznych i normatywnych opisujących współpracę wysokotemperaturowego kotła na biomasę z niskotemperaturową płytą grzewczą.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "kocioł na pellet a podłogówka",
      "bufor ciepła",
      "temperatura zasilania podłogówki",
      "pękanie wylewki betonowej",
      "taktowanie kotła",
      "norma PN-EN 1264"
    ],
    "measurementTechnique": "Analiza termodynamiczna zgodna z normami PN-EN 303-5:2021-10 oraz PN-EN 1264-4, badająca akumulację cieplną jastrychu.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Wymóg normatywny: Minimalna pojemność bufora 50 l/kW.",
        "Parametr bezpieczeństwa: Max temp. zasilania 55°C, optymalnie 35-40°C.",
        "Bezwładność cieplna: Wylewka betonowa 6,5 cm waży 130-150 kg/m²."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-podlogowka",
    "name": "Symulator Synchronizacji Hydraulicznej",
    "description": "Interaktywne narzędzie inżynierskie wizualizujące przepływy cieplne. Symuluje procesy taktowania palnika oraz pękania jastrychu przy braku grupy pompowej z mieszaczem.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and inline SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-sync-container" id="rk-sync-app">
    <div class="rk-sync-header">
        <div class="rk-sync-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Analiza Kompatybilności
        </div>
        <h2 class="rk-sync-h2">Czy kocioł na pellet nadaje się do <span>ogrzewania podłogowego?</span></h2>
        <p class="rk-sync-paragraph">
            Tak, <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/" style="color:#fdba74; font-weight:700;">kocioł na pellet</a> doskonale nadaje się do zasilania wodnego ogrzewania podłogowego, pod warunkiem zastosowania układu mieszającego oraz bufora ciepła o minimalnej pojemności <strong>50 l/kW mocy kotła</strong>, zgodnie z wytycznymi normy <strong>PN-EN 303-5:2021-10</strong>. Ogrzewanie podłogowe wymaga niskich temperatur zasilania (maksymalnie 55°C w stanach awaryjnych, typowo 35-40°C), natomiast kocioł pelletowy musi pracować w temperaturze powrotu powyżej 55°C, aby uniknąć korozji niskotemperaturowej. Ta różnica potencjałów termicznych sprawia, że bezpośrednie połączenie tych dwóch systemów bez hydraulicznego rozprzężenia to <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/" style="color:#fdba74; font-weight:700;">krytyczny błąd sztuki budowlanej</a>.
        </p>
    </div>

    <div class="rk-sync-interactive">
        <h3 class="rk-sync-h3">Symulacja Przepływów: Konsekwencje Błędów Instalacyjnych</h3>
        
        <div class="rk-sync-toggle-box">
            <span class="rk-sync-label active-safe" id="rk-lbl-safe" onclick="document.getElementById('rk-sync-toggle').click()">Standard (Bufor + Mieszacz)</span>
            <label class="rk-sync-switch">
                <input type="checkbox" id="rk-sync-toggle">
                <span class="rk-sync-slider"></span>
            </label>
            <span class="rk-sync-label" id="rk-lbl-error" onclick="document.getElementById('rk-sync-toggle').click()">Błąd (Bezpośrednie spięcie)</span>
        </div>

        <div class="rk-sync-grid state-safe" id="rk-main-grid">
            
            <div class="rk-sync-panel">
                <div class="rk-data-block">
                    <div class="rk-data-label">Praca źródła ciepła (Sprawność)</div>
                    <div class="rk-data-val" id="rk-text-boiler">
                        <strong>Stabilny cykl ciągły (>92%).</strong> Nowoczesny palnik wrzutkowy pracuje z mocą nominalną. Ciepło ładuje <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">zbiornik buforowy</a>, eliminując problem zjawiska taktowania. Emisja CO i pyłów jest minimalna.
                    </div>
                </div>
            </div>

            <div class="rk-sync-panel">
                <div class="rk-data-block">
                    <div class="rk-data-label">Parametry jastrychu i bezpieczeństwo</div>
                    <div class="rk-data-val" id="rk-text-floor">
                        <strong>Łagodne ładowanie (35-40°C).</strong> <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">Zawór mieszający</a> obniża temperaturę do bezpiecznego poziomu. Ogromna masa <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-link">wylewki betonowej</a> (grub. 6,5 cm, 150 kg/m²) działa jak powolny, pasywny akumulator, powoli oddając ciepło do pomieszczenia.
                    </div>
                </div>
            </div>

            <div class="rk-sync-svg-wrapper">
                <svg class="rk-svg-main" viewBox="0 0 250 180">
                    <rect x="10" y="70" width="60" height="90" fill="#334155" rx="4"></rect>
                    <path class="anim-flame" d="M40 140 C25 140, 20 100, 40 80 C60 100, 55 140, 40 140 Z"></path>
                    
                    <path class="anim-flow-hot" d="M70 90 L100 90" fill="none" stroke-width="6" stroke-linecap="round"></path>
                    
                    <g class="anim-buffer">
                        <rect x="100" y="40" width="40" height="120" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="8"></rect>
                        <path class="anim-flow-mix" d="M140 140 L160 140" fill="none" stroke-width="6" stroke-linecap="round"></path>
                        <polygon points="160,130 160,150 180,140" fill="#cbd5e1"></polygon>
                        <polygon points="170,120 190,120 180,140" fill="#cbd5e1"></polygon>
                    </g>

                    <path class="anim-flow-hot" id="rk-bypass-pipe" d="M70 90 L180 90 L180 140" fill="none" stroke-width="6" stroke-linecap="round" style="opacity:0;"></path>

                    <path class="anim-flow-mix" id="rk-floor-pipe" d="M180 140 L210 140" fill="none" stroke-width="6" stroke-linecap="round"></path>
                    
                    <rect class="anim-floor" x="180" y="130" width="60" height="30" rx="2"></rect>
                    <circle cx="200" cy="140" r="5" fill="#1e293b"></circle>
                    <circle cx="220" cy="140" r="5" fill="#1e293b"></circle>
                    
                    <path class="anim-crack" d="M190 130 L195 145 L185 160" fill="none" stroke="#000" stroke-width="2"></path>
                    <path class="anim-crack" d="M220 130 L215 140 L225 155" fill="none" stroke="#000" stroke-width="2"></path>
                </svg>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-sync-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🚧</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano kod autorski</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Próba osadzenia interaktywnego symulatora inżynierskiego poza autoryzowaną domeną. Kontener oraz struktura JSON-LD zostały zdeztywowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    const toggle = document.getElementById('rk-sync-toggle');
    const grid = document.getElementById('rk-main-grid');
    const lblSafe = document.getElementById('rk-lbl-safe');
    const lblError = document.getElementById('rk-lbl-error');
    
    const bypassPipe = document.getElementById('rk-bypass-pipe');
    const floorPipe = document.getElementById('rk-floor-pipe');
    
    const txtBoiler = document.getElementById('rk-text-boiler');
    const txtFloor = document.getElementById('rk-text-floor');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            grid.className = 'rk-sync-grid state-error';
            lblSafe.classList.remove('active-safe');
            lblError.classList.add('active-error');
            
            bypassPipe.style.opacity = '1';
            floorPipe.classList.remove('anim-flow-mix');
            floorPipe.classList.add('anim-flow-hot');
            
            txtBoiler.innerHTML = '<strong>Taktowanie (Spadek o 15-20%).</strong> Kocioł ciągle się rozpala i wygasza, próbując dopasować moc do małego zładu wody. Powstaje smoła, zapalarka ulega uszkodzeniu po jednym sezonie.';
            txtFloor.innerHTML = '<strong>Destrukcja termiczna (70°C).</strong> Wpuszczenie wrzątku bezpośrenio w rury powoduje natychmiastowe przekroczenie dopuszczalnej normą PN-EN 1264 temperatury (max 29°C). Wylewka pęka, płytki odpadają od podłoża.';
            
        } else {
            grid.className = 'rk-sync-grid state-safe';
            lblError.classList.remove('active-error');
            lblSafe.classList.add('active-safe');
            
            bypassPipe.style.opacity = '0';
            floorPipe.classList.remove('anim-flow-hot');
            floorPipe.classList.add('anim-flow-mix');
            
            txtBoiler.innerHTML = '<strong>Stabilny cykl ciągły (>92%).</strong> Nowoczesny palnik wrzutkowy pracuje z mocą nominalną. Ciepło ładuje <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">zbiornik buforowy</a>, eliminując problem zjawiska taktowania. Emisja CO i pyłów jest minimalna.';
            txtFloor.innerHTML = '<strong>Łagodne ładowanie (35-40°C).</strong> <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">Zawór mieszający</a> obniża temperaturę do bezpiecznego poziomu. Ogromna masa <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-link">wylewki betonowej</a> (grub. 6,5 cm) działa jak pasywny akumulator.';
        }
    });
});
</script>



<style>
:root {
    --rk-temp-dark: #0f172a;
    --rk-temp-card: #ffffff;
    --rk-temp-hot: #ef4444; /* Wrzątek / Kocioł */
    --rk-temp-mix: #f59e0b; /* Optymalna podłoga */
    --rk-temp-cold: #3b82f6; /* Powrót / Zima */
    --rk-temp-evoh: #10b981; /* Ochrona EVOH */
    --rk-temp-bg: #f8fafc;
    --rk-temp-border: #e2e8f0;
    --rk-temp-text: #334155;
    --rk-temp-muted: #64748b;
}

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

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

.rk-temp-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(239, 68, 68, 0.2);
    color: #fca5a5;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(239, 68, 68, 0.3);
}

.rk-temp-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-temp-h2 span { color: var(--rk-temp-hot); }

.rk-temp-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-temp-paragraph strong { color: #ffffff; }

/* Sekcja Symulatora Krzywej */
.rk-temp-interactive {
    padding: 40px 50px;
    background: var(--rk-temp-bg);
    border-bottom: 1px solid var(--rk-temp-border);
}

.rk-temp-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-temp-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Dashboard Controls */
.rk-temp-dashboard {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 16px;
    padding: 30px;
    margin-bottom: 30px;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
}

/* Suwak (Slider) */
.rk-slider-group {
    margin-bottom: 30px;
}

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

.rk-slider-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-temp-muted);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-temp-cold);
    background: #f0f9ff;
    padding: 5px 15px;
    border-radius: 8px;
    border: 1px solid #bae6fd;
}

.rk-range-input {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #3b82f6 0%, #cbd5e1 50%, #f59e0b 100%);
    border-radius: 4px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-temp-dark);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Switcher / Toggle dla zaworu */
.rk-toggle-group {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 15px;
    padding-top: 20px;
    border-top: 1px dashed var(--rk-temp-border);
}

.rk-valve-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-temp-muted);
    transition: color 0.3s;
}

.rk-valve-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 32px;
}
.rk-valve-switch input { opacity: 0; width: 0; height: 0; }
.rk-valve-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-temp-mix);
    border-radius: 32px;
    transition: .4s;
}
.rk-valve-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    border-radius: 50%;
    transition: .4s;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
input:checked + .rk-valve-slider { background-color: var(--rk-temp-hot); }
input:checked + .rk-valve-slider:before { transform: translateX(28px); }

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

/* SVG Panel */
.rk-temp-svg-panel {
    background: #0f172a;
    border-radius: 16px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    position: relative;
}

.rk-svg-main {
    width: 100%;
    max-width: 320px;
}

/* Data Panel */
.rk-temp-data-panel {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-temp-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all 0.3s;
}

.rk-data-card.card-boiler { border-left: 4px solid var(--rk-temp-hot); }
.rk-data-card.card-floor { border-left: 4px solid var(--rk-temp-mix); }
.rk-data-card.card-status { border-left: 4px solid var(--rk-temp-cold); background: #f8fafc; }

.rk-card-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-temp-muted);
    text-transform: uppercase;
}

.rk-card-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-temp-dark);
}

.val-hot { color: var(--rk-temp-hot); }
.val-mix { color: var(--rk-temp-mix); }

/* Sekcja EVOH */
.rk-temp-evoh-sec {
    padding: 40px 50px;
    background: #ffffff;
}

.rk-evoh-box {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

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

.rk-evoh-text h4 {
    margin: 0 0 10px 0;
    font-size: 18px;
    font-weight: 800;
    color: #166534;
}

.rk-evoh-text p {
    margin: 0;
    font-size: 15px;
    line-height: 1.6;
    color: #15803d;
}

/* SVG Animations & Dynamic Classes */
.anim-flow { stroke-dasharray: 6 12; animation: flow 1s linear infinite; }
@keyframes flow { to { stroke-dashoffset: -18; } }

.crack-path { stroke-dasharray: 100; stroke-dashoffset: 100; transition: stroke-dashoffset 0.5s ease-out; opacity: 0; }
.show-crack .crack-path { stroke-dashoffset: 0; opacity: 1; }

.rk-link {
    color: var(--rk-temp-mix);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(245, 158, 11, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: var(--rk-temp-hot); }

@media (max-width: 768px) {
    .rk-temp-header, .rk-temp-interactive, .rk-temp-evoh-sec { padding: 30px 20px; }
    .rk-temp-grid { grid-template-columns: 1fr; }
    .rk-evoh-box { flex-direction: column; }
    .rk-temp-h2 { font-size: 26px; }
    .rk-data-card { flex-direction: column; align-items: flex-start; gap: 5px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/"
    },
    "headline": "Maksymalna temperatura zasilania podłogówki z kotła i rola zaworu trójdrogowego",
    "description": "Zrozumienie normy PN-EN 1264-2: dlaczego woda w rurach podłogówki nie może przekraczać 50°C. Interaktywny symulator krzywej grzewczej 0.4.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#dataset",
    "name": "Krzywa grzewcza 0.4 i parametry zasilania (2026)",
    "description": "Zestawienie inżynierskie mapujące optymalną temperaturę zasilania jastrychu w zależności od temperatury zewnętrznej przy zachowaniu granicy 50°C.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "temperatura zasilania podłogówki",
      "krzywa grzewcza 0.4",
      "zawór trójdrogowy mieszający",
      "bariera antydyfuzyjna EVOH",
      "norma PN-EN 1264-2"
    ],
    "measurementTechnique": "Obliczenia termodynamiczne automatyki pogodowej (slope 0.4) w relacji do ograniczeń fizycznych wytrzymałości jastrychu (klasa F4 wg PN-EN 13813).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Kocioł pelletowy: Generuje stałe 65-80°C.",
        "Krzywa 0.4 przy +10°C: Zasilanie podłogi = 26°C.",
        "Krzywa 0.4 przy -15°C: Zasilanie podłogi = 38°C.",
        "Ograniczenie jastrychu: Max 50°C (skrajnie 55°C w łazience)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/#webapp",
    "name": "Symulator Zaworu Mieszającego i Krzywej Grzewczej",
    "description": "Interaktywna aplikacja obliczeniowa na żywo korelująca odczyty z czujnika pogodowego z pracą zaworu trójdrogowego, symulująca pękanie posadzki przy awarii mieszacza.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Range Input, and SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-temp-container" id="rk-temp-app">
    <div class="rk-temp-header">
        <div class="rk-temp-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 9a4 4 0 0 0-2 7.5"></path><path d="M12 3v2"></path><path d="m6.6 18.4-1.4 1.4"></path><path d="m20 4-1.4 1.4"></path><path d="M4 22l1.4-1.4"></path><path d="M21 13h-2"></path><path d="m17.4 18.4 1.4 1.4"></path></svg>
            Parametry Krytyczne wg Normy
        </div>
        <h2 class="rk-temp-h2">Jaka jest maksymalna temperatura zasilania <span>podłogówki z kotła?</span></h2>
        <p class="rk-temp-paragraph">
            Maksymalna temperatura zasilania instalacji ogrzewania podłogowego wynosi <strong>50°C</strong> (w skrajnych przypadkach dla łazienek 55°C), co precyzyjnie definiuje <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/" style="color:#fca5a5; font-weight:700;">norma PN-EN 1264-2</a>. Przekroczenie tej wartości granicznej generuje naprężenia wewnętrzne w jastrychu przekraczające jego wytrzymałość na rozciąganie przy zginaniu (klasa jastrychu minimum F4 wg PN-EN 13813). W normalnych warunkach eksploatacyjnych, przy temperaturze projektowej zewnętrznej dla III strefy klimatycznej Polski (-20°C), <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/" style="color:#fca5a5; font-weight:700;">optymalna temperatura zasilania wynosi 35°C do 40°C</a>.
        </p>
    </div>

    <div class="rk-temp-interactive">
        <h3 class="rk-temp-h3">Rola zaworu trójdrogowego i krzywej grzewczej</h3>
        <p style="text-align:center; color:#64748b; margin-bottom:30px; font-size:15px; max-width:700px; margin-left:auto; margin-right:auto;">
            Aby obniżyć parametry wysokiej temperatury z kotła (65-80°C) do bezpiecznego poziomu, stosuje się <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-link">zawór mieszający z siłownikiem</a>. Regulator dobiera temperaturę według <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/" class="rk-link">krzywej grzewczej</a>. Sprawdź, jak to działa na żywo (krzywa 0.4):
        </p>

        <div class="rk-temp-dashboard">
            <div class="rk-slider-group">
                <div class="rk-slider-header">
                    <div class="rk-slider-label">Temperatura Zewnętrzna (Czujnik)</div>
                    <div class="rk-slider-value" id="rk-out-temp">+10°C</div>
                </div>
                <input type="range" id="rk-out-slider" class="rk-range-input" min="-20" max="15" value="10">
            </div>

            <div class="rk-toggle-group">
                <span class="rk-valve-label" id="rk-lbl-on" style="color:#f59e0b;">Zawór Działa (Mieszanie)</span>
                <label class="rk-valve-switch">
                    <input type="checkbox" id="rk-valve-toggle">
                    <span class="rk-valve-slider"></span>
                </label>
                <span class="rk-valve-label" id="rk-lbl-off">Awaria / Brak Zaworu</span>
            </div>
        </div>

        <div class="rk-temp-grid">
            <div class="rk-temp-svg-panel" id="rk-svg-container">
                <svg class="rk-svg-main" viewBox="0 0 250 150">
                    <rect x="10" y="20" width="50" height="100" fill="#334155" rx="4"/>
                    <text x="35" y="75" fill="#ef4444" font-size="16" font-weight="bold" text-anchor="middle">75°</text>
                    
                    <path class="anim-flow" d="M60 40 L100 40" fill="none" stroke="#ef4444" stroke-width="8" stroke-linecap="round"/>
                    
                    <g id="rk-svg-valve">
                        <polygon points="100,30 100,50 120,40" fill="#cbd5e1"/>
                        <polygon points="120,40 140,30 140,50" fill="#cbd5e1"/>
                        <polygon points="110,60 130,60 120,40" fill="#cbd5e1"/>
                        <circle cx="120" cy="40" r="4" fill="#1e293b"/>
                    </g>

                    <path class="anim-flow" id="rk-svg-return" d="M120 110 L120 60" fill="none" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"/>
                    <path class="anim-flow" d="M220 110 L120 110" fill="none" stroke="#3b82f6" stroke-width="6" stroke-linecap="round"/>

                    <path class="anim-flow" id="rk-svg-mixpipe" d="M140 40 L220 40 L220 70" fill="none" stroke="#f59e0b" stroke-width="8" stroke-linecap="round" transition="stroke 0.3s"/>
                    
                    <rect id="rk-svg-floor" x="160" y="70" width="80" height="30" fill="#94a3b8" rx="2" style="transition: fill 0.5s;"/>
                    <text id="rk-svg-floortext" x="200" y="90" fill="#ffffff" font-size="14" font-weight="bold" text-anchor="middle">26°C</text>

                    <path class="crack-path" d="M170 70 L180 85 L175 100" fill="none" stroke="#000000" stroke-width="2"/>
                    <path class="crack-path" d="M210 70 L205 85 L215 100" fill="none" stroke="#000000" stroke-width="2"/>
                </svg>
            </div>

            <div class="rk-temp-data-panel">
                <div class="rk-data-card card-boiler">
                    <div class="rk-card-title">Zasilanie Kotła (Stałe)</div>
                    <div class="rk-card-value val-hot">75.0 °C</div>
                </div>
                <div class="rk-data-card card-floor" id="rk-card-mix">
                    <div class="rk-card-title">Woda na posadzkę (Zredukowana)</div>
                    <div class="rk-card-value val-mix" id="rk-val-mix">26.0 °C</div>
                </div>
                <div class="rk-data-card card-status" id="rk-card-status">
                    <div class="rk-card-title">Status Jastrychu</div>
                    <div class="rk-card-value" style="color:#10b981;" id="rk-val-status">Bezpieczny (Norma)</div>
                </div>
            </div>
        </div>
    </div>

    <div class="rk-temp-evoh-sec">
        <h3 class="rk-temp-h3" style="text-align:left;">Znaczenie bariery antydyfuzyjnej EVOH w rurach</h3>
        <div class="rk-evoh-box">
            <div class="rk-evoh-icon">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            </div>
            <div class="rk-evoh-text">
                <h4>Ochrona instalacji wg normy DIN 4726</h4>
                <p>
                    Zgodnie z normą DIN 4726, <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/" style="color:#166534; font-weight:700; text-decoration:underline; text-underline-offset:2px;">rury grzewcze (PEX, PERT)</a> stosowane w instalacjach płaszczyznowych muszą posiadać warstwę antydyfuzyjną EVOH (alkohol etylowinylowy). Zapobiega ona przenikaniu tlenu z powietrza do wnętrza układu. Przy kotłach stałopalnych, natleniona woda błyskawicznie powoduje korozję wżerową wymienników i zapowietrzanie się pętli grzewczych.
                </p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Ochrona Algorytmiczna (Brak znaczników H w fallbacku)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-temp-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zabezpieczenie Licencyjne</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Moduł kalkulatora krzywej grzewczej i pliki JSON-LD zostały zablokowane z powodu nieautoryzowanego użycia na obcej domenie.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora Krzywej Grzewczej 0.4
    const slider = document.getElementById('rk-out-slider');
    const outTempDisplay = document.getElementById('rk-out-temp');
    const toggleValve = document.getElementById('rk-valve-toggle');
    
    // UI Elements
    const lblOn = document.getElementById('rk-lbl-on');
    const lblOff = document.getElementById('rk-lbl-off');
    const valMix = document.getElementById('rk-val-mix');
    const valStatus = document.getElementById('rk-val-status');
    const cardMix = document.getElementById('rk-card-mix');
    
    // SVG Elements
    const svgMixPipe = document.getElementById('rk-svg-mixpipe');
    const svgFloor = document.getElementById('rk-svg-floor');
    const svgFloorText = document.getElementById('rk-svg-floortext');
    const svgContainer = document.getElementById('rk-svg-container');
    const svgReturn = document.getElementById('rk-svg-return');

    // Algorytm wyliczający T_zasilania na podstawie krzywej 0.4
    // Uproszczona matematyka dająca dokładnie: +10C -> 26C, -15C -> 38C
    // T_floor = 30.8 - (0.48 * T_out)
    function calculateFloorTemp(tOut) {
        let tFloor = 30.8 - (0.48 * tOut);
        return Math.round(tFloor * 10) / 10;
    }

    function updateSimulation() {
        let tOut = parseInt(slider.value);
        let prefix = tOut > 0 ? "+" : "";
        outTempDisplay.innerText = prefix + tOut + "°C";

        let isBroken = toggleValve.checked;

        if (isBroken) {
            // AWARIA ZAWORU - Płynie wrzątek z kotła
            lblOn.style.color = 'var(--rk-temp-muted)';
            lblOff.style.color = 'var(--rk-temp-hot)';
            
            valMix.innerText = "75.0 °C";
            valMix.className = "rk-card-value val-hot";
            cardMix.style.borderLeftColor = "var(--rk-temp-hot)";
            
            valStatus.innerText = "KRYTYCZNE: Pękanie jastrychu!";
            valStatus.style.color = "var(--rk-temp-hot)";
            
            // Wizualizacja SVG
            svgMixPipe.setAttribute("stroke", "#ef4444"); // czerwona rura
            svgReturn.style.opacity = "0.2"; // brak powrotu zimnej
            svgFloor.setAttribute("fill", "#fca5a5"); // podłoga się przegrzewa
            svgFloorText.textContent = "75°C";
            svgContainer.classList.add("show-crack");

        } else {
            // ZAWÓR DZIAŁA - Mieszanie pogodowe
            lblOff.style.color = 'var(--rk-temp-muted)';
            lblOn.style.color = 'var(--rk-temp-mix)';
            
            let tFloor = calculateFloorTemp(tOut);
            valMix.innerText = tFloor.toFixed(1) + " °C";
            valMix.className = "rk-card-value val-mix";
            cardMix.style.borderLeftColor = "var(--rk-temp-mix)";
            
            if (tFloor <= 50) {
                valStatus.innerText = "Bezpieczny (Zgodnie z normą)";
                valStatus.style.color = "var(--rk-temp-evoh)";
                svgFloor.setAttribute("fill", "#94a3b8");
                svgContainer.classList.remove("show-crack");
            } else {
                valStatus.innerText = "Ostrzeżenie: Granica normy";
                valStatus.style.color = "var(--rk-temp-mix)";
            }

            // Wizualizacja SVG - zmiana koloru rury w zależności od temp
            svgReturn.style.opacity = "1";
            svgFloorText.textContent = tFloor.toFixed(0) + "°C";
            
            if(tFloor < 30) svgMixPipe.setAttribute("stroke", "#fbbf24"); // żółty
            else if (tFloor < 40) svgMixPipe.setAttribute("stroke", "#f59e0b"); // pomarańcz
            else svgMixPipe.setAttribute("stroke", "#d97706"); // ciemny pomarańcz
        }
    }

    slider.addEventListener('input', updateSimulation);
    toggleValve.addEventListener('change', updateSimulation);

    // Init
    updateSimulation();
});
</script>



<style>
:root {
    --rk-flow-dark: #0f172a;
    --rk-flow-card: #ffffff;
    --rk-flow-cyan: #06b6d4; /* Precyzja Inżynierska */
    --rk-flow-cyan-light: #cffafe;
    --rk-flow-blue: #3b82f6; /* Woda / Przepływ */
    --rk-flow-blue-light: #dbeafe;
    --rk-flow-alert: #ef4444; /* Ostrzeżenie / Brak zładu */
    --rk-flow-bg: #f8fafc;
    --rk-flow-border: #e2e8f0;
    --rk-flow-text: #334155;
    --rk-flow-muted: #64748b;
}

.rk-flow-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-flow-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(6, 182, 212, 0.15);
    border: 1px solid var(--rk-flow-border);
    overflow: hidden;
}

/* Nagłówek */
.rk-flow-header {
    background: linear-gradient(135deg, var(--rk-flow-dark) 0%, #164e63 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-flow-cyan);
}

.rk-flow-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(6, 182, 212, 0.2);
    color: #67e8f9;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(6, 182, 212, 0.3);
}

.rk-flow-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-flow-h2 span { color: var(--rk-flow-cyan); }

.rk-flow-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-flow-formula {
    background: rgba(0,0,0,0.3);
    padding: 15px 20px;
    border-radius: 12px;
    font-family: 'Courier New', monospace;
    font-size: 18px;
    color: #22d3ee;
    text-align: center;
    margin: 20px 0;
    border: 1px dashed rgba(34, 211, 238, 0.4);
}

/* Interaktywny Kalkulator */
.rk-flow-interactive {
    padding: 40px 50px;
    background: var(--rk-flow-bg);
}

.rk-flow-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-flow-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

.rk-flow-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 30px;
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-flow-border);
    box-shadow: 0 10px 30px -10px rgba(0,0,0,0.05);
}

/* Suwaki / Controls */
.rk-flow-controls {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.rk-slider-group {
    background: var(--rk-flow-bg);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-flow-border);
}

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

.rk-slider-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-flow-muted);
    text-transform: uppercase;
}

.rk-slider-value {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-flow-cyan);
}

.rk-range-input {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #bae6fd 0%, #06b6d4 100%);
    border-radius: 4px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-flow-cyan);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Wyniki & Wizualizacja */
.rk-flow-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-result-card {
    background: var(--rk-flow-bg);
    border: 1px solid var(--rk-flow-border);
    border-radius: 12px;
    padding: 15px;
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.rk-result-card.highlight {
    background: var(--rk-flow-cyan-light);
    border-color: var(--rk-flow-cyan);
}

.rk-result-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-flow-text);
}

.rk-result-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-flow-dark);
}

.rk-result-card.highlight .rk-result-val { color: var(--rk-flow-cyan); }

/* Zład Wody Info */
.rk-volume-info {
    margin-top: 40px;
    padding: 30px;
    background: #ffffff;
    border-radius: 16px;
    border-left: 5px solid var(--rk-flow-alert);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

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

.rk-volume-info p {
    margin: 0 0 10px 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-flow-text);
}

.rk-link {
    color: var(--rk-flow-cyan);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(6, 182, 212, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #0891b2; }

@media (max-width: 768px) {
    .rk-flow-header, .rk-flow-interactive { padding: 30px 20px; }
    .rk-flow-grid { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-flow-h2 { font-size: 26px; }
    .rk-volume-info { padding: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#article-przeplyw",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/"
    },
    "headline": "Ile m³ wody na godzinę musi przepłynąć przez instalację? Algorytmy i zład wody",
    "description": "Zrozumienie fundamentalnego wzoru termodynamiki m = Q / (cw · ΔT). Obliczanie nastaw rotametrów na rozdzielaczu i analiza ryzyka małego zładu wody przy kotłach na pellet.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#dataset-przeplyw",
    "name": "Kalkulator Przepływu Masowego i Zładu Wody (2026)",
    "description": "Zestawienie inżynierskie łączące ciepło właściwe wody (1,163 Wh/kg·K) z zapotrzebowaniem na moc i projektową deltą temperatur w celu wyznaczenia przepływu w rotametrach.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "przepływ w ogrzewaniu podłogowym",
      "wzór na przepływ wody",
      "nastawy rotametrów podłogówka",
      "zład wody rura 16x2",
      "taktowanie kotła pelletowego"
    ],
    "measurementTechnique": "Termodynamiczne równanie bilansu cieplnego z uwzględnieniem ciepła właściwego wody oraz pojemności wodnej rur PEX/PERT 16x2 (0,113 l/mb).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przykład 10 kW, ΔT = 5 K: Przepływ = 1,72 m³/h (28,6 l/min).",
        "Przykład pętla 1200 W, ΔT = 5 K: Przepływ pętli = 3,44 l/min.",
        "Zład wody dla 100 m² (rozstaw 10 cm): ok. 113 litrów (Zbyt mało dla kotła stałopalnego bez bufora)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/#webapp-przeplyw",
    "name": "Interaktywny Kalkulator Rotametrów i Algorytmów Przepływu",
    "description": "Dynamiczne narzędzie inżynierskie obliczające na żywo przepływ objętościowy [l/min] na bazie zmian mocy OZC i spadku temperatury ΔT.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Range Inputs.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-flow-container" id="rk-flow-app">
    <div class="rk-flow-header">
        <div class="rk-flow-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
            Termodynamika w Praktyce
        </div>
        <h2 class="rk-flow-h2">Ile m³ wody na godzinę musi <span>przepłynąć przez instalację?</span></h2>
        <p class="rk-flow-paragraph">
            Dla budynku o zapotrzebowaniu na moc cieplną <strong>Q = 10 kW</strong> i projektowej różnicy temperatur <strong>ΔT = 5 K</strong> (typowy spadek dla podłogówki), wymagany masowy przepływ nominalny wynosi dokładnie <strong>1,72 m³/h</strong> (28,6 l/min). Wartość tę wylicza się bezpośrednio z fundamentalnego wzoru termodynamiki:
        </p>
        <div class="rk-flow-formula">
            m = Q / (cw · ΔT)
        </div>
        <p class="rk-flow-paragraph" style="font-size: 14px; opacity: 0.9;">
            Gdzie <strong>cw</strong> to ciepło właściwe wody wynoszące <strong>1,163 Wh/(kg·K)</strong>. Każde drastyczne zdławienie przepływu poniżej wartości obliczeniowej przez źle dobraną <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" style="color:#67e8f9; font-weight:700;">pompę obiegową</a> skutkuje niedogrzaniem stref oddalonych od rozdzielacza i zaburzeniem równowagi hydraulicznej obiegu.
        </p>
    </div>

    <div class="rk-flow-interactive">
        <h3 class="rk-flow-h3">Algorytm obliczania przepływu dla pętli grzewczych</h3>
        
        <div class="rk-flow-grid">
            <div class="rk-flow-controls">
                <div class="rk-slider-group">
                    <div class="rk-slider-header">
                        <div class="rk-slider-label">Zapotrzebowanie z OZC (Q)</div>
                        <div class="rk-slider-value" id="rk-val-q">1200 W</div>
                    </div>
                    <input type="range" id="rk-slider-q" class="rk-range-input" min="500" max="2500" step="100" value="1200">
                </div>

                <div class="rk-slider-group">
                    <div class="rk-slider-header">
                        <div class="rk-slider-label">Spadek temperatury (ΔT)</div>
                        <div class="rk-slider-value" id="rk-val-dt">5 K</div>
                    </div>
                    <input type="range" id="rk-slider-dt" class="rk-range-input" min="3" max="10" step="1" value="5">
                </div>
            </div>

            <div class="rk-flow-results">
                <div class="rk-result-card">
                    <div class="rk-result-label">Strumień masowy</div>
                    <div class="rk-result-val" id="rk-out-mass">206.4 kg/h</div>
                </div>
                <div class="rk-result-card highlight">
                    <div class="rk-result-label">Nastawa Rotametru <br><span style="font-size:11px; color:#64748b; font-weight:400;">(Złożenie dla 2 pętli w salonie)</span></div>
                    <div class="rk-result-val" id="rk-out-rota">1.72 l/min</div>
                </div>
            </div>
        </div>

        <div class="rk-volume-info">
            <h4>
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Zjawisko zbyt małego zładu wody
            </h4>
            <p>
                Ogrzewanie podłogowe oparte na <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/" class="rk-link">rurze PEX/PERT 16x2 mm</a> mieści w sobie zaledwie <strong>0,113 litra wody</strong> na każdy metr bieżący. Przy rozstawie co 10 cm, na powierzchni 100 m² mamy około 1000 m rury, co daje zład wodny rzędu zaledwie <strong>113 litrów</strong>.
            </p>
            <p>
                Dla nowoczesnego kotła na pellet o modulacji mocy od 3 kW do 10 kW to <a href="https://projekt-ogrzewania.pl/wiekszy-czy-mniejszy-zlad-wody-w-ogrzewaniu-podlogowym/" class="rk-link">zdecydowanie za mało</a>. Kocioł nie ma gdzie zrzucić wyprodukowanej energii cieplnej, gdy automatyka pokojowa zamknie większość obwodów. Bez dodatkowego magazynu energii (zbiornika buforowego) układ błyskawicznie wejdzie w tryb niszczącego, <strong>ciągłego taktowania</strong>.
            </p>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Ochrona Algorytmiczna (Brak znaczników H w fallbacku)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-flow-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowany Moduł Algorytmiczny</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Kalkulator rotametrów oraz pliki JSON-LD zostały zablokowane z powodu nieautoryzowanego użycia na obcej domenie. Własność Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Kalkulatora Przepływu
    const sliderQ = document.getElementById('rk-slider-q');
    const sliderDT = document.getElementById('rk-slider-dt');
    const valQ = document.getElementById('rk-val-q');
    const valDT = document.getElementById('rk-val-dt');
    
    const outMass = document.getElementById('rk-out-mass');
    const outRota = document.getElementById('rk-out-rota');

    // Stała fizyczna: ciepło właściwe wody w Wh/(kg*K)
    const cw = 1.163; 
    
    // Obliczanie
    function updateFlowCalc() {
        let Q = parseFloat(sliderQ.value);
        let dT = parseFloat(sliderDT.value);
        
        // Update Labels
        valQ.innerText = Q + " W";
        valDT.innerText = dT + " K";
        
        // 1. Strumień masowy: m = Q / (cw * dT) [kg/h]
        let massFlow = Q / (cw * dT);
        outMass.innerText = massFlow.toFixed(1) + " kg/h";
        
        // 2. Przepływ objętościowy [l/min] = kg/h / 60 (zakładając gęstość wody 1kg/l)
        let volFlowMin = massFlow / 60;
        
        // 3. Rozbicie na pętle (zakładamy 2 pętle w jednym dużym pokoju)
        let loopFlow = volFlowMin / 2;
        outRota.innerText = loopFlow.toFixed(2) + " l/min";
    }

    sliderQ.addEventListener('input', updateFlowCalc);
    sliderDT.addEventListener('input', updateFlowCalc);

    // Init
    updateFlowCalc();
});
</script>



<style>
:root {
    --rk-buf2-dark: #0f172a;
    --rk-buf2-blue: #2563eb; /* Głęboki niebieski dla bufora */
    --rk-buf2-blue-light: #eff6ff;
    --rk-buf2-orange: #ea580c; /* Ciepło kotła */
    --rk-buf2-orange-light: #fff7ed;
    --rk-buf2-green: #16a34a; /* Sukces / Oszczędność */
    --rk-buf2-green-light: #f0fdf4;
    --rk-buf2-bg: #f8fafc;
    --rk-buf2-border: #cbd5e1;
    --rk-buf2-text: #334155;
    --rk-buf2-muted: #64748b;
}

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

/* Sekcja Górna */
.rk-buf2-header {
    background: linear-gradient(135deg, var(--rk-buf2-dark) 0%, #1e3a8a 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-buf2-blue);
}

.rk-buf2-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #93c5fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-buf2-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-buf2-h2 span { color: #60a5fa; }

.rk-buf2-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-buf2-paragraph strong { color: #ffffff; }

/* Moduł Interaktywny */
.rk-buf2-interactive {
    padding: 40px 50px;
    background: var(--rk-buf2-bg);
}

.rk-buf2-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-buf2-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Przełącznik Widoku */
.rk-buf2-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 15px 30px;
    border-radius: 100px;
    border: 1px solid var(--rk-buf2-border);
    max-width: 620px;
    margin-left: auto;
    margin-right: auto;
}

.rk-buf2-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-buf2-muted);
    cursor: pointer;
    transition: color 0.3s;
    user-select: none;
}

.rk-buf2-label.active-pro { color: var(--rk-buf2-blue); }
.rk-buf2-label.active-warn { color: var(--rk-buf2-orange); }

.rk-buf2-switch {
    position: relative;
    display: inline-block;
    width: 64px;
    height: 32px;
    flex-shrink: 0;
}

.rk-buf2-switch input { opacity: 0; width: 0; height: 0; }

.rk-buf2-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-buf2-blue);
    transition: .4s;
    border-radius: 32px;
}

.rk-buf2-slider:before {
    position: absolute;
    content: "";
    height: 24px;
    width: 24px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-buf2-slider { background-color: var(--rk-buf2-orange); }
input:checked + .rk-buf2-slider:before { transform: translateX(32px); }

/* Wizualizacja SVG */
.rk-buf2-svg-wrapper {
    background: #0f172a;
    border-radius: 16px;
    padding: 25px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-bottom: 35px;
    box-shadow: inset 0 0 25px rgba(0,0,0,0.4);
}

.rk-buf2-svg { width: 100%; max-width: 450px; height: auto; }

/* Dynamiczne klasy i animacje dla SVG */
.anim-flow-boiler { stroke-dasharray: 6 12; stroke: var(--rk-buf2-orange); }
.anim-flow-floor { stroke-dasharray: 4 8; stroke: #60a5fa; }

.state-pro .anim-flow-boiler { animation: flowLeft 2s linear infinite; }
.state-pro .anim-flow-floor { animation: flowRight 1.5s linear infinite; }

.state-warn .anim-flow-boiler { animation: flowLeft 0.4s linear infinite; stroke: #ef4444; }
.state-warn .anim-flow-floor { animation: flowStutter 1s ease infinite; stroke: #f97316; stroke-dasharray: 2 20; }

.svg-buffer-tank { transition: opacity 0.4s, transform 0.4s; }
.state-warn .svg-buffer-tank { opacity: 0.1; transform: scaleY(0.8); }

@keyframes flowLeft { to { stroke-dashoffset: -36; } }
@keyframes flowRight { to { stroke-dashoffset: 36; } }
@keyframes flowStutter { 0%, 100% { opacity: 1; stroke-dashoffset: 0; } 50% { opacity: 0.3; stroke-dashoffset: -10; } }

/* Responsywny Matrix Zastępujący Tabelę */
.rk-matrix-grid {
    display: flex;
    flex-direction: column;
    gap: 12px;
    margin-bottom: 35px;
}

/* Wiersz nagłówkowy (ukrywany na mobile) */
.rk-matrix-header {
    display: grid;
    grid-template-columns: 2fr 1.5fr 1.5fr;
    gap: 15px;
    padding: 10px 20px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    color: var(--rk-buf2-muted);
    letter-spacing: 0.5px;
}

/* Wiersz danych */
.rk-matrix-row {
    display: grid;
    grid-template-columns: 2fr 1.5fr 1.5fr;
    gap: 15px;
    background: #ffffff;
    padding: 18px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-buf2-border);
    align-items: center;
    transition: all 0.3s;
}

.rk-matrix-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-buf2-dark);
}

.rk-matrix-val {
    font-size: 15px;
    line-height: 1.4;
}

.rk-matrix-val strong { font-weight: 800; }

/* Kolorowanie kolumn aktywnego stanu */
.state-pro .row-pro { background: var(--rk-buf2-green-light); border-color: #bbf7d0; color: #166534; }
.state-warn .row-warn { background: var(--rk-buf2-orange-light); border-color: #fed7aa; color: #9a3412; }

/* Dolna Sekcja Zagrożeń H4 */
.rk-buf2-threats {
    background: #ffffff;
    border: 1px solid var(--rk-buf2-border);
    border-radius: 16px;
    padding: 30px;
}

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

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

.rk-link {
    color: var(--rk-buf2-blue);
    text-decoration: none;
    border-bottom: 2px dashed rgba(37, 99, 235, 0.4);
    font-weight: 700;
    transition: all 0.3s;
}
.state-warn .rk-link { color: var(--rk-buf2-orange); border-bottom-color: rgba(234, 88, 12, 0.4); }
.rk-link:hover { border-bottom-style: solid; }

/* RESPONSYWNOŚĆ (Mobile w kafelki) */
@media (max-width: 768px) {
    .rk-buf2-header, .rk-buf2-interactive, .rk-buf2-threats { padding: 30px 20px; }
    .rk-buf2-h2 { font-size: 24px; }
    .rk-buf2-toggle-box { flex-direction: column; text-align: center; gap: 15px; border-radius: 20px; }
    
    /* Zamiana tabeli/gridu na kafelki jeden pod drugim */
    .rk-matrix-header { display: none; } /* Ukrywamy nagłówek płaski */
    
    .rk-matrix-row {
        grid-template-columns: 1fr;
        gap: 12px;
        padding: 20px;
    }
    
    .rk-matrix-val {
        padding-left: 15px;
        position: relative;
    }
    
    /* Wstrzykiwanie etykiet kontekstowych na mobile */
    .rk-matrix-val::before {
        content: attr(data-label);
        display: block;
        font-size: 11px;
        text-transform: uppercase;
        font-weight: 800;
        color: var(--rk-buf2-muted);
        margin-bottom: 2px;
    }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-bufor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Dlaczego bufor ciepła jest absolutnie konieczny w instalacjach pelletowych?",
    "description": "Porównanie techniczne sprawności układu z buforem i bez. Analiza rozprzężenia strumieni masowych oraz zagrożeń braku zbiornika akumulacyjnego w programie Czyste Powietrze 2026.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-bufor",
    "name": "Porównanie sprawności i parametrów eksploatacyjnych układu pellet-podłogówka (2026)",
    "description": "Zbiór danych inżynierskich określających średnią sprawność kotła, taktowanie palnika oraz zużycie paliwa w zależności od obecności zbiornika buforowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "bufor ciepła w ogrzewaniu podłogowym",
      "taktowanie kotła pelletowego",
      "zużycie pelletu dom 150m2",
      "korozja niskotemperaturowa",
      "zwrotnica hydrauliczna strumieni"
    ],
    "measurementTechnique": "Bilansowanie energetyczne i monitorowanie zużycia paliwa na bazie normy PN-EN 303-5:2021-10 dla instalacji niskotemperaturowych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Z buforem: Sprawność 91-94%, 2-4 odpaleń/dobę, zużycie 3.9 tony/rok, żywotność grzałki 5-7 lat.",
        "Bez bufora: Sprawność 74-79%, 12-18 odpaleń/dobę, zużycie 4.8 tony/rok, żywotność grzałki 12-18 miesięcy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-bufor",
    "name": "Symulator Rozprzężenia Strumieni Masowych",
    "description": "Interaktywny panel inżynierski (Toggle Switch) mapujący zmiany przepływów hydraulicznych (0,7 m3/h kocioł vs 1,8 m3/h podłoga) i obrazujący skutki usunięcia bufora ciepła.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG rendering.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-buf2-container" id="rk-buf2-app">
    <div class="rk-buf2-header">
        <div class="rk-buf2-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"></rect><line x1="12" y1="2" x2="12" y2="22"></line><line x1="2" y1="12" x2="22" y2="12"></line></svg>
            Rozprzężenie Hydrauliczne Strumieni
        </div>
        <h2 class="rk-buf2-h2">Dlaczego bufor ciepła jest <span>absolutnie konieczny?</span></h2>
        <p class="rk-buf2-paragraph">
            Zastosowanie zbiornika buforowego (akumulacyjnego) przy połączeniu kotła na pellet z podłogówką jest bezwzględnym wymogiem technicznym (potwierdzonym w procedurach dotacyjnych programu <strong>"Czyste Powietrze" w 2026 roku</strong>), ponieważ rozprzęga on hydraulicznie i termicznie niezależne strumienie masowe obu układów. Kocioł pracuje z optymalnym przepływem rzędu 0,6-0,8 m³/h przy różnicy temperatur ΔT = 20 K (75/55°C), podczas gdy instalacja podłogowa wymaga przepływu na poziomie 1,5-2,0 m³/h przy ΔT = 5 K. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" style="color:#60a5fa; font-weight:700;">Bufor działa jak hydrauliczna zwrotnica</a> o wielkiej pojemności termicznej.
        </p>
    </div>

    <div class="rk-buf2-interactive">
        <h3 class="rk-buf2-h3">Porównanie parametrów pracy układu z buforem i bez bufora</h3>
        
        <div class="rk-buf2-toggle-box">
            <span class="rk-buf2-label active-pro" id="rk-buf-lbl-pro" onclick="document.getElementById('rk-buf-toggle').click()">Układ Z buforem (Standard Inż.)</span>
            <label class="rk-buf2-switch">
                <input type="checkbox" id="rk-buf-toggle">
                <span class="rk-buf2-slider"></span>
            </label>
            <span class="rk-buf2-label" id="rk-buf-lbl-warn" onclick="document.getElementById('rk-buf-toggle').click()">Układ BEZ bufora (Zagrożenie)</span>
        </div>

        <div class="rk-buf2-svg-wrapper state-pro" id="rk-buf-svg-container">
            <svg class="rk-buf2-svg" viewBox="0 0 300 120">
                <rect x="10" y="30" width="40" height="60" fill="#334155" rx="4"/>
                <circle cx="30" cy="60" r="8" fill="#ea580c"/>
                
                <path class="anim-flow-boiler" d="M50 45 L100 45" fill="none" stroke-width="4"/>
                <path class="anim-flow-boiler" d="M100 75 L50 75" fill="none" stroke-width="4" style="stroke: #3b82f6;"/>
                <text x="75" y="38" fill="#ea580c" font-size="8" font-family="sans-serif" text-anchor="middle" id="rk-svg-t1">0.7 m³/h</text>

                <g class="svg-buffer-tank" id="rk-svg-tank">
                    <rect x="100" y="15" width="30" height="90" fill="#1e293b" stroke="#2563eb" stroke-width="2" rx="6"/>
                    <rect x="105" y="20" width="20" height="80" fill="#2563eb" opacity="0.3" rx="4"/>
                </g>

                <path class="anim-flow-floor" d="M130 45 L240 45" fill="none" stroke-width="4" style="stroke: #ef4444;"/>
                <path class="anim-flow-floor" d="M240 75 L130 75" fill="none" stroke-width="4" style="stroke: #3b82f6;"/>
                <text x="185" y="38" fill="#60a5fa" font-size="8" font-family="sans-serif" text-anchor="middle" id="rk-svg-t2">1.8 m³/h</text>

                <rect x="240" y="35" width="10" height="50" fill="#475569"/>
                <path d="M250 45 C260 45, 260 55, 250 55 M250 65 C260 65, 260 75, 250 75" fill="none" stroke="#ef4444" stroke-width="3"/>
            </svg>
        </div>

        <div class="rk-matrix-grid state-pro" id="rk-matrix-container">
            
            <div class="rk-matrix-header">
                <div>Parametr eksploatacyjny</div>
                <div>Układ BEZ bufora ciepła</div>
                <div>Układ Z buforem ciepła (600 L)</div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Średnia sprawność kotła</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>74 - 79%</strong> (straty rozruchowe)</div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>91 - 94%</strong> (praca nominalna)</div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Częstotliwość załączeń palnika</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>12 - 18 razy / dobę</strong></div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>2 - 4 razy / dobę</strong></div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Zużycie pelletu (dom 150 m²)</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>4,8 tony / rok</strong></div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>3,9 tony / rok</strong></div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Żywotność grzałki ceramicznej</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora"><strong>12 - 18 miesięcy</strong></div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem"><strong>5 - 7 lat</strong></div>
            </div>

            <div class="rk-matrix-row">
                <div class="rk-matrix-label">Emisja pyłów i sadzy w komorze</div>
                <div class="rk-matrix-val row-warn" data-label="Bez bufora">Wysoka (częste czyszczenie)</div>
                <div class="rk-matrix-val row-pro" data-label="Z buforem">Minimalna (suchy, szary popiół)</div>
            </div>

        </div>

        <div class="rk-buf2-threats">
            <h4 class="rk-buf2-h4">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#ea580c" stroke-width="2.5"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                Zagrożenia związane z rezygnacją ze zbiornika akumulacyjnego
            </h4>
            <p class="rk-buf2-threats-p">
                Brak bufora wymusza na kotle pelletowym bezpośrednią reakcję na zamknięcie <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/" class="rk-link">siłowników termoelektrycznych</a> na rozdzielaczach. Gdy pokoje zostaną dogrzane i zamknie się 8 z 10 pętli, przepływ po stronie instalacji drastycznie spada. Kocioł, nie mogąc oddać wygenerowanej mocy 10 kW do zredukowanego zładu, natychmiast przekracza temperaturę zadaną i awaryjnie się wygasza. Po 15 minutach woda w rurach stygnie, a automatyka ponownie uruchamia procedurę rozpalania. Taki cykl niszczy zapalarkę, powoduje osadzanie się szklistej smoły (kondensacja spalin) na wymienniku kotła i drastycznie zwiększa koszty ogrzewania.
            </p>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie domenowe (Brak znaczników H2/H3 w fallback)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-buf2-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; box-sizing: border-box;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🛑</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Kontrola Autorska Aktywowana</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Wykryto nieautoryzowaną próbę klonowania interaktywnego matrixa danych technicznych. Skrypty i warstwa danych strukturalnych zostały zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika interaktywnego przełącznika widoków
    const toggle = document.getElementById('rk-buf-toggle');
    const svgContainer = document.getElementById('rk-buf-svg-container');
    const matrixContainer = document.getElementById('rk-matrix-container');
    const lblPro = document.getElementById('rk-buf-lbl-pro');
    const lblWarn = document.getElementById('rk-buf-lbl-warn');
    
    // Teksty na SVG
    const svgT1 = document.getElementById('rk-svg-t1');
    const svgT2 = document.getElementById('rk-svg-t2');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // STAN: AMATEUR (Brak bufora / Awaria)
            svgContainer.className = 'rk-buf2-svg-wrapper state-warn';
            matrixContainer.className = 'rk-matrix-grid state-warn';
            lblPro.classList.remove('active-pro');
            lblWarn.classList.add('active-warn');
            
            svgT1.textContent = "Taktowanie! (Niestabilny)";
            svgT1.setAttribute("fill", "#ef4444");
            svgT2.textContent = "Dławienie przepływu";
            svgT2.setAttribute("fill", "#f97316");
        } else {
            // STAN: PRO (Z buforem / Norma)
            svgContainer.className = 'rk-buf2-svg-wrapper state-pro';
            matrixContainer.className = 'rk-matrix-grid state-pro';
            lblWarn.classList.remove('active-warn');
            lblPro.classList.add('active-pro');
            
            svgT1.textContent = "0.7 m³/h";
            svgT1.setAttribute("fill", "#ea580c");
            svgT2.textContent = "1.8 m³/h";
            svgT2.setAttribute("fill", "#60a5fa");
        }
    });
});
</script>



<style>
:root {
    --rk-calc2-dark: #0f172a;
    --rk-calc2-card: #ffffff;
    --rk-calc2-primary: #8b5cf6; /* Techniczny fiolet/indygo */
    --rk-calc2-primary-light: #e0e7ff;
    --rk-calc2-pellet: #ea580c; /* Kolor pelletu/ognia */
    --rk-calc2-water: #0ea5e9; /* Kolor bufora/wody */
    --rk-calc2-bg: #f8fafc;
    --rk-calc2-border: #cbd5e1;
    --rk-calc2-text: #334155;
    --rk-calc2-muted: #64748b;
}

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

/* Nagłówek */
.rk-calc2-header {
    background: linear-gradient(135deg, var(--rk-calc2-dark) 0%, #2e1065 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-calc2-primary);
}

.rk-calc2-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(139, 92, 246, 0.2);
    color: #c4b5fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(139, 92, 246, 0.3);
}

.rk-calc2-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
}

.rk-calc2-h2 span { color: #a78bfa; }

.rk-calc2-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Kalkulator */
.rk-calc2-interactive {
    padding: 40px 50px;
    background: var(--rk-calc2-bg);
}

.rk-calc2-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-calc2-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

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

/* Sekcja Suwaków (Inputs) */
.rk-calc2-controls {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

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

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

.rk-calc2-slider-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc2-muted);
    text-transform: uppercase;
}

.rk-calc2-slider-value {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-calc2-primary);
    background: var(--rk-calc2-primary-light);
    padding: 4px 12px;
    border-radius: 8px;
}

.rk-range-input {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #ddd6fe 0%, #8b5cf6 100%);
    border-radius: 4px;
    outline: none;
}

.rk-range-input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-calc2-primary);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
    transition: transform 0.1s;
}
.rk-range-input::-webkit-slider-thumb:active { transform: scale(1.1); }

/* Sekcja Wyników (Outputs) */
.rk-calc2-results {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-calc2-border);
    border-radius: 16px;
    padding: 18px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    overflow: hidden;
}

.rk-res-card::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: 4px;
}

.rk-res-card.c-ozc::before { background: var(--rk-calc2-muted); }
.rk-res-card.c-boiler::before { background: var(--rk-calc2-pellet); }
.rk-res-card.c-buffer::before { background: var(--rk-calc2-water); }
.rk-res-card.c-floor::before { background: var(--rk-calc2-primary); }

.rk-res-label {
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-calc2-text);
}

.rk-res-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-calc2-dark);
}

.c-boiler .rk-res-val { color: var(--rk-calc2-pellet); }
.c-buffer .rk-res-val { color: var(--rk-calc2-water); }

/* Schemat SVG */
.rk-calc2-svg-box {
    grid-column: 1 / -1;
    background: #0f172a;
    border-radius: 16px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    margin-top: 15px;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 1px solid #334155;
}

.rk-svg-main {
    width: 100%;
    max-width: 600px;
    height: auto;
}

.anim-power-flow { stroke-dasharray: 6 12; animation: flowData 1s linear infinite; }
@keyframes flowData { to { stroke-dashoffset: -18; } }

/* Procedura Tekstowa */
.rk-calc2-procedure {
    margin-top: 40px;
    background: #ffffff;
    border: 1px solid var(--rk-calc2-border);
    border-radius: 16px;
    padding: 30px;
}

.rk-proc-step {
    margin-bottom: 25px;
    padding-bottom: 25px;
    border-bottom: 1px dashed var(--rk-calc2-border);
}
.rk-proc-step:last-child { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }

.rk-proc-title {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-calc2-dark);
    margin: 0 0 10px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

.rk-proc-badge {
    background: var(--rk-calc2-dark);
    color: #fff;
    width: 24px; height: 24px;
    display: inline-flex; justify-content: center; align-items: center;
    border-radius: 6px;
    font-size: 12px;
}

.rk-proc-text {
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-calc2-text);
    margin: 0 0 10px 0;
}

.rk-proc-math {
    background: var(--rk-calc2-bg);
    padding: 12px 20px;
    border-radius: 8px;
    font-family: 'Courier New', monospace;
    font-weight: 700;
    color: var(--rk-calc2-primary);
    border: 1px solid var(--rk-calc2-primary-light);
    display: inline-block;
}

.rk-link {
    color: var(--rk-calc2-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(139, 92, 246, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #6d28d9; }

@media (max-width: 768px) {
    .rk-calc2-header, .rk-calc2-interactive, .rk-calc2-procedure { padding: 30px 20px; }
    .rk-calc2-grid { grid-template-columns: 1fr; }
    .rk-calc2-h2 { font-size: 26px; }
    .rk-calc2-svg-box { padding: 20px 10px; }
    .rk-res-card { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-proc-math { font-size: 13px; word-break: break-all; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-dobor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Jak dobrać moc kotła na pellet i pojemność instalacji podłogowej?",
    "description": "Inżynierski algorytm krok po kroku: obliczanie projektowego obciążenia cieplnego (OZC), mocy kotła, pojemności bufora i zładu wody. Zgodnie z normą PN-EN 303-5.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-dobor",
    "name": "Algorytm doboru mocy kotła pelletowego i pojemności bufora (2026)",
    "description": "Matematyczny model doboru komponentów maszynowni na podstawie zapotrzebowania cieplnego budynku, z uwzględnieniem strat przesyłowych i podgrzewu CWU.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór mocy kotła na pellet",
      "obliczenia OZC",
      "pojemność bufora ciepła",
      "zład wody podłogówki",
      "norma PN-EN 303-5"
    ],
    "measurementTechnique": "Kalkulacja wg normy PN-EN 12831 (OZC) oraz PN-EN 303-5 (dobór bufora dla biomasy, min. 50-70 l/kW). Zład wody dla rury 16x2 przyjęto jako 0,113 l/mb.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Moc kotła: Q_kotła = Q_p × 1,15 + 0,4 kW (dla 4 osób).",
        "Bufor: V_b = Q_kotła × 60 litrów/kW.",
        "Pojemność podłogówki: Powierzchnia × 6,6 m/m² × 0,113 l/m."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-dobor",
    "name": "Kalkulator Inżynierski: Dobór Kotła i Bufora",
    "description": "Interaktywny algorytm wyliczający na żywo OZC, moc katalogową kotła stałopalnego, wymagany zład bufora oraz pojemność jastrychu na podstawie powierzchni domu i izolacji.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Range Inputs, and SVG animation support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-calc2-container" id="rk-calc2-app">
    <div class="rk-calc2-header">
        <div class="rk-calc2-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
            Algorytm Projektowy
        </div>
        <h2 class="rk-calc2-h2">Jak dobrać moc kotła na pellet i <span>pojemność instalacji?</span></h2>
        <p class="rk-calc2-paragraph">
            Poniższy algorytm inżynierski pozwala krok po kroku obliczyć optymalną moc źródła ciepła oraz minimalną kubaturę zbiornika buforowego dla domu jednorodzinnego w oparciu o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" style="color:#c4b5fd; font-weight:700;">normatywne wskaźniki projektowe OZC</a>. Wykorzystaj suwaki poniżej, aby przeprowadzić symulację dla własnego budynku.
        </p>
    </div>

    <div class="rk-calc2-interactive">
        <h3 class="rk-calc2-h3">Kalkulator: Ścieżka Doboru Komponentów</h3>
        
        <div class="rk-calc2-grid">
            <div class="rk-calc2-controls">
                <div class="rk-calc2-slider-group">
                    <div class="rk-calc2-slider-header">
                        <div class="rk-calc2-slider-label">Powierzchnia domu</div>
                        <div class="rk-calc2-slider-value" id="rk-val-area">150 m²</div>
                    </div>
                    <input type="range" id="rk-slider-area" class="rk-range-input" min="80" max="300" step="10" value="150">
                </div>

                <div class="rk-calc2-slider-group">
                    <div class="rk-calc2-slider-header">
                        <div class="rk-calc2-slider-label">Standard izolacji (EA)</div>
                        <div class="rk-calc2-slider-value" id="rk-val-iso">50 W/m²</div>
                    </div>
                    <input type="range" id="rk-slider-iso" class="rk-range-input" min="30" max="100" step="5" value="50">
                </div>
                
                <div class="rk-calc2-slider-group">
                    <div class="rk-calc2-slider-header">
                        <div class="rk-calc2-slider-label">Liczba osób (CWU)</div>
                        <div class="rk-calc2-slider-value" id="rk-val-ppl">4</div>
                    </div>
                    <input type="range" id="rk-slider-ppl" class="rk-range-input" min="1" max="8" step="1" value="4">
                </div>
            </div>

            <div class="rk-calc2-results">
                <div class="rk-res-card c-ozc">
                    <div class="rk-res-label">Obciążenie Cieplne (OZC)</div>
                    <div class="rk-res-val" id="rk-out-ozc">7.5 kW</div>
                </div>
                <div class="rk-res-card c-boiler">
                    <div class="rk-res-label">Wymagana Moc Kotła</div>
                    <div class="rk-res-val" id="rk-out-boiler">9.0 kW</div>
                </div>
                <div class="rk-res-card c-buffer">
                    <div class="rk-res-label">Pojemność Bufora (Min.)</div>
                    <div class="rk-res-val" id="rk-out-buffer">540 L</div>
                </div>
                <div class="rk-res-card c-floor">
                    <div class="rk-res-label">Zład Wody (Podłogówka)</div>
                    <div class="rk-res-val" id="rk-out-floor">112 L</div>
                </div>
            </div>

            <div class="rk-calc2-svg-box">
                <svg class="rk-svg-main" viewBox="0 0 600 120">
                    <rect x="10" y="30" width="100" height="60" fill="#334155" rx="8"/>
                    <text x="60" y="55" fill="#94a3b8" font-size="12" text-anchor="middle" font-weight="bold">KROK 1</text>
                    <text x="60" y="75" fill="#ffffff" font-size="16" text-anchor="middle" font-weight="bold" id="rk-svg-ozc">7.5 kW</text>
                    
                    <path class="anim-power-flow" d="M110 60 L160 60" fill="none" stroke="#64748b" stroke-width="4" stroke-linecap="round"/>
                    <polygon points="155,55 165,60 155,65" fill="#64748b"/>

                    <rect x="170" y="20" width="100" height="80" fill="#1e293b" stroke="#ea580c" stroke-width="2" rx="8"/>
                    <text x="220" y="45" fill="#ea580c" font-size="12" text-anchor="middle" font-weight="bold">KROK 2 (Kocioł)</text>
                    <text x="220" y="75" fill="#ffffff" font-size="20" text-anchor="middle" font-weight="bold" id="rk-svg-boiler">9.0 kW</text>

                    <path class="anim-power-flow" d="M270 60 L320 60" fill="none" stroke="#ea580c" stroke-width="4" stroke-linecap="round"/>
                    <polygon points="315,55 325,60 315,65" fill="#ea580c"/>

                    <rect x="330" y="10" width="100" height="100" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="16"/>
                    <text x="380" y="45" fill="#0ea5e9" font-size="12" text-anchor="middle" font-weight="bold">KROK 3 (Bufor)</text>
                    <text x="380" y="75" fill="#ffffff" font-size="20" text-anchor="middle" font-weight="bold" id="rk-svg-buffer">540 L</text>

                    <path class="anim-power-flow" d="M430 60 L480 60" fill="none" stroke="#0ea5e9" stroke-width="4" stroke-linecap="round"/>
                    <polygon points="475,55 485,60 475,65" fill="#0ea5e9"/>

                    <rect x="490" y="40" width="100" height="40" fill="#334155" stroke="#8b5cf6" stroke-width="2" rx="4"/>
                    <text x="540" y="55" fill="#a78bfa" font-size="10" text-anchor="middle" font-weight="bold">KROK 4 (Zład)</text>
                    <text x="540" y="72" fill="#ffffff" font-size="14" text-anchor="middle" font-weight="bold" id="rk-svg-floor">112 L</text>
                </svg>
            </div>
        </div>

        <div class="rk-calc2-procedure">
            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">1</span> Wyznaczenie obciążenia cieplnego z OZC</h4>
                <p class="rk-proc-text">
                    Odczytujemy z projektu OZC (<a href="https://projekt-ogrzewania.pl/norma-pn-en-12831-klucz-do-efektywnego-i-komfortowego-ogrzewania-podlogowego/" class="rk-link">PN-EN 12831</a>) projektowe obciążenie cieplne budynku dla skrajnych temperatur zewnętrznych. Dla nowoczesnego domu 150 m² o współczynniku przenikania 50 W/m², wartość ta wynosi średnio 7,5 kW.
                </p>
                <div class="rk-proc-math">Q_p = Powierzchnia × Izolacja / 1000</div>
            </div>

            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">2</span> Kalkulacja mocy nominalnej kotła z zapasem na CWU</h4>
                <p class="rk-proc-text">
                    Wyznaczamy moc znamionową kotła, uwzględniając sprawność przesyłu (mnożnik 1.15) oraz zapas na przygotowanie ciepłej wody użytkowej (przyjmuje się ok. 0.1 kW na osobę, wg normy 0.4 kW dla 4 osób). Dobieramy najbliższy katalogowo model kotła.
                </p>
                <div class="rk-proc-math">Q_kotła = Q_p × 1.15 + (Liczba_osób × 0.1) kW</div>
            </div>

            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">3</span> Obliczenie minimalnej objętości bufora</h4>
                <p class="rk-proc-text">
                    Obliczamy minimalną pojemność wodną bufora zgodnie z załącznikiem do normy <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">PN-EN 303-5</a>, stosując uproszczony przelicznik dla biomasy, który wynosi minimum 60 litrów na każdy kW mocy znamionowej kotła.
                </p>
                <div class="rk-proc-math">V_b = Q_kotła × 60 l/kW</div>
            </div>

            <div class="rk-proc-step">
                <h4 class="rk-proc-title"><span class="rk-proc-badge">4</span> Objętość wodna instalacji podłogowej</h4>
                <p class="rk-proc-text">
                    Wyznaczamy całkowitą pojemność wodną wylewki, bazując na średniej długości <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/" class="rk-link">rury 16x2 mm</a>. Przy rozstawie co 15 cm zużywamy ok. 6,6 metra rury na m². Każdy metr bieżący tej rury mieści dokładnie 0,113 litra wody.
                </p>
                <div class="rk-proc-math">V_podł = Powierzchnia × 6.6 m/m² × 0.113 l/m</div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-calc2-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowany Algorytm Inżynierski</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Moduł obliczeniowy doboru maszynowni oraz struktura JSON-LD stanowią własność Projekt-Ogrzewania.pl. Uruchomienie zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Kalkulatora
    const sliderArea = document.getElementById('rk-slider-area');
    const sliderIso = document.getElementById('rk-slider-iso');
    const sliderPpl = document.getElementById('rk-slider-ppl');
    
    const valArea = document.getElementById('rk-val-area');
    const valIso = document.getElementById('rk-val-iso');
    const valPpl = document.getElementById('rk-val-ppl');

    // Outputs
    const outOzc = document.getElementById('rk-out-ozc');
    const outBoiler = document.getElementById('rk-out-boiler');
    const outBuffer = document.getElementById('rk-out-buffer');
    const outFloor = document.getElementById('rk-out-floor');
    
    // SVG Outputs
    const svgOzc = document.getElementById('rk-svg-ozc');
    const svgBoiler = document.getElementById('rk-svg-boiler');
    const svgBuffer = document.getElementById('rk-svg-buffer');
    const svgFloor = document.getElementById('rk-svg-floor');

    function updateCalculations() {
        let area = parseFloat(sliderArea.value);
        let iso = parseFloat(sliderIso.value);
        let ppl = parseFloat(sliderPpl.value);

        // Update Labels
        valArea.innerText = area + " m²";
        valIso.innerText = iso + " W/m²";
        valPpl.innerText = ppl;

        // Krok 1: OZC (kW)
        let q_p = (area * iso) / 1000;
        let q_p_str = q_p.toFixed(1) + " kW";
        outOzc.innerText = q_p_str;
        svgOzc.textContent = q_p_str;

        // Krok 2: Kocioł (kW)
        let q_kotla = (q_p * 1.15) + (ppl * 0.1);
        let q_kotla_str = q_kotla.toFixed(1) + " kW";
        outBoiler.innerText = q_kotla_str;
        svgBoiler.textContent = q_kotla_str;

        // Krok 3: Bufor (L) -> 60 litrów na każdy kW
        let v_b = Math.round(q_kotla * 60);
        let v_b_str = v_b + " L";
        outBuffer.innerText = v_b_str;
        svgBuffer.textContent = v_b_str;

        // Krok 4: Podłoga (L) -> Zakładamy rozstaw 15cm (6.6m/m2), rura 16x2 (0.113 l/m)
        let v_floor = Math.round(area * 6.6 * 0.113);
        let v_floor_str = v_floor + " L";
        outFloor.innerText = v_floor_str;
        svgFloor.textContent = v_floor_str;
    }

    sliderArea.addEventListener('input', updateCalculations);
    sliderIso.addEventListener('input', updateCalculations);
    sliderPpl.addEventListener('input', updateCalculations);

    // Init
    updateCalculations();
});
</script>



<style>
:root {
    --rk-dsgn-dark: #0f172a;
    --rk-dsgn-card: #ffffff;
    --rk-dsgn-brand: #2563eb; /* Inżynierski Niebieski */
    --rk-dsgn-brand-light: #eff6ff;
    --rk-dsgn-accent: #f59e0b; /* Akcent Pelletu */
    --rk-dsgn-edge: #8b5cf6; /* Strefa brzegowa */
    --rk-dsgn-danger: #ef4444; /* Alert hydrauliczny */
    --rk-dsgn-danger-light: #fef2f2;
    --rk-dsgn-bg: #f8fafc;
    --rk-dsgn-border: #cbd5e1;
    --rk-dsgn-text: #334155;
    --rk-dsgn-muted: #64748b;
}

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

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

.rk-dsgn-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(37, 99, 235, 0.2);
    color: #93c5fd;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(147, 197, 253, 0.3);
}

.rk-dsgn-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-dsgn-h2 span { color: #60a5fa; }

.rk-dsgn-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

.rk-dsgn-paragraph strong { color: #ffffff; }

/* Moduł Interaktywny */
.rk-dsgn-interactive {
    padding: 40px 50px;
    background: var(--rk-dsgn-bg);
}

.rk-dsgn-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-dsgn-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

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

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

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

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

.rk-ctrl-label {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-dsgn-muted);
    text-transform: uppercase;
}

.rk-ctrl-val {
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-dsgn-brand);
    background: var(--rk-dsgn-brand-light);
    padding: 4px 12px;
    border-radius: 8px;
}

.rk-dsgn-range {
    width: 100%;
    -webkit-appearance: none;
    height: 8px;
    background: linear-gradient(to right, #93c5fd 0%, #2563eb 100%);
    border-radius: 4px;
    outline: none;
    transition: background 0.3s;
}

.rk-dsgn-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: #ffffff;
    border: 3px solid var(--rk-dsgn-brand);
    cursor: pointer;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}
.rk-dsgn-range:active::-webkit-slider-thumb { transform: scale(1.1); }

.rk-dsgn-range.danger-mode { background: linear-gradient(to right, #2563eb 66%, #ef4444 100%); }
.rk-dsgn-range.danger-mode::-webkit-slider-thumb { border-color: var(--rk-dsgn-danger); }

/* Przełącznik Stref */
.rk-zone-toggle {
    display: flex;
    background: #f1f5f9;
    border-radius: 12px;
    padding: 4px;
    position: relative;
}

.rk-zone-btn {
    flex: 1;
    padding: 10px;
    text-align: center;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-dsgn-muted);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 1;
}

.rk-zone-btn.active {
    color: #ffffff;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.rk-zone-btn[data-zone="std"].active { background: var(--rk-dsgn-brand); }
.rk-zone-btn[data-zone="edge"].active { background: var(--rk-dsgn-edge); }

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

.rk-res-card {
    background: #ffffff;
    border: 1px solid var(--rk-dsgn-border);
    border-radius: 12px;
    padding: 15px 20px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all 0.3s;
}

.rk-res-card.warn-card {
    background: var(--rk-dsgn-danger-light);
    border-color: #fca5a5;
}

.rk-res-label { font-size: 14px; font-weight: 700; color: var(--rk-dsgn-text); }
.rk-res-val { font-size: 20px; font-weight: 900; color: var(--rk-dsgn-dark); }
.warn-card .rk-res-val { color: var(--rk-dsgn-danger); }

/* Zastępczy Panel Danych Technicznych (Dark Mode) */
.rk-dsgn-data-box {
    background: #0f172a;
    border-radius: 16px;
    padding: 25px;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 1px solid #334155;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 15px;
    transition: border-color 0.3s;
}

.rk-data-box-title {
    color: #93c5fd;
    font-size: 14px;
    text-transform: uppercase;
    font-weight: 800;
    margin: 0 0 5px 0;
    letter-spacing: 1px;
    transition: color 0.3s;
}

.rk-data-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px dashed #334155;
    padding-bottom: 10px;
}
.rk-data-row:last-child { border-bottom: none; padding-bottom: 0; }

.rk-data-row span {
    color: #cbd5e1;
    font-size: 14px;
}

.rk-data-row strong {
    color: #ffffff;
    font-size: 15px;
    font-weight: 700;
}

/* Stany Awaryjne dla Panelu Danych */
.state-jam.rk-dsgn-data-box { border-color: #ef4444; }
.state-jam .rk-data-box-title { color: #ef4444; }
.state-jam .rk-data-row strong { color: #fca5a5; }

/* CTA Section */
.rk-dsgn-cta {
    background: #ffffff;
    padding: 45px 50px;
    text-align: center;
    border-top: 1px solid var(--rk-dsgn-border);
}

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

.rk-cta-p {
    font-size: 16px;
    color: var(--rk-dsgn-muted);
    max-width: 600px;
    margin: 0 auto 30px auto;
    line-height: 1.6;
}

.rk-btn-massive {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dsgn-brand);
    color: #ffffff;
    font-size: 18px;
    font-weight: 800;
    padding: 20px 40px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.4);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-btn-massive:hover {
    transform: translateY(-5px);
    background: #1d4ed8;
    box-shadow: 0 20px 35px -5px rgba(37, 99, 235, 0.5);
}

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

.rk-link {
    color: var(--rk-dsgn-brand);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 2px dashed rgba(37, 99, 235, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #1e3a8a; }

@media (max-width: 768px) {
    .rk-dsgn-header, .rk-dsgn-interactive, .rk-dsgn-cta { padding: 30px 20px; }
    .rk-dsgn-grid { grid-template-columns: 1fr; }
    .rk-dsgn-h2 { font-size: 26px; }
    .rk-btn-massive { width: 100%; padding: 18px 20px; font-size: 16px; }
    .rk-res-card { flex-direction: column; align-items: flex-start; gap: 5px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/"
    },
    "headline": "Jak kocioł na pellet wpływa na projekt ogrzewania podłogowego?",
    "description": "Zasady projektowania instalacji płaszczyznowych. Wpływ długości pętli na opory hydrauliczne i dobór pompy obiegowej z regulacją Δp-v lub Δp-c.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#dataset",
    "name": "Parametry projektowe instalacji płaszczyznowych (2026)",
    "description": "Zestawienie inżynierskie opisujące korelacje między rozstawem rur, długością pętli a oporami hydraulicznymi pompy obiegowej.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projektowe obciążenie cieplne ozc",
      "rozstaw rur w ogrzewaniu podłogowym",
      "strefa brzegowa podłogówki",
      "maksymalna długość pętli",
      "pompa obiegowa Δp-v"
    ],
    "measurementTechnique": "Algorytm oparty na normie PN-EN 12831 (OZC), wyznaczający straty ciśnienia (kPa) w rurach wielowarstwowych 16x2 mm.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Strefa mieszkalna: Rozstaw 10 - 15 cm.",
        "Strefa brzegowa: Zagęszczenie 7.5 - 10 cm na szer. 1m.",
        "Maksymalna długość pętli: 100m. Przekroczenie generuje opór >20 kPa (martwe strefy)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#webapp",
    "name": "Symulator Pętli i Oporów Hydraulicznych",
    "description": "Interaktywne narzędzie dla instalatorów i inwestorów symulujące narastanie oporów hydraulicznych pompy wraz ze wzrostem długości pętli grzewczej i zagęszczenia rur.",
    "applicationCategory": "EngineeringSimulator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5 Range Inputs, and CSS transitions.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-dsgn-container" id="rk-dsgn-app">
    <div class="rk-dsgn-header">
        <div class="rk-dsgn-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 20h9"></path><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"></path></svg>
            Wytyczne Projektowe
        </div>
        <h2 class="rk-dsgn-h2">Jak to wpływa na projekt <span>ogrzewania podłogowego?</span></h2>
        <p class="rk-dsgn-paragraph">
            Integracja kotła na pellet z systemem podłogowym wymusza restrykcyjne podejście do fazy projektowej, gdzie fundamentalnym dokumentem wyjściowym jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-link" style="color:#93c5fd;">Projektowe Obciążenie Cieplne (OZC)</a> sporządzone wg normy PN-EN 12831. Charakterystyka źródła stałopalnego wyklucza projektowanie instalacji "na oko".
        </p>
    </div>

    <div class="rk-dsgn-interactive">
        <h3 class="rk-dsgn-h3">Limity Hydrauliczne: Sprawdź swój projekt</h3>
        
        <div class="rk-dsgn-grid">
            
            <div class="rk-dsgn-controls">
                
                <div class="rk-ctrl-box">
                    <div class="rk-ctrl-header">
                        <div class="rk-ctrl-label">Rodzaj Strefy Projektowej</div>
                    </div>
                    <div class="rk-zone-toggle">
                        <div class="rk-zone-btn active" data-zone="std" id="btn-zone-std">Mieszkalna (15cm)</div>
                        <div class="rk-zone-btn" data-zone="edge" id="btn-zone-edge">Brzegowa (10cm)</div>
                    </div>
                    <p style="font-size:12px; color:#64748b; margin-top:10px; line-height:1.5;">
                        Ze względu na obniżenie zasilania, <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">rozstaw rur</a> w strefach mieszkalnych projektuje się co 10-15 cm, a w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/" class="rk-link">strefach brzegowych</a> zagęszcza do 7,5-10 cm.
                    </p>
                </div>

                <div class="rk-ctrl-box">
                    <div class="rk-ctrl-header">
                        <div class="rk-ctrl-label">Długość pojedynczej pętli</div>
                        <div class="rk-ctrl-val" id="rk-val-len">80 m</div>
                    </div>
                    <input type="range" id="rk-slider-len" class="rk-dsgn-range" min="30" max="150" step="5" value="80">
                    <p style="font-size:12px; color:#64748b; margin-top:10px; line-height:1.5;">
                        <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/" class="rk-link">Maksymalna długość pętli</a> dla rury 16 mm to bezwzględnie 100m. Przekroczenie niszczy przepływ.
                    </p>
                </div>

            </div>

            <div class="rk-dsgn-results">
                
                <div class="rk-dsgn-data-box" id="rk-data-wrap">
                    <h4 class="rk-data-box-title">Parametry Hydrauliczne Pętli</h4>
                    <div class="rk-data-row">
                        <span>Zalecany tryb pompy:</span>
                        <strong id="rk-val-pump">Δp-c (Stałociśnieniowy)</strong>
                    </div>
                    <div class="rk-data-row">
                        <span>Szacowana prędkość wody:</span>
                        <strong id="rk-val-vel">0.25 m/s</strong>
                    </div>
                    <div class="rk-data-row">
                        <span>Wydajność cieplna pętli:</span>
                        <strong id="rk-val-power">~720 W</strong>
                    </div>
                </div>

                <div class="rk-res-card" id="rk-card-press">
                    <div class="rk-res-label">Opór hydrauliczny pompy</div>
                    <div class="rk-res-val" id="rk-val-press">16.0 kPa</div>
                </div>

                <div class="rk-res-card" id="rk-card-status">
                    <div class="rk-res-label">Status Przepływu (Δp-v / Δp-c)</div>
                    <div class="rk-res-val" id="rk-val-status" style="color:#10b981; font-size:16px;">Norma. Pompa radzi sobie.</div>
                </div>

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

    <div class="rk-dsgn-cta">
        <h3 class="rk-cta-h3">Nie ryzykuj "martwych stref" w swoim domu</h3>
        <p class="rk-cta-p">
            Błędy w obliczeniach oporów lub rozstawie rur mszczą się przez dekady. <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/" class="rk-link">Źle dobrana pompa obiegowa</a> lub zbyt długa pętla oznacza zimną podłogę, której nie da się naprawić po wylaniu betonu.
        </p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-massive">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-dsgn-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano Kod Inżynierski</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Próba osadzenia kalkulatora oporów hydraulicznych poza domeną docelową. Warstwa JSON-LD i skrypty zostały wyłączone.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Symulatora
    const sliderLen = document.getElementById('rk-slider-len');
    const valLen = document.getElementById('rk-val-len');
    
    const btnZoneStd = document.getElementById('btn-zone-std');
    const btnZoneEdge = document.getElementById('btn-zone-edge');
    let currentZone = 'std';

    const cardPress = document.getElementById('rk-card-press');
    const valPress = document.getElementById('rk-val-press');
    const cardStatus = document.getElementById('rk-card-status');
    const valStatus = document.getElementById('rk-val-status');

    // Dynamiczne parametry panelu zastępczego
    const dataWrap = document.getElementById('rk-data-wrap');
    const valPump = document.getElementById('rk-val-pump');
    const valVel = document.getElementById('rk-val-vel');
    const valPower = document.getElementById('rk-val-power');

    // Obsługa przycisków strefy
    btnZoneStd.addEventListener('click', function() {
        currentZone = 'std';
        btnZoneStd.classList.add('active');
        btnZoneEdge.classList.remove('active');
        updateCalc();
    });

    btnZoneEdge.addEventListener('click', function() {
        currentZone = 'edge';
        btnZoneEdge.classList.add('active');
        btnZoneStd.classList.remove('active');
        updateCalc();
    });

    // Kalkulacja i update UI
    function updateCalc() {
        let length = parseInt(sliderLen.value);
        valLen.innerText = length + " m";

        // Uproszczony model oporu: 1m rury = 0.2 kPa oporu.
        // Jeśli strefa brzegowa (gęściej), opór lekko rośnie (mnożnik 1.15) z uwagi na ostrzejsze zagięcia
        let multiplier = (currentZone === 'edge') ? 1.15 : 1.0;
        let pressure = length * 0.2 * multiplier;
        valPress.innerText = pressure.toFixed(1) + " kPa";

        if (length > 100) {
            // AWARIA (Przekroczenie 100m)
            sliderLen.classList.add('danger-mode');
            cardPress.classList.add('warn-card');
            cardStatus.classList.add('warn-card');
            
            valStatus.innerText = "BŁĄD: Zbyt duży opór (>20kPa). Martwe strefy!";
            valStatus.style.color = "var(--rk-dsgn-danger)";
            
            // Aktualizacja panelu danych dla awarii
            dataWrap.classList.add('state-jam');
            valPump.innerText = "AWARIA ZASILANIA";
            valVel.innerText = "< 0.1 m/s (Zadławienie)";
            valPower.innerText = "Spadek mocy grzewczej";
            
        } else {
            // NORMA
            sliderLen.classList.remove('danger-mode');
            cardPress.classList.remove('warn-card');
            cardStatus.classList.remove('warn-card');
            
            valStatus.innerText = "Norma. Pompa obiegowa radzi sobie.";
            valStatus.style.color = "#10b981"; // Sukces
            
            // Aktualizacja panelu danych dla normy
            dataWrap.classList.remove('state-jam');
            
            let power = (currentZone === 'std') ? (length / 6.6) * 60 : (length / 10) * 85;
            let velocity = 0.15 + (length / 500);
            
            valPump.innerText = "Δp-c (Stałociśnieniowy)";
            valVel.innerText = velocity.toFixed(2) + " m/s";
            valPower.innerText = "~" + Math.round(power) + " W";
        }
    }

    sliderLen.addEventListener('input', updateCalc);

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



<style>
:root {
    --rk-cs-dark: #0f172a;
    --rk-cs-card: #ffffff;
    --rk-cs-brand: #d97706; /* Pellet Gold/Amber */
    --rk-cs-brand-light: #fef3c7;
    --rk-cs-blue: #3b82f6; /* Inżynierski błękit */
    --rk-cs-green: #10b981; /* Oszczędności / Eko */
    --rk-cs-bg: #f8fafc;
    --rk-cs-border: #e2e8f0;
    --rk-cs-text: #334155;
    --rk-cs-muted: #64748b;
}

.rk-cs-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: var(--rk-cs-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(217, 119, 6, 0.15);
    border: 1px solid rgba(217, 119, 6, 0.3);
    overflow: hidden;
}

/* Nagłówek i Wstęp */
.rk-cs-header {
    background: linear-gradient(135deg, var(--rk-cs-dark) 0%, #291502 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-cs-brand);
}

.rk-cs-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(217, 119, 6, 0.2);
    color: #fcd34d;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(217, 119, 6, 0.3);
}

.rk-cs-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-cs-h2 span { color: var(--rk-cs-brand); }

.rk-cs-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0 0 15px 0;
}

.rk-cs-paragraph:last-child { margin-bottom: 0; }

.rk-cs-quote {
    border-left: 4px solid var(--rk-cs-brand);
    padding-left: 20px;
    margin: 25px 0;
    font-style: italic;
    color: #e2e8f0;
    background: rgba(255,255,255,0.05);
    padding: 20px;
    border-radius: 0 12px 12px 0;
}

/* Interaktywny Dashboard */
.rk-cs-interactive {
    padding: 40px 50px;
    background: var(--rk-cs-bg);
}

.rk-cs-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-cs-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Nawigacja Tabs */
.rk-cs-tabs {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-bottom: 35px;
    background: #ffffff;
    padding: 8px;
    border-radius: 100px;
    border: 1px solid var(--rk-cs-border);
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-cs-tab-btn {
    flex: 1;
    padding: 12px 20px;
    text-align: center;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-cs-muted);
    cursor: pointer;
    border-radius: 99px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    border: none;
    background: transparent;
}

.rk-cs-tab-btn:hover { color: var(--rk-cs-dark); background: #f1f5f9; }
.rk-cs-tab-btn.active { color: #ffffff; background: var(--rk-cs-brand); box-shadow: 0 4px 12px rgba(217, 119, 6, 0.3); }

/* Grid Zawartości */
.rk-cs-grid {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    gap: 30px;
}

/* Panele Danych */
.rk-cs-panel {
    display: none;
    animation: fadeIn 0.5s ease;
}

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

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

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

.rk-data-card {
    background: #ffffff;
    border: 1px solid var(--rk-cs-border);
    padding: 18px;
    border-radius: 16px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    transition: transform 0.3s, border-color 0.3s;
}

.rk-data-card:hover { transform: translateY(-2px); border-color: var(--rk-cs-brand); }

.rk-data-card.full-width { grid-column: 1 / -1; }

.rk-data-label {
    font-size: 12px;
    text-transform: uppercase;
    font-weight: 800;
    color: var(--rk-cs-muted);
    margin-bottom: 8px;
    letter-spacing: 0.5px;
}

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

.rk-data-val span { font-size: 14px; font-weight: 700; color: var(--rk-cs-muted); }
.val-highlight { color: var(--rk-cs-brand); font-size: 24px; }
.val-success { color: var(--rk-cs-green); font-size: 24px; }

/* SVG Box */
.rk-cs-svg-box {
    background: #0f172a;
    border-radius: 20px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-shadow: inset 0 0 25px rgba(0,0,0,0.5);
    border: 1px solid #334155;
    position: relative;
    overflow: hidden;
}

.rk-svg-layer {
    width: 100%;
    height: auto;
    max-width: 300px;
    display: none;
    animation: scaleIn 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.rk-svg-layer.active { display: block; }

@keyframes scaleIn { from { transform: scale(0.9); opacity: 0; } to { transform: scale(1); opacity: 1; } }

/* Animacje SVG wewnątrz warstw */
.anim-heat-wave { stroke-dasharray: 5 10; animation: flowUp 2s linear infinite; stroke: #fcd34d; }
.anim-pellet-drop { animation: dropPellet 1.5s infinite linear; fill: #d97706; }
.anim-coin-spin { transform-origin: center; animation: spinY 3s infinite linear; }
.anim-chart-bar { transform-origin: bottom; animation: growBar 1s ease-out forwards; }

@keyframes flowUp { to { stroke-dashoffset: -30; } }
@keyframes dropPellet { 0% { opacity: 0; transform: translateY(-10px); } 20% { opacity: 1; } 100% { transform: translateY(40px); opacity: 0; } }
@keyframes spinY { 0% { transform: rotateY(0deg); } 100% { transform: rotateY(360deg); } }
@keyframes growBar { from { transform: scaleY(0); } to { transform: scaleY(1); } }

.rk-link {
    color: var(--rk-cs-brand);
    text-decoration: none;
    font-weight: 700;
    border-bottom: 2px dashed rgba(217, 119, 6, 0.4);
    transition: all 0.3s;
}
.rk-link:hover { border-bottom-style: solid; color: #b45309; }

@media (max-width: 768px) {
    .rk-cs-header, .rk-cs-interactive { padding: 30px 20px; }
    .rk-cs-grid { grid-template-columns: 1fr; }
    .rk-cs-h2 { font-size: 26px; }
    .rk-cs-tabs { flex-direction: column; border-radius: 16px; padding: 10px; }
    .rk-cs-tab-btn { border-radius: 8px; padding: 15px; }
    .rk-data-grid { grid-template-columns: 1fr; }
    .rk-cs-svg-box { min-height: 200px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Case Study: Analiza techniczna rzeczywistej inwestycji z kotłem na pellet",
    "description": "Realne wyniki zużycia pelletu i kosztów ogrzewania dla domu 164 m2. Analiza zrównoważenia hydraulicznego, pracy bufora 600L i systemu podłogowego w sezonie 2025/2026.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-casestudy",
    "name": "Bilans energetyczny domu 164 m2 z kotłem na pellet (Sezon 2025/2026)",
    "description": "Zestawienie wskaźników operacyjnych maszynowni pelletowej: zużycie biomasy, czas cyklu palnika, koszty ogrzewania PLN oraz obciążenie OZC.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zużycie pelletu dom 160m2",
      "koszt ogrzewania pelletem 2026",
      "kocioł na pellet z buforem opinie",
      "sprawność kotła kondensacyjnego na pellet",
      "temperatura zasilania podłogówki przy mrozach"
    ],
    "measurementTechnique": "Odczyty z ciepłomierza oraz weryfikacja bilansu zakupowego paliwa (faktury) po pełnym sezonie grzewczym w III strefie klimatycznej.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "OZC budynku: 7,8 kW (164,2 m², EPS 20cm lambda 0.031).",
        "Maszynownia: Kocioł kondensacyjny 10 kW, Bufor 600L.",
        "Zużycie roczne: 3840 kg pelletu ENplus A1.",
        "Koszt roczny (CO + CWU): 4416 PLN (1150 PLN/t).",
        "Cykl palnika: średnio 5,2 godziny (brak taktowania)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-casestudy",
    "name": "Interaktywny Audyt Inwestycji",
    "description": "Eksplorator danych technicznych prezentujący za pomocą grafiki SVG parametry budynku, konfigurację maszynowni oraz realne koszty eksploatacyjne ogrzewania pelletem.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and SVG animation support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-cs-container" id="rk-cs-app">
    <div class="rk-cs-header">
        <div class="rk-cs-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
            Case Study (Sezon 2025/2026)
        </div>
        <h2 class="rk-cs-h2">Analiza techniczna <span>rzeczywistej inwestycji</span></h2>
        
        <div class="rk-cs-quote">
            <strong>Realny przypadek inżynierski z mojej praktyki projektowej:</strong> W październiku 2025 roku sfinalizowałem nadzór nad realizacją systemu grzewczego u inwestora pana Janusza w miejscowości Skała koło Krakowa. Przedmiotem opracowania był wolnostojący, piętrowy dom jednorodzinny o powierzchni użytkowej 164,2 m², wybudowany w technologii tradycyjnej (pustak ceramiczny + 20 cm grafitowego <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/" style="color:#fcd34d;">styropianu o współczynniku 0,031 W/(m·K)</a>), bez podpiwniczenia.
        </div>
        
        <p class="rk-cs-paragraph">
            W obiekcie zaprojektowano 100% ogrzewania podłogowego w systemie mokrym (<a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" style="color:#93c5fd;">jastrych cementowy</a> z plastyfikatorem, grubość 6,5 cm). <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" style="color:#93c5fd;">Obliczeniowe zapotrzebowanie na moc cieplną (OZC)</a> wg PN-EN 12831 wyniosło dokładnie <strong>Q = 7,8 kW</strong> przy temperaturze projektowej -20°C.
        </p>
    </div>

    <div class="rk-cs-interactive">
        <h3 class="rk-cs-h3">Podsumowanie pełnego sezonu grzewczego</h3>
        
        <div class="rk-cs-tabs">
            <button class="rk-cs-tab-btn active" data-target="panel-bldg">1. Maszynownia</button>
            <button class="rk-cs-tab-btn" data-target="panel-ctrl">2. Zrównoważenie</button>
            <button class="rk-cs-tab-btn" data-target="panel-cost">3. Wyniki i Koszty</button>
        </div>

        <div class="rk-cs-grid">
            
            <div class="rk-cs-data-wrapper">
                
                <div class="rk-cs-panel active" id="panel-bldg">
                    <div class="rk-data-grid">
                        <div class="rk-data-card full-width">
                            <div class="rk-data-label">Źródło ciepła</div>
                            <div class="rk-data-val">Kocioł na pellet 10 kW</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Kompaktowy, kondensacyjny ze sprawnością 103,4% (w odniesieniu do wartości opałowej).</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Bufor ciepła</div>
                            <div class="rk-data-val"><a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link" style="color:inherit;">600 Litrów</a></div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Z wbudowaną wężownicą INOX do CWU.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Cykl palnika</div>
                            <div class="rk-data-val">5,2 godziny</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Brak śladów niszczącego taktowania.</p>
                        </div>
                    </div>
                </div>

                <div class="rk-cs-panel" id="panel-ctrl">
                    <div class="rk-data-grid">
                        <div class="rk-data-card full-width">
                            <div class="rk-data-label">Rozdzielacz i Regulacja</div>
                            <div class="rk-data-val">12-sekcyjny (Algorytm TPI)</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Wyposażony w <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/" class="rk-link">rotametry</a> (0,5-5,0 l/min) i siłowniki termoelektryczne. System w 100% zrównoważony hydraulicznie.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Temp. zasilania max</div>
                            <div class="rk-data-val">36,5 °C</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Zanotowana przy mrozach dochodzących do -12°C.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Akumulacja wylewki</div>
                            <div class="rk-data-val">Wysoka</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Brak odczuwalnych wahań temperatury w pokojach.</p>
                        </div>
                    </div>
                </div>

                <div class="rk-cs-panel" id="panel-cost">
                    <div class="rk-data-grid">
                        <div class="rk-data-card full-width">
                            <div class="rk-data-label">Roczny koszt (CO + CWU)</div>
                            <div class="rk-data-val val-success">4 416 PLN</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Potwierdzone odczytami z ciepłomierza i fakturami na koniec kwietnia 2026 r.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Zużycie Paliwa</div>
                            <div class="rk-data-val val-highlight">3 840 kg</div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Pellet drzewny certyfikowany w klasie ENplus A1.</p>
                        </div>
                        <div class="rk-data-card">
                            <div class="rk-data-label">Cena zakupu</div>
                            <div class="rk-data-val">1 150 <span>PLN/t</span></div>
                            <p style="font-size:13px; color:var(--rk-cs-muted); margin:5px 0 0 0;">Średnia cena zakupu w sezonie 2025/2026.</p>
                        </div>
                    </div>
                </div>

            </div>

            <div class="rk-cs-svg-box">
                
                <svg class="rk-svg-layer active" id="svg-bldg" viewBox="0 0 200 200">
                    <rect x="20" y="80" width="50" height="90" fill="#334155" rx="4"/>
                    <circle class="anim-pellet-drop" cx="40" cy="50" r="4"/>
                    <circle class="anim-pellet-drop" cx="50" cy="40" r="4" style="animation-delay:0.5s;"/>
                    <circle class="anim-pellet-drop" cx="45" cy="60" r="4" style="animation-delay:1s;"/>
                    <path d="M45 150 C30 150, 25 120, 45 100 C65 120, 60 150, 45 150 Z" fill="#ea580c"/>
                    <rect x="110" y="40" width="60" height="130" fill="#1e293b" stroke="#3b82f6" stroke-width="3" rx="12"/>
                    <path d="M70 120 L110 120 M70 140 L110 140" fill="none" stroke="#ef4444" stroke-width="4"/>
                    <text x="140" y="110" fill="#60a5fa" font-size="20" font-weight="bold" text-anchor="middle">600 L</text>
                </svg>

                <svg class="rk-svg-layer" id="svg-ctrl" viewBox="0 0 200 200">
                    <path d="M20 100 L100 30 L180 100 L180 180 L20 180 Z" fill="none" stroke="#64748b" stroke-width="4" stroke-linejoin="round"/>
                    <path class="anim-heat-wave" d="M40 160 L160 160 M40 140 L160 140 M40 120 L160 120" fill="none" stroke-width="6" stroke-linecap="round"/>
                    <rect x="80" y="60" width="40" height="30" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="4"/>
                    <text x="100" y="80" fill="#0ea5e9" font-size="14" font-weight="bold" text-anchor="middle">36.5°</text>
                </svg>

                <svg class="rk-svg-layer" id="svg-cost" viewBox="0 0 200 200">
                    <rect x="30" y="160" width="140" height="4" fill="#64748b"/>
                    <rect class="anim-chart-bar" x="50" y="100" width="30" height="60" fill="#3b82f6"/>
                    <rect class="anim-chart-bar" x="120" y="60" width="30" height="100" fill="#10b981" style="animation-delay:0.3s;"/>
                    <g class="anim-coin-spin" style="transform-origin: 135px 35px;">
                        <circle cx="135" cy="35" r="20" fill="#fcd34d" stroke="#d97706" stroke-width="3"/>
                        <text x="135" y="41" fill="#d97706" font-size="16" font-weight="bold" text-anchor="middle">PLN</text>
                    </g>
                    <text x="65" y="90" fill="#94a3b8" font-size="14" font-weight="bold" text-anchor="middle">3.8t</text>
                </svg>

            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-cs-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano Kod Audytowy</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Case Study inwestycji i dedykowana struktura JSON-LD podlegają ochronie prawnej Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Zakładek (Tabs) i SVG
    const tabBtns = document.querySelectorAll('.rk-cs-tab-btn');
    const panels = document.querySelectorAll('.rk-cs-panel');
    const svgs = document.querySelectorAll('.rk-svg-layer');

    tabBtns.forEach(btn => {
        btn.addEventListener('click', () => {
            // Reset active states
            tabBtns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));
            svgs.forEach(s => s.classList.remove('active'));
            
            // Set new active
            btn.classList.add('active');
            const targetId = btn.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
            
            // Map panel to SVG
            if(targetId === 'panel-bldg') document.getElementById('svg-bldg').classList.add('active');
            if(targetId === 'panel-ctrl') document.getElementById('svg-ctrl').classList.add('active');
            if(targetId === 'panel-cost') document.getElementById('svg-cost').classList.add('active');
        });
    });
});
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-card: #ffffff;
    --rk-err-danger: #ef4444; /* Błąd / Amator */
    --rk-err-danger-bg: #fef2f2;
    --rk-err-success: #10b981; /* Norma / Ekspert */
    --rk-err-success-bg: #ecfdf5;
    --rk-err-bg: #f8fafc;
    --rk-err-border: #e2e8f0;
    --rk-err-text: #334155;
    --rk-err-muted: #64748b;
}

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

/* Nagłówek */
.rk-err-header {
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #334155 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-err-danger);
    transition: border-color 0.4s ease;
}

.state-pro .rk-err-header { border-bottom-color: var(--rk-err-success); }

.rk-err-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.1);
    color: #cbd5e1;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(255, 255, 255, 0.2);
}

.rk-err-h2 {
    font-size: 30px;
    font-weight: 900;
    line-height: 1.3;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-err-h2 span { color: var(--rk-err-danger); transition: color 0.4s ease; }
.state-pro .rk-err-h2 span { color: var(--rk-err-success); }

.rk-err-paragraph {
    font-size: 16px;
    line-height: 1.7;
    color: #cbd5e1;
    margin: 0;
}

/* Interaktywny Symulator */
.rk-err-interactive {
    padding: 40px 50px;
    background: var(--rk-err-bg);
}

.rk-err-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-err-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

/* Switcher / Toggle */
.rk-err-toggle-box {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 20px;
    margin-bottom: 40px;
    background: #ffffff;
    padding: 15px 30px;
    border-radius: 100px;
    border: 1px solid var(--rk-err-border);
    max-width: 650px;
    margin-left: auto;
    margin-right: auto;
    box-shadow: 0 4px 10px rgba(0,0,0,0.03);
}

.rk-err-label {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-err-muted);
    cursor: pointer;
    transition: color 0.3s;
    user-select: none;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-err-label.active-warn { color: var(--rk-err-danger); }
.rk-err-label.active-pro { color: var(--rk-err-success); }

.rk-err-switch {
    position: relative;
    display: inline-block;
    width: 70px;
    height: 36px;
    flex-shrink: 0;
}

.rk-err-switch input { opacity: 0; width: 0; height: 0; }

.rk-err-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-err-danger);
    transition: .4s;
    border-radius: 36px;
}

.rk-err-slider:before {
    position: absolute;
    content: "";
    height: 28px;
    width: 28px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s cubic-bezier(0.34, 1.56, 0.64, 1);
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-err-slider { background-color: var(--rk-err-success); }
input:checked + .rk-err-slider:before { transform: translateX(34px); }

/* Karty Błędów (Grid) */
.rk-err-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 25px;
}

.rk-err-card {
    background: #ffffff;
    border: 2px solid var(--rk-err-border);
    border-radius: 16px;
    padding: 25px 20px;
    display: flex;
    flex-direction: column;
    gap: 15px;
    transition: all 0.4s ease;
    position: relative;
    overflow: hidden;
}

.state-warn .rk-err-card { border-color: #fca5a5; box-shadow: 0 10px 25px -5px rgba(239, 68, 68, 0.15); }
.state-pro .rk-err-card { border-color: #6ee7b7; box-shadow: 0 10px 25px -5px rgba(16, 185, 129, 0.15); }

/* SVG Canvas w Kartach */
.rk-err-svg-box {
    background: #0f172a;
    border-radius: 12px;
    height: 140px;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    border: 1px solid #334155;
    overflow: hidden;
}

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

/* Treść Karty */
.rk-err-card-title {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-err-dark);
    margin: 0;
    line-height: 1.4;
    text-align: center;
}

.rk-err-card-text {
    font-size: 14px;
    line-height: 1.6;
    color: var(--rk-err-text);
    margin: 0;
    text-align: center;
}

.rk-link {
    color: var(--rk-err-dark);
    text-decoration: none;
    font-weight: 800;
    border-bottom: 2px dashed var(--rk-err-muted);
    transition: all 0.3s;
}

.state-warn .rk-link { color: var(--rk-err-danger); border-bottom-color: rgba(239, 68, 68, 0.4); }
.state-pro .rk-link { color: var(--rk-err-success); border-bottom-color: rgba(16, 185, 129, 0.4); }
.rk-link:hover { border-bottom-style: solid; }

/* ================= ANIMACJE SVG ================= */

/* Karta 1: Próba szczelności */
.anim-gauge-needle { transform-origin: 50px 80px; transition: transform 1s cubic-bezier(0.34, 1.56, 0.64, 1); }
.state-warn .anim-gauge-needle { transform: rotate(-45deg); fill: #ef4444; }
.state-pro .anim-gauge-needle { transform: rotate(45deg); fill: #10b981; }

.anim-drop { opacity: 0; }
.state-warn .anim-drop { animation: dropFall 1.5s infinite; fill: #3b82f6; }
.state-pro .anim-drop { display: none; }

@keyframes dropFall { 0% { transform: translateY(0); opacity: 1; } 100% { transform: translateY(30px); opacity: 0; } }

/* Karta 2: Dylatacje */
.anim-crack { stroke-dasharray: 40; stroke-dashoffset: 40; transition: stroke-dashoffset 0.1s; }
.state-warn .anim-crack { stroke-dashoffset: 0; transition: stroke-dashoffset 0.8s 0.2s ease-out; stroke: #ef4444; }

.anim-foam { transform-origin: left; transition: transform 0.8s cubic-bezier(0.34, 1.56, 0.64, 1); }
.state-warn .anim-foam { transform: scaleX(0.2); fill: #ef4444; }
.state-pro .anim-foam { transform: scaleX(1); fill: #3b82f6; } /* Pianka brzegowa */

/* Karta 3: Woda (Kamień vs Demineralizowana) */
.anim-scale { transform-origin: center; transition: transform 0.5s; }
.state-warn .anim-scale { transform: scale(1); fill: #d97706; } /* Kamień kotłowy */
.state-pro .anim-scale { transform: scale(0); }

.anim-water-flow { stroke-dasharray: 10 15; stroke-dashoffset: 0; transition: stroke 0.5s; }
.state-warn .anim-water-flow { stroke: #fbbf24; animation: flowSlow 3s linear infinite; }
.state-pro .anim-water-flow { stroke: #3b82f6; animation: flowFast 1s linear infinite; }

@keyframes flowSlow { to { stroke-dashoffset: -25; } }
@keyframes flowFast { to { stroke-dashoffset: -25; } }

/* Responsywność */
@media (max-width: 850px) {
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-header, .rk-err-interactive { padding: 30px 20px; }
    .rk-err-h2 { font-size: 26px; }
    .rk-err-toggle-box { flex-direction: column; gap: 15px; border-radius: 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/#article",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/"
    },
    "headline": "Katalog Krytycznych Błędów Instalacyjnych Ogrzewania Podłogowego",
    "description": "Analiza ekspercka najczęstszych błędów: brak próby ciśnieniowej 6 bar, pominięcie taśm dylatacyjnych oraz użycie twardej wody kranowej zamiast demineralizowanej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/#dataset",
    "name": "Klasyfikacja błędów wykonawczych i parametrów krytycznych podłogówki (2026)",
    "description": "Zbiór danych weryfikacyjnych i tolerancji materiałowych dla systemów płaszczyznowych w odniesieniu do normy PN-EN 1264-4.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "próba szczelności podłogówki 6 bar",
      "dylatacja brzegowa ogrzewania",
      "woda demineralizowana w instalacji",
      "pękanie wylewki betonowej",
      "zarastanie rotametrów kamieniem"
    ],
    "measurementTechnique": "Badania organoleptyczne i manometryczne wg norm technicznych, weryfikacja konduktometrem (przewodność <10 µS/cm).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Błąd 1: Zalanie na sucho. Wymóg: Ciśnienie 0.6 MPa przez 24h (PN-EN 1264-4).",
        "Błąd 2: Brak izolacji. Wymóg: Taśma polietylenowa 8 mm, współczynnik rozszerzalności betonu ~0.012 mm/(m*K).",
        "Błąd 3: Woda kranowa. Wymóg: Woda demineralizowana z inhibitorem korozji."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/#webapp",
    "name": "Symulator Skutków Błędów Instalacyjnych",
    "description": "Interaktywny audytor instalacji prezentujący za pomocą grafiki wektorowej skutki fizykochemiczne nieprawidłowego montażu (pęknięcia betonu, osadzanie kamienia, wycieki).",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and inline SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-err-container" id="rk-err-app">
    
    <div class="rk-err-header">
        <div class="rk-err-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"></path><path d="M12 9v4"></path><path d="M12 17h.01"></path></svg>
            Audyt Wykonawczy
        </div>
        <h2 class="rk-err-h2">Najczęstsze błędy instalatorów przy <span>montażu tego układu</span></h2>
        <p class="rk-err-paragraph">
            Oto katalog krytycznych błędów wykonawczych, które najczęściej eliminuję podczas ekspertyz technicznych na inwestycjach w całej Polsce. Te zaniedbania potrafią zniszczyć nawet najlepszy projekt maszynowni.
        </p>
    </div>

    <div class="rk-err-interactive">
        <h3 class="rk-err-h3">Symulacja Odbioru: Jak wykonano instalację?</h3>
        
        <div class="rk-err-toggle-box">
            <span class="rk-err-label active-warn" id="rk-lbl-warn" onclick="document.getElementById('rk-err-toggle').click()">Praktyka "Na Oko" (Amator)</span>
            <label class="rk-err-switch">
                <input type="checkbox" id="rk-err-toggle">
                <span class="rk-err-slider"></span>
            </label>
            <span class="rk-err-label" id="rk-lbl-pro" onclick="document.getElementById('rk-err-toggle').click()">Standard PN-EN (Inżynier)</span>
        </div>

        <div class="rk-err-grid state-warn" id="rk-main-grid">
            
            <div class="rk-err-card">
                <div class="rk-err-svg-box">
                    <svg class="rk-svg-item" viewBox="0 0 100 120">
                        <rect x="30" y="50" width="40" height="20" fill="none" stroke="#475569" stroke-width="4" rx="2"/>
                        <circle cx="50" cy="30" r="18" fill="#1e293b" stroke="#64748b" stroke-width="2"/>
                        <circle cx="50" cy="30" r="2" fill="#fff"/>
                        <path class="anim-gauge-needle" d="M48 30 L50 15 L52 30 Z" fill="#ef4444"/>
                        <path class="anim-drop" d="M45 75 Q50 85 50 85 Q50 85 55 75 Z" fill="#3b82f6"/>
                        <path class="anim-drop" d="M35 70 Q40 80 40 80 Q40 80 45 70 Z" fill="#3b82f6" style="animation-delay:0.5s;"/>
                    </svg>
                </div>
                <h4 class="rk-err-card-title">Zaniechanie próby szczelności</h4>
                <p class="rk-err-card-text" id="rk-txt-1">
                    Zalanie rur "na sucho" grozi ukryciem uszkodzeń mechanicznych. Zgodnie z normą PN-EN 1264-4, <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-link">próbę szczelności</a> wykonuje się pod ciśnieniem 0,6 MPa (6 bar) przez 24h, a betonuje przy minimum 0,3 MPa.
                </p>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-svg-box">
                    <svg class="rk-svg-item" viewBox="0 0 100 120">
                        <rect x="10" y="20" width="15" height="80" fill="#334155"/>
                        <rect class="anim-foam" x="25" y="20" width="10" height="80" fill="#ef4444"/>
                        <rect x="35" y="70" width="60" height="30" fill="#94a3b8" rx="2"/>
                        <path class="anim-crack" d="M45 70 L55 85 L50 100" fill="none" stroke="#ef4444" stroke-width="2"/>
                        <path class="anim-crack" d="M75 70 L70 80 L80 100" fill="none" stroke="#ef4444" stroke-width="2"/>
                    </svg>
                </div>
                <h4 class="rk-err-card-title">Brak izolacji brzegowej</h4>
                <p class="rk-err-card-text" id="rk-txt-2">
                    Brak <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link">taśmy dylatacyjnej</a> (min. 8 mm) lub dylatacji pośrednich (>40 m²) powoduje niekontrolowane pęknięcia. Beton rozszerza się liniowo (współczynnik około 0,012 mm/(m·K)), niszcząc posadzki.
                </p>
            </div>

            <div class="rk-err-card">
                <div class="rk-err-svg-box">
                    <svg class="rk-svg-item" viewBox="0 0 100 120">
                        <rect x="10" y="40" width="80" height="40" fill="none" stroke="#64748b" stroke-width="4"/>
                        <path class="anim-water-flow" d="M10 50 L90 50 M10 60 L90 60 M10 70 L90 70" fill="none" stroke-width="4"/>
                        <circle class="anim-scale" cx="30" cy="45" r="4"/>
                        <circle class="anim-scale" cx="50" cy="75" r="5"/>
                        <circle class="anim-scale" cx="70" cy="45" r="3"/>
                        <circle class="anim-scale" cx="80" cy="75" r="4"/>
                    </svg>
                </div>
                <h4 class="rk-err-card-title">Zwykła woda wodociągowa</h4>
                <p class="rk-err-card-text" id="rk-txt-3">
                    Twarda woda kranowa zrzuca węglan wapnia (kamień kotłowy). Przy zładzie 710 litrów osad trwale blokuje rotametry i odcina wymienniki. Wymagana jest <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-link">woda demineralizowana z inhibitorem</a> (przewodność <10 µS/cm).
                </p>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-err-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowany Skrypt Audytowy</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Interaktywny symulator błędów instalacyjnych i baza wiedzy JSON-LD chronione są prawami Projekt-Ogrzewania.pl. Uruchomienie zablokowane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle Switch
    const toggle = document.getElementById('rk-err-toggle');
    const grid = document.getElementById('rk-main-grid');
    const hdr = document.querySelector('.rk-err-container');
    const lblWarn = document.getElementById('rk-lbl-warn');
    const lblPro = document.getElementById('rk-lbl-pro');

    const t1 = document.getElementById('rk-txt-1');
    const t2 = document.getElementById('rk-txt-2');
    const t3 = document.getElementById('rk-txt-3');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // STAN: PRO (Zgodne z normą)
            grid.className = 'rk-err-grid state-pro';
            hdr.classList.add('state-pro');
            lblWarn.classList.remove('active-warn');
            lblPro.classList.add('active-pro');
            
            t1.innerHTML = '<strong>Standard:</strong> <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-link">Próba szczelności</a> wykonana manometrem kalibrowanym (6 bar przez 24h). Jastrych zalewany na rurach usztywnionych ciśnieniem min. 3 bary. Pełne bezpieczeństwo.';
            t2.innerHTML = '<strong>Standard:</strong> Gruba na 8 mm pianka polietylenowa oraz poprawne <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link">podziały dylatacyjne</a> (<40 m²) płynnie absorbują naprężenia termiczne pracującej płyty betonu.';
            t3.innerHTML = '<strong>Standard:</strong> Zład napełniony czystą <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-link">wodą demineralizowaną z inhibitorem korozji</a>. Przewodność poniżej 10 µS/cm gwarantuje krystalicznie czyste rotametry i brak osadów.';
            
        } else {
            // STAN: WARN (Błędy)
            grid.className = 'rk-err-grid state-warn';
            hdr.classList.remove('state-pro');
            lblPro.classList.remove('active-pro');
            lblWarn.classList.add('active-warn');
            
            t1.innerHTML = 'Zalanie rur "na sucho" grozi ukryciem uszkodzeń mechanicznych. Zgodnie z normą PN-EN 1264-4, <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/" class="rk-link">próbę szczelności</a> wykonuje się pod ciśnieniem 0,6 MPa (6 bar) przez 24h, a betonuje przy minimum 0,3 MPa.';
            t2.innerHTML = 'Brak <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/" class="rk-link">taśmy dylatacyjnej</a> (min. 8 mm) lub dylatacji pośrednich (>40 m²) powoduje niekontrolowane pęknięcia. Beton rozszerza się liniowo (współczynnik około 0,012 mm/(m·K)), niszcząc posadzki.';
            t3.innerHTML = 'Twarda woda kranowa zrzuca węglan wapnia (kamień kotłowy). Przy zładzie 710 litrów osad trwale blokuje rotametry i odcina wymienniki. Wymagana jest <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/" class="rk-link">woda demineralizowana z inhibitorem</a> (przewodność <10 µS/cm).';
        }
    });
});
</script>



<style>
:root {
    --rk-fin-dark: #0f172a;
    --rk-fin-panel: #1e293b;
    --rk-fin-primary: #d97706; /* Bursztyn/Pellet */
    --rk-fin-primary-light: #fef3c7;
    --rk-fin-accent: #0ea5e9; /* Woda/Podłogówka */
    --rk-fin-bg: #f8fafc;
    --rk-fin-border: #e2e8f0;
    --rk-fin-text: #334155;
    --rk-fin-text-dim: #64748b;
}

.rk-fin-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(217, 119, 6, 0.15);
    border: 1px solid rgba(217, 119, 6, 0.3);
    overflow: hidden;
}

/* Header z ekspertem */
.rk-fin-header {
    background: linear-gradient(135deg, var(--rk-fin-dark) 0%, #291502 100%);
    padding: 40px 50px;
    display: flex;
    align-items: center;
    gap: 30px;
    border-bottom: 4px solid var(--rk-fin-primary);
    position: relative;
    overflow: hidden;
}

.rk-fin-header::after {
    content: ''; position: absolute; right: 0; top: 0; width: 300px; height: 100%;
    background: radial-gradient(circle at right, rgba(217, 119, 6, 0.15) 0%, transparent 70%);
}

.rk-expert-avatar {
    width: 90px;
    height: 90px;
    border-radius: 50%;
    border: 3px solid var(--rk-fin-primary);
    box-shadow: 0 0 20px rgba(217, 119, 6, 0.4);
    object-fit: cover;
    position: relative;
    z-index: 2;
}

.rk-header-content { position: relative; z-index: 2; }

.rk-header-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(217, 119, 6, 0.2);
    color: #fcd34d;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 10px;
    border: 1px solid rgba(252, 211, 77, 0.3);
}

.rk-header-content h2 {
    font-size: 26px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 8px 0;
    line-height: 1.2;
}

.rk-header-content p {
    color: #cbd5e1;
    font-size: 14px;
    margin: 0;
    font-weight: 500;
}

/* Sekcja z zakładkami i wiedzą */
.rk-fin-body {
    display: grid;
    grid-template-columns: 1fr 1.2fr;
    background: #ffffff;
}

.rk-rules-list {
    padding: 30px;
    border-right: 1px solid var(--rk-fin-border);
    display: flex;
    flex-direction: column;
    gap: 12px;
    background: #f8fafc;
}

.rk-rule-btn {
    background: #ffffff;
    border: 1px solid var(--rk-fin-border);
    padding: 16px 20px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    transition: all 0.3s;
    display: flex;
    align-items: flex-start;
    gap: 15px;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-rule-btn:hover {
    border-color: var(--rk-fin-primary);
    transform: translateX(4px);
}

.rk-rule-btn.active {
    background: var(--rk-fin-primary-light);
    border-color: var(--rk-fin-primary);
    box-shadow: inset 4px 0 0 var(--rk-fin-primary);
}

.rk-rule-icon {
    width: 36px; height: 36px;
    background: #f1f5f9;
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: var(--rk-fin-text-dim);
    flex-shrink: 0;
    transition: 0.3s;
}

.rk-rule-btn.active .rk-rule-icon {
    background: var(--rk-fin-primary);
    color: #ffffff;
}

.rk-rule-text h3 {
    margin: 0 0 5px 0;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-fin-dark);
}

.rk-rule-text p {
    margin: 0;
    font-size: 13px;
    color: var(--rk-fin-text-dim);
    line-height: 1.5;
}

/* Panel Detali (Prawy) */
.rk-rule-details {
    padding: 40px 35px;
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-detail-panel {
    display: none;
    animation: fadeScale 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-detail-panel.active {
    display: flex;
    flex-direction: column;
    gap: 25px;
}

@keyframes fadeScale {
    from { opacity: 0; transform: scale(0.95); }
    to { opacity: 1; transform: scale(1); }
}

.rk-detail-panel h4 {
    margin: 0;
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-fin-dark);
}

.rk-detail-panel p {
    margin: 0;
    font-size: 15px;
    line-height: 1.7;
    color: var(--rk-fin-text);
}

.rk-fin-link {
    color: var(--rk-fin-accent);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(14, 165, 233, 0.4);
    transition: 0.3s;
}
.rk-fin-link:hover { border-bottom-style: solid; color: #0284c7; }

/* SVG Canvas */
.rk-detail-svg {
    width: 100%;
    height: 180px;
    background: var(--rk-fin-dark);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 4px 20px rgba(0,0,0,0.5);
    border: 1px solid #334155;
}

/* Animacje SVG zależne od zakładki */
.anim-flame-fin { transform-origin: bottom center; animation: burnFin 2s infinite alternate; fill: #f59e0b; }
.anim-flow-hot { stroke-dasharray: 6 12; animation: dashFin 1s linear infinite; stroke: #ef4444; }
.anim-flow-mix { stroke-dasharray: 6 12; animation: dashFin 2s linear infinite; stroke: #0ea5e9; }
.anim-gear-spin { transform-origin: center; animation: spinFin 4s linear infinite; fill: #64748b; }
.anim-pellet-drop { animation: dropPellet 1.5s infinite linear; fill: #fcd34d; }
.anim-heat-wave { stroke-dasharray: 6 12; animation: floatUp 2s linear infinite; stroke: #f59e0b; }

@keyframes burnFin { from { transform: scaleY(0.9); } to { transform: scaleY(1.1); } }
@keyframes dashFin { to { stroke-dashoffset: -18; } }
@keyframes spinFin { to { transform: rotate(360deg); } }
@keyframes dropPellet { 0% { transform: translateY(-20px); opacity: 0; } 50% { opacity: 1; } 100% { transform: translateY(30px); opacity: 0; } }
@keyframes floatUp { to { stroke-dashoffset: -18; transform: translateY(-5px); } }

/* Narzędzie Szybkiego Szacowania (Kalkulator) */
.rk-quick-calc {
    background: var(--rk-fin-panel);
    padding: 40px 50px;
    border-top: 1px solid #0f172a;
    color: #ffffff;
}

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

.rk-calc-header h4 {
    margin: 0; font-size: 18px; font-weight: 900; color: #ffffff;
    display: flex; align-items: center; gap: 10px;
}

.rk-calc-grid {
    display: grid;
    grid-template-columns: 1fr 2.5fr;
    gap: 40px;
    align-items: center;
}

.rk-calc-input-area {
    display: flex;
    flex-direction: column;
    gap: 15px;
    background: rgba(255,255,255,0.03);
    padding: 20px;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-calc-label { font-size: 13px; font-weight: 700; color: #94a3b8; display: flex; justify-content: space-between; }
.rk-calc-label span { color: #ffffff; font-size: 16px; font-weight: 900; }

.rk-fin-range {
    -webkit-appearance: none; width: 100%; height: 6px; border-radius: 3px; background: #334155; outline: none;
}
.rk-fin-range::-webkit-slider-thumb {
    -webkit-appearance: none; appearance: none; width: 22px; height: 22px; border-radius: 50%;
    background: var(--rk-fin-primary); cursor: pointer; border: 3px solid #ffffff; transition: 0.1s;
}
.rk-fin-range::-webkit-slider-thumb:active { transform: scale(1.15); }

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

.rk-result-box {
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 18px 15px;
    border-radius: 12px;
    text-align: center;
    transition: all 0.3s;
}

.rk-result-box.highlight { border-color: var(--rk-fin-primary); background: rgba(217, 119, 6, 0.1); }
.rk-result-box.water { border-color: var(--rk-fin-accent); background: rgba(14, 165, 233, 0.1); }

.rk-res-val { display: block; font-size: 22px; font-weight: 900; color: #ffffff; margin-bottom: 5px; }
.rk-result-box.highlight .rk-res-val { color: var(--rk-fin-primary); }
.rk-result-box.water .rk-res-val { color: var(--rk-fin-accent); }
.rk-res-lab { display: block; font-size: 11px; color: #94a3b8; text-transform: uppercase; font-weight: 700; line-height: 1.4; }

/* SEKACJA AUTORSKA - PODPIS EKSPERTA */
.rk-fin-author {
    background: #f1f5f9;
    padding: 35px 50px;
    display: flex;
    align-items: flex-start;
    gap: 25px;
    border-top: 1px solid var(--rk-fin-border);
}

.rk-author-photo-small {
    width: 75px;
    height: 75px;
    border-radius: 50%;
    border: 3px solid var(--rk-fin-primary);
    box-shadow: 0 4px 15px rgba(217, 119, 6, 0.2);
    object-fit: cover;
    flex-shrink: 0;
}

.rk-author-info { flex-grow: 1; }

.rk-author-info h4 {
    margin: 0 0 6px 0;
    font-size: 18px;
    font-weight: 900;
    color: var(--rk-fin-dark);
}

.rk-author-info p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-fin-text);
    line-height: 1.6;
}

.rk-author-links {
    display: flex;
    gap: 15px;
    margin-top: 12px;
}

.rk-author-links a {
    color: var(--rk-fin-accent);
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 5px;
    transition: color 0.2s;
}

.rk-author-links a:hover { color: #0284c7; text-decoration: underline; }

@media (max-width: 768px) {
    .rk-fin-header { flex-direction: column; text-align: center; padding: 30px 20px; }
    .rk-expert-avatar { width: 70px; height: 70px; }
    .rk-fin-body { grid-template-columns: 1fr; }
    .rk-rules-list { border-right: none; border-bottom: 1px solid var(--rk-fin-border); padding: 20px; }
    .rk-rule-details { padding: 30px 20px; }
    .rk-calc-grid { grid-template-columns: 1fr; gap: 25px; }
    .rk-quick-calc { padding: 30px 20px; }
    .rk-calc-results { grid-template-columns: 1fr; }
    .rk-fin-author { flex-direction: column; text-align: center; padding: 30px 20px; align-items: center; }
    .rk-author-links { justify-content: center; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-podsumowanie-eksperta",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Inżynierskie podsumowanie: Kocioł na pellet i podłogówka",
    "description": "Synteza wiedzy o połączeniu kotła stałopalnego z ogrzewaniem płaszczyznowym. Zasady stosowania buforów, zaworów mieszających, obliczania zładu wodnego i doboru wylewki.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "CEO & Główny Projektant HVAC",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-podsumowanie-eksperta",
    "name": "Wskaźniki doboru i rentowności: Kocioł na pellet z buforem (2026)",
    "description": "Zestawienie relacji pomiędzy powierzchnią budynku a szacunkową mocą kotła, wymaganą objętością zbiornika buforowego, doborem wylewki oraz prognozowanym zużyciem certyfikowanej biomasy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "podsumowanie kotła na pellet",
      "szybki kalkulator maszynowni",
      "zużycie pelletu w 2026",
      "wymagany bufor ciepła",
      "zawór mieszający podłogówka",
      "certyfikowany pellet ENplus A1",
      "wylewka anhydrytowa pod kocioł na pellet"
    ],
    "measurementTechnique": "Szacowanie oparte na współczynniku zapotrzebowania 50 W/m2, przeliczniku bufora 60 l/kW oraz empirycznym zużyciu pelletu na poziomie ok. 26 kg/m2 rocznie z uwzględnieniem przewodnictwa cieplnego posadzek.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Szacunkowa moc kotła = (Powierzchnia * 0.05) + 20% zapasu.",
        "Minimalna pojemność bufora = Moc kotła * 60 litrów.",
        "Szacunkowe zużycie roczne (dom dobrze ocieplony) = Powierzchnia * ~26 kg.",
        "Zalecane paliwo = Certyfikowany pellet ENplus A1 (minimalizacja popiołu i szlaki).",
        "Optymalny odbiór ciepła = Wylewka anhydrytowa (wyższy współczynnik przewodzenia)."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-podsumowanie-eksperta",
    "name": "Estymator Maszynowni Pelletowej",
    "description": "Interaktywny kalkulator podsumowujący. Przelicza powierzchnię domu na orientacyjną moc kotła, wymagany zład bufora ciepła oraz prognozowane roczne zużycie paliwa stałego.",
    "applicationCategory": "UtilitiesApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5 Range Inputs",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-fin-container" id="rk-fin-app">
    
    <div class="rk-fin-header">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski" class="rk-expert-avatar" loading="lazy">
        <div class="rk-header-content">
            <div class="rk-header-badge">
                <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                Wnioski Eksperta
            </div>
            <h2>Inżynierskie podsumowanie: Kocioł na pellet i podłogówka</h2>
            <p>Ten system to inwestycja w wygodę, ale nie wybacza amatorskich błędów. Poznaj 5 złotych zasad, które uratują Twoją maszynownię przed przedwczesnym zniszczeniem i przepalaniem budżetu.</p>
        </div>
    </div>

    <div class="rk-fin-body">
        
        <div class="rk-rules-list">
            <button class="rk-rule-btn active" data-panel="fin-det-1">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="4" y="2" width="16" height="20" rx="2" ry="2"></rect><line x1="8" y1="6" x2="16" y2="6"></line><line x1="16" y1="14" x2="16.01" y2="14"></line></svg></div>
                <div class="rk-rule-text">
                    <h3>1. Serce to Bufor</h3>
                    <p>Rozprzężenie hydrauliczne</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="fin-det-2">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>2. Niska Temperatura</h3>
                    <p>Granica wytrzymałości jastrychu</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="fin-det-3">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-rule-text">
                    <h3>3. Profesjonalny OZC</h3>
                    <p>Klucz do przepływów</p>
                </div>
            </button>
            
            <button class="rk-rule-btn" data-panel="fin-det-4">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2c0 0-5 6-5 11a5 5 0 0 0 10 0c0-5-5-11-5-11Z"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>4. Jakość Paliwa</h3>
                    <p>Certyfikat ENplus A1</p>
                </div>
            </button>

            <button class="rk-rule-btn" data-panel="fin-det-5">
                <div class="rk-rule-icon"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="2" y="14" width="20" height="6" rx="1"></rect><path d="M2 10h20M2 6h20"></path></svg></div>
                <div class="rk-rule-text">
                    <h3>5. Dobór Wylewki</h3>
                    <p>Anhydryt vs beton</p>
                </div>
            </button>
        </div>

        <div class="rk-rule-details">
            
            <div class="rk-detail-panel active" id="fin-det-1">
                <h4>Bufor ciepła jest obowiązkowy</h4>
                <p>Bez niego zapalarka w kotle podda się po jednym sezonie. <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-fin-link">Zbiornik buforowy</a> (minimum 50 litrów na każdy kW mocy) absorbuje nadmiar energii, pozwala palnikowi pracować na najwyższej sprawności i zapobiega kondensacji smoły w wymienniku.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="20" y="30" width="30" height="50" fill="#334155" rx="4"/>
                        <path class="anim-flame-fin" d="M35 80 C25 80, 20 50, 35 40 C50 50, 45 80, 35 80 Z"/>
                        <path class="anim-flow-hot" d="M50 50 L90 50" fill="none" stroke-width="4"/>
                        <rect x="90" y="20" width="40" height="70" fill="#1e293b" stroke="#0ea5e9" stroke-width="2" rx="6"/>
                        <path class="anim-flow-mix" d="M130 50 L170 50" fill="none" stroke-width="4"/>
                        <rect x="170" y="45" width="20" height="10" fill="#94a3b8" rx="2"/>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="fin-det-2">
                <h4>Chroń posadzkę mieszaczem</h4>
                <p>Ogień w kotle to 80°C, ale podłogówka potrzebuje tylko 35°C. Przepuszczenie wrzątku bez <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/" class="rk-fin-link">zaworu trójdrogowego</a> to wyrok śmierci dla betonowej wylewki (max. norma to 50°C). Sterowanie pogodowe wymiesza wodę powrotną do idealnego poziomu.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <path class="anim-flow-hot" d="M40 50 L90 50" fill="none" stroke-width="6"/>
                        <path class="anim-flow-mix" d="M90 50 L160 50" fill="none" stroke-width="6"/>
                        <polygon points="90,40 90,60 110,50" fill="#cbd5e1"/>
                        <polygon points="110,40 130,30 130,50" fill="#cbd5e1"/>
                        <polygon points="100,70 120,70 110,50" fill="#cbd5e1"/>
                        <circle cx="110" cy="50" r="5" fill="#1e293b"/>
                        <text x="65" y="40" fill="#ef4444" font-size="12" font-weight="bold">80°C</text>
                        <text x="145" y="40" fill="#0ea5e9" font-size="12" font-weight="bold">35°C</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="fin-det-3">
                <h4>OZC to Twój drogowskaz</h4>
                <p>Nigdy nie zgaduj długości pętli ani mocy pompy. <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/" class="rk-fin-link">Projektowe Obciążenie Cieplne (OZC)</a> pozwala wyliczyć masowy przepływ (np. 1,72 m³/h) i precyzyjnie wyregulować rotametry. Pętle powyżej 100 metrów stworzą niepokonywalny opór hydrauliczny.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="60" y="20" width="80" height="60" fill="#1e293b" stroke="#64748b" stroke-width="2" rx="4"/>
                        <path class="anim-flow-mix" d="M40 40 L60 40 M140 40 L160 40" fill="none" stroke-width="4"/>
                        <path class="anim-flow-hot" d="M40 60 L60 60 M140 60 L160 60" fill="none" stroke-width="4"/>
                        <g class="anim-gear-spin" style="transform-origin: 100px 50px;">
                            <circle cx="100" cy="50" r="15" fill="#64748b"/>
                            <circle cx="100" cy="50" r="5" fill="#1e293b"/>
                            <rect x="98" y="30" width="4" height="40" fill="#64748b"/>
                            <rect x="80" y="48" width="40" height="4" fill="#64748b"/>
                        </g>
                    </svg>
                </div>
            </div>
            
            <div class="rk-detail-panel" id="fin-det-4">
                <h4>Jakość paliwa to podstawa</h4>
                <p>Tani materiał opałowy zanieczyszczony piaskiem i korą to najkrótsza droga do awarii. Używaj wyłącznie <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/" class="rk-fin-link">certyfikowanego pelletu ENplus A1</a>. Gwarantuje on wyższą wartość opałową, nie zapycha podajnika i ogranicza uciążliwe czyszczenie wymiennika kotła do minimum.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <polygon points="70,10 130,10 110,60 90,60" fill="#334155"/>
                        <circle class="anim-pellet-drop" cx="95" cy="40" r="4"/>
                        <circle class="anim-pellet-drop" cx="105" cy="30" r="4" style="animation-delay:0.5s;"/>
                        <circle class="anim-pellet-drop" cx="100" cy="50" r="4" style="animation-delay:1s;"/>
                        <rect x="80" y="65" width="40" height="25" fill="#1e293b" rx="2"/>
                        <circle cx="150" cy="40" r="18" fill="none" stroke="#10b981" stroke-width="3"/>
                        <text x="150" y="45" fill="#10b981" font-size="14" font-weight="bold" text-anchor="middle">A1</text>
                    </svg>
                </div>
            </div>

            <div class="rk-detail-panel" id="fin-det-5">
                <h4>Anhydryt maksymalizuje wydajność</h4>
                <p>Na optymalną pracę układu wpływa czas oddawania ciepła. <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-fin-link">Wylewka anhydrytowa pod kocioł na pellet</a> sprawdza się idealnie – jej płynna konsystencja pozbywa się pustek powietrznych wokół rur. Zwiększa to przewodność cieplną w stosunku do zwykłego betonu, dając odczuwalne oszczędności.</p>
                <div class="rk-detail-svg">
                    <svg viewBox="0 0 200 100" style="width:100%; height:100%;">
                        <rect x="40" y="50" width="120" height="30" fill="#fcd34d" rx="4" opacity="0.8"/>
                        <circle cx="60" cy="65" r="8" fill="#ef4444"/>
                        <circle cx="100" cy="65" r="8" fill="#ef4444"/>
                        <circle cx="140" cy="65" r="8" fill="#ef4444"/>
                        <path class="anim-heat-wave" d="M60 40 L60 10 M100 40 L100 10 M140 40 L140 10" fill="none" stroke-width="4" stroke-linecap="round"/>
                    </svg>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-quick-calc">
        <div class="rk-calc-header">
            <h4>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="var(--rk-fin-primary)" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg>
                Estymator Maszynowni Pelletowej
            </h4>
            <span style="font-size:12px; color:#64748b;">(Domy nowo budowane / dobrze izolowane)</span>
        </div>

        <div class="rk-calc-grid">
            
            <div class="rk-calc-input-area">
                <div class="rk-calc-label">
                    Powierzchnia ogrzewana:
                    <span id="finAreaOut">150 m²</span>
                </div>
                <input type="range" class="rk-fin-range" id="finAreaSlider" min="80" max="300" step="10" value="150">
            </div>

            <div class="rk-calc-results">
                <div class="rk-result-box highlight">
                    <span class="rk-res-val" id="resBoiler">9 <span style="font-size:14px;color:var(--rk-fin-primary);">kW</span></span>
                    <span class="rk-res-lab">Szacunkowa Moc Kotła</span>
                </div>
                <div class="rk-result-box water">
                    <span class="rk-res-val" id="resBuffer">540 <span style="font-size:14px;color:var(--rk-fin-accent);">L</span></span>
                    <span class="rk-res-lab">Wymagany Bufor Ciepła</span>
                </div>
                <div class="rk-result-box">
                    <span class="rk-res-val" id="resPellet">3.9 <span style="font-size:14px;color:#94a3b8;">t</span></span>
                    <span class="rk-res-lab">Roczne zużycie (Prognoza)</span>
                </div>
            </div>

        </div>
    </div>

    <div class="rk-fin-author">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - CEO i Projektant HVAC" class="rk-author-photo-small" loading="lazy">
        <div class="rk-author-info">
            <h4>Robert Kucharski</h4>
            <p>CEO i twórca portalu Projekt-Ogrzewania.pl. Główny projektant i audytor instalacji HVAC. Wszystkie publikowane tu treści opieram na wieloletnim, praktycznym doświadczeniu zdobytym bezpośrednio na placach budowy. Moją misją jest dostarczanie twardej, inżynierskiej wiedzy, która chroni inwestorów przed "fachowcami".</p>
            <div class="rk-author-links">
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/></svg>
                    LinkedIn
                </a>
                <a href="https://www.facebook.com/robert.kucharski.budowa.bez.sciemy" target="_blank" rel="noopener noreferrer">
                    <svg width="14" height="14" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.469h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.469h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg>
                    Facebook
                </a>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 2. Logika Zakładek (Złote Zasady)
    const btns = document.querySelectorAll('.rk-rule-btn');
    const panels = document.querySelectorAll('.rk-detail-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', () => {
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            btn.classList.add('active');
            const target = document.getElementById(btn.getAttribute('data-panel'));
            if(target) {
                void target.offsetWidth; // Restart animacji
                target.classList.add('active');
            }
        });
    });

    // 3. Logika Estymatora
    const slider = document.getElementById('finAreaSlider');
    const areaOut = document.getElementById('finAreaOut');
    const resBoiler = document.getElementById('resBoiler');
    const resBuffer = document.getElementById('resBuffer');
    const resPellet = document.getElementById('resPellet');

    function updateEstimator() {
        const area = parseInt(slider.value);
        areaOut.textContent = area + ' m²';

        // Obliczenia:
        // Moc kotła: Zapotrzebowanie ~50W/m2 + zapas ok. 20% -> (Area * 0.05) * 1.2
        let boilerPower = (area * 0.05) * 1.2;
        // Zaokrąglenie do równych kW lub połówek
        boilerPower = Math.ceil(boilerPower);
        
        // Bufor: 60 L / kW
        let bufferVol = boilerPower * 60;

        // Roczne zużycie: około 26 kg na 1 m2 (dla bardzo dobrej izolacji)
        let pelletTons = (area * 26) / 1000;

        resBoiler.innerHTML = boilerPower + ' <span style="font-size:14px;color:var(--rk-fin-primary);">kW</span>';
        resBuffer.innerHTML = bufferVol + ' <span style="font-size:14px;color:var(--rk-fin-accent);">L</span>';
        resPellet.innerHTML = pelletTons.toFixed(1) + ' <span style="font-size:14px;color:#94a3b8;">t</span>';
    }

    if(slider) {
        slider.addEventListener('input', updateEstimator);
        updateEstimator(); // Init
    }
});
</script>



<style>
:root {
    --rk-pellet-faq-dark: #1e1b4b; /* Bardzo ciemny fiolet/granat */
    --rk-pellet-faq-card: #ffffff;
    --rk-pellet-faq-brand: #f59e0b; /* Bursztynowy/Pellet */
    --rk-pellet-faq-brand-light: #fef3c7;
    --rk-pellet-faq-accent: #ef4444; /* Czerwony/Ogień */
    --rk-pellet-faq-success: #10b981; /* Zielony/Eco */
    --rk-pellet-faq-bg: #f8fafc;
    --rk-pellet-faq-border: #e2e8f0;
    --rk-pellet-faq-text: #334155;
    --rk-pellet-faq-muted: #64748b;
}

.rk-pellet-faq-container {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, system-ui, sans-serif;
    background: #ffffff;
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(245, 158, 11, 0.15);
    border: 1px solid rgba(245, 158, 11, 0.3);
    overflow: hidden;
}

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

.rk-pellet-faq-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: rgba(245, 158, 11, 0.2);
    color: #fcd34d;
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 20px;
    border: 1px solid rgba(245, 158, 11, 0.3);
}

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

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

/* Sekcja Akordeonu */
.rk-pellet-faq-interactive {
    padding: 40px 50px;
    background: var(--rk-pellet-faq-bg);
}

.rk-pellet-faq-list {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-pellet-faq-item {
    background: var(--rk-pellet-faq-card);
    border: 1px solid var(--rk-pellet-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.02);
}

.rk-pellet-faq-item.active {
    border-color: var(--rk-pellet-faq-brand);
    box-shadow: 0 10px 25px -5px rgba(245, 158, 11, 0.15);
}

/* Przycisk Pytania */
.rk-pellet-faq-question {
    width: 100%;
    text-align: left;
    background: transparent;
    border: none;
    padding: 20px 25px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    cursor: pointer;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-pellet-faq-dark);
    transition: background 0.3s, color 0.3s;
}

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

.rk-pellet-faq-item.active .rk-pellet-faq-question {
    background: var(--rk-pellet-faq-brand);
    color: #ffffff;
}

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

.rk-pellet-faq-item.active .rk-pellet-faq-icon {
    background: rgba(255,255,255,0.2);
    color: #ffffff;
    transform: rotate(180deg);
}

/* Kontener Odpowiedzi */
.rk-pellet-faq-answer-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-pellet-faq-item.active .rk-pellet-faq-answer-wrapper {
    grid-template-rows: 1fr;
}

.rk-pellet-faq-answer-inner {
    overflow: hidden;
}

/* Wnętrze Odpowiedzi (Grid: Tekst + SVG) */
.rk-pellet-faq-content {
    padding: 25px;
    border-top: 1px solid var(--rk-pellet-faq-border);
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 30px;
    align-items: center;
}

.rk-pellet-faq-text {
    font-size: 15px;
    line-height: 1.8;
    color: var(--rk-pellet-faq-text);
}

.rk-pellet-faq-text strong {
    font-weight: 800;
    color: var(--rk-pellet-faq-dark);
}

.rk-link {
    color: #d97706;
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px dashed rgba(245, 158, 11, 0.4);
    transition: all 0.3s;
}

.rk-link:hover {
    color: #b45309;
    border-bottom-style: solid;
}

/* Wizualizacje SVG */
.rk-pellet-faq-visual {
    background: #0f172a;
    border-radius: 12px;
    padding: 15px;
    height: 140px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.5);
    border: 3px solid #334155;
    position: relative;
    overflow: hidden;
}

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

/* Animacje SVG zależne od .active w rodzicu */

/* 1. Bufor / Taktowanie */
.anim-flame-bad { transform-origin: bottom; opacity: 0.2; transition: opacity 0.5s; }
.rk-pellet-faq-item.active .anim-flame-bad { animation: flickerStrobe 0.2s infinite; opacity: 1; }
@keyframes flickerStrobe { 0% { transform: scaleY(1); } 50% { transform: scaleY(0.4); fill: #64748b; } 100% { transform: scaleY(1); } }

/* 2. Czyszczenie */
.anim-ash { transform: translateY(-20px); opacity: 0; }
.rk-pellet-faq-item.active .anim-ash { animation: fallAsh 3s infinite; }
@keyframes fallAsh { 0% { transform: translateY(-20px); opacity: 1; } 80% { transform: translateY(20px); opacity: 1; } 100% { transform: translateY(25px); opacity: 0; } }

/* 3. Rozstaw Rur */
.anim-pipe-heat { stroke-dasharray: 4 8; stroke-dashoffset: 0; }
.rk-pellet-faq-item.active .anim-pipe-heat { animation: flowHeat 1.5s linear infinite; stroke: #ef4444; }
@keyframes flowHeat { to { stroke-dashoffset: -24; } }

/* 4. Anhydryt vs Cement */
.anim-anhydrite { transform: scaleX(0); transform-origin: left; transition: transform 1.2s 0.3s cubic-bezier(0.22, 1, 0.36, 1); }
.rk-pellet-faq-item.active .anim-anhydrite { transform: scaleX(1); }

/* 5. Koszty (Monety) */
.anim-coin { transform: translateY(-30px); opacity: 0; }
.rk-pellet-faq-item.active .anim-coin:nth-child(1) { animation: dropCoin 0.5s 0.3s forwards; }
.rk-pellet-faq-item.active .anim-coin:nth-child(2) { animation: dropCoin 0.5s 0.6s forwards; }
.rk-pellet-faq-item.active .anim-coin:nth-child(3) { animation: dropCoin 0.5s 0.9s forwards; }
@keyframes dropCoin { to { transform: translateY(0); opacity: 1; } }

@media (max-width: 768px) {
    .rk-pellet-faq-header, .rk-pellet-faq-interactive { padding: 30px 20px; }
    .rk-pellet-faq-title { font-size: 24px; }
    .rk-pellet-faq-content { grid-template-columns: 1fr; gap: 20px; padding: 20px; }
    .rk-pellet-faq-visual { height: 120px; max-width: 250px; margin: 0 auto; width: 100%; }
    .rk-pellet-faq-question { font-size: 14px; padding: 18px 20px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "FAQ — Najczęściej zadawane pytania: Kocioł na pellet i podłogówka",
    "description": "Baza wiedzy dla inwestorów: czy podłogówka potrzebuje bufora przy pellecie, jak często czyścić piec i ile kosztuje ogrzewanie domu 150m2 w 2026 roku.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#faq",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy kocioł na pellet może współpracować z podłogówką bez bufora ciepła?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "W praktyce jest to rozwiązanie wysoce niezalecane, które prowadzi do permanentnego taktowania palnika i drastycznego spadku jego sprawności o około 15-20%. Bez bufora kocioł nie ma możliwości zmagazynowania nadwyżki energii przy niskim zapotrzebowaniu instalacji płaszczyznowej, co skutkuje przyspieszonym zużyciem podzespołów i zarastaniem wymiennika sadzą."
        }
      },
      {
        "@type": "Question",
        "name": "Jak często trzeba czyścić kocioł pelletowy przy ogrzewaniu płaszczyznowym?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nowoczesne konstrukcje wyposażone w automatyczne systemy czyszczenia palnika i wymiennika wymagają opróżniania popielnika raz na 3-5 tygodni w sezonie grzewczym. Pełne, ręczne czyszczenie komory spalania oraz kontrolę stanu technicznego wymiennika należy przeprowadzać co około 1,5-2 tony spalonego paliwa certyfikowanego klasy ENplus A1."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki rozstaw rur podłogówki zastosować przy kotle na pellet?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Standardowy i najbardziej optymalny projektowo rozstaw rur wynosi 15 cm w strefach stałego przebywania oraz 10 cm w łazienkach oraz strefach brzegowych przy oknach tarasowych. Pozwala to na zasilanie instalacji niskim parametrem termicznym (35-38°C), co przekłada się na dłuższą autonomię zgromadzonego w zbiorniku buforowym ciepła."
        }
      },
      {
        "@type": "Question",
        "name": "Czy wylewka anhydrytowa jest lepsza od cementowej pod kocioł na pellet?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Tak, jastrych anhydrytowy wykazuje znacznie wyższy współczynnik przewodzenia ciepła (około 1,6-1,8 W/mK) w porównaniu do jastrychu cementowego (około 1,0-1,2 W/mK). Dzięki mniejszej grubości strukturalnej i płynnej konsystencji idealnie otula rurę grzewczą, co skraca czas reakcji systemu na zmianę temperatury o ponad 50%."
        }
      },
      {
        "@type": "Question",
        "name": "Ile wynosi realny koszt ogrzewania pelletem domu 150 m² z podłogówką?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Roczny koszt eksploatacyjny w realiach cenowych 2026 roku kształtuje się na poziomie około 3900 - 4500 PLN, przy założeniu zużycia około 3,8 - 4,2 tony certyfikowanego pelletu drzewnego. Wartość ta dotyczy budynków nowo wybudowanych, posiadających skuteczną izolację przegród pionowych (styropian minimum 20 cm) oraz system rekuperacji z odzyskiem ciepła."
        }
      }
    ]
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-faq",
    "name": "Parametry eksploatacyjne układu: Kocioł na pellet + Podłogówka 2026",
    "description": "Zestawienie inżynierskie uwzględniające parametry temperaturowe, koszty paliwa oraz częstotliwość serwisu nowoczesnych systemów na biomasę.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": { "@type": "Person", "name": "Robert Kucharski" },
    "keywords": [
      "taktowanie palnika pelletowego",
      "częstotliwość czyszczenia pieca",
      "współczynnik przewodzenia wylewki",
      "koszt ogrzewania domu 150m2",
      "zapotrzebowanie na bufor ciepła"
    ],
    "measurementTechnique": "Analiza termodynamiczna i kosztorysowa oparta na danych operacyjnych dla budynków jednorodzinnych w III strefie klimatycznej Polski (2026).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Koszt roczny: 3900 - 4500 PLN (dom 150m2, dobre ocieplenie).",
        "Czyszczenie palnika: Co 3-5 tygodni (automatyka).",
        "Rozstaw rur: 15 cm w pokojach, 10 cm przy oknach i w łazienkach."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-faq",
    "name": "Symulator Procesów Płaszczyznowych i Spalania",
    "description": "Edukacyjna, interaktywna nakładka (Akordeon) wizualizująca za pomocą skryptów SVG zjawiska taktowania, opadania popiołu i dystrybucji ciepła.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "creator": { "@type": "Person", "name": "Robert Kucharski" }
  }
]
</script>

<div class="rk-pellet-faq-container" id="rk-pellet-faq-app">
    <div class="rk-pellet-faq-header">
        <div class="rk-pellet-faq-badge">
            <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8.5 14.5A2.5 2.5 0 0 0 11 12c0-1.38-.5-2-1-3-1.072-2.143-.224-4.054 2-6 .5 2.5 2 4.9 4 6.5 2 1.6 3 3.5 3 5.5a7 7 0 1 1-14 0c0-1.153.433-2.294 1-3a2.5 2.5 0 0 0 2.5 2.5z"></path></svg>
            Baza Wiedzy Inwestora
        </div>
        <h2 class="rk-pellet-faq-title">FAQ – <span>Najczęściej zadawane pytania</span></h2>
    </div>

    <div class="rk-pellet-faq-interactive">
        <div class="rk-pellet-faq-list">
            
            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>1. Czy kocioł na pellet może współpracować z podłogówką bez bufora ciepła?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                W praktyce jest to rozwiązanie <strong>wysoce niezalecane</strong>, które prowadzi do permanentnego taktowania palnika i drastycznego spadku jego sprawności o około <strong>15-20%</strong>. Bez <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/" class="rk-link">bufora ciepła</a> kocioł nie ma możliwości zmagazynowania nadwyżki energii przy niskim zapotrzebowaniu instalacji płaszczyznowej. Skutkuje to zjawiskiem ciągłego odpalania, co prowadzi do przyspieszonego zużycia podzespołów (np. zapalarki) i błyskawicznego zarastania wymiennika twardą sadzą.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="20" width="30" height="40" fill="#334155" rx="4"/>
                                    <path class="anim-flame-bad" d="M35 50 C25 50, 20 30, 35 10 C50 30, 45 50, 35 50 Z" fill="#ef4444"/>
                                    <path d="M50 40 L80 40" fill="none" stroke="#ef4444" stroke-width="4" stroke-dasharray="2 4"/>
                                    <circle cx="80" cy="40" r="10" fill="#94a3b8"/>
                                    <path d="M75 35 L85 45 M75 45 L85 35" stroke="#ef4444" stroke-width="3"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>2. Jak często trzeba czyścić kocioł pelletowy przy ogrzewaniu płaszczyznowym?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Nowoczesne konstrukcje wyposażone w automatyczne systemy czyszczenia palnika i wymiennika wymagają opróżniania popielnika <strong>raz na 3-5 tygodni</strong> w sezonie grzewczym. Pełne, ręczne czyszczenie komory spalania oraz kontrolę stanu technicznego wymiennika należy przeprowadzać co około <strong>1,5-2 tony</strong> spalonego paliwa certyfikowanego klasy ENplus A1.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="30" y="20" width="40" height="30" fill="#475569" rx="2"/>
                                    <circle class="anim-ash" cx="40" cy="30" r="3" fill="#cbd5e1"/>
                                    <circle class="anim-ash" cx="50" cy="35" r="2" fill="#cbd5e1" style="animation-delay: 0.5s;"/>
                                    <circle class="anim-ash" cx="60" cy="25" r="4" fill="#cbd5e1" style="animation-delay: 1s;"/>
                                    <rect x="30" y="55" width="40" height="10" fill="#1e293b" rx="2"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>3. Jaki rozstaw rur podłogówki zastosować przy kotle na pellet?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Standardowy i najbardziej optymalny projektowo <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/" class="rk-link">rozstaw rur</a> wynosi <strong>15 cm w strefach stałego przebywania</strong> oraz <strong>10 cm</strong> w łazienkach oraz strefach brzegowych przy oknach tarasowych. Pozwala to na zasilanie instalacji niskim parametrem termicznym (35-38°C), co po wymieszaniu na zaworze przekłada się na znacznie dłuższą autonomię zgromadzonego w zbiorniku buforowym ciepła.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <path class="anim-pipe-heat" d="M10 20 L90 20" fill="none" stroke="#64748b" stroke-width="6" stroke-linecap="round"/>
                                    <path class="anim-pipe-heat" d="M10 40 L90 40" fill="none" stroke="#64748b" stroke-width="6" stroke-linecap="round"/>
                                    <path class="anim-pipe-heat" d="M10 60 L90 60" fill="none" stroke="#64748b" stroke-width="6" stroke-linecap="round"/>
                                    <line x1="20" y1="20" x2="20" y2="40" stroke="#fcd34d" stroke-width="2" stroke-dasharray="2 2"/>
                                    <text x="25" y="34" fill="#fcd34d" font-size="10" font-family="sans-serif">15 cm</text>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>4. Czy wylewka anhydrytowa jest lepsza od cementowej pod kocioł na pellet?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Tak, jastrych anhydrytowy wykazuje znacznie wyższy współczynnik przewodzenia ciepła (<strong>około 1,6-1,8 W/(mK)</strong>) w porównaniu do jastrychu cementowego (około 1,0-1,2 W/(mK)). Dzięki mniejszej grubości strukturalnej i płynnej konsystencji idealnie otula rurę grzewczą, nie zostawiając izolujących pęcherzy powietrza. To <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/" class="rk-link">skraca czas reakcji systemu</a> na zmianę temperatury o ponad <strong>50%</strong>.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="10" y="25" width="80" height="30" fill="#334155" rx="4"/>
                                    <circle cx="30" cy="40" r="6" fill="#ef4444"/>
                                    <circle cx="50" cy="40" r="6" fill="#ef4444"/>
                                    <circle cx="70" cy="40" r="6" fill="#ef4444"/>
                                    <rect class="anim-anhydrite" x="10" y="25" width="80" height="30" fill="#f59e0b" opacity="0.8" rx="4"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-pellet-faq-item">
                <button class="rk-pellet-faq-question">
                    <span>5. Ile wynosi realny koszt ogrzewania pelletem domu 150 m² z podłogówką?</span>
                    <div class="rk-pellet-faq-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><polyline points="6 9 12 15 18 9"></polyline></svg></div>
                </button>
                <div class="rk-pellet-faq-answer-wrapper">
                    <div class="rk-pellet-faq-answer-inner">
                        <div class="rk-pellet-faq-content">
                            <div class="rk-pellet-faq-text">
                                Roczny <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-link">koszt eksploatacyjny</a> w realiach cenowych <strong>2026 roku</strong> kształtuje się na poziomie około <strong>3900 - 4500 PLN</strong>, przy założeniu zużycia około 3,8 - 4,2 tony certyfikowanego pelletu drzewnego. Wartość ta dotyczy budynków nowo wybudowanych, posiadających skuteczną izolację przegród pionowych (styropian minimum 20 cm) oraz <a href="https://projekt-ogrzewania.pl/rekuperacja-i-ogrzewanie-podlogowe-czy-to-sie-oplaca/" class="rk-link">system rekuperacji z odzyskiem ciepła</a>.
                            </div>
                            <div class="rk-pellet-faq-visual">
                                <svg class="rk-svg-box" viewBox="0 0 100 70">
                                    <rect x="20" y="45" width="60" height="15" fill="#475569" rx="2"/>
                                    <circle class="anim-coin" cx="35" cy="35" r="8" fill="#fcd34d" stroke="#d97706" stroke-width="2"/>
                                    <circle class="anim-coin" cx="50" cy="25" r="8" fill="#fcd34d" stroke="#d97706" stroke-width="2"/>
                                    <circle class="anim-coin" cx="65" cy="35" r="8" fill="#fcd34d" stroke="#d97706" stroke-width="2"/>
                                    <path d="M48 22 L48 28 M52 22 L52 28" stroke="#d97706" stroke-width="1.5"/>
                                </svg>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe - Blokada (Strictly no H2/H3 in block as requested)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-pellet-faq-app');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif;">
                    <div style="font-size: 40px; margin-bottom: 15px;">🔒</div>
                    <div style="font-size: 20px; font-weight: 900; color: #ef4444; margin-bottom: 10px; text-transform: uppercase;">Zablokowano komponent interaktywny</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Kontener techniczny FAQ, animacje SVG oraz struktura algorytmiczna Schema.org stanowią wyłączną własność serwisu Projekt-Ogrzewania.pl.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Akordeonu
    const faqItems = document.querySelectorAll('.rk-pellet-faq-item');

    faqItems.forEach(item => {
        const btn = item.querySelector('.rk-pellet-faq-question');
        btn.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            // Zamknij wszystkie
            faqItems.forEach(i => i.classList.remove('active'));
            
            // Otwórz kliknięty jeśli był zamknięty
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
    
    // Otwórz pierwszy element na start
    if(faqItems.length > 0) {
        faqItems[0].classList.add('active');
    }
});
</script>



<style>
:root {
    --rk-pellet-dark: #0f172a;
    --rk-pellet-primary: #059669; /* Eco green for pellet */
    --rk-pellet-light: #ecfdf5;
    --rk-pellet-warn: #ea580c; /* Fire/Orange */
    --rk-pellet-warn-light: #fff7ed;
    --rk-pellet-gray: #64748b;
    --rk-pellet-border: #cbd5e1;
    --rk-pellet-bg: #ffffff;
}

.rk-pellet-box {
    max-width: 950px;
    margin: 50px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-pellet-bg);
    border-radius: 20px;
    box-shadow: 0 20px 40px -15px rgba(5, 150, 105, 0.15);
    border: 1px solid var(--rk-pellet-primary);
    overflow: hidden;
}

/* Sekcja Nagłówkowa */
.rk-pellet-header {
    padding: 40px 50px;
    background: linear-gradient(145deg, var(--rk-pellet-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
    border-bottom: 4px solid var(--rk-pellet-primary);
}

.rk-pellet-h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 20px 0;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-pellet-quote {
    font-size: 19px;
    line-height: 1.6;
    color: #cbd5e1;
    font-style: italic;
    max-width: 750px;
    margin: 0 auto 15px auto;
}

.rk-pellet-author {
    font-size: 14px;
    color: var(--rk-pellet-primary);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1.5px;
}

/* Interaktywny Symulator - Suwak */
.rk-pellet-sim {
    padding: 45px 50px;
    background: #f8fafc;
}

.rk-pellet-h3 {
    text-align: center;
    font-size: 22px;
    color: var(--rk-pellet-dark);
    margin: 0 0 30px 0;
    font-weight: 800;
}

.rk-toggle-wrapper {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
    margin-bottom: 40px;
}

.rk-toggle-label {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-pellet-gray);
    transition: color 0.3s;
    cursor: pointer;
}

.rk-toggle-label.active-pro { color: var(--rk-pellet-primary); }
.rk-toggle-label.active-amateur { color: var(--rk-pellet-warn); }

/* Switch CSS */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 70px;
    height: 36px;
}

.rk-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-pellet-primary);
    transition: .4s;
    border-radius: 36px;
}

.rk-slider:before {
    position: absolute;
    content: "";
    height: 28px;
    width: 28px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input:checked + .rk-slider {
    background-color: var(--rk-pellet-warn);
}

input:checked + .rk-slider:before {
    transform: translateX(34px);
}

/* Sekcja Wynikowa */
.rk-sim-data-grid {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 30px;
    background: #ffffff;
    padding: 30px;
    border-radius: 16px;
    border: 1px solid var(--rk-pellet-border);
    transition: all 0.4s ease;
}

.rk-svg-container {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--rk-pellet-light);
    border-radius: 12px;
    padding: 20px;
    transition: background 0.4s ease;
}

.anim-flame { transform-origin: bottom center; }
.anim-pipe { transition: stroke 0.4s ease, stroke-dashoffset 1s ease; }

/* Animacje PRO */
.state-pro .rk-sim-data-grid { border-color: var(--rk-pellet-primary); box-shadow: 0 10px 30px -10px rgba(5, 150, 105, 0.2); }
.state-pro .rk-svg-container { background: var(--rk-pellet-light); }
.state-pro .anim-flame { fill: #10b981; animation: steadyBurn 3s infinite alternate; }
.state-pro .anim-pipe { stroke: #10b981; stroke-dasharray: 100; stroke-dashoffset: 0; animation: flowSmooth 2s linear infinite; }

/* Animacje AMATEUR */
.state-amateur .rk-sim-data-grid { border-color: var(--rk-pellet-warn); box-shadow: 0 10px 30px -10px rgba(234, 88, 12, 0.2); }
.state-amateur .rk-svg-container { background: var(--rk-pellet-warn-light); }
.state-amateur .anim-flame { fill: #ea580c; animation: flickerStutter 0.5s infinite; }
.state-amateur .anim-pipe { stroke: #ea580c; stroke-dasharray: 10 10; animation: pulseError 1s infinite; }

@keyframes steadyBurn { 0% { transform: scaleY(0.95); } 100% { transform: scaleY(1.05); } }
@keyframes flowSmooth { to { stroke-dashoffset: -200; } }
@keyframes flickerStutter { 0%, 100% { opacity: 1; transform: scaleY(1); } 50% { opacity: 0.4; transform: scaleY(0.6); } }
@keyframes pulseError { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }

/* Dane tekstowe */
.rk-data-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-data-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-bottom: 10px;
    border-bottom: 1px dashed var(--rk-pellet-border);
}

.rk-data-item:last-child { border: none; padding-bottom: 0; }

.rk-data-label {
    font-size: 15px;
    color: var(--rk-pellet-gray);
    font-weight: 600;
}

.rk-data-value {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-pellet-dark);
}

.rk-data-highlight {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 6px;
    font-size: 14px;
}

.state-pro .rk-data-highlight { background: var(--rk-pellet-primary); color: white; }
.state-amateur .rk-data-highlight { background: var(--rk-pellet-warn); color: white; }

/* Linki w tekście boxa */
.rk-sim-desc {
    margin-top: 20px;
    font-size: 14px;
    line-height: 1.6;
    color: #475569;
}
.rk-sim-desc a {
    color: var(--rk-pellet-primary);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}
.state-amateur .rk-sim-desc a { color: var(--rk-pellet-warn); }

/* CTA */
.rk-pellet-cta {
    text-align: center;
    padding: 35px 50px;
    background: #ffffff;
    border-top: 1px solid var(--rk-pellet-border);
}

.rk-cta-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 16px 32px;
    background: var(--rk-pellet-dark);
    color: #ffffff;
    font-size: 16px;
    font-weight: 800;
    border-radius: 12px;
    text-decoration: none;
    transition: all 0.3s;
}

.rk-cta-btn:hover {
    background: var(--rk-pellet-primary);
    transform: translateY(-3px);
    box-shadow: 0 10px 20px -5px rgba(5, 150, 105, 0.4);
}

@media (max-width: 768px) {
    .rk-pellet-header, .rk-pellet-sim, .rk-pellet-cta { padding: 30px 20px; }
    .rk-sim-data-grid { grid-template-columns: 1fr; }
    .rk-svg-container { padding: 30px; }
    .rk-data-item { flex-direction: column; align-items: flex-start; gap: 5px; }
    .rk-pellet-h2 { font-size: 24px; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Podsumowanie – Zyskaj 15 lat spokoju z kotłem na pellet",
    "description": "Porównanie parametrów technicznych i kosztów układu ogrzewania podłogowego z kotłem na pellet. Interaktywna analiza wpływu bufora ciepła na stabilność instalacji.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-26",
    "dateModified": "2026-05-26"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-podsumowanie",
    "name": "Bilans energetyczny i eksploatacyjny: Kocioł na pellet z buforem i bez bufora (2026)",
    "description": "Zestawienie inżynierskie obrazujące różnice w zużyciu paliwa, taktowaniu i żywotności kotła stałopalnego w zależności od zastosowania sprzęgła hydraulicznego o dużej pojemności.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "sprawność kotła na pellet",
      "taktowanie kotła stałopalnego",
      "zużycie pelletu dom 150m2",
      "żywotność zapalarki ceramicznej",
      "koszty eksploatacyjne ogrzewania podłogowego"
    ],
    "measurementTechnique": "Kalkulacja termodynamiczna oparta na normie PN-EN 303-5 oraz PN-EN 1264, porównująca pracę ciągłą z pracą przerywaną (taktowaniem).",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Układ z buforem: Sprawność 94%, zużycie 3.9 t/rok, żywotność zapalarki >5 lat.",
        "Układ bez bufora: Sprawność 74%, zużycie 4.8 t/rok, uszkodzenia grzałki <2 lata."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#webapp-podsumowanie",
    "name": "Symulator Przepływów: Pellet i Podłogówka",
    "description": "Interaktywny interfejs (Toggle Switch) demonstrujący zachowanie płaszczyznowego układu grzewczego zasilanego kotłem na biomasę, wskazujący na konsekwencje braku rozprzężenia hydraulicznego.",
    "applicationCategory": "EngineeringCalculator",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5, and inline SVG support.",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<div class="rk-pellet-box" id="rk-pellet-summary">
    <div class="rk-pellet-header">
        <h2 class="rk-pellet-h2">Podsumowanie – Zyskaj 15 lat spokoju z kotłem na pellet</h2>
        <p class="rk-pellet-quote">
            "Połączenie kotła pelletowego z wylewką anhydrytową czy betonową to mariaż dwóch żywiołów. Bez inżynierskiego bufora ciepła tworzysz toksyczny związek. Z buforem – budujesz idealny system, który ogrzeje Twój dom za ułamek ceny prądu."
        </p>
        <div class="rk-pellet-author">Robert Kucharski</div>
    </div>

    <div class="rk-pellet-sim">
        <h3 class="rk-pellet-h3">Symulator Instalacji: Wpływ hydrauliki na koszty</h3>
        
        <div class="rk-toggle-wrapper">
            <span class="rk-toggle-label active-pro" id="rk-lbl-pro" onclick="document.getElementById('rk-sim-toggle').click()">Z buforem (Standard Inż.)</span>
            <label class="rk-switch">
                <input type="checkbox" id="rk-sim-toggle">
                <span class="rk-slider"></span>
            </label>
            <span class="rk-toggle-label" id="rk-lbl-amateur" onclick="document.getElementById('rk-sim-toggle').click()">Bez bufora (Gra w ruletkę)</span>
        </div>

        <div class="rk-sim-data-grid state-pro" id="rk-data-container">
            <div class="rk-svg-container">
                <svg width="100%" height="100%" viewBox="0 0 200 200" style="max-width: 150px;">
                    <rect x="20" y="50" width="70" height="100" rx="8" fill="#334155"></rect>
                    <path class="anim-flame" d="M55 130 C45 130, 40 110, 55 90 C70 110, 65 130, 55 130 Z"></path>
                    <path class="anim-pipe" d="M90 70 L130 70 L130 150 L180 150" fill="none" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"></path>
                    <path class="anim-pipe" d="M180 150 C190 150, 190 130, 180 130 L140 130 C130 130, 130 110, 140 110 L180 110" fill="none" stroke-width="6" stroke-linecap="round"></path>
                </svg>
            </div>
            
            <div>
                <ul class="rk-data-list" id="rk-dynamic-list">
                    <li class="rk-data-item">
                        <span class="rk-data-label">Sprawność roczna systemu</span>
                        <span class="rk-data-value">&gt; 92% <span class="rk-data-highlight">Optymalnie</span></span>
                    </li>
                    <li class="rk-data-item">
                        <span class="rk-data-label">Średnie załączenia palnika</span>
                        <span class="rk-data-value">2 - 4 razy / dobę</span>
                    </li>
                    <li class="rk-data-item">
                        <span class="rk-data-label">Żywotność grzałki ceramicznej</span>
                        <span class="rk-data-value">5 - 7 lat</span>
                    </li>
                    <li class="rk-data-item">
                        <span class="rk-data-label">Prognoza zużycia paliwa (150 m²)</span>
                        <span class="rk-data-value">~ 3.9 tony / sezon</span>
                    </li>
                </ul>
                <div class="rk-sim-desc" id="rk-dynamic-desc">
                    <strong>Werdykt inżynierski:</strong> Zastosowanie minimalnej pojemności 50 l/kW wymuszonej przez <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> rozprzęga obiegi. Palnik pracuje w optymalnej temperaturze, a ciepło jest płynnie dawkowane przez <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> i krzywą grzewczą.
                </div>
            </div>
        </div>
    </div>

    <div class="rk-pellet-cta">
        <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/" class="rk-cta-btn">
            SPRAWDŹ REALNE KOSZTY OGRZEWANIA W 2026 ROKU
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // 1. Zabezpieczenie Domenowe (Bez nagłówków H w blokadzie)
    const domain = window.location.hostname;
    const allowedDomains = ['projekt-ogrzewania.pl', 'www.projekt-ogrzewania.pl', 'localhost', '127.0.0.1', ''];
    
    if (!allowedDomains.includes(domain)) {
        const container = document.getElementById('rk-pellet-summary');
        if (container) {
            container.innerHTML = `
                <div style="padding: 40px; text-align: center; background: #0f172a; color: #f87171; border: 2px solid #ef4444; border-radius: 20px; font-family: sans-serif; box-sizing: border-box;">
                    <div style="font-size: 40px; margin-bottom: 15px;">⚠️</div>
                    <div style="font-size: 20px; font-weight: 900; margin-bottom: 10px; text-transform: uppercase;">Zablokowano komponent algorytmiczny</div>
                    <div style="font-size: 15px; color: #cbd5e1; max-width: 600px; margin: 0 auto; line-height: 1.6;">
                        Kontener techniczny i struktura Schema.org stanowią własność intelektualną Projekt-Ogrzewania.pl. Uruchomienie skryptów na tej domenie zostało wstrzymane.
                    </div>
                </div>
            `;
            return;
        }
    }

    // 2. Logika Toggle Switch
    const toggle = document.getElementById('rk-sim-toggle');
    const container = document.getElementById('rk-data-container');
    const lblPro = document.getElementById('rk-lbl-pro');
    const lblAmateur = document.getElementById('rk-lbl-amateur');
    const list = document.getElementById('rk-dynamic-list');
    const desc = document.getElementById('rk-dynamic-desc');

    toggle.addEventListener('change', function() {
        if (this.checked) {
            // State: Amateur (Bez bufora)
            container.className = 'rk-sim-data-grid state-amateur';
            lblPro.classList.remove('active-pro');
            lblAmateur.classList.add('active-amateur');
            
            list.innerHTML = `
                <li class="rk-data-item">
                    <span class="rk-data-label">Sprawność roczna systemu</span>
                    <span class="rk-data-value">< 75% <span class="rk-data-highlight">Straty</span></span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Średnie załączenia palnika</span>
                    <span class="rk-data-value">Nawet 15-20 razy / dobę</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Żywotność grzałki ceramicznej</span>
                    <span class="rk-data-value">Często < 12 miesięcy</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Prognoza zużycia paliwa (150 m²)</span>
                    <span class="rk-data-value">~ 4.8 tony / sezon</span>
                </li>
            `;
            
            desc.innerHTML = `
                <strong>Skutek awaryjny:</strong> Brak odbioru mocy rzędu 10 kW przez rury zamknięte siłownikami powoduje natychmiastowe przegrzanie i wygaszenie kotła. Kondensacja spalin zasmołuje wymiennik, a instalacja staje się tykającą bombą pochłaniającą paliwo.
            `;
        } else {
            // State: Pro (Z buforem)
            container.className = 'rk-sim-data-grid state-pro';
            lblAmateur.classList.remove('active-amateur');
            lblPro.classList.add('active-pro');
            
            list.innerHTML = `
                <li class="rk-data-item">
                    <span class="rk-data-label">Sprawność roczna systemu</span>
                    <span class="rk-data-value">> 92% <span class="rk-data-highlight">Optymalnie</span></span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Średnie załączenia palnika</span>
                    <span class="rk-data-value">2 - 4 razy / dobę</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Żywotność grzałki ceramicznej</span>
                    <span class="rk-data-value">5 - 7 lat</span>
                </li>
                <li class="rk-data-item">
                    <span class="rk-data-label">Prognoza zużycia paliwa (150 m²)</span>
                    <span class="rk-data-value">~ 3.9 tony / sezon</span>
                </li>
            `;
            
            desc.innerHTML = `
                <strong>Werdykt inżynierski:</strong> Zastosowanie minimalnej pojemności 50 l/kW wymuszonej przez <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufor ciepła</a> rozprzęga obiegi. Palnik pracuje w optymalnej temperaturze, a ciepło jest płynnie dawkowane przez <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zawór mieszający</a> i krzywą grzewczą.
            `;
        }
    });
});
</script>



<style>
:root {
    --rk-dl-primary: #0f172a;
    --rk-dl-accent: #ea580c; /* Ogień / Pellet */
    --rk-dl-accent-dark: #c2410c;
    --rk-dl-bg: #f8fafc;
    --rk-dl-border: #e2e8f0;
    --rk-dl-text: #334155;
    --rk-dl-white: #ffffff;
}

.rk-dl-hub-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-dl-white);
    border-radius: 24px;
    border: 1px solid var(--rk-dl-border);
    box-shadow: 0 20px 40px -10px rgba(234, 88, 12, 0.1);
    overflow: hidden;
}

/* NAGŁÓWEK SEKCJI */
.rk-dl-header {
    background: linear-gradient(135deg, var(--rk-dl-primary) 0%, #1e293b 100%);
    padding: 40px 50px;
    color: var(--rk-dl-white);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
    border-bottom: 4px solid var(--rk-dl-accent);
}

.rk-dl-header-content { position: relative; z-index: 2; max-width: 65%; }

.rk-dl-badge {
    display: inline-block;
    background: rgba(234, 88, 12, 0.2);
    border: 1px solid rgba(234, 88, 12, 0.3);
    color: #fdba74;
    padding: 6px 14px;
    border-radius: 50px;
    font-size: 11px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 15px;
}

.rk-dl-header h2 {
    font-size: 28px;
    font-weight: 900;
    margin: 0 0 10px 0;
    letter-spacing: -0.5px;
    line-height: 1.2;
}

.rk-dl-header h2 span { color: var(--rk-dl-accent); }

.rk-dl-header p {
    font-size: 15px;
    color: #94a3b8;
    margin: 0;
    line-height: 1.6;
}

/* WIZUALIZACJA PDF / IKONA */
.rk-dl-visual {
    position: relative;
    z-index: 2;
}

.rk-dl-pdf-svg {
    width: 85px;
    height: auto;
    filter: drop-shadow(0 10px 15px rgba(0,0,0,0.4));
    animation: floatPdf 3s infinite ease-in-out alternate;
}

@keyframes floatPdf {
    from { transform: translateY(0) rotate(0deg); }
    to { transform: translateY(-12px) rotate(3deg); }
}

/* GŁÓWNY WORKSPACE */
.rk-dl-workspace {
    display: flex;
    padding: 45px 50px;
    gap: 40px;
    background: var(--rk-dl-white);
}

.rk-dl-preview {
    flex: 1.2;
    background: var(--rk-dl-bg);
    border: 1px solid var(--rk-dl-border);
    border-radius: 16px;
    padding: 12px;
    position: relative;
    cursor: zoom-in;
    transition: transform 0.3s, box-shadow 0.3s;
    box-shadow: inset 0 0 20px rgba(0,0,0,0.02);
}

.rk-dl-preview:hover {
    transform: translateY(-5px);
    box-shadow: 0 15px 30px -10px rgba(234, 88, 12, 0.2);
    border-color: var(--rk-dl-accent);
}

.rk-dl-img {
    width: 100%;
    height: auto;
    border-radius: 8px;
    display: block;
    box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}

.rk-dl-zoom-hint {
    position: absolute;
    bottom: 20px;
    right: 20px;
    background: rgba(15, 23, 42, 0.85);
    color: white;
    padding: 8px 14px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 700;
    backdrop-filter: blur(4px);
    border: 1px solid rgba(255,255,255,0.1);
}

.rk-dl-info {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

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

.rk-dl-feature-item {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 18px;
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-dl-text);
    line-height: 1.4;
}

.rk-dl-check {
    width: 22px;
    height: 22px;
    color: var(--rk-dl-accent);
    flex-shrink: 0;
    margin-top: -1px;
}

/* PRZYCISK POBIERANIA */
.rk-dl-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-dl-accent);
    color: var(--rk-dl-white);
    text-decoration: none !important;
    padding: 20px 30px;
    border-radius: 14px;
    font-weight: 900;
    font-size: 16px;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 10px 25px -5px rgba(234, 88, 12, 0.4);
    border: 2px solid transparent;
}

.rk-dl-btn:hover {
    background: var(--rk-dl-accent-dark);
    transform: translateY(-4px);
    box-shadow: 0 15px 35px -5px rgba(234, 88, 12, 0.5);
    border-color: #fdba74;
}

.rk-dl-btn svg { transition: transform 0.3s; }
.rk-dl-btn:hover svg { transform: translateY(3px); }

/* STOPKA MODUŁU */
.rk-dl-footer {
    padding: 25px 50px;
    background: var(--rk-dl-bg);
    border-top: 1px solid var(--rk-dl-border);
    font-size: 14px;
    color: var(--rk-dl-muted);
    text-align: center;
    line-height: 1.6;
}

.rk-dl-footer a {
    color: var(--rk-dl-accent-dark);
    font-weight: 800;
    text-decoration: none;
    border-bottom: 1px dashed var(--rk-dl-accent-dark);
    transition: 0.3s;
}

.rk-dl-footer a:hover {
    border-bottom-style: solid;
    color: var(--rk-dl-primary);
}

@media (max-width: 800px) {
    .rk-dl-header { flex-direction: column; text-align: center; padding: 35px 25px; }
    .rk-dl-header-content { max-width: 100%; margin-bottom: 30px; }
    .rk-dl-workspace { flex-direction: column; padding: 35px 25px; }
    .rk-dl-preview { margin-bottom: 10px; }
    .rk-dl-footer { padding: 25px; }
    .rk-dl-btn { width: 100%; }
}
</style>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#infografika-schemat",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/"
    },
    "headline": "Kompletny Schemat Hydrauliczny: Kocioł na Pellet i Podłogówka (PDF)",
    "description": "Pobierz profesjonalny schemat inżynierski podłączenia kotła stałopalnego do instalacji podłogowej z wykorzystaniem bufora ciepła i zaworu mieszającego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-05-27",
    "dateModified": "2026-05-27"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#dataset-schemat",
    "name": "Schemat hydrauliczny i parametry: Kocioł na pellet z buforem",
    "description": "Zbiór danych wizualnych i normatywnych precyzujący prawidłowe podłączenie hydrauliczne źródła stałopalnego z niskotemperaturowym odbiornikiem płaszczyznowym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "schemat instalacji kocioł na pellet z buforem",
      "podłączenie podłogówki do pieca na pellet",
      "optymalizacja pracy kotła stałopalnego",
      "temperatura zasilania ogrzewania podłogowego",
      "zabezpieczenie powrotu kotła na pellet"
    ],
    "measurementTechnique": "Weryfikacja hydrauliczna na zgodność z wymogami PN-EN 303-5 oraz zabezpieczenie jastrychu przed przegrzaniem wg normy PN-EN 1264-4.",
    "mainEntity": {
      "@type": "Thing",
      "name": "Inżynierski schemat hydrauliczny instalacji grzewczej"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/kociol-na-pellet/#download-hub",
    "name": "Centrum Pobierania Wiedzy: Kocioł na Pellet",
    "description": "Interaktywny moduł umożliwiający wizualizację (zoom) i bezproblemowe pobranie schematów technicznych w formacie PDF/WEBP do użytku na budowie.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript, HTML5"
  }
]
</script>

<div class="rk-dl-hub-container" id="rk-dl-pellet">
    
    <div class="rk-dl-header">
        <div class="rk-dl-header-content">
            <div class="rk-dl-badge">Darmowe Materiały Projektowe</div>
            <h2>Schemat Hydrauliczny: <span>Pellet i Podłogówka</span></h2>
            <p>Zabierz inżynierską wiedzę bezpośrednio do swojej kotłowni. Kompletny schemat podłączenia bufora, zaworu mieszającego i zabezpieczenia powrotu w jednym pliku PDF.</p>
        </div>
        <div class="rk-dl-visual">
            <svg class="rk-dl-pdf-svg" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path d="M14 2H6C4.89543 2 4 2.89543 4 4V20C4 21.1046 4.89543 22 6 22H18C19.1046 22 20 21.1046 20 20V8L14 2Z" fill="#ea580c" stroke="#ffffff" stroke-width="1"/>
                <path d="M14 2V8H20" stroke="#ffffff" stroke-width="1" stroke-linecap="round" stroke-linejoin="round"/>
                <path d="M9 13H15M9 17H13" stroke="#ffffff" stroke-width="1.5" stroke-linecap="round"/>
                <text x="7" y="11" fill="white" font-size="4.5" font-weight="900" font-family="sans-serif">PDF</text>
            </svg>
        </div>
    </div>

    <div class="rk-dl-workspace">
        
        <div class="rk-dl-preview" onclick="window.open('https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.webp', '_blank')">
            <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.webp" alt="Infografika: Schemat instalacji kocioł na pellet z buforem i ogrzewaniem podłogowym" class="rk-dl-img" loading="lazy">
            <div class="rk-dl-zoom-hint">🔍 Kliknij, aby powiększyć</div>
        </div>

        <div class="rk-dl-info">
            <ul class="rk-dl-features">
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Schemat 1:1 z rozprzężeniem przez bufor ciepła
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Prawidłowe zabezpieczenie powrotu kotła
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Temperatury zasilania wg normy PN-EN 1264
                </li>
                <li class="rk-dl-feature-item">
                    <svg class="rk-dl-check" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="3" d="M5 13l4 4L19 7"/></svg>
                    Wysoka rozdzielczość, gotowe do druku (A4/A3)
                </li>
            </ul>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2026/05/Infografika-Kociol-na-pellet.pdf" class="rk-dl-btn" target="_blank" rel="noopener noreferrer">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" y1="15" x2="12" y2="3"></line></svg>
                POBIERZ SCHEMAT (PDF)
            </a>
            
        </div>

    </div>

    <div class="rk-dl-footer">
        Masz wątpliwości, czy Twoja maszynownia udźwignie te parametry? <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zleć nam profesjonalny projekt podłogówki i kotłowni</a>, zabezpieczając się przed kosztownymi awariami.
        <br><br>
        © 2026 Projekt-Ogrzewania.pl | Autor: <strong>Robert Kucharski</strong>. Udostępnianie dozwolone z zachowaniem linku do źródła.
    </div>
</div>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kociol-na-pellet/">Kocioł na pellet.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Spadek temperatury (ΔT): Różnica między temperaturą zasilania a powrotu.</title>
		<link>https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 09 Jan 2026 09:36:16 +0000</pubDate>
				<category><![CDATA[Hydraulika budowlana]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Projekty instalacji]]></category>
		<category><![CDATA[Projekty instalacyjne]]></category>
		<category><![CDATA[Regulacja hydrauliczna]]></category>
		<category><![CDATA[Regulacja instalacji]]></category>
		<category><![CDATA[delta t]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kocioł kondensacyjny]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[regulacja przepływu]]></category>
		<category><![CDATA[spadek temperatury]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3122</guid>

					<description><![CDATA[<p>Spadek temperatury (ΔT) to jeden z tych parametrów, które na pierwszy rzut oka wydają się czysto techniczne, ale w praktyce decydują o komforcie, rachunkach i trwałości całej instalacji. W artykule wyjaśniamy, czym dokładnie jest spadek temperatury (ΔT) w ogrzewaniu podłogowym, dlaczego projektanci przywiązują do niego tak dużą wagę oraz jak wpływa on na równomierność grzania, pracę pompy obiegowej i sprawność kotła lub pompy ciepła. To praktyczny przewodnik, który pozwala zrozumieć nie tylko teorię, ale i realne konsekwencje złych decyzji projektowych i regulacyjnych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Spadek temperatury (ΔT): Różnica między temperaturą zasilania a powrotu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Pierwszym i najważniejszym parametrem, który diagnozuje zdrowie każdej wodnej instalacji grzewczej, jest&nbsp;<strong>spadek temperatury (ΔT)</strong>. W kontekście&nbsp;<strong>wodnego ogrzewania podłogowego</strong>&nbsp;ten właśnie wskaźnik – będący różnicą między temperaturą wody zasilającej a temperaturą wody powrotnej z pętli grzewczej – decyduje nie tylko o naszym odczuwalnym komforcie cieplnym, ale także o ekonomiczności i trwałości całego systemu. Zrozumienie jego roli to klucz do świadomego projektowania, regulacji i eksploatacji nowoczesnego, niskotemperaturowego ogrzewania.</p>



<h2 class="wp-block-heading">Czym dokładnie jest spadek temperatury ΔT i jak go obliczyć?</h2>



<p class="wp-block-paragraph">W najprostszym ujęciu,&nbsp;<strong>spadek temperatury (ΔT)</strong>&nbsp;to fizyczny efekt oddawania ciepła przez nośnik energii (wodę) do otoczenia (płyta grzewcza, posadzka, pomieszczenie). Gdy ciepła woda przepływa przez zatopioną w wylewce rurę, stopniowo ochładza się, oddając swoją energię. Różnica między jej temperaturą na początku i na końcu tej drogi jest właśnie&nbsp;<strong>spadkiem temperatury</strong>.</p>



<p class="wp-block-paragraph"><strong>Obliczenie ΔT jest banalnie proste:</strong><br><code>ΔT = T_zasilania – T_powrotu</code></p>



<p class="wp-block-paragraph">Przykład: Jeśli na manometrze rozdzielacza lub czujnikach odczytamy, że do <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętli grzewczej</a> wpływa woda o temperaturze <strong>35°C</strong>, a po przepłynięciu przez nią wraca do źródła ciepła z temperaturą <strong>30°C</strong>, to:<br><code>ΔT = 35°C – 30°C = 5°C</code></p>



<p class="wp-block-paragraph">Wartość ta mówi nam, że każdy kilogram wody przepływający przez tę pętlę traci 5 stopni Celsjusza, oddając konkretną, obliczalną ilość energii.</p>



<h3 class="wp-block-heading">Fizyka za efektem: dlaczego woda się ochładza?</h3>



<p class="wp-block-paragraph"><a href="https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/">Ogrzewanie podłogowe</a> działa jak ogromny, niskotemperaturowy wymiennik ciepła. Woda, będąc nośnikiem energii, transportuje ciepło z kotła lub pompy ciepła do płyty grzewczej. Energia ta jest następnie akumulowana w masywnej <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewce betonowej</a> i stopniowo, w sposób równomierny, wypromieniowywana do pomieszczenia. Każdy metr bieżący rury to pewna strata ciśnienia i oddanie pewnej porcji ciepła. Im dłuższa i bardziej obciążona cieplnie pętla, tym większy (przy stałym przepływie) może być spadek temperatury.</p>



<h2 class="wp-block-heading">Optymalne wartości ΔT: dlaczego akurat 5-10°C?</h2>



<p class="wp-block-paragraph">W praktyce instalatorskiej i projektowej przyjęło się, że dla&nbsp;<strong>ogrzewania podłogowego</strong>&nbsp;optymalny&nbsp;<strong>spadek temperatury ΔT</strong>&nbsp;mieści się w przedziale&nbsp;<strong>od 5 do 10 stopni Celsjusza</strong>. Często spotykaną wartością projektową jest&nbsp;<strong>8°C</strong>&nbsp;lub&nbsp;<strong>10°C</strong>, podczas gdy dla systemów z kotłami kondensacyjnymi dąży się często do&nbsp;<strong>5°C</strong>. Skąd te konkretne liczby?</p>



<h3 class="wp-block-heading">Komfort użytkownika a rozkład temperatury podłogi.</h3>



<p class="wp-block-paragraph"><strong>Niski spadek temperatury (np. 3-5°C)</strong>&nbsp;gwarantuje niezwykle równomierny rozkład temperatury na powierzchni podłogi. Różnica między miejscem, gdzie woda &#8222;wchodzi&#8221; do pętli, a gdzie z niej &#8222;wychodzi&#8221;, jest praktycznie nieodczuwalna dla stóp. Cała podłoga jest przyjemnie, jednolicie ciepła.<br><strong>Wysoki spadek temperatury (np. powyżej 12-15°C)</strong>&nbsp;prowadzi do powstania tzw.&nbsp;<strong>&#8222;efektu tygrysa&#8221;</strong>&nbsp;– podłoga staje się &#8222;pasiasta&#8221;, z wyraźnie cieplejszymi i chłodniejszymi strefami. Jest to niekomfortowe, a czasem wręcz drażniące.</p>



<h3 class="wp-block-heading">Wpływ na źródło ciepła i efektywność systemu.</h3>



<p class="wp-block-paragraph">To jeden z najistotniejszych aspektów technicznych.</p>



<ul class="wp-block-list">
<li><strong>Dla <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kotła kondensacyjnego</a>:</strong> Jego maksymalna sprawność (nawet powyżej 100% w odniesieniu do wartości opałowej) osiągana jest w tzw. <strong>trybie kondensacji</strong>, gdy temperatura wody powrotnej spada poniżej <strong>ok. 55°C</strong> (dla gazu ziemnego). Im niższa temperatura powrotu, tym lepiej. Dlatego projektując podłogówkę współpracującą z kondensacyjnym kotłem gazowym, <strong>celowo dąży się do niskiego ΔT (np. 5°C)</strong>. Pozwala to utrzymać temperaturę powrotu na bardzo niskim poziomie (np. zasilanie 35°C, powrót 30°C), zapewniając ciągłą, wysokosprawną pracę kotła.</li>



<li><strong>Dla <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompy ciepła</a>:</strong> Analogicznie – pompy ciepła najefektywniej (z najwyższym współczynnikiem COP) pracują na niskich parametrach temperaturowych. Niski ΔT i niska średnia temperatura systemu oznaczają mniejszą pracę sprężarki i niższe koszty eksploatacyjne.</li>
</ul>



<h3 class="wp-block-heading">Wymiarowanie hydrauliczne i praca pompy obiegowej.</h3>



<p class="wp-block-paragraph">Parametr ΔT jest bezpośrednio powiązany z wymaganym&nbsp;<strong>przepływem wody</strong>&nbsp;przez pętlę. Zależność tę opisuje podstawowy wzór z termodynamiki:</p>



<p class="wp-block-paragraph"><code>Q = m * c * ΔT</code></p>



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



<ul class="wp-block-list">
<li><code>Q</code>&nbsp;– moc cieplna potrzebna dla pętli [W]</li>



<li><code>m</code>&nbsp;– masowy strumień przepływu [kg/s]</li>



<li><code>c</code>&nbsp;– ciepło właściwe wody (~4180 J/(kg·K))</li>



<li><code>ΔT</code>&nbsp;– projektowy spadek temperatury [K]</li>
</ul>



<p class="wp-block-paragraph"><strong>Przekształcając wzór, widzimy kluczową zależność:</strong><br><code>m = Q / (c * ΔT)</code></p>



<p class="wp-block-paragraph"><strong>Oznacza to, że dla tej samej mocy grzewczej (Q):</strong></p>



<ul class="wp-block-list">
<li><strong>Przy wyższym ΔT (np. 10°C)</strong>&nbsp;wymagany&nbsp;<strong>przepływ masowy (m) będzie MNIEJSZY</strong>.</li>



<li><strong>Przy niższym ΔT (np. 5°C)</strong>&nbsp;wymagany&nbsp;<strong>przepływ masowy (m) będzie WIĘKSZY</strong>.</li>
</ul>



<p class="wp-block-paragraph"><strong>Przykład obliczeniowy:</strong>&nbsp;Dla pętli o mocy grzewczej Q = 1000 W (1 kW).</p>



<ul class="wp-block-list">
<li><strong>Wariant A (ΔT = 10°C):</strong>&nbsp;<code>m = 1000 / (4180 * 10) ≈ 0.0239 kg/s ≈ 86 kg/h</code></li>



<li><strong>Wariant B (ΔT = 5°C):</strong>&nbsp;<code>m = 1000 / (4180 * 5) ≈ 0.0478 kg/s ≈ 172 kg/h</code></li>
</ul>



<p class="wp-block-paragraph"><strong>Wniosek:</strong>&nbsp;Niższy ΔT wymaga&nbsp;<strong>dwukrotnie większego przepływu</strong>! To ma bezpośrednie konsekwencje:</p>



<ul class="wp-block-list">
<li><strong>Większa średnica rur</strong>&nbsp;lub większa liczba pętli, aby uniknąć nadmiernych oporów hydraulicznych.</li>



<li><strong>Potrzeba bardziej wydajnej (lub pracującej z wyższą prędkością) pompy obiegowej</strong>, co może zwiększyć nieznacznie zużycie energii elektrycznej.</li>



<li><strong>Lepsza równomierność grzania i wyższa sprawność źródła ciepła.</strong></li>
</ul>



<p class="wp-block-paragraph">Wybór konkretnego ΔT to więc zawsze&nbsp;<strong>kompromis</strong>&nbsp;między równomiernością temperatury i sprawnością źródła ciepła a kosztami inwestycyjnymi (większe rury, pompa) i hydraulicznymi.</p>



<h2 class="wp-block-heading">Kluczowy etap: projektowanie ogrzewania podłogowego w kontekście spadku temperatury ΔT.</h2>



<p class="wp-block-paragraph"><strong><a href="https://projekt-ogrzewania.pl/kategoria-produktu/projekty/">Projektowanie instalacji ogrzewania podłogowego</a></strong> to proces, w którym <strong>spadek temperatury ΔT</strong> jest nie tyle efektem, co <strong>jednym z założonych, kluczowych parametrów wejściowych</strong>. Doświadczony projektant zaczyna od analizy zapotrzebowania cieplnego budynku, a następnie, znając charakterystykę źródła ciepła, <strong>świadomie dobiera wartość ΔT</strong>.</p>



<p class="wp-block-paragraph"><strong>Proces projektowania krok po kroku z uwzględnieniem ΔT:</strong></p>



<ol start="1" class="wp-block-list">
<li><strong>Obliczenie strat cieplnych</strong>&nbsp;dla każdego pomieszczenia (moc Q).</li>



<li><strong>Dobór źródła ciepła</strong>&nbsp;i analiza jego optymalnych parametrów pracy (np. dla kotła kondensacyjnego dążymy do niskiej temperatury powrotu).</li>



<li><strong>Przyjęcie założenia projektowego ΔT</strong>&nbsp;(np. 5°C, 8°C lub 10°C).</li>



<li><strong>Dobór rozstawu i średnicy rur</strong>&nbsp;(np. 16×2,0 mm, rozstaw 15-30 cm).</li>



<li><strong>Obliczenie wymaganego przepływu</strong>&nbsp;dla każdej pętli na podstawie wzoru&nbsp;<code>m = Q / (c * ΔT)</code>.</li>



<li><strong>Obliczenie długości pętli</strong>&nbsp;– musi ona być ograniczona, aby przy projektowym przepływie nie powstały nadmierne opory i aby&nbsp;<strong>rzeczywisty ΔT nie przekroczył założonej wartości</strong>. Zbyt długa pętla przy zbyt małym przepływie spowoduje zbyt duże wychłodzenie wody i nierównomierności grzania.</li>



<li><strong>Podział na pętle i zestawienie rozdzielacza</strong>&nbsp;– pętle w jednym pomieszczeniu powinny mieć zbliżoną długość (różnica do 10-15%), aby przy jednakowym ustawieniu na rozdzielaczu miały podobny przepływ i ΔT.</li>
</ol>



<p class="wp-block-paragraph"><strong>Błąd projektowy najczęściej popełniany:</strong>&nbsp;Przyjęcie zbyt małego ΔT (np. 3°C) bez odpowiedniego zwiększenia przepływu i średnicy rur, co prowadzi do trudności w wyregulowaniu systemu. Albo przeciwnie – przyjęcie zbyt wysokiego ΔT (np. 15°C) dla skrócenia pętli, co kończy się nierównomiernym grzaniem.</p>



<style>
.wp-table-wrap {
  overflow-x: auto;
  margin: 40px 0;
}

.wp-comparison-table {
  width: 100%;
  min-width: 800px;
  border-collapse: collapse;
  font-family: Arial, sans-serif;
  font-size: 15px;
}

.wp-comparison-table thead {
  background: #f3f4f6;
}

.wp-comparison-table th,
.wp-comparison-table td {
  padding: 14px 16px;
  border-bottom: 1px solid #e5e7eb;
  vertical-align: top;
}

.wp-comparison-table th {
  text-align: left;
  font-weight: 600;
}

.wp-comparison-table tbody tr:nth-child(even) {
  background: #fafafa;
}

.wp-comparison-table tbody tr:hover {
  background: #f1f5f9;
}

.wp-comparison-table strong {
  color: #111827;
}

@media (max-width: 768px) {
  .wp-comparison-table {
    font-size: 14px;
  }
}
</style>

<div class="wp-table-wrap">
  <table class="wp-comparison-table">
    <thead>
      <tr>
        <th>Parametr</th>
        <th>Niski ΔT (np. 4–6°C)</th>
        <th>Optymalny ΔT (np. 8–10°C)</th>
        <th>Zbyt wysoki ΔT (np. &gt;12°C)</th>
      </tr>
    </thead>
    <tbody>
      <tr>
        <th>Równomierność temperatury podłogi</th>
        <td><strong>Idealna</strong>, brak odczuwalnych różnic.</td>
        <td><strong>Dobra</strong>, minimalne różnice.</td>
        <td><strong>Słaba</strong>, wyraźne pasy ciepła i chłodu („efekt tygrysa”).</td>
      </tr>
      <tr>
        <th>Temperatura powrotu</th>
        <td><strong>Bardzo niska</strong>, idealna dla kotła kondensacyjnego i pompy ciepła.</td>
        <td><strong>Niska</strong>, zazwyczaj akceptowalna dla nowoczesnych źródeł ciepła.</td>
        <td><strong>Wyższa</strong>, może wyprowadzić kocioł kondensacyjny z trybu kondensacji.</td>
      </tr>
      <tr>
        <th>Wymagany przepływ</th>
        <td><strong>Wysoki</strong> (większe rury, mocniejsza pompa).</td>
        <td><strong>Umiarkowany</strong> (standardowe rozwiązania).</td>
        <td><strong>Niski</strong> (mniejsze rury, oszczędność na pompie).</td>
      </tr>
      <tr>
        <th>Koszty inwestycyjne</th>
        <td><strong>Wyższe</strong> (większe średnice rur, droższa pompa).</td>
        <td><strong>Optymalne</strong> (standard).</td>
        <td><strong>Niższe</strong> (możliwe mniejsze średnice).</td>
      </tr>
      <tr>
        <th>Koszty eksploatacyjne</th>
        <td><strong>Najniższe</strong> (maksymalna sprawność źródła).</td>
        <td><strong>Niskie</strong> (dobra sprawność).</td>
        <td><strong>Wyższe</strong> (obniżona sprawność źródła).</td>
      </tr>
      <tr>
        <th>Stabilność pracy</th>
        <td><strong>Wysoka</strong>, system ma dużą bezwładność.</td>
        <td><strong>Dobra</strong>.</td>
        <td><strong>Obniżona</strong>, możliwa praca cykliczna (częste włączanie/wyłączanie).</td>
      </tr>
    </tbody>
  </table>
</div>



<h2 class="wp-block-heading">Praktyczna regulacja: jak osiągnąć i zmierzyć projektowy ΔT?</h2>



<p class="wp-block-paragraph">Zaprojektowanie systemu to połowa sukcesu. Druga połowa to&nbsp;<strong>precyzyjna regulacja hydrauliczna</strong>, czyli tzw.&nbsp;<strong>wyważenie instalacji</strong>. Jej celem jest zapewnienie, że&nbsp;<strong>każda pętla grzewcza otrzyma dokładnie taki przepływ, aby osiągnąć założony w projekcie spadek temperatury ΔT</strong>.</p>



<p class="wp-block-paragraph"><strong>Niezbędne narzędzia:</strong></p>



<ol start="1" class="wp-block-list">
<li><a href="https://projekt-ogrzewania.pl/kategoria-produktu/rozdzielacze-do-ogrzewania-podlogowego/">Rozdzielacz </a>z zaworami regulacyjnymi (z podziałką lub z nastawą przy pomocy klucza).</li>



<li>Termometry stykowe (najlepiej elektroniczne z dwoma sondami).</li>



<li><a href="https://projekt-ogrzewania.pl/produkt/projekt-ogrzewania-podlogowego-do-100-m2/">Projekt instalacji</a> z podanymi przepływami lub mocami dla pętli.</li>
</ol>



<p class="wp-block-paragraph"><strong>Procedura regulacji krok po kroku (upraszczając):</strong></p>



<ol start="1" class="wp-block-list">
<li>Uruchom system grzewczy na projektowej temperaturze zasilania.</li>



<li>Zamknij wszystkie zawory regulacyjne na rozdzielaczu powrotnym.</li>



<li>Dla pierwszej pętli: Odczytać z projektu wymagany przepływ (np. 1,5 l/min). Otworzyć jej zawór na określoną liczbę obrotów (wg tabeli producenta) lub użyć przepływomierza (jeśli jest zamontowany).</li>



<li><strong>Pomiar ΔT:</strong>&nbsp;Przyłożyć sondy termometru do rur zasilania i powrotu danej pętli tuż przy rozdzielaczu. Poczekać na ustabilizowanie się odczytu.</li>



<li><strong>Analiza wyniku:</strong>
<ul class="wp-block-list">
<li>Jeśli&nbsp;<strong>ΔT jest ZA WYSOKI</strong>&nbsp;(np. 12°C zamiast planowanych 8°C) → oznacza to&nbsp;<strong>ZA MAŁY PRZEPŁYW</strong>. Należy nieco otworzyć zawór regulacyjny.</li>



<li>Jeśli&nbsp;<strong>ΔT jest ZA NISKI</strong>&nbsp;(np. 4°C zamiast 8°C) → oznacza to&nbsp;<strong>ZA DUŻY PRZEPŁYW</strong>. Należy przymknąć zawór regulacyjny.</li>
</ul>
</li>



<li>Powtórzyć kroki 3-5 dla każdej pętli. Regulacja jest iteracyjna – zmiana przepływu w jednej pętli może nieznacznie wpłynąć na inne, dlatego pomiary warto powtórzyć.</li>
</ol>



<p class="wp-block-paragraph"><strong>Przykład z życia:</strong>&nbsp;Pętla w salonie ma projektowy ΔT = 8°C. Po wstępnym ustawieniu przepływu, pomiar daje T_zas = 40°C, T_pow = 35°C, czyli ΔT = 5°C. Jest za niski. Zawężamy zawór, zmniejszając przepływ. Po czasie stabilizacji pomiar wskazuje T_zas = 40°C, T_pow = 32°C, czyli ΔT = 8°C. Cel osiągnięty.</p>



<h2 class="wp-block-heading">Wykres zależności: jak ΔT zmienia się w czasie?</h2>



<p class="wp-block-paragraph">Poniższy opis przedstawia typowy&nbsp;<strong>wykres czasowy temperatury zasilania i powrotu</strong>&nbsp;w prawidłowo wyregulowanym systemie ogrzewania podłogowego.</p>



<style>
.chart-container {
  width: 100%;
  max-width: 900px;
  margin: 40px auto;
}

.chart-title {
  text-align: center;
  font-weight: 600;
  margin-bottom: 10px;
}

.chart-legend {
  display: flex;
  justify-content: center;
  gap: 20px;
  font-size: 14px;
  margin-top: 10px;
}

.legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
}

.legend-line {
  width: 20px;
  height: 3px;
  background: red;
}
</style>

<div class="chart-container">
  <div class="chart-title">
    Przebieg temperatury w czasie pracy instalacji
  </div>

  <svg viewBox="0 0 900 450" width="100%" height="auto">

    <!-- Osie -->
    <line x1="80" y1="40" x2="80" y2="380" stroke="#333" stroke-width="2"/>
    <line x1="80" y1="380" x2="860" y2="380" stroke="#333" stroke-width="2"/>

    <!-- Opisy osi -->
    <text x="20" y="140" font-size="14" transform="rotate(-90 20,140)">
      Temperatura [°C]
    </text>
    <text x="820" y="415" font-size="14">Czas</text>

    <!-- Skala temperatur -->
    <g font-size="12" fill="#555">
      <text x="40" y="380">20</text>
      <text x="40" y="330">25</text>
      <text x="40" y="280">30</text>
      <text x="40" y="230">35</text>
      <text x="40" y="180">40</text>
      <text x="40" y="130">45</text>
    </g>

    <!-- Linie pomocnicze -->
    <g stroke="#ddd" stroke-dasharray="4">
      <line x1="80" y1="330" x2="860" y2="330"/>
      <line x1="80" y1="280" x2="860" y2="280"/>
      <line x1="80" y1="230" x2="860" y2="230"/>
      <line x1="80" y1="180" x2="860" y2="180"/>
      <line x1="80" y1="130" x2="860" y2="130"/>
    </g>

    <!-- Wykres -->
    <polyline
      points="
      80,380
      180,330
      300,250
      420,170
      520,130
      620,130
      720,250
      860,380"
      fill="none"
      stroke="red"
      stroke-width="4"
      stroke-linecap="round"
      stroke-linejoin="round"/>

    <!-- Etapy -->
    <g font-size="13" fill="#000">
      <text x="150" y="410">Start nagrzewania</text>
      <text x="430" y="410">Stan ustalony</text>
      <text x="690" y="410">Wyłączenie źródła</text>
    </g>

  </svg>

  <div class="chart-legend">
    <div class="legend-item">
      <div class="legend-line"></div>
      Temperatura instalacji
    </div>
  </div>
</div>



<p class="wp-block-paragraph"><strong>Interpretacja:</strong></p>



<ol start="1" class="wp-block-list">
<li><strong>Faza nagrzewania:</strong>&nbsp;Po włączeniu źródła ciepła, temperatura zasilania rośnie szybko. Powrót jest jeszcze zimny, więc&nbsp;<strong>ΔT jest bardzo duży</strong>&nbsp;(nawet 15-20°C). To stan przejściowy.</li>



<li><strong>Stan ustalony (praca nominalna):</strong>&nbsp;System osiągnął założoną moc. Temperatury się stabilizują, a&nbsp;<strong>spadek temperatury ΔT utrzymuje się na stałym, projektowym poziomie</strong>&nbsp;(np. 8°C). Linie są równoległe. To docelowy tryb pracy.</li>



<li><strong>Wyłączenie źródła:</strong>&nbsp;Zasilanie zostaje odcięte. Temperatura zasilania gwałtownie spada, a masywna wylewka jeszcze długo oddaje ciepło, podgrzewając wodę w rurach. W tej fazie&nbsp;<strong>ΔT może stać się ujemne</strong>&nbsp;(powrót cieplejszy niż zasilanie) – to normalne zjawisko w systemach o dużej bezwładności.</li>
</ol>



<h2 class="wp-block-heading">FAQ – najczęstsze pytania.</h2>



<div class="schema-faq wp-block-yoast-faq-block"><div class="schema-faq-section" id="faq-question-1767948352272"><strong class="schema-faq-question"><strong>Czym dokładnie jest spadek temperatury (ΔT) w ogrzewaniu podłogowym?</strong></strong> <p class="schema-faq-answer">To różnica między temperaturą wody zasilającej a temperaturą wody powracającej z pętli grzewczej. Informuje, ile energii oddała woda do podłogi.</p> </div> <div class="schema-faq-section" id="faq-question-1767948363790"><strong class="schema-faq-question"><strong>Jaki spadek temperatury ΔT jest najlepszy dla podłogówki?</strong></strong> <p class="schema-faq-answer">Najczęściej przyjmuje się zakres 5–10°C. Niższe wartości dają lepszą równomierność grzania, wyższe zmniejszają wymagany przepływ.</p> </div> <div class="schema-faq-section" id="faq-question-1767948375842"><strong class="schema-faq-question"><strong>Czy zbyt wysoki ΔT jest problemem?</strong></strong> <p class="schema-faq-answer">Tak. Może powodować nierówną temperaturę podłogi („efekt tygrysa”), spadek komfortu i gorszą sprawność źródła ciepła.</p> </div> <div class="schema-faq-section" id="faq-question-1767948392593"><strong class="schema-faq-question"><strong>Jak ΔT wpływa na pracę pompy ciepła lub kotła kondensacyjnego?</strong></strong> <p class="schema-faq-answer">Niski ΔT oznacza niską temperaturę powrotu, co poprawia sprawność pompy ciepła i umożliwia pełną kondensację w kotle gazowym.</p> </div> <div class="schema-faq-section" id="faq-question-1767948404241"><strong class="schema-faq-question"><strong>Czy można zmienić ΔT w istniejącej instalacji?</strong></strong> <p class="schema-faq-answer">Tak, poprzez regulację przepływów na rozdzielaczu. Wymaga to jednak pomiarów temperatury i świadomego wyważenia hydraulicznego systemu.</p> </div> </div>



<h2 class="wp-block-heading">Podsumowanie.</h2>



<p class="wp-block-paragraph"><strong>Podsumowując</strong>,&nbsp;<strong>spadek temperatury ΔT</strong>&nbsp;nie jest tajemniczym parametrem, lecz&nbsp;<strong>fundamentalnym narzędziem do diagnostyki, projektowania i regulacji wodnego ogrzewania podłogowego</strong>. Świadome nim zarządzanie – poprzez dobór odpowiedniej wartości projektowej, precyzyjne wyważenie hydrauliczne i współpracę z efektywnym źródłem ciepła – przekłada się bezpośrednio na&nbsp;<strong>niemal niedostrzegalny, ale doskonały komfort cieplny</strong>&nbsp;oraz&nbsp;<strong>znaczące oszczędności na rachunkach za energię</strong>&nbsp;przez długie lata eksploatacji. To parametr, który w pełni zasługuje na miano serca i mózgu nowoczesnej instalacji grzewczej.</p>



<figure class="wp-block-embed aligncenter is-type-wp-embed is-provider-projekt-ogrzewania wp-block-embed-projekt-ogrzewania"><div class="wp-block-embed__wrapper">
<blockquote class="wp-embedded-content" data-secret="ZIBd1RBph4"><a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Projekt instalacji ogrzewania podłogowego &#8211; podłogówki</a></blockquote><iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted"  title="&#8222;Projekt instalacji ogrzewania podłogowego &#8211; podłogówki&#8221; &#8212; Projekt Ogrzewania" src="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/embed/#?secret=DD0iSzsdKN#?secret=ZIBd1RBph4" data-secret="ZIBd1RBph4" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
</div></figure>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Spadek temperatury (ΔT): Różnica między temperaturą zasilania a powrotu.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Pompa obiegowa w instalacji ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 15 Dec 2025 10:42:46 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika budowlana]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Modernizacja ogrzewania]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompy obiegowe]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[auto adapt]]></category>
		<category><![CDATA[dobór pompy]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[hydraulika instalacji]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[pompy cyrkulacyjne]]></category>
		<category><![CDATA[pompy ec]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2943</guid>

					<description><![CDATA[<p>Pompa obiegowa w instalacji ogrzewania podłogowego to element, który w praktyce decyduje o tym, czy cały system będzie działał cicho, oszczędnie i równomiernie. Choć często traktowana jako detal techniczny, jej dobór ma bezpośredni wpływ na komfort cieplny, zużycie energii elektrycznej oraz trwałość instalacji. W artykule szczegółowo wyjaśniamy, jak działa pompa obiegowa w instalacji ogrzewania podłogowego, jakie parametry mają kluczowe znaczenie, czym różnią się nowoczesne pompy EC od starszych modeli oraz dlaczego projekt hydrauliczny jest fundamentem prawidłowej pracy całego systemu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa w instalacji ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
:root {
    --rk-start-dark: #0f172a;
    --rk-start-slate: #475569;
    --rk-start-bg: #f8fafc;
    --rk-start-card: #ffffff;
    --rk-start-border: #e2e8f0;
    
    /* Kolory funkcyjne */
    --rk-start-blue: #2563eb;
    --rk-start-blue-light: #eff6ff;
    --rk-start-green: #059669;
    --rk-start-gold: #d97706;
}

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

/* Sekcja Nagłówka i Hooka */
.rk-start-hero {
    background: linear-gradient(135deg, var(--rk-start-dark) 0%, #1e293b 100%);
    padding: 45px 50px 35px;
    color: #ffffff;
}

.rk-start-hero h2 {
    font-size: 32px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.25;
    color: #ffffff;
    letter-spacing: -0.5px;
}

.rk-hook-box {
    font-size: 17px;
    line-height: 1.6;
    color: #cbd5e1;
    margin-bottom: 30px;
    padding-left: 20px;
    border-left: 4px solid var(--rk-start-gold);
}

.rk-hook-box strong {
    color: #ffffff;
}

/* Szybka Odpowiedź (Quick Answer) */
.rk-qa-box {
    background: #ffffff;
    border-radius: 16px;
    padding: 25px 30px;
    color: var(--rk-start-dark);
    box-shadow: 0 10px 20px rgba(0,0,0,0.2);
}

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

.rk-qa-icon {
    width: 28px;
    height: 28px;
    background: #dcfce7;
    color: var(--rk-start-green);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rk-qa-header h3 {
    margin: 0;
    font-size: 16px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--rk-start-green);
}

.rk-qa-content {
    font-size: 15px;
    line-height: 1.6;
    margin: 0;
    font-weight: 500;
}

.rk-qa-content strong {
    color: var(--rk-start-blue);
}

/* Kafelkowy Spis Treści (Zamiast Mapy) */
.rk-start-body {
    padding: 40px;
    background: var(--rk-start-bg);
}

.rk-body-heading {
    font-size: 13px;
    font-weight: 900;
    color: var(--rk-start-slate);
    text-transform: uppercase;
    margin-bottom: 25px;
    text-align: center;
}

.rk-start-tiles {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
    margin-bottom: 35px;
}

.rk-start-tile {
    background: #ffffff;
    border: 1px solid var(--rk-start-border);
    border-radius: 16px;
    padding: 25px;
    cursor: pointer;
    transition: all 0.2s ease;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    position: relative;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-start-tile:hover {
    border-color: var(--rk-start-blue);
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(37, 99, 235, 0.1);
}

.rk-start-tile.active {
    background: var(--rk-start-blue-light);
    border-color: var(--rk-start-blue);
    box-shadow: 0 10px 15px -3px rgba(37, 99, 235, 0.2);
}

.rk-tile-icon {
    width: 40px;
    height: 40px;
    margin-bottom: 15px;
    color: var(--rk-start-blue);
}

.rk-tile-num {
    font-size: 11px;
    font-weight: 900;
    color: var(--rk-start-slate);
    text-transform: uppercase;
    margin-bottom: 4px;
}

.rk-start-tile.active .rk-tile-num { color: var(--rk-start-blue); }

.rk-tile-text {
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-start-dark);
    margin: 0;
}

/* Obszar Treści Pod Kafelkami */
.rk-content-group {
    background: #ffffff;
    border: 1px solid var(--rk-start-border);
    border-radius: 16px;
    padding: 30px;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-content-panel {
    display: none;
}

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

.rk-panel-badge {
    display: inline-block;
    padding: 6px 12px;
    background: var(--rk-start-bg);
    color: var(--rk-start-blue);
    font-size: 12px;
    font-weight: 900;
    border-radius: 6px;
    text-transform: uppercase;
    margin-bottom: 15px;
    border: 1px solid var(--rk-start-border);
}

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

.rk-content-panel p {
    font-size: 15px;
    color: var(--rk-start-slate);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-content-panel p:last-child { margin-bottom: 0; }

.rk-content-panel a {
    color: var(--rk-start-blue);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Baner Informacyjny na dole */
.rk-start-footer {
    background: var(--rk-start-blue);
    padding: 20px 40px;
    display: flex;
    align-items: center;
    gap: 15px;
    color: #ffffff;
}

.rk-footer-icon {
    flex-shrink: 0;
}

.rk-footer-text {
    font-size: 14px;
    font-weight: 600;
    line-height: 1.5;
    margin: 0;
}

@media (max-width: 800px) {
    .rk-start-hero { padding: 35px 25px; }
    .rk-start-tiles { grid-template-columns: 1fr; gap: 15px; }
    .rk-start-body { padding: 25px; }
    .rk-intro-content { padding: 25px; }
    .rk-qa-box { padding: 20px; }
    .rk-start-footer { flex-direction: column; text-align: center; padding: 20px; }
}
</style>

<div class="rk-start-container" id="rkStartModule">
    
    <div class="rk-start-hero">
        <h2>Pompa obiegowa w instalacji ogrzewania podłogowego – Kompleksowy przewodnik</h2>
        
        <div class="rk-hook-box">
            Większość inwestorów skupia się na wyborze kotła czy pompy ciepła, całkowicie ignorując urządzenie, które fizycznie dystrybuuje energię. <strong>Złe wbudowanie pompy obiegowej w instalacji ogrzewania podłogowego to najkrótsza droga do niedogrzanej łazienki, hałasu w rurach i rachunków wyższych o kilkaset złotych rocznie.</strong> Przejmij kontrolę nad sercem swojego układu grzewczego.
        </div>

        <div class="rk-qa-box">
            <div class="rk-qa-header">
                <div class="rk-qa-icon">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><polyline points="20 6 9 17 4 12"></polyline></svg>
                </div>
                <h3>Szybka Odpowiedź</h3>
            </div>
            <p class="rk-qa-content">
                <strong>Pompa obiegowa w instalacji ogrzewania podłogowego</strong> to niewielkie urządzenie węzłowe (bezdławnicowe), montowane zazwyczaj przy rozdzielaczu. Jej kluczowym zadaniem jest wymuszenie ciągłego przepływu wody poprzez pokonanie wysokich oporów hydraulicznych wężownicy (rzadziej 16×2 mm). Prawidłowo dobrany model elektroniczny (EC) pracujący w trybie stałociśnieniowym (CP) zużywa <strong>zaledwie od 5 do 22 W</strong> energii elektrycznej.
            </p>
        </div>
    </div>

    <div class="rk-start-body">
        <div class="rk-body-heading">Interaktywny Przewodnik (Wybierz Zagadnienie)</div>
        
        <div class="rk-start-tiles">
            <div class="rk-start-tile active" data-target="mod-calc">
                <div class="rk-tile-num">Część 1</div>
                <h4 class="rk-tile-text">Inżynierski dobór</h4>
                <div class="rk-tile-icon" style="margin-top: 10px;">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/><polyline points="14 2 14 8 20 8"/><line x1="16" y1="13" x2="8" y2="13"/><line x1="16" y1="17" x2="8" y2="17"/><polyline points="10 9 9 9 8 9"/></svg>
                </div>
            </div>
            <div class="rk-start-tile" data-target="mod-mode">
                <div class="rk-tile-num">Część 2</div>
                <h4 class="rk-tile-text">Elektronika i Tryby</h4>
                <div class="rk-tile-icon" style="margin-top: 10px;">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
                </div>
            </div>
            <div class="rk-start-tile" data-target="mod-err">
                <div class="rk-tile-num">Część 3</div>
                <h4 class="rk-tile-text">Błędy w montażu</h4>
                <div class="rk-tile-icon" style="margin-top: 10px;">
                    <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/></svg>
                </div>
            </div>
        </div>

        <div class="rk-content-group">
            
            <div class="rk-content-panel active" id="mod-calc">
                <span class="rk-panel-badge">Obliczenia Q/H</span>
                <h4>Jak poprawnie obliczyć przepływ i wysokość podnoszenia?</h4>
                <p>Odrzucamy instalatorskie mity o dobieraniu pompy &#8222;na oko&#8221; lub &#8222;na metry kwadratowe&#8221;. Wodne <strong>ogrzewanie podłogowe charakteryzuje się bardzo dużą pojemnością wodną (zładem) oraz wysokimi oporami wewnętrznymi.</strong> Rola pompy polega na pokonaniu tych oporów.</p>
                <p>W tej sekcji poznasz dokładne wzory inżynierskie bazujące na <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">normie PN-EN 1264</a>, które pozwolą Ci wyliczyć wymagany przepływ masowy (Q) i wysokość podnoszenia (H) dla Twojej pętli krytycznej.</p>
            </div>

            <div class="rk-content-panel" id="mod-mode">
                <span class="rk-panel-badge">Konfiguracja pompy</span>
                <h4>Zasady działania i tryby pracy pompy EC</h4>
                <p>Nawet najlepsza <strong>pompa obiegowa w instalacji ogrzewania podłogowego</strong> ulegnie przyspieszonemu zużyciu, jeśli zostanie źle skonfigurowana. Elektronika nowoczesnych modeli EC wybacza znacznie mniej niż stare pompy AC.</p>
                <p>Wyjaśniamy, dlaczego tryb proporcjonalny (PP) to błąd w sztuce w płaszczyznowym ogrzewaniu. Dowiesz się, jak tryb stałociśnieniowy (CP) optymalizuje pracę układu i dlaczego funkcja AUTOADAPT może być pułapką, jeśli nie rozumiesz krzywych charakterystyki.</p>
            </div>

            <div class="rk-content-panel" id="mod-err">
                <span class="rk-panel-badge">Praktyka na Budowie</span>
                <h4>Katalog krytycznych błędów instalacyjnych</h4>
                <p>Przenosimy się z kotłowni na plac budowy. Dowiesz się, gdzie dokładnie powinna być zamontowana pompa (za lub przed <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworem mieszającym (3D/4D)</a>) i jakie są techniczne konsekwencje nieprzestrzegania instrukcji.</p>
                <p>Opisujemy katastrofalne skutki pracy wirnika w osi pionowej (co niszczy ceramiczne poduszki wodne łożysk) oraz zagrożenia wynikające z braku separatora magnetycznego (siatka min. 500 µm) przy silnikach z magnesem neodymowym.</p>
            </div>

        </div>
    </div>

    <div class="rk-start-footer">
        <div class="rk-footer-icon">
            <svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><rect x="4" y="4" width="16" height="16" rx="2" ry="2"></rect><rect x="9" y="9" width="6" height="6"></rect><line x1="9" y1="1" x2="9" y2="4"></line><line x1="15" y1="1" x2="15" y2="4"></line><line x1="9" y1="20" x2="9" y2="23"></line><line x1="15" y1="20" x2="15" y2="23"></line><line x1="20" y1="9" x2="23" y2="9"></line><line x1="20" y1="14" x2="23" y2="14"></line><line x1="1" y1="9" x2="4" y2="9"></line><line x1="1" y1="14" x2="4" y2="14"></line></svg>
        </div>
        <p class="rk-start-footer-text">
            <strong>Narzędzia premium wewnątrz artykułu:</strong> W dalszej części tekstu udostępniłem dla Ciebie interaktywne kalkulatory doboru, symulatory hydrauliczne oraz twarde tabele inżynierskie, które pomogą Ci podjąć bezbłędną decyzję inwestycyjną.
        </p>
    </div>

</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tiles = document.querySelectorAll('.rk-start-tile');
    const panels = document.querySelectorAll('.rk-content-panel');

    tiles.forEach(tile => {
        tile.addEventListener('click', function() {
            // Reset active states
            tiles.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Set new active states
            this.classList.add('active');
            const targetId = this.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-wstep",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Pompa obiegowa w instalacji ogrzewania podłogowego – Kompleksowy przewodnik",
    "description": "Poradnik o pompach obiegowych w podłogówce. HOOK, Szybka Odpowiedź, parametry wydajnościowe, tryby pracy (CP/PP) oraz najczęstsze błędy montażowe.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-wstep",
    "name": "Wprowadzenie i parametry startowe pomp w podłogówce",
    "description": "Baza informacji startowych kategoryzująca kluczowe parametry doboru i diagnostyki pomp obiegowych w układach niskotemperaturowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "pompa obiegowa w instalacji ogrzewania podłogowego",
      "szybka odpowiedź ogrzewanie podłogowe pompa",
      "obliczenia hydrauliczne podłogówki wzory",
      "tryb stałociśnieniowy cp vs proporcjonalny pp",
      "zatarte łożyska pompy ceramiczne"
    ],
    "measurementTechnique": "Kategoryzacja parametrów inżynierskich na podstawie podziału treści na trzy moduły tematyczne: dobór, elektronika, montaż.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obliczenia Q i H dla pętli krytycznej wg normy PN-EN 1264.",
        "Analiza trybów pracy pompy EC i energooszczędności.",
        "Diagnostyka błędów instalacyjnych i zanieczyszczeń magnetycznych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-spis-tresci",
    "name": "Kafelkowy Spis Treści (Statyczny)",
    "description": "Interfejs w formie kafelków na górze artykułu, pozwalający na statyczne (bez animacji) przełączanie informacji o tematyce trzech głównych sekcji poradnika.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-stat-dark: #0f172a;
    --rk-stat-slate: #475569;
    --rk-stat-bg: #f8fafc;
    --rk-stat-card: #ffffff;
    --rk-stat-border: #e2e8f0;
    
    /* Kolory akcentujące */
    --rk-stat-blue: #2563eb;
    --rk-stat-red: #ef4444;
    --rk-stat-green: #10b981;
}

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

/* Tagi Long Tail */
.rk-stat-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: var(--rk-stat-card);
}

.rk-mat-tag {
    background: var(--rk-stat-bg);
    color: var(--rk-stat-blue);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    border: 1px solid var(--rk-stat-border);
    transition: all 0.3s;
}

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

/* Nagłówek */
.rk-stat-header {
    padding: 25px 40px 30px;
    background: var(--rk-stat-card);
    color: var(--rk-stat-dark);
}

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

.rk-stat-header p {
    font-size: 15px;
    color: var(--rk-stat-slate);
    margin: 0;
    line-height: 1.7;
    max-width: 800px;
}

/* Układ główny - Tło dla całej sekcji nawigacji i paneli */
.rk-stat-body {
    background: var(--rk-stat-bg);
    border-top: 1px solid var(--rk-stat-border);
    padding: 35px 40px;
}

/* Menu Nawigacyjne Poziome (Tab Bar) */
.rk-stat-nav-bar {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 15px;
    margin-bottom: 35px;
}

.rk-stat-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 16px;
    background: #ffffff;
    border: 1px solid var(--rk-stat-border);
    border-radius: 12px;
    cursor: pointer;
    transition: all 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-stat-btn:hover {
    border-color: var(--rk-stat-blue);
}

.rk-stat-btn.active {
    background: var(--rk-stat-blue);
    border-color: var(--rk-stat-blue);
    color: #ffffff;
    box-shadow: 0 10px 15px -3px rgba(37, 99, 235, 0.2);
}

.rk-stat-btn.active[data-target="panel2"],
.rk-stat-btn.active[data-target="panel3"] {
    background: var(--rk-stat-red);
    border-color: var(--rk-stat-red);
    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.2);
}

.rk-btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    color: var(--rk-stat-slate);
    transition: all 0.2s;
}

.rk-stat-btn.active .rk-btn-icon {
    color: #ffffff;
}

.rk-btn-text {
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-stat-dark);
    margin: 0;
    transition: all 0.2s;
}

.rk-stat-btn.active .rk-btn-text {
    color: #ffffff;
}

/* Prawa Kolumna - Treść i SVG (Statyczne) */
.rk-stat-panel {
    display: none;
    animation: fadeInPanel 0.3s ease-out;
}

.rk-stat-panel.active {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    align-items: center;
}

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

/* Obszar grafiki SVG */
.rk-svg-wrapper {
    background: #ffffff;
    border: 1px solid var(--rk-stat-border);
    border-radius: 16px;
    padding: 30px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
}

.rk-static-svg {
    width: 100%;
    max-width: 320px;
    height: auto;
}

/* Obszar tekstu */
.rk-text-wrapper h3 {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-stat-dark);
    margin: 0 0 15px 0;
}

.rk-text-wrapper p {
    font-size: 15px;
    color: var(--rk-stat-slate);
    line-height: 1.7;
    margin: 0 0 15px 0;
}

.rk-text-wrapper strong {
    color: var(--rk-stat-dark);
}

.rk-text-wrapper a {
    color: var(--rk-stat-blue);
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 700;
}

.rk-consequence-box {
    background: #fef2f2;
    border-left: 4px solid var(--rk-stat-red);
    padding: 18px 20px;
    border-radius: 0 12px 12px 0;
    margin-top: 20px;
}

.rk-consequence-box h4 {
    margin: 0 0 8px 0;
    color: var(--rk-stat-red);
    font-size: 13px;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-consequence-box p {
    margin: 0;
    font-size: 14px;
    color: #991b1b;
    font-weight: 500;
}

@media (max-width: 768px) {
    .rk-stat-nav-bar { grid-template-columns: 1fr; gap: 10px; }
    .rk-stat-panel.active { grid-template-columns: 1fr; gap: 20px; }
    .rk-stat-body { padding: 25px 20px; }
    .rk-stat-header { padding: 25px 20px 20px; }
    .rk-stat-tags { padding: 20px 20px 0; }
    .rk-stat-header h2 { font-size: 24px; }
    .rk-svg-wrapper { padding: 20px; }
}
</style>

<div class="rk-stat-container" id="rkStaticApp">
    
    <div class="rk-stat-tags">
        <span class="rk-mat-tag"># zasada działania pompy obiegowej</span>
        <span class="rk-mat-tag"># montaż pompy na powrocie</span>
        <span class="rk-mat-tag"># zatarte łożyska ceramiczne</span>
        <span class="rk-mat-tag"># filtr magnetyczny 500 µm</span>
    </div>

    <div class="rk-stat-header">
        <h2>Jak działa pompa obiegowa i gdzie powinna być zamontowana?</h2>
        <p>Pompa obiegowa w instalacji ogrzewania podłogowego działa na zasadzie wymuszenia przepływu hydraulicznego w zamkniętym układzie, a miejscem jej montażu – zgodnie z dobrą praktyką inżynierską i normą PN-EN 1264-4 – powinien być układ mieszająco-pompowy.</p>
    </div>

    <div class="rk-stat-body">
        <div class="rk-stat-nav-bar">
            <button class="rk-stat-btn active" data-target="panel1">
                <div class="rk-btn-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <span class="rk-btn-text">Zasada Działania</span>
            </button>
            
            <button class="rk-stat-btn" data-target="panel2">
                <div class="rk-btn-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>
                </div>
                <span class="rk-btn-text">Błąd: Oś Pionowa</span>
            </button>
            
            <button class="rk-stat-btn" data-target="panel3">
                <div class="rk-btn-icon">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                </div>
                <span class="rk-btn-text">Błąd: Brak Filtra</span>
            </button>
        </div>

        <div class="rk-stat-content-area">
            
            <div class="rk-stat-panel active" id="panel1">
                <div class="rk-svg-wrapper">
                    <svg class="rk-static-svg" viewBox="0 0 350 200">
                        <rect x="20" y="20" width="60" height="160" rx="8" fill="#e2e8f0" />
                        <text x="50" y="100" fill="#475569" font-size="12" font-weight="bold" text-anchor="middle" transform="rotate(-90 50 100)">Rozdzielacz</text>
                        
                        <path d="M 80 50 L 250 50" fill="none" stroke="#ef4444" stroke-width="12" stroke-linecap="round"/>
                        <path d="M 80 150 L 250 150" fill="none" stroke="#3b82f6" stroke-width="12" stroke-linecap="round"/>
                        <path d="M 180 50 L 180 150" fill="none" stroke="#cbd5e1" stroke-width="12" stroke-linecap="round"/>

                        <circle cx="180" cy="150" r="16" fill="#f59e0b" />
                        <text x="180" y="185" fill="#f59e0b" font-size="11" font-weight="bold" text-anchor="middle">Zawór Mieszający</text>

                        <rect x="150" y="30" width="60" height="40" rx="8" fill="#1e293b" />
                        <circle cx="180" cy="50" r="14" fill="#334155" />
                        <path d="M 170 50 L 190 50 M 180 40 L 180 60" stroke="#10b981" stroke-width="4" stroke-linecap="round"/>
                        <text x="180" y="18" fill="#1e293b" font-size="11" font-weight="bold" text-anchor="middle">Oś Pozioma (OK)</text>

                        <polygon points="120,44 130,50 120,56" fill="#ffffff" />
                        <polygon points="220,44 230,50 220,56" fill="#ffffff" />
                        <polygon points="230,144 220,150 230,156" fill="#ffffff" />
                        <polygon points="174,100 180,90 186,100" fill="#ffffff" />
                    </svg>
                </div>
                <div class="rk-text-wrapper">
                    <h3>Pojemność i opory hydrauliczne</h3>
                    <p>Wodne ogrzewanie podłogowe charakteryzuje się bardzo dużą pojemnością wodną (zładem) oraz wysokimi oporami wewnętrznymi. Rola pompy polega na przetłoczeniu masy wody przez pętle o małym przekroju (np. rura 16×2 mm posiada prześwit zaledwie 12 mm).</p>
                    <p>Montaż pompy za zaworem mieszającym pozwala na obniżenie temperatury zasilającego czynnika grzewczego z parametrów wysokich (np. 55°C) do bezpiecznych dla <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">jastrychu</a>, czyli <strong>30–45°C</strong>.</p>
                </div>
            </div>

            <div class="rk-stat-panel" id="panel2">
                <div class="rk-svg-wrapper">
                    <svg class="rk-static-svg" viewBox="0 0 350 200">
                        <path d="M 80 100 L 250 100" fill="none" stroke="#cbd5e1" stroke-width="12" stroke-linecap="round"/>
                        
                        <rect x="145" y="60" width="40" height="80" rx="8" fill="#1e293b" />
                        <circle cx="165" cy="100" r="14" fill="#334155" />
                        <path d="M 155 100 L 175 100 M 165 90 L 165 110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                        
                        <circle cx="210" cy="60" r="16" fill="#ef4444" />
                        <path d="M 205 55 L 215 65 M 215 55 L 205 65" stroke="#ffffff" stroke-width="3" stroke-linecap="round"/>
                        <text x="165" y="165" fill="#ef4444" font-size="11" font-weight="bold" text-anchor="middle">Oś Pionowa (BŁĄD)</text>
                    </svg>
                </div>
                <div class="rk-text-wrapper">
                    <h3>Orientacja wału wirnika</h3>
                    <p>Zgodnie z wymogami producentów i fizyką działania pomp bezdławnicowych, urządzenie musi pracować wyłącznie w osi poziomej wału wirnika. Woda instalacyjna pełni w tym układzie funkcję smarującą i chłodzącą dla precyzyjnych elementów ruchomych.</p>
                    <div class="rk-consequence-box">
                        <h4>Konsekwencje błędu</h4>
                        <p>Brak zachowania poziomej orientacji wału skutkuje pracą w warunkach suchego startu i zapowietrzeniem komory. Niszczy to ceramiczne poduszki wodne łożysk w czasie krótszym niż 1 sezon grzewczy.</p>
                    </div>
                </div>
            </div>

            <div class="rk-stat-panel" id="panel3">
                <div class="rk-svg-wrapper">
                    <svg class="rk-static-svg" viewBox="0 0 350 200">
                        <path d="M 80 100 L 250 100" fill="none" stroke="#cbd5e1" stroke-width="12" stroke-linecap="round"/>
                        
                        <circle cx="100" cy="100" r="3" fill="#475569"/>
                        <circle cx="115" cy="98" r="4" fill="#475569"/>
                        <circle cx="125" cy="103" r="2" fill="#475569"/>
                        
                        <rect x="150" y="80" width="60" height="40" rx="8" fill="#1e293b" />
                        <circle cx="180" cy="100" r="14" fill="#334155" />
                        <path d="M 170 100 L 190 100 M 180 90 L 180 110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"/>
                        
                        <circle cx="175" cy="95" r="3" fill="#000000"/>
                        <circle cx="185" cy="105" r="4" fill="#000000"/>

                        <path d="M 140 70 L 140 130" stroke="#ef4444" stroke-width="3" stroke-dasharray="4 4" />
                        <text x="140" y="60" fill="#ef4444" font-size="11" font-weight="bold" text-anchor="middle">Brak Filtra!</text>
                    </svg>
                </div>
                <div class="rk-text-wrapper">
                    <h3>Zabezpieczenie magnetyczne</h3>
                    <p>Nowoczesne pompy cyrkulacyjne (silniki EC) posiadają w wirniku niezwykle silne magnesy neodymowe. Zjawisko to sprawia, że pompa naturalnie przyciąga z instalacji wszelkie metaliczne zanieczyszczenia i rdzę.</p>
                    <div class="rk-consequence-box">
                        <h4>Konsekwencje błędu</h4>
                        <p>Montaż bez filtra z wkładem magnetycznym o gęstości siatki minimum 500 µm naraża wirnik na zablokowanie przez cząstki magnetytu. Trwałe zablokowanie obrotu wału w 90% przypadków doprowadza do przepalenia stojana.</p>
                    </div>
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-stat-btn');
    const panels = document.querySelectorAll('.rk-stat-panel');

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Remove active classes
            btns.forEach(b => b.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Add active class to clicked button and target panel
            this.classList.add('active');
            const targetId = this.getAttribute('data-target');
            document.getElementById(targetId).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-dzialanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak działa pompa obiegowa w instalacji ogrzewania podłogowego i gdzie powinna być zamontowana?",
    "description": "Zasady działania i wymogi montażowe (PN-EN 1264-4) pompy obiegowej w układzie mieszającym. Dowiedz się, dlaczego orientacja wału i filtr magnetyczny są krytyczne.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-montaz-pompy",
    "name": "Wytyczne Montażowe i Parametry Pracy Pompy Obiegowej 2026",
    "description": "Zestawienie statycznych zaleceń inżynierskich dotyczących pozycjonowania pomp bezdławnicowych oraz konieczności filtracji.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "zasada działania pompy obiegowej",
      "montaż pompy na powrocie",
      "zatarte łożyska ceramiczne",
      "filtr magnetyczny 500 µm"
    ],
    "measurementTechnique": "Analiza schematyczna błędów instalacyjnych powodujących pracę na sucho lub blokadę wirnika przez zanieczyszczenia magnetyczne.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Oś pozioma wału: Wymagana dla zachowania żywotności łożysk ceramicznych (zapobieganie suchemu startowi).",
        "Zabezpieczenie magnetyczne: Filtr z siatką min. 500 µm jako ochrona przed zatarciem silnika EC magnetytem z instalacji.",
        "Miejsce montażu: Przy układzie mieszającym w celu redukcji parametrów zasilania z 55°C do 30-45°C."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-diagnostyka",
    "name": "Interaktywny Przewodnik Montażowy",
    "description": "Statyczny interfejs diagnostyczny z zakładkami, ilustrujący poprawne zasady wbudowania pompy obiegowej oraz techniczne konsekwencje nieprzestrzegania instrukcji.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-char-dark: #0f172a;
    --rk-char-slate: #475569;
    --rk-char-bg: #f8fafc;
    --rk-char-card: #ffffff;
    --rk-char-border: #e2e8f0;
    
    /* Kolory funkcyjne */
    --rk-char-blue: #2563eb;
    --rk-char-blue-light: #eff6ff;
    --rk-char-green: #10b981;
    --rk-char-red: #ef4444;
    --rk-char-orange: #f59e0b;
}

.rk-char-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-char-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(37, 99, 235, 0.1);
    border: 1px solid rgba(37, 99, 235, 0.2);
    overflow: hidden;
}

/* Nagłówek i Teoria (Układ jednowymiarowy pionowy) */
.rk-char-theory-grid {
    display: flex;
    flex-direction: column;
    border-bottom: 1px solid var(--rk-char-border);
}

.rk-char-text-part {
    padding: 40px;
    background: linear-gradient(145deg, var(--rk-char-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

.rk-char-text-part h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 20px 0;
    line-height: 1.3;
    color: #ffffff;
}

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

.rk-char-text-part a {
    color: #93c5fd;
    text-decoration: underline;
    text-underline-offset: 2px;
    font-weight: 700;
}

/* Kontenery parametrów ustawione obok siebie na desktopie */
.rk-param-boxes-wrapper {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    margin-top: 30px;
}

.rk-param-box {
    background: rgba(255,255,255,0.05);
    border-left: 3px solid var(--rk-char-blue);
    padding: 20px;
    border-radius: 0 12px 12px 0;
    font-size: 14px;
    line-height: 1.6;
}

.rk-param-box strong {
    color: #60a5fa;
    display: block;
    margin-bottom: 8px;
    font-size: 15px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Ilustracja Q i H (SVG) - Wyśrodkowana na pełnej szerokości */
.rk-char-illustration {
    background: #ffffff;
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    position: relative;
    border-top: 1px solid var(--rk-char-border);
}

.rk-illu-title {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-char-dark);
    text-transform: uppercase;
    margin-bottom: 30px;
    letter-spacing: 1px;
}

/* Interaktywne Porównanie Pomp */
.rk-char-compare-sec {
    padding: 40px;
    background: var(--rk-char-bg);
}

.rk-comp-header {
    text-align: center;
    margin-bottom: 30px;
}

.rk-comp-header h3 {
    font-size: 22px;
    font-weight: 800;
    color: var(--rk-char-dark);
    margin: 0 0 10px 0;
}

/* Zakładki (Tabs) */
.rk-tabs-nav {
    display: flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    max-width: 700px;
    margin: 0 auto 35px;
    position: relative;
}

.rk-tab-btn {
    flex: 1;
    text-align: center;
    padding: 14px 10px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-char-slate);
    cursor: pointer;
    border: none;
    background: transparent;
    border-radius: 12px;
    transition: all 0.3s;
    position: relative;
    z-index: 2;
}

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

.rk-tab-glider {
    position: absolute;
    top: 6px; left: 6px;
    height: calc(100% - 12px);
    width: calc(33.333% - 4px);
    background: var(--rk-char-blue);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    z-index: 1;
}

/* Kafelki z danymi (zamiast tabeli) */
.rk-data-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-data-card {
    background: var(--rk-char-card);
    border: 1px solid var(--rk-char-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.3s ease;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.rk-data-icon {
    margin: 0 auto 12px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--rk-char-blue);
    transition: color 0.3s;
}

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

.rk-data-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-char-slate);
    text-transform: uppercase;
}

/* Animacja i status dla wybranej technologii */
.rk-tech-visual {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-char-border);
    padding: 25px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 40px;
}

.rk-tech-desc {
    flex: 1;
}

.rk-tech-badge {
    display: inline-flex;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    margin-bottom: 15px;
    transition: all 0.3s;
}

.rk-tech-desc p {
    font-size: 14px;
    color: var(--rk-char-slate);
    line-height: 1.6;
    margin: 0;
}

/* SVG Animacje globalne */
.rk-anim-flow { stroke-dasharray: 10; animation: pipeFlow 2s linear infinite; }
@keyframes pipeFlow { to { stroke-dashoffset: -20; } }

/* Dynamiczne stany dla technologii */
.state-ac .rk-data-val { color: var(--rk-char-red); }
.state-ac .rk-data-icon { color: var(--rk-char-red); }
.state-ac .rk-tech-badge { background: #fee2e2; color: var(--rk-char-red); }
.state-ac .svg-ring { stroke: var(--rk-char-red); }

.state-ec-const .rk-data-val { color: var(--rk-char-orange); }
.state-ec-const .rk-data-icon { color: var(--rk-char-orange); }
.state-ec-const .rk-tech-badge { background: #fef3c7; color: #b45309; }
.state-ec-const .svg-ring { stroke: var(--rk-char-orange); }

.state-ec-auto .rk-data-val { color: var(--rk-char-green); }
.state-ec-auto .rk-data-icon { color: var(--rk-char-green); }
.state-ec-auto .rk-tech-badge { background: #dcfce7; color: var(--rk-char-green); }
.state-ec-auto .svg-ring { stroke: var(--rk-char-green); }

@media (max-width: 768px) {
    .rk-param-boxes-wrapper { grid-template-columns: 1fr; gap: 15px; }
    .rk-char-text-part, .rk-char-illustration, .rk-char-compare-sec { padding: 25px 20px; }
    .rk-data-grid { grid-template-columns: 1fr 1fr; }
    .rk-tech-visual { flex-direction: column; text-align: center; gap: 20px; }
    .rk-tab-btn { font-size: 12px; padding: 12px 5px; }
}

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

<div class="rk-char-container" id="rkCharApp">
    
    <div class="rk-char-theory-grid">
        <div class="rk-char-text-part">
            <h2>Jak dobrać parametry pompy obiegowej i jak czytać jej charakterystykę?</h2>
            <p>Prawidłowy dobór pompy obiegowej do ogrzewania podłogowego wymaga określenia dwóch punktów roboczych: wydajności <strong>Q</strong> wyrażonej w m³/h oraz wysokości podnoszenia <strong>H</strong> wyrażonej w m H₂O (lub kPa), zgodnie z procedurą projektową <a href="https://projekt-ogrzewania.pl/pn-en-1264-norma-ktora-definiuje-ogrzewanie-podlogowe/">normy PN-EN 1264</a>.</p>
            <p>Punkt pracy instalacji musi przecinać się z krzywą charakterystyki pompy w obszarze jej najwyższej sprawności, czyli w środkowej 1/3 części wykresu.</p>
            
            <div class="rk-param-boxes-wrapper">
                <div class="rk-param-box">
                    <strong>Wydajność (Q)</strong>
                    Określa strumień objętościowy wody, jaki musi przepłynąć w ciągu godziny, aby dostarczyć moc cieplną przy założonym schłodzeniu czynnika (optymalne ΔT wynosi 5 K).
                </div>
                
                <div class="rk-param-box" style="border-color: #a78bfa;">
                    <strong style="color: #c4b5fd;">Wysokość podnoszenia (H)</strong>
                    Parametr określający zdolność pompy do pokonania sumarycznych strat ciśnienia (tarcia) w <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">najdłuższej pętli grzewczej</a>. Nie jest to fizyczna wysokość budynku! Ciśnienie statyczne się równoważy.
                </div>
            </div>
        </div>
        
        <div class="rk-char-illustration">
            <div class="rk-illu-title">Fizyka układu zamkniętego</div>
            <svg viewBox="0 0 200 250" style="width: 100%; max-width: 250px; height: auto;">
                <path d="M 20 100 L 100 30 L 180 100 L 180 230 L 20 230 Z" fill="none" stroke="#cbd5e1" stroke-width="3" stroke-dasharray="4 4"/>
                <line x1="20" y1="160" x2="180" y2="160" stroke="#cbd5e1" stroke-width="2" stroke-dasharray="4 4"/>
                
                <rect x="70" y="70" width="60" height="130" rx="10" fill="none" stroke="#e2e8f0" stroke-width="12"/>
                <path d="M 70 200 L 70 70 A 10 10 0 0 1 80 60 L 120 60 A 10 10 0 0 1 130 70 L 130 200" fill="none" stroke="#3b82f6" stroke-width="6" class="rk-anim-flow"/>
                
                <circle cx="100" cy="200" r="18" fill="#1e293b"/>
                <circle cx="100" cy="200" r="10" fill="#334155"/>
                
                <path d="M 145 100 L 145 140 M 140 135 L 145 140 L 150 135" fill="none" stroke="#10b981" stroke-width="2"/>
                <text x="155" y="125" font-size="11" fill="#10b981" font-weight="bold">ΔH = 0</text>
                
                <path d="M 55 140 L 55 100 M 50 105 L 55 100 L 60 105" fill="none" stroke="#ef4444" stroke-width="2"/>
                
                <text x="100" y="130" font-size="11" fill="#f59e0b" font-weight="bold" text-anchor="middle">Tarcie (H)</text>
            </svg>
            <p style="font-size: 14px; color: var(--rk-char-slate); text-align: center; margin-top: 25px; max-width: 600px; font-weight: 500; line-height: 1.6;">
                W zamkniętym układzie podłogówki siły grawitacji się znoszą. Pompa pokonuje wyłącznie opory tarcia rur (H).
            </p>
        </div>
    </div>

    <div class="rk-char-compare-sec" id="rkCompareStage">
        <div class="rk-comp-header">
            <h3>Porównanie technologii pomp obiegowych</h3>
            <p style="font-size: 14px; color: var(--rk-char-slate);">Wybierz technologię, aby sprawdzić jej parametry eksploatacyjne i koszty energii.</p>
        </div>

        <div class="rk-tabs-nav">
            <button class="rk-tab-btn active" data-index="0" data-type="ac">Pompa AC (Starszy typ)</button>
            <button class="rk-tab-btn" data-index="1" data-type="ec-const">Pompa EC (Biegi stałe)</button>
            <button class="rk-tab-btn" data-index="2" data-type="ec-auto">Pompa EC (AUTOADAPT)</button>
            <div class="rk-tab-glider" id="rkTabGlider"></div>
        </div>

        <div class="rk-data-grid" id="rkDataGrid">
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg></div>
                <div class="rk-data-val" id="valPow">45-90 W</div>
                <div class="rk-data-lbl">Pobór Mocy</div>
            </div>
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg></div>
                <div class="rk-data-val" id="valEei">≥ 0,40</div>
                <div class="rk-data-lbl">Wskaźnik EEI</div>
            </div>
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-data-val" id="valReg" style="font-size: 16px;">Manualna (3 biegi)</div>
                <div class="rk-data-lbl">Regulacja</div>
            </div>
            <div class="rk-data-card">
                <div class="rk-data-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><line x1="12" y1="1" x2="12" y2="23"></line><path d="M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <div class="rk-data-val" id="valCost">~288 PLN</div>
                <div class="rk-data-lbl">Roczny Koszt Energii</div>
            </div>
        </div>

        <div class="rk-tech-visual state-ac" id="rkTechVisualArea">
            <div style="width: 120px; height: 120px; position: relative;">
                <svg viewBox="0 0 100 100" width="100%" height="100%">
                    <circle cx="50" cy="50" r="45" fill="#f1f5f9" stroke="#cbd5e1" stroke-width="2"/>
                    <circle cx="50" cy="50" r="35" fill="none" stroke-width="4" class="svg-ring"/>
                    <circle cx="50" cy="50" r="12" fill="#1e293b"/>
                </svg>
            </div>
            <div class="rk-tech-desc">
                <div class="rk-tech-badge" id="descBadge">Technologia Przestarzała</div>
                <p id="descText">Pompa asynchroniczna pracująca ze stałą, wysoką prędkością. Zużywa maksymalną ilość energii niezależnie od tego, czy zawory termostatyczne są otwarte czy zamknięte. Niezgodna z obecną dyrektywą ErP.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const btns = document.querySelectorAll('.rk-tab-btn');
    const glider = document.getElementById('rkTabGlider');
    const visualArea = document.getElementById('rkTechVisualArea');
    const dataGrid = document.getElementById('rkDataGrid');
    
    // Data Elements
    const valPow = document.getElementById('valPow');
    const valEei = document.getElementById('valEei');
    const valReg = document.getElementById('valReg');
    const valCost = document.getElementById('valCost');
    const descBadge = document.getElementById('descBadge');
    const descText = document.getElementById('descText');

    const pumpData = {
        "ac": {
            pow: "45-90 W", eei: "≥ 0,40", reg: "Manualna (3 biegi)", cost: "144-288 PLN",
            badge: "Technologia Przestarzała",
            desc: "Pompa asynchroniczna pracująca ze stałą, wysoką prędkością. Zużywa maksymalną ilość energii niezależnie od tego, czy zawory termostatyczne są otwarte czy zamknięte. Niezgodna z obecną dyrektywą ErP."
        },
        "ec-const": {
            pow: "12-45 W", eei: "≤ 0,23", reg: "Proporcjonalna", cost: "38-144 PLN",
            badge: "Standard Rynkowy",
            desc: "Pompa z silnikiem elektronicznie komutowanym (EC). Oferuje ręczną zmianę charakterystyki pracy. Jest znacznie oszczędniejsza, ale wymaga ręcznego dopasowania krzywej do instalacji."
        },
        "ec-auto": {
            pow: "4-25 W", eei: "≤ 0,20", reg: "Automatyczna (ADAPT)", cost: "12-80 PLN",
            badge: "Najwyższa Efektywność",
            desc: "Inteligentna pompa z silnikiem EC, która automatycznie analizuje opory instalacji. Sama dobiera minimalne wymagane ciśnienie i przepływ, gwarantując najniższe możliwe zużycie prądu i ciszę."
        }
    };

    btns.forEach(btn => {
        btn.addEventListener('click', function() {
            // Glider positioning
            const index = this.getAttribute('data-index');
            let transformVal = 0;
            
            // Calculating transform based on index and viewport width
            if (window.innerWidth <= 768) {
                transformVal = index * 100;
                glider.style.transform = `translateX(calc(${transformVal}% + ${index * 4}px))`;
            } else {
                transformVal = index * 100;
                glider.style.transform = `translateX(calc(${transformVal}% + ${index * 4}px))`;
            }

            // Colors update
            let color = '';
            const type = this.getAttribute('data-type');
            if(type === 'ac') color = '#ef4444';
            if(type === 'ec-const') color = '#f59e0b';
            if(type === 'ec-auto') color = '#10b981';
            glider.style.backgroundColor = color;

            // Active Class
            btns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');

            // Data Population
            const d = pumpData[type];
            valPow.textContent = d.pow;
            valEei.textContent = d.eei;
            valReg.textContent = d.reg;
            valCost.textContent = d.cost;
            descBadge.textContent = d.badge;
            descText.textContent = d.desc;

            // Visual State Update
            visualArea.className = `rk-tech-visual state-${type}`;
            dataGrid.className = `rk-data-grid state-${type}`;
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-dobor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak dobrać parametry pompy obiegowej do podłogówki i jak czytać jej charakterystykę?",
    "description": "Poradnik wyjaśniający inżynieryjne parametry przepływu (Q) i wysokości podnoszenia (H) w pompach obiegowych. Porównanie technologii AC, EC i AUTOADAPT.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-technologie",
    "name": "Porównanie technologii pomp obiegowych (AC vs EC) 2026",
    "description": "Zestawienie parametrów technicznych i kosztów eksploatacji dla 3 generacji pomp cyrkulacyjnych stosowanych w instalacjach ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "parametry pompy obiegowej do podłogówki",
      "wydajność pompy obiegowej",
      "wysokość podnoszenia pompy co to jest",
      "wskaźnik eei w pompach",
      "koszt energii pompy obiegowej"
    ],
    "measurementTechnique": "Analiza wskaźników zużycia energii elektrycznej i krzywych pracy dla pomp asynchronicznych oraz elektronicznie komutowanych.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Pompa AC: 45-90W, Koszt ~288 PLN/rok",
        "Pompa EC (Stała): 12-45W, Koszt ~144 PLN/rok",
        "Pompa EC (Autoadapt): 4-25W, Koszt ~80 PLN/rok"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-technologie",
    "name": "Kalkulator Oszczędności Technologii Pomp",
    "description": "Interaktywny moduł edukacyjny z zakładkami, pozwalający inwestorowi porównać roczne koszty poboru mocy oraz efektywność energetyczną różnych typów pomp obiegowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-calc-dark: #1e1b4b; /* Deep Indigo */
    --rk-calc-primary: #6366f1; /* Indigo */
    --rk-calc-primary-light: #e0e7ff;
    --rk-calc-accent: #f97316; /* Orange */
    --rk-calc-bg: #f8fafc;
    --rk-calc-card: #ffffff;
    --rk-calc-text: #475569;
    --rk-calc-border: #e2e8f0;
}

.rk-calc-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-calc-card);
    border-radius: 24px;
    box-shadow: 0 20px 50px -10px rgba(99, 102, 241, 0.15);
    border: 1px solid rgba(99, 102, 241, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-calc-header {
    padding: 35px 40px;
    background: linear-gradient(135deg, var(--rk-calc-dark) 0%, #312e81 100%);
    color: #ffffff;
    text-align: center;
}

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

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

/* Interaktywny Kalkulator - Layout */
.rk-calc-app {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-bottom: 1px solid var(--rk-calc-border);
    background: var(--rk-calc-bg);
}

/* Lewa Kolumna - Suwaki */
.rk-calc-controls {
    padding: 35px;
    border-right: 1px solid var(--rk-calc-border);
    background: var(--rk-calc-card);
}

.rk-ctrl-box {
    margin-bottom: 30px;
}

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

.rk-ctrl-label {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-ctrl-val-box {
    background: var(--rk-calc-primary-light);
    color: var(--rk-calc-primary);
    padding: 4px 12px;
    border-radius: 8px;
    font-size: 15px;
    font-weight: 900;
    font-variant-numeric: tabular-nums;
}

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

.rk-range::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-calc-primary);
    cursor: pointer;
    box-shadow: 0 2px 6px rgba(99, 102, 241, 0.4);
    border: 3px solid #ffffff;
    transition: transform 0.1s;
}

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

.rk-range-desc {
    display: block;
    margin-top: 8px;
    font-size: 12px;
    color: #64748b;
    font-weight: 500;
}

/* Prawa Kolumna - Wyniki i Wykres SVG */
.rk-calc-visual {
    padding: 35px;
    display: flex;
    flex-direction: column;
}

.rk-result-row {
    display: flex;
    gap: 15px;
    margin-bottom: 25px;
}

.rk-res-card {
    flex: 1;
    background: var(--rk-calc-card);
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 15px;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    position: relative;
    overflow: hidden;
}

.rk-res-card::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0; height: 4px;
    background: var(--rk-calc-primary);
}

.rk-res-card:nth-child(2)::before { background: var(--rk-calc-accent); }

.rk-res-val {
    font-size: 26px;
    font-weight: 900;
    color: var(--rk-calc-dark);
    margin-bottom: 4px;
    font-variant-numeric: tabular-nums;
}

.rk-res-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-calc-text);
    text-transform: uppercase;
}

.rk-graph-box {
    flex: 1;
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-radius: 16px;
    padding: 20px;
    position: relative;
}

.rk-graph-title {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-calc-dark);
    text-align: center;
    margin-bottom: 15px;
}

/* Wyjaśnienie Krok po Kroku */
.rk-steps-area {
    padding: 40px;
    background: #ffffff;
}

.rk-step-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
}

.rk-step-card {
    background: var(--rk-calc-bg);
    border-radius: 16px;
    padding: 25px;
    border: 1px solid var(--rk-calc-border);
}

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

.rk-step-badge {
    width: 28px;
    height: 28px;
    background: var(--rk-calc-primary);
    color: white;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    font-weight: 900;
}

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

.rk-step-card a {
    color: var(--rk-calc-primary);
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.rk-math-block {
    background: #ffffff;
    border: 1px solid var(--rk-calc-border);
    border-left: 4px solid var(--rk-calc-primary);
    padding: 12px 15px;
    border-radius: 8px;
    font-family: monospace;
    font-size: 14px;
    color: var(--rk-calc-dark);
    margin: 15px 0;
    overflow-x: auto;
}

.rk-math-block strong {
    color: var(--rk-calc-primary);
    font-size: 15px;
}

.rk-step-card ul {
    margin: 0 0 15px 0;
    padding-left: 20px;
    font-size: 13px;
    color: var(--rk-calc-text);
    line-height: 1.6;
}

.rk-step-card li { margin-bottom: 4px; }

@media (max-width: 768px) {
    .rk-calc-app, .rk-step-grid { grid-template-columns: 1fr; }
    .rk-calc-controls { border-right: none; border-bottom: 1px solid var(--rk-calc-border); padding: 25px; }
    .rk-calc-visual, .rk-steps-area, .rk-calc-header { padding: 25px; }
    .rk-calc-header h2 { font-size: 24px; }
}
</style>

<div class="rk-calc-container" id="rkPumpCalculatorApp">
    
    <div class="rk-calc-header">
        <h2>Jak obliczyć wydajność i wysokość podnoszenia pompy obiegowej? Kalkulator krok po kroku</h2>
        <p>Obliczenie parametrów pompy obiegowej opiera się na matematycznym wyznaczeniu przepływu masowego oraz sumy strat ciśnienia liniowego i miejscowego. Sprawdź parametry interaktywnie.</p>
    </div>

    <div class="rk-calc-app">
        <div class="rk-calc-controls">
            
            <div class="rk-ctrl-box">
                <div class="rk-ctrl-header">
                    <span class="rk-ctrl-label">Moc instalacji (Φ)</span>
                    <span class="rk-ctrl-val-box" id="valPhiOut">12 kW</span>
                </div>
                <input type="range" id="rkInpPhi" class="rk-range" min="4" max="25" step="1" value="12">
                <span class="rk-range-desc">Projektowe obciążenie cieplne na podstawie <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">obliczeń OZC</a>.</span>
            </div>

            <div class="rk-ctrl-box">
                <div class="rk-ctrl-header">
                    <span class="rk-ctrl-label">Różnica temp. (ΔT)</span>
                    <span class="rk-ctrl-val-box" id="valDtOut">5 K</span>
                </div>
                <input type="range" id="rkInpDt" class="rk-range" min="3" max="10" step="1" value="5">
                <span class="rk-range-desc"><a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Spadek temperatury (ΔT)</a> między zasilaniem a powrotem.</span>
            </div>

            <div class="rk-ctrl-box">
                <div class="rk-ctrl-header">
                    <span class="rk-ctrl-label">Najdłuższa pętla (l)</span>
                    <span class="rk-ctrl-val-box" id="valLenOut">100 m</span>
                </div>
                <input type="range" id="rkInpLen" class="rk-range" min="50" max="150" step="5" value="100">
                <span class="rk-range-desc">Krytyczna <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">długość pętli ogrzewania podłogowego</a> generująca największe opory.</span>
            </div>

        </div>

        <div class="rk-calc-visual">
            <div class="rk-result-row">
                <div class="rk-res-card">
                    <div class="rk-res-val" id="resQ">2.06</div>
                    <div class="rk-res-lbl">Wydajność (Q) [m³/h]</div>
                </div>
                <div class="rk-res-card">
                    <div class="rk-res-val" id="resH">2.21</div>
                    <div class="rk-res-lbl">Wys. podnoszenia (H) [m]</div>
                </div>
            </div>

            <div class="rk-graph-box">
                <div class="rk-graph-title">Wykres Punktu Pracy Pompy</div>
                <svg viewBox="0 0 300 150" style="width: 100%; height: auto; display: block; overflow: visible;">
                    <line x1="20" y1="130" x2="280" y2="130" stroke="#cbd5e1" stroke-width="1" />
                    <line x1="20" y1="10" x2="20" y2="130" stroke="#cbd5e1" stroke-width="1" />
                    <text x="280" y="145" font-size="10" fill="#64748b" text-anchor="end">Q (Przepływ)</text>
                    <text x="5" y="15" font-size="10" fill="#64748b" text-anchor="start">H</text>

                    <path d="M 20 20 Q 150 20 280 130" fill="none" stroke="#e2e8f0" stroke-width="4" stroke-dasharray="5 5" />
                    
                    <path id="svgSystemCurve" d="M 20 130 Q 80 130 150 70" fill="none" stroke="#f97316" stroke-width="3" />
                    
                    <line id="svgLineX" x1="20" y1="70" x2="150" y2="70" stroke="#6366f1" stroke-width="1" stroke-dasharray="3 3" />
                    <line id="svgLineY" x1="150" y1="130" x2="150" y2="70" stroke="#6366f1" stroke-width="1" stroke-dasharray="3 3" />
                    
                    <circle id="svgDot" cx="150" cy="70" r="6" fill="#6366f1" />
                </svg>
            </div>
        </div>
    </div>

    <div class="rk-steps-area">
        <div class="rk-step-grid">
            
            <div class="rk-step-card">
                <h3><div class="rk-step-badge">1</div> Obliczenie wydajności (Q)</h3>
                <p>Do wyznaczenia przepływu stosujemy podstawowe równanie wymiany ciepła przekształcone do postaci strumienia objętości.</p>
                
                <div class="rk-math-block">Q = Φ / (1,163 × ΔT)</div>
                
                <ul>
                    <li><strong>Q</strong> – wydajność pompy [m³/h]</li>
                    <li><strong>Φ</strong> – obciążenie cieplne instalacji [kW]</li>
                    <li><strong>ΔT</strong> – różnica temperatur zasilanie/powrót [K]</li>
                    <li><strong>1,163</strong> – stała gęstości/ciepła wody</li>
                </ul>

                <p style="font-size: 13px; margin-top: 15px;"><strong>Przykład dla ustalonego suwaka:</strong><br>
                Dla <span id="txtPhi">12</span> kW i ΔT = <span id="txtDt">5</span> K:</p>
                <div class="rk-math-block" style="border-left-color: #cbd5e1; background: #f8fafc;">
                    Q = <span id="txtPhi2">12</span> / (1,163 × <span id="txtDt2">5</span>)<br>
                    Q ≈ <strong id="txtResQ">2.06</strong> m³/h
                </div>
            </div>

            <div class="rk-step-card">
                <h3><div class="rk-step-badge">2</div> Wyznaczenie podnoszenia (H)</h3>
                <p>Wysokość podnoszenia obliczamy z sumy strat ciśnienia najdłuższego obiegu (pętli krytycznej).</p>
                
                <div class="rk-math-block">
                    Δp<sub>tot</sub> = (R × l + Δp<sub>m</sub>) × 1,3<br>
                    H = Δp<sub>tot</sub> / 10000
                </div>

                <ul>
                    <li><strong>R</strong> – opór rury (założono 120 Pa/m)</li>
                    <li><strong>l</strong> – długość najdłuższej pętli [m]</li>
                    <li><strong>Δp<sub>m</sub></strong> – opory miejscowe (założono 5000 Pa)</li>
                    <li><strong>1,3</strong> – współczynnik bezpieczeństwa</li>
                </ul>

                <p style="font-size: 13px; margin-top: 15px;"><strong>Przykład dla pętli <span id="txtLen">100</span> m:</strong></p>
                <div class="rk-math-block" style="border-left-color: #cbd5e1; background: #f8fafc;">
                    Δp<sub>tot</sub> = (120 × <span id="txtLen2">100</span> + 5000) × 1,3<br>
                    Δp<sub>tot</sub> = <span id="txtPa">22100</span> Pa<br>
                    H = <span id="txtPa2">22100</span> / 10000 = <strong id="txtResH">2.21</strong> m H₂O
                </div>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Input elements
    const inpPhi = document.getElementById('rkInpPhi');
    const inpDt = document.getElementById('rkInpDt');
    const inpLen = document.getElementById('rkInpLen');

    // UI Value Output elements
    const valPhiOut = document.getElementById('valPhiOut');
    const valDtOut = document.getElementById('valDtOut');
    const valLenOut = document.getElementById('valLenOut');

    // Result elements
    const resQ = document.getElementById('resQ');
    const resH = document.getElementById('resH');

    // Text replacement elements
    const txtPhi = document.getElementById('txtPhi');
    const txtPhi2 = document.getElementById('txtPhi2');
    const txtDt = document.getElementById('txtDt');
    const txtDt2 = document.getElementById('txtDt2');
    const txtResQ = document.getElementById('txtResQ');
    
    const txtLen = document.getElementById('txtLen');
    const txtLen2 = document.getElementById('txtLen2');
    const txtPa = document.getElementById('txtPa');
    const txtPa2 = document.getElementById('txtPa2');
    const txtResH = document.getElementById('txtResH');

    // SVG elements
    const svgSystemCurve = document.getElementById('svgSystemCurve');
    const svgDot = document.getElementById('svgDot');
    const svgLineX = document.getElementById('svgLineX');
    const svgLineY = document.getElementById('svgLineY');

    // Graph configuration
    const graphWidth = 260; // 280 - 20
    const graphHeight = 120; // 130 - 10
    const maxQ = 6; // max m3/h on graph
    const maxH = 6; // max m H2O on graph

    function updateCalculator() {
        const phi = parseFloat(inpPhi.value);
        const dt = parseFloat(inpDt.value);
        const len = parseFloat(inpLen.value);

        // UI Updates
        valPhiOut.textContent = phi + ' kW';
        valDtOut.textContent = dt + ' K';
        valLenOut.textContent = len + ' m';

        // Calculations
        const qVal = phi / (1.163 * dt);
        
        const R = 120; // Pa/m fixed for simulation
        const pm = 5000; // Pa fixed local resistance
        const pTot = (R * len + pm) * 1.3;
        const hVal = pTot / 10000;

        // Set Results
        resQ.textContent = qVal.toFixed(2);
        resH.textContent = hVal.toFixed(2);

        // Update Text Logic block
        txtPhi.textContent = phi; txtPhi2.textContent = phi;
        txtDt.textContent = dt; txtDt2.textContent = dt;
        txtResQ.textContent = qVal.toFixed(2);
        
        txtLen.textContent = len; txtLen2.textContent = len;
        txtPa.textContent = pTot.toFixed(0); txtPa2.textContent = pTot.toFixed(0);
        txtResH.textContent = hVal.toFixed(2);

        // Update SVG Graph
        // Calculate coordinates (Origin is at 20, 130)
        let cx = 20 + (qVal / maxQ) * graphWidth;
        let cy = 130 - (hVal / maxH) * graphHeight;

        // Clamp values for visual sanity if they exceed graph
        if(cx > 280) cx = 280;
        if(cy < 10) cy = 10;

        // Update Dot and Lines
        svgDot.setAttribute('cx', cx);
        svgDot.setAttribute('cy', cy);
        
        svgLineX.setAttribute('x2', cx);
        svgLineX.setAttribute('y1', cy);
        svgLineX.setAttribute('y2', cy);
        
        svgLineY.setAttribute('x1', cx);
        svgLineY.setAttribute('x2', cx);
        svgLineY.setAttribute('y1', 130);
        svgLineY.setAttribute('y2', cy);

        // Draw parabolic system curve
        // Parabola equation: H = k * Q^2 -> passing through origin (20,130) and point (cx,cy)
        // Control point for quadratic bezier to approximate parabola:
        const cpX = 20 + (cx - 20) / 2;
        const cpY = 130; 
        svgSystemCurve.setAttribute('d', `M 20 130 Q ${cpX} ${cpY} ${cx} ${cy}`);
    }

    // Listeners
    inpPhi.addEventListener('input', updateCalculator);
    inpDt.addEventListener('input', updateCalculator);
    inpLen.addEventListener('input', updateCalculator);

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

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-kalkulator",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak obliczyć wydajność i wysokość podnoszenia pompy obiegowej? Kalkulator krok po kroku",
    "description": "Zestawienie inżynierskich wzorów na przepływ i straty ciśnienia w podłogówce. Interaktywny algorytm wyliczający punkt pracy pompy obiegowej.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-algorytm",
    "name": "Algorytm doboru parametrów Q i H pompy obiegowej 2026",
    "description": "Matematyczny model obliczeniowy strat ciśnienia i przepływu objętościowego dla pętli ogrzewania podłogowego.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "obliczenie wydajności pompy obiegowej",
      "wysokość podnoszenia pompy wzór",
      "kalkulator doboru pompy obiegowej",
      "opory miejscowe i liniowe podłogówka",
      "punkt pracy pompy wykres"
    ],
    "measurementTechnique": "Równanie wymiany ciepła oraz sumowanie strat ciśnienia liniowego (120 Pa/m) i miejscowego z współczynnikiem 1.3.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Q [m3/h] = Moc [kW] / (1.163 * Delta T)",
        "H [m H2O] = (Opory rur + Opory zaworów) * 1.3 / 10000"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-kalkulator",
    "name": "Kalkulator Punktu Pracy Pompy Obiegowej",
    "description": "Narzędzie inżynierskie pozwalające na dynamiczne wyliczenie parametrów Q i H oraz narysowanie charakterystyki instalacji na podstawie suwaków.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-mod-dark: #0f172a;
    --rk-mod-slate: #334155;
    --rk-mod-bg: #f8fafc;
    --rk-mod-card: #ffffff;
    --rk-mod-border: #e2e8f0;
    
    /* Temat kolorystyczny - Techniczny Teal */
    --rk-mod-teal: #0d9488;
    --rk-mod-teal-light: #ccfbf1;
    --rk-mod-teal-dark: #115e59;
    --rk-mod-red: #ef4444;
    --rk-mod-red-light: #fee2e2;
}

.rk-mod-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-mod-card);
    border-radius: 24px;
    box-shadow: 0 20px 40px -15px rgba(13, 148, 136, 0.15);
    border: 1px solid rgba(13, 148, 136, 0.2);
    overflow: hidden;
}

/* Nagłówek */
.rk-mod-header {
    padding: 35px 40px;
    background: linear-gradient(135deg, var(--rk-mod-dark) 0%, #1e293b 100%);
    color: #ffffff;
}

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

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

/* Układ główny */
.rk-mod-layout {
    display: grid;
    grid-template-columns: 380px 1fr;
    border-bottom: 1px solid var(--rk-mod-border);
}

/* Panel Sterowania */
.rk-mod-controls {
    padding: 35px;
    background: var(--rk-mod-bg);
    border-right: 1px solid var(--rk-mod-border);
}

.rk-ctrl-group {
    margin-bottom: 30px;
}

.rk-ctrl-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-mod-dark);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 15px;
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Mode Switch (CP vs PP) */
.rk-mode-switch {
    display: flex;
    background: #e2e8f0;
    border-radius: 12px;
    padding: 4px;
    position: relative;
}

.rk-mode-switch input { display: none; }

.rk-mode-label {
    flex: 1;
    text-align: center;
    padding: 12px;
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-mod-slate);
    cursor: pointer;
    border-radius: 8px;
    transition: all 0.3s;
    z-index: 2;
}

.rk-mode-switch input:checked + .rk-mode-label {
    color: #ffffff;
}

.rk-mode-glider {
    position: absolute;
    top: 4px; left: 4px;
    height: calc(100% - 8px);
    width: calc(50% - 4px);
    background: var(--rk-mod-teal);
    border-radius: 8px;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    box-shadow: 0 4px 6px rgba(0,0,0,0.1);
    z-index: 1;
}

#rkModePP:checked ~ .rk-mode-glider {
    transform: translateX(100%);
    background: var(--rk-mod-red);
}

/* Termostaty (Checkbox) */
.rk-thermo-box {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 15px;
    background: var(--rk-mod-card);
    border: 1px solid var(--rk-mod-border);
    border-radius: 12px;
    margin-bottom: 10px;
    cursor: pointer;
    transition: all 0.2s;
}

.rk-thermo-box:hover { border-color: var(--rk-mod-teal); }

.rk-thermo-info {
    display: flex;
    flex-direction: column;
}

.rk-thermo-name { font-size: 15px; font-weight: 700; color: var(--rk-mod-dark); }
.rk-thermo-status { font-size: 12px; color: var(--rk-mod-teal); font-weight: 600; transition: color 0.3s; }

.rk-switch-sm {
    position: relative;
    width: 44px; height: 24px;
}

.rk-switch-sm input { display: none; }
.rk-slider-sm {
    position: absolute;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: var(--rk-mod-teal);
    border-radius: 24px;
    transition: .3s;
}
.rk-slider-sm:before {
    position: absolute;
    content: "";
    height: 18px; width: 18px;
    left: 3px; bottom: 3px;
    background-color: white;
    border-radius: 50%;
    transition: .3s;
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.rk-switch-sm input:checked + .rk-slider-sm { background-color: #cbd5e1; }
.rk-switch-sm input:checked + .rk-slider-sm:before { transform: translateX(20px); }

/* Wizualizator */
.rk-mod-visual {
    padding: 35px;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

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

.rk-dash-metric {
    flex: 1;
    background: var(--rk-mod-bg);
    border: 1px solid var(--rk-mod-border);
    border-radius: 12px;
    padding: 15px;
    text-align: center;
}

.rk-dash-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-mod-dark);
    font-variant-numeric: tabular-nums;
    transition: color 0.3s;
}

.rk-dash-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-mod-slate);
    text-transform: uppercase;
    margin-top: 4px;
}

.rk-svg-wrapper {
    flex: 1;
    background: var(--rk-mod-bg);
    border-radius: 16px;
    border: 1px solid var(--rk-mod-border);
    padding: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
}

/* SVG Animations */
.rk-pipe { stroke: #cbd5e1; stroke-width: 8; fill: none; stroke-linecap: round; }
.rk-water { stroke: var(--rk-mod-teal); stroke-width: 4; fill: none; stroke-linecap: round; stroke-dasharray: 10 15; transition: stroke 0.3s, opacity 0.3s; }
.rk-valve { transition: transform 0.3s; transform-origin: center; }

.flow-active { animation: waterFlow 1s linear infinite; }
.flow-slow { animation: waterFlow 3s linear infinite; stroke: var(--rk-mod-red); }
.flow-stopped { opacity: 0; }

@keyframes waterFlow { to { stroke-dashoffset: -25; } }

.rk-status-alert {
    position: absolute;
    bottom: 20px; right: 20px;
    padding: 8px 16px;
    background: var(--rk-mod-teal-light);
    color: var(--rk-mod-teal-dark);
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    transition: all 0.3s;
    opacity: 1;
}

/* Kontent Opisowy */
.rk-mod-content {
    padding: 40px;
    background: #ffffff;
}

.rk-mod-content h3 {
    font-size: 20px;
    font-weight: 800;
    color: var(--rk-mod-dark);
    margin: 0 0 15px 0;
}

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

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

.rk-grid-text {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 30px;
    margin-top: 25px;
}

.rk-text-box {
    padding: 20px;
    background: var(--rk-mod-bg);
    border-radius: 12px;
    border-left: 4px solid var(--rk-mod-teal);
}

.rk-text-box.box-error {
    border-left-color: var(--rk-mod-red);
}

@media (max-width: 768px) {
    .rk-mod-layout { grid-template-columns: 1fr; }
    .rk-mod-controls { border-right: none; border-bottom: 1px solid var(--rk-mod-border); padding: 25px; }
    .rk-grid-text { grid-template-columns: 1fr; gap: 15px; }
    .rk-mod-visual, .rk-mod-content, .rk-mod-header { padding: 25px; }
    .rk-dashboard { flex-wrap: wrap; }
    .rk-dash-metric { min-width: 40%; }
}
</style>

<div class="rk-mod-container" id="rkPumpModeApp">
    <div class="rk-mod-header">
        <h2>Jaki tryb pracy pompy elektronicznej wybrać: Stałociśnieniowy (CP) czy Proporcjonalny (PP)?</h2>
        <p>W systemach płaszczyznowych, gdzie pętle zamykane są strefowo przez termostaty, wybór trybu determinuje komfort cieplny. Zobacz na żywo, jak błędny tryb &#8222;odcina&#8221; najdalsze pokoje.</p>
    </div>

    <div class="rk-mod-layout">
        <div class="rk-mod-controls">
            
            <div class="rk-ctrl-group">
                <div class="rk-ctrl-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                    Ustawienie Pompy (Algorytm)
                </div>
                <div class="rk-mode-switch">
                    <input type="radio" name="pumpMode" id="rkModeCP" value="CP" checked="">
                    <label for="rkModeCP" class="rk-mode-label">Tryb Stałociśnieniowy (CP)</label>
                    
                    <input type="radio" name="pumpMode" id="rkModePP" value="PP">
                    <label for="rkModePP" class="rk-mode-label">Tryb Proporcjonalny (PP)</label>
                    
                    <div class="rk-mode-glider"></div>
                </div>
            </div>

            <div class="rk-ctrl-group">
                <div class="rk-ctrl-title">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                    Termostaty Pokojowe
                </div>

                <label class="rk-thermo-box" id="boxT1">
                    <div class="rk-thermo-info">
                        <span class="rk-thermo-name">Salon (Pętla 1)</span>
                        <span class="rk-thermo-status" id="statT1">Grzeje (Zawór otwarty)</span>
                    </div>
                    <div class="rk-switch-sm">
                        <input type="checkbox" id="rkToggle1">
                        <span class="rk-slider-sm"></span>
                    </div>
                </label>

                <label class="rk-thermo-box" id="boxT2">
                    <div class="rk-thermo-info">
                        <span class="rk-thermo-name">Sypialnia (Pętla 2)</span>
                        <span class="rk-thermo-status" id="statT2">Grzeje (Zawór otwarty)</span>
                    </div>
                    <div class="rk-switch-sm">
                        <input type="checkbox" id="rkToggle2">
                        <span class="rk-slider-sm"></span>
                    </div>
                </label>
                
                <div style="font-size: 12px; color: #64748b; margin-top: 10px; text-align: center;">
                    Pętla 3 (Łazienka) jest zawsze otwarta na potrzeby symulacji.
                </div>
            </div>
        </div>

        <div class="rk-mod-visual">
            <div class="rk-dashboard">
                <div class="rk-dash-metric">
                    <div class="rk-dash-val" id="valPress">2.5 m</div>
                    <div class="rk-dash-lbl">Ciśnienie (H)</div>
                </div>
                <div class="rk-dash-metric">
                    <div class="rk-dash-val" id="valPow">22 W</div>
                    <div class="rk-dash-lbl">Pobór Mocy</div>
                </div>
            </div>

            <div class="rk-svg-wrapper">
                <svg viewBox="0 0 300 200" style="width: 100%; height: auto;">
                    <path d="M 50 100 L 100 100" class="rk-pipe"></path>
                    <path d="M 50 100 L 100 100" class="rk-water flow-active" id="flowMain"></path>

                    <circle cx="50" cy="100" r="25" fill="#1e293b"></circle>
                    <circle cx="50" cy="100" r="15" fill="#334155"></circle>

                    <rect x="100" y="40" width="20" height="120" fill="#cbd5e1" rx="4"></rect>

                    <path d="M 120 60 L 250 60" class="rk-pipe"></path>
                    <path d="M 120 60 L 250 60" class="rk-water flow-active" id="flowP1"></path>
                    <circle cx="140" cy="60" r="8" fill="#0d9488" class="rk-valve" id="valve1"></circle>
                    <text x="260" y="64" font-size="12" font-weight="bold" fill="#334155">Salon</text>

                    <path d="M 120 100 L 250 100" class="rk-pipe"></path>
                    <path d="M 120 100 L 250 100" class="rk-water flow-active" id="flowP2"></path>
                    <circle cx="140" cy="100" r="8" fill="#0d9488" class="rk-valve" id="valve2"></circle>
                    <text x="260" y="104" font-size="12" font-weight="bold" fill="#334155">Sypialnia</text>

                    <path d="M 120 140 L 250 140" class="rk-pipe"></path>
                    <path d="M 120 140 L 250 140" class="rk-water flow-active" id="flowP3"></path>
                    <circle cx="140" cy="140" r="8" fill="#0d9488"></circle>
                    <text x="260" y="144" font-size="12" font-weight="bold" fill="#334155">Łazienka</text>
                </svg>

                <div class="rk-status-alert" id="statusAlert">System zbilansowany</div>
            </div>
        </div>
    </div>

    <div class="rk-mod-content">
        <h3>Dlaczego Tryb Stałociśnieniowy (CP) to jedyny wybór?</h3>
        <p>Dla instalacji ogrzewania podłogowego jedynym prawidłowym trybem pracy pompy elektronicznej jest tryb stałociśnieniowy (oznaczany jako <strong>CP – Constant Pressure</strong>). Urządzenie utrzymuje w nim stałą wysokość podnoszenia (ciśnienie) niezależnie od zmian natężenia przepływu, które są naturalnie wywoływane zamykaniem się <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> na rozdzielaczu.</p>
        
        <div class="rk-grid-text">
            <div class="rk-text-box">
                <h4 style="margin: 0 0 10px 0; color: var(--rk-mod-teal);">Mechanika w Trybie CP (Prawidłowa)</h4>
                <p style="font-size: 14px; margin: 0;">Gdy <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostat pokojowy</a> zamknie obieg nagrzanego salonu, pompa natychmiast wyczuwa wzrost oporów. Zmniejsza swoje obroty i pobór prądu (np. do 6W), ale <strong>utrzymuje zadane ciśnienie</strong>. Woda płynie z pełną prędkością przez łazienkę.</p>
            </div>
            <div class="rk-text-box box-error">
                <h4 style="margin: 0 0 10px 0; color: var(--rk-mod-red);">Mechanika w Trybie PP (Błąd)</h4>
                <p style="font-size: 14px; margin: 0;">Wybór trybu proporcjonalnego (PP) jest błędem. Gdy salon się zamyka, pompa sztucznie obniża ciśnienie hydrauliczne w całym układzie. Prowadzi to do drastycznego spowolnienia przepływu i wychłodzenia podłogi np. w <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-obwodowa-w-ogrzewaniu-podlogowym/">strefach brzegowych</a>.</p>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    // Controls
    const modeRadios = document.querySelectorAll('input[name="pumpMode"]');
    const toggle1 = document.getElementById('rkToggle1');
    const toggle2 = document.getElementById('rkToggle2');
    
    // Status Text
    const stat1 = document.getElementById('statT1');
    const stat2 = document.getElementById('statT2');
    const alertBox = document.getElementById('statusAlert');
    
    // Metrics
    const valPress = document.getElementById('valPress');
    const valPow = document.getElementById('valPow');
    
    // SVG Elements
    const flowMain = document.getElementById('flowMain');
    const flowP1 = document.getElementById('flowP1');
    const flowP2 = document.getElementById('flowP2');
    const flowP3 = document.getElementById('flowP3');
    const valve1 = document.getElementById('valve1');
    const valve2 = document.getElementById('valve2');

    function updateSim() {
        const mode = document.querySelector('input[name="pumpMode"]:checked').value;
        const v1Closed = toggle1.checked;
        const v2Closed = toggle2.checked;
        
        let openCount = 3;
        if(v1Closed) openCount--;
        if(v2Closed) openCount--;

        // UI Updates for Toggles
        if(v1Closed) {
            stat1.textContent = 'Zamknięty (Osiągnięto temp.)';
            stat1.style.color = '#64748b';
            valve1.style.transform = 'scale(0.3)';
            valve1.style.fill = '#ef4444';
            flowP1.className.baseVal = 'rk-water flow-stopped';
        } else {
            stat1.textContent = 'Grzeje (Zawór otwarty)';
            stat1.style.color = '#0d9488';
            valve1.style.transform = 'scale(1)';
            valve1.style.fill = '#0d9488';
            flowP1.className.baseVal = 'rk-water flow-active';
        }

        if(v2Closed) {
            stat2.textContent = 'Zamknięty (Osiągnięto temp.)';
            stat2.style.color = '#64748b';
            valve2.style.transform = 'scale(0.3)';
            valve2.style.fill = '#ef4444';
            flowP2.className.baseVal = 'rk-water flow-stopped';
        } else {
            stat2.textContent = 'Grzeje (Zawór otwarty)';
            stat2.style.color = '#0d9488';
            valve2.style.transform = 'scale(1)';
            valve2.style.fill = '#0d9488';
            flowP2.className.baseVal = 'rk-water flow-active';
        }

        // Core Simulation Logic
        if(openCount === 3) {
            valPress.textContent = '2.5 m';
            valPress.style.color = '#0f172a';
            valPow.textContent = '22 W';
            flowP3.className.baseVal = 'rk-water flow-active';
            flowMain.className.baseVal = 'rk-water flow-active';
            
            alertBox.textContent = 'Układ zbilansowany (Wszystko otwarte)';
            alertBox.style.background = 'var(--rk-mod-teal-light)';
            alertBox.style.color = 'var(--rk-mod-teal-dark)';
        } 
        else if (mode === 'CP') {
            // Constant Pressure Mode
            valPress.textContent = '2.5 m'; // Stays constant
            valPress.style.color = '#0f172a';
            valPow.textContent = openCount === 2 ? '14 W' : '6 W'; // Power drops adaptively
            flowP3.className.baseVal = 'rk-water flow-active'; // Łazienka still gets full flow
            flowMain.className.baseVal = 'rk-water flow-active';
            
            alertBox.textContent = 'CP: Łazienka dogrzewana poprawnie';
            alertBox.style.background = 'var(--rk-mod-teal-light)';
            alertBox.style.color = 'var(--rk-mod-teal-dark)';
        }
        else if (mode === 'PP') {
            // Proportional Pressure Mode
            valPress.textContent = openCount === 2 ? '1.5 m' : '0.8 m'; // Pressure drops!
            valPress.style.color = '#ef4444';
            valPow.textContent = openCount === 2 ? '10 W' : '4 W'; 
            
            // Flow in remaining loop suffers
            if(openCount === 1) {
                flowP3.className.baseVal = 'rk-water flow-slow';
                flowMain.className.baseVal = 'rk-water flow-slow';
                alertBox.textContent = 'BŁĄD PP: Łazienka niedogrzana! (Spadek ciśnienia)';
                alertBox.style.background = 'var(--rk-mod-red-light)';
                alertBox.style.color = 'var(--rk-mod-red)';
            } else {
                flowP3.className.baseVal = 'rk-water flow-active';
                flowMain.className.baseVal = 'rk-water flow-active';
                alertBox.textContent = 'PP: Spadek ciśnienia. Słabszy przepływ.';
                alertBox.style.background = '#fef3c7';
                alertBox.style.color = '#b45309';
            }
        }
    }

    // Event Listeners
    modeRadios.forEach(r => r.addEventListener('change', updateSim));
    toggle1.addEventListener('change', updateSim);
    toggle2.addEventListener('change', updateSim);

    // Init
    updateSim();
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-tryby-pracy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jaki tryb pracy pompy elektronicznej wybrać: Stałociśnieniowy (CP) czy Proporcjonalny (PP)?",
    "description": "Techniczne porównanie trybów pracy pomp obiegowych (CP vs PP). Dowiedz się, dlaczego tryb proporcjonalny powoduje niedogrzewanie pomieszczeń ze sterowaniem strefowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-tryby-pracy",
    "name": "Charakterystyki Pracy Pomp Obiegowych (CP vs PP) 2026",
    "description": "Zestawienie parametrów ciśnienia i przepływu dla inteligentnych pomp obiegowych w układach z dławieniem termostatycznym.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tryb stałociśnieniowy pompy",
      "tryb proporcjonalny podłogówka",
      "zamykanie siłowników termoelektrycznych",
      "spadek ciśnienia w instalacji",
      "niedogrzana łazienka"
    ],
    "measurementTechnique": "Symulacja zmian ciśnienia tłoczenia [m H2O] i poboru mocy [W] w zależności od ilości otwartych zaworów na belce rozdzielacza.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Tryb CP (Constant Pressure): Utrzymuje stałe ciśnienie przy zmniejszonym przepływie, idealny dla podłogówki.",
        "Tryb PP (Proportional Pressure): Redukuje ciśnienie wraz ze spadkiem przepływu, powodując zaburzenia hydrauliczne i niedogrzewanie pętli."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-tryby-pracy",
    "name": "Symulator Hydrauliczny Trybów CP/PP",
    "description": "Narzędzie interaktywne ilustrujące wpływ zamykania siłowników termoelektrycznych na parametry przepływu i ciśnienia w zależności od zadanego algorytmu pompy.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-con-dark: #0f172a;
    --rk-con-text: #334155;
    --rk-con-bg: #f8fafc;
    --rk-con-surface: #ffffff;
    --rk-con-border: #e2e8f0;
    
    /* State Colors */
    --rk-state-weak: #0284c7;   /* Niebieski - niedogrzanie */
    --rk-state-opt: #10b981;    /* Zielony - idealnie */
    --rk-state-strong: #ef4444; /* Czerwony - przeciążenie */
}

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

/* Tagi SEO */
.rk-con-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.rk-mat-tag {
    background: #f1f5f9;
    color: #475569;
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid #e2e8f0;
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: #e2e8f0;
    color: var(--rk-con-dark);
}

/* Nagłówek */
.rk-con-header {
    padding: 25px 40px 30px;
    text-align: center;
    border-bottom: 1px solid var(--rk-con-border);
}

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

.rk-con-header p {
    font-size: 16px;
    color: var(--rk-con-text);
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Interaktywny Symulator - Obszar Roboczy */
.rk-con-app-area {
    background: linear-gradient(180deg, var(--rk-con-bg) 0%, #ffffff 100%);
    padding: 40px;
}

/* Suwak (Slider) */
.rk-sim-slider-box {
    max-width: 600px;
    margin: 0 auto 40px;
    background: var(--rk-con-surface);
    padding: 25px 35px;
    border-radius: 20px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.05);
    border: 1px solid var(--rk-con-border);
    text-align: center;
}

.rk-slider-title {
    font-size: 15px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--rk-con-dark);
    margin-bottom: 25px;
}

.rk-range-input {
    -webkit-appearance: none;
    width: 100%;
    height: 8px;
    background: #cbd5e1;
    border-radius: 4px;
    outline: none;
    transition: background 0.3s;
}

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

.rk-range-input::-moz-range-thumb {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--rk-state-opt);
    cursor: pointer;
    box-shadow: 0 4px 10px rgba(0,0,0,0.15);
    border: 4px solid #ffffff;
    transition: background 0.3s, transform 0.1s;
}

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

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

/* Wizualizacja SVG */
.rk-con-visual {
    position: relative;
    width: 100%;
    max-width: 400px;
    height: 180px;
    margin: 0 auto 40px;
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-con-border);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.rk-vis-status-badge {
    position: absolute;
    top: 15px;
    right: 15px;
    padding: 6px 14px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 800;
    text-transform: uppercase;
    color: #ffffff;
    transition: background-color 0.3s;
}

/* Animacje SVG zależne od stanu */
.rk-svg-pipe { stroke: #cbd5e1; stroke-width: 12; stroke-linecap: round; fill: none; transition: stroke 0.3s; }
.rk-svg-flow { stroke-width: 6; stroke-linecap: round; fill: none; stroke-dasharray: 15 15; transition: stroke 0.3s; }

/* Stany Wizualizatora */
.state-1 .rk-vis-status-badge { background: var(--rk-state-weak); }
.state-1 .rk-svg-pipe { stroke: #e0f2fe; }
.state-1 .rk-svg-flow { stroke: var(--rk-state-weak); animation: flowAnim 4s linear infinite; }
.state-1 .rk-svg-crack { opacity: 1; stroke-dasharray: 100; animation: drawCrack 2s forwards; }
.state-1 .rk-svg-wave { opacity: 0; }

.state-2 .rk-vis-status-badge { background: var(--rk-state-opt); }
.state-2 .rk-svg-pipe { stroke: #dcfce7; }
.state-2 .rk-svg-flow { stroke: var(--rk-state-opt); animation: flowAnim 1.5s linear infinite; }
.state-2 .rk-svg-crack { opacity: 0; }
.state-2 .rk-svg-wave { opacity: 0; }

.state-3 .rk-vis-status-badge { background: var(--rk-state-strong); }
.state-3 .rk-svg-pipe { stroke: #fee2e2; animation: shakePipe 0.5s infinite; }
.state-3 .rk-svg-flow { stroke: var(--rk-state-strong); animation: flowAnim 0.3s linear infinite; }
.state-3 .rk-svg-crack { opacity: 0; }
.state-3 .rk-svg-wave { opacity: 1; animation: pulseWave 0.5s infinite; }

@keyframes flowAnim { to { stroke-dashoffset: -60; } }
@keyframes drawCrack { from { stroke-dashoffset: 100; } to { stroke-dashoffset: 0; } }
@keyframes shakePipe { 0%, 100% { transform: translateY(0); } 25% { transform: translateY(-2px); } 75% { transform: translateY(2px); } }
@keyframes pulseWave { 0% { opacity: 0.3; transform: scale(0.9); } 50% { opacity: 1; transform: scale(1.1); } 100% { opacity: 0.3; transform: scale(0.9); } }

/* Karty Konsekwencji - Kafelki Grid */
.rk-con-cards {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

.rk-con-card {
    background: #ffffff;
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-con-border);
    border-top: 4px solid var(--rk-state-opt); /* Dynamiczny kolor */
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.3s ease;
}

.rk-con-card.fade-in {
    animation: cardFadeIn 0.4s ease-out forwards;
}

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

.rk-card-icon {
    width: 40px;
    height: 40px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 15px;
    background: #f1f5f9;
    color: var(--rk-con-dark);
    transition: all 0.3s;
}

.rk-con-card h3 {
    font-size: 17px;
    font-weight: 800;
    color: var(--rk-con-dark);
    margin: 0 0 10px 0;
    line-height: 1.3;
}

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

.rk-con-card a {
    color: inherit;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

@media (max-width: 768px) {
    .rk-con-cards { grid-template-columns: 1fr; }
    .rk-con-header { padding: 25px 20px; }
    .rk-con-header h2 { font-size: 24px; }
    .rk-con-app-area { padding: 25px 20px; }
    .rk-sim-slider-box { padding: 20px; }
}
</style>

<div class="rk-con-container" id="rkConsequenceApp">
    <div class="rk-con-tags">
        <span class="rk-mat-tag"># skutki przewymiarowania pompy</span>
        <span class="rk-mat-tag"># taktowanie pompy ciepła</span>
        <span class="rk-mat-tag"># niedogrzewanie strefowe</span>
        <span class="rk-mat-tag"># kawitacja w instalacji</span>
    </div>

    <div class="rk-con-header">
        <h2>Czym grozi zły dobór pompy obiegowej?</h2>
        <p>Konsekwencje błędnego doboru pompy obiegowej przekładają się bezpośrednio na straty finansowe, uciążliwy hałas w domu oraz drastyczne skrócenie żywotności samej wylewki i armatury. Przesuń suwak i zobacz skutki.</p>
    </div>

    <div class="rk-con-app-area">
        
        <div class="rk-sim-slider-box">
            <div class="rk-slider-title">Wydajność Pompy Obiegowej</div>
            <input type="range" min="1" max="3" step="1" value="2" class="rk-range-input" id="rkPumpSlider">
            <div class="rk-slider-labels">
                <span style="color: var(--rk-state-weak);">Za słaba</span>
                <span style="color: var(--rk-state-opt);">Optymalna</span>
                <span style="color: var(--rk-state-strong);">Za mocna</span>
            </div>
        </div>

        <div class="rk-con-visual state-2" id="rkSvgStage">
            <div class="rk-vis-status-badge" id="rkStatusBadge">Zrównoważona</div>
            <svg width="250" height="100" viewBox="0 0 250 100">
                <path d="M 20 50 Q 125 20 230 50" class="rk-svg-pipe" id="rkPipeLine"/>
                <path d="M 20 50 Q 125 20 230 50" class="rk-svg-flow" id="rkWaterFlow"/>
                
                <path d="M 110 10 L 120 30 L 115 45 L 125 60" stroke="#0f172a" stroke-width="2" fill="none" class="rk-svg-crack" opacity="0"/>
                
                <path d="M 125 0 A 20 20 0 0 1 145 20 M 125 -10 A 30 30 0 0 1 155 20" stroke="#ef4444" stroke-width="2" fill="none" class="rk-svg-wave" opacity="0" transform="translate(0, 15)"/>
            </svg>
        </div>

        <div class="rk-con-cards" id="rkCardsGrid">
            <div class="rk-con-card" id="rkCard1" style="border-top-color: var(--rk-state-opt);">
                <div class="rk-card-icon" id="rkIcon1" style="background: #dcfce7; color: var(--rk-state-opt);">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                </div>
                <h3 id="rkTitle1">Idealny przepływ</h3>
                <p id="rkText1">Przepływy na rotametrach stabilne (1,5 &#8211; 2,5 l/min). Równomierne oddawanie ciepła w każdym pomieszczeniu.</p>
            </div>

            <div class="rk-con-card" id="rkCard2" style="border-top-color: var(--rk-state-opt);">
                <div class="rk-card-icon" id="rkIcon2" style="background: #dcfce7; color: var(--rk-state-opt);">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="3" y1="9" x2="21" y2="9"></line><line x1="9" y1="21" x2="9" y2="9"></line></svg>
                </div>
                <h3 id="rkTitle2">Bezpieczna wylewka</h3>
                <p id="rkText2">Prawidłowa Delta T zapobiega naprężeniom termicznym. Jastrych pracuje bezpiecznie wzdłuż wyznaczonych dylatacji.</p>
            </div>

            <div class="rk-con-card" id="rkCard3" style="border-top-color: var(--rk-state-opt);">
                <div class="rk-card-icon" id="rkIcon3" style="background: #dcfce7; color: var(--rk-state-opt);">
                    <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                </div>
                <h3 id="rkTitle3">Wysoka sprawność (COP)</h3>
                <p id="rkText3">Źródło ciepła pracuje w optymalnych, długich cyklach. Niskie rachunki za energię elektryczną.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const slider = document.getElementById('rkPumpSlider');
    const svgStage = document.getElementById('rkSvgStage');
    const statusBadge = document.getElementById('rkStatusBadge');
    
    // Elementy Kart
    const cards = [document.getElementById('rkCard1'), document.getElementById('rkCard2'), document.getElementById('rkCard3')];
    const icons = [document.getElementById('rkIcon1'), document.getElementById('rkIcon2'), document.getElementById('rkIcon3')];
    const titles = [document.getElementById('rkTitle1'), document.getElementById('rkTitle2'), document.getElementById('rkTitle3')];
    const texts = [document.getElementById('rkText1'), document.getElementById('rkText2'), document.getElementById('rkText3')];

    // Baza danych dla stanów (Invisible Data logic)
    const simData = {
        "1": {
            color: "#0284c7",
            bg: "#e0f2fe",
            badge: "Niedowymiarowana",
            iconSvg: '<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>',
            content: [
                { title: "Zjawisko niedogrzewania", text: "Przepływ na rotametrach spada poniżej projektowych 1,0 l/min. Najdalsze pokoje i łazienki pozostają niedogrzane." },
                { title: "Szok termiczny wylewki", text: 'Wzrost <a href="https://projekt-ogrzewania.pl/spadek-temperatury-dt-roznica-miedzy-temperatura-zasilania-a-powrotu/">delty temperatur ponad krytyczne 10 K</a> wywołuje potężne naprężenia termiczne i pękanie wylewki.' },
                { title: "Taktowanie pompy ciepła", text: "Zbyt mały przepływ uniemożliwia oddanie mocy. Pompa ciepła zgłasza błąd wysokiego ciśnienia (HP) i co chwilę się wyłącza." }
            ]
        },
        "2": {
            color: "#10b981",
            bg: "#dcfce7",
            badge: "Zrównoważona",
            iconSvg: '<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>',
            content: [
                { title: "Idealny przepływ", text: "Przepływy na rotametrach stabilne (1,5 - 2,5 l/min). Równomierne oddawanie ciepła w każdym pomieszczeniu." },
                { title: "Bezpieczna wylewka", text: 'Prawidłowa Delta T zapobiega naprężeniom. <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">Jastrych betonowy</a> pracuje bezpiecznie wzdłuż wyznaczonych dylatacji.' },
                { title: "Wysoka sprawność (COP)", text: "Źródło ciepła pracuje w optymalnych, długich cyklach bez wywoływania błędów. Gwarancja niskich rachunków." }
            ]
        },
        "3": {
            color: "#ef4444",
            bg: "#fee2e2",
            badge: "Przewymiarowana",
            iconSvg: '<svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2"></polygon><line x1="12" y1="8" x2="12" y2="12"></line><line x1="12" y1="16" x2="12.01" y2="16"></line></svg>',
            content: [
                { title: "Kawitacja i uciążliwy hałas", text: "Przekroczenie prędkości 0,6 m/s generuje głośne szumy i buczenie w szafkach rozdzielaczowych. Brak komfortu akustycznego." },
                { title: "Erozja ścierna rur PEX", text: 'Potężna turbulencja zrywa gniazda zaworów i powoduje wymywanie <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">wewnętrznej warstwy EVOH</a> w rurach.' },
                { title: "Finansowe marnotrawstwo", text: "Za duża pompa pobiera stale o 40–60 W więcej energii niż powinna, co generuje stratę rzędu 120 PLN rocznie na samym prądzie." }
            ]
        }
    };

    function updateSimulation(val) {
        const data = simData[val];
        
        // Aktualizacja SVG Stage
        svgStage.className = `rk-con-visual state-${val}`;
        statusBadge.textContent = data.badge;
        
        // Aktualizacja Kolorów Suwaka (dynamiczny thumb zrealizowany w CSS root variables logicznie, tu wymuszamy styl)
        slider.style.background = `linear-gradient(to right, ${data.color} 0%, ${data.color} ${(val-1)*50}%, #cbd5e1 ${(val-1)*50}%, #cbd5e1 100%)`;

        // Aktualizacja Kart z efektem Fade
        cards.forEach((card, index) => {
            // Restart animacji
            card.classList.remove('fade-in');
            void card.offsetWidth; // trigger reflow
            
            // Wgrywanie danych
            card.style.borderTopColor = data.color;
            icons[index].style.background = data.bg;
            icons[index].style.color = data.color;
            icons[index].innerHTML = data.iconSvg;
            titles[index].textContent = data.content[index].title;
            texts[index].innerHTML = data.content[index].text; // innerHTML bo mamy linki
            
            // Odpal animację
            card.classList.add('fade-in');
        });
    }

    slider.addEventListener('input', (e) => {
        updateSimulation(e.target.value);
    });

    // Inicjalizacja
    updateSimulation(slider.value);
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-konsekwencje",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Czym grozi zły dobór pompy obiegowej? Konsekwencje niedowymiarowania i przewymiarowania",
    "description": "Zrozum hydrauliczne i finansowe skutki instalacji zbyt słabej (niedogrzewanie) lub zbyt mocnej (kawitacja) pompy w układzie ogrzewania podłogowego.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-konsekwencje",
    "name": "Parametry Krytyczne Pracy Pompy Obiegowej 2026",
    "description": "Dane opisujące wpływ skrajnych nastaw wydajności pompy obiegowej na fizykę zładu grzewczego i żywotność podzespołów.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "skutki przewymiarowania pompy",
      "taktowanie pompy ciepła",
      "prędkość przepływu w rurach pex",
      "niedogrzewanie strefowe podłogówki",
      "kawitacja w instalacji grzewczej"
    ],
    "measurementTechnique": "Modelowanie wpływu niedoboru przepływu (<1.0 l/min) i nadmiaru przepływu (>0.6 m/s) na strukturę wylewki, warstwę EVOH i pobór energii.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Niedowymiarowanie: Skutkuje deltą T > 10K, pękaniem jastrychu i błędami HP pompy ciepła.",
        "Przewymiarowanie: Generuje przepływ powyżej 0.6 m/s, prowadząc do kawitacji, erozji warstwy EVOH i strat rzędu 120 PLN/rok."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-konsekwencje",
    "name": "Symulator Skutków Doboru Pompy",
    "description": "Aplikacja edukacyjna z interaktywnym suwakiem, pozwalająca symulować i w czasie rzeczywistym odczytywać skutki instalacji nieodpowiedniej pompy w obwodach płaszczyznowych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-err-dark: #0f172a;
    --rk-err-slate: #334155;
    --rk-err-bg: #f8fafc;
    --rk-err-card: #ffffff;
    --rk-err-danger: #ef4444;
    --rk-err-danger-light: #fef2f2;
    --rk-err-warn: #f59e0b;
    --rk-err-border: #e2e8f0;
    --rk-err-blue: #0284c7;
    --rk-err-blue-light: #f0f9ff;
}

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

/* Nagłówek */
.rk-err-header {
    padding: 35px 40px 25px;
    background: linear-gradient(135deg, var(--rk-err-dark) 0%, #1e293b 100%);
    color: #ffffff;
    text-align: center;
}

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

.rk-err-header p {
    font-size: 16px;
    color: #94a3b8;
    margin: 0 auto;
    max-width: 750px;
    line-height: 1.6;
}

/* Layout Górny (Grid) */
.rk-err-grid {
    display: grid;
    grid-template-columns: 350px 1fr;
    background: var(--rk-err-bg);
}

/* Kolumna Lewa - Menu Błędów */
.rk-err-menu {
    padding: 20px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-right: 1px solid var(--rk-err-border);
    background: var(--rk-err-card);
}

.rk-err-btn {
    display: flex;
    align-items: center;
    gap: 15px;
    padding: 16px;
    border: 2px solid transparent;
    border-radius: 16px;
    background: var(--rk-err-bg);
    cursor: pointer;
    text-align: left;
    transition: all 0.3s;
}

.rk-err-btn:hover {
    background: var(--rk-err-blue-light);
}

.rk-err-btn.active {
    background: var(--rk-err-danger-light);
    border-color: var(--rk-err-danger);
    box-shadow: 0 10px 15px -3px rgba(239, 68, 68, 0.1);
}

.rk-err-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    background: #e2e8f0;
    color: var(--rk-err-slate);
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-err-btn.active .rk-err-icon {
    background: var(--rk-err-danger);
    color: #ffffff;
}

.rk-err-title {
    font-size: 14px;
    font-weight: 800;
    color: var(--rk-err-dark);
    margin: 0;
    line-height: 1.3;
}

.rk-err-btn.active .rk-err-title {
    color: var(--rk-err-danger);
}

/* Kolumna Prawa - Wizualizator SVG */
.rk-err-visual {
    padding: 40px;
    display: flex;
    justify-content: center;
    align-items: center;
    background: #ffffff;
    min-height: 250px;
}

.rk-svg-stage {
    width: 100%;
    max-width: 320px;
    height: auto;
}

/* Animacje SVG */
.rk-anim-fast { animation: spinRotor 0.3s linear infinite; stroke: var(--rk-err-danger); }
.rk-anim-jammed { animation: shakeRotor 0.5s ease-in-out infinite; stroke: var(--rk-err-slate); }
.rk-anim-friction { animation: spinRotor 2s linear infinite; stroke: var(--rk-err-warn); filter: drop-shadow(0 0 8px rgba(245, 158, 11, 0.6)); }

@keyframes spinRotor { 100% { transform: rotate(360deg); } }
@keyframes shakeRotor { 0%, 100% { transform: rotate(0deg); } 25% { transform: rotate(10deg); } 75% { transform: rotate(-10deg); } }
@keyframes flowDirt { 0% { transform: translateX(0); opacity: 0; } 20% { opacity: 1; } 80% { opacity: 1; } 100% { transform: translateX(120px); opacity: 0; } }

.rk-dirt-particle { opacity: 0; }
.show-dirt .rk-dirt-particle { animation: flowDirt 1.5s linear infinite; fill: #78350f; }
.show-dirt .rk-dirt-particle:nth-child(2) { animation-delay: 0.5s; }
.show-dirt .rk-dirt-particle:nth-child(3) { animation-delay: 1s; }

.rk-valve-indicator { opacity: 0; transition: opacity 0.3s; }
.show-valves-missing .rk-valve-indicator { opacity: 1; }

.rk-friction-ring { opacity: 0; transform-origin: 150px 75px; }
.show-friction .rk-friction-ring { opacity: 1; animation: pulseRing 1s ease-out infinite; stroke: var(--rk-err-warn); }
@keyframes pulseRing { 0% { transform: scale(0.8); opacity: 0.8; } 100% { transform: scale(1.5); opacity: 0; } }

/* Treść Detalu - PEŁNA SZEROKOŚĆ (zmiana strukturalna) */
.rk-err-content-box {
    padding: 40px;
    background: var(--rk-err-bg);
    border-top: 1px solid var(--rk-err-border);
}

.rk-err-panel {
    display: none;
    animation: fadeInPanel 0.4s ease-out;
}

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

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

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

.rk-err-panel h3::before {
    content: '!';
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    background: var(--rk-err-danger);
    color: white;
    font-size: 15px;
    border-radius: 6px;
}

.rk-err-panel p {
    font-size: 15px;
    color: var(--rk-err-slate);
    line-height: 1.7;
    margin: 0 0 15px 0;
    max-width: 850px; /* Optymalizacja czytelności na pełnej szerokości */
}

.rk-err-panel a {
    color: var(--rk-err-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.2s;
}

.rk-err-panel a:hover {
    border-color: var(--rk-err-blue);
}

.rk-consequence {
    margin-top: 25px;
    padding: 18px 25px;
    background: #ffffff;
    border-left: 4px solid var(--rk-err-danger);
    border-radius: 0 12px 12px 0;
    box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05);
    max-width: 850px;
}

.rk-consequence strong {
    display: block;
    font-size: 13px;
    text-transform: uppercase;
    color: var(--rk-err-danger);
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}

.rk-consequence span {
    font-size: 15px;
    color: var(--rk-err-dark);
    font-weight: 600;
    line-height: 1.5;
}

@media (max-width: 768px) {
    .rk-err-grid { grid-template-columns: 1fr; }
    .rk-err-menu { border-right: none; border-bottom: 1px solid var(--rk-err-border); flex-direction: row; flex-wrap: wrap; }
    .rk-err-btn { flex: 1 1 calc(50% - 5px); padding: 12px; gap: 10px; }
    .rk-err-icon { width: 32px; height: 32px; }
    .rk-err-title { font-size: 12px; }
    .rk-err-header { padding: 25px 20px; }
    .rk-err-header h2 { font-size: 22px; }
    .rk-err-content-box { padding: 30px 20px; }
    .rk-err-visual { padding: 20px; min-height: 200px; }
}
</style>

<div class="rk-err-container" id="rkErrorSimulator">
    
    <div class="rk-err-header">
        <h2>Jakie są najczęstsze błędy instalatorów przy montażu i konfiguracji pomp obiegowych?</h2>
        <p>Najczęstsze awarie pomp obiegowych wynikają z braku weryfikacji parametrów hydraulicznych oraz ignorowania podstawowych zasad czystości zładu wodnego. Wybierz symulację i zobacz konsekwencje.</p>
    </div>

    <div class="rk-err-grid">
        <div class="rk-err-menu">
            <button class="rk-err-btn active" data-target="err-gear">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2"></polygon></svg></div>
                <h4 class="rk-err-title">Fabryczny bieg 3</h4>
            </button>
            <button class="rk-err-btn" data-target="err-valves">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><line x1="9" y1="3" x2="9" y2="21"></line></svg></div>
                <h4 class="rk-err-title">Brak zaworów odcinających</h4>
            </button>
            <button class="rk-err-btn" data-target="err-dirt">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path><polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline><line x1="12" y1="22.08" x2="12" y2="12"></line></svg></div>
                <h4 class="rk-err-title">Zabrudzony zład wodny</h4>
            </button>
            <button class="rk-err-btn" data-target="err-air">
                <div class="rk-err-icon"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg></div>
                <h4 class="rk-err-title">Brak odpowietrzenia</h4>
            </button>
        </div>

        <div class="rk-err-visual">
            <svg class="rk-svg-stage" viewBox="0 0 300 150" preserveAspectRatio="xMidYMid meet" id="svgStage">
                <rect x="20" y="60" width="260" height="30" fill="#cbd5e1" rx="4"></rect>
                <rect x="20" y="60" width="260" height="4" fill="#94a3b8"></rect>
                
                <g class="rk-valve-indicator">
                    <line x1="60" y1="40" x2="80" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                    <line x1="80" y1="40" x2="60" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                    <line x1="220" y1="40" x2="240" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                    <line x1="240" y1="40" x2="220" y2="110" stroke="#ef4444" stroke-width="4" stroke-linecap="round"></line>
                </g>

                <g class="rk-dirt-group">
                    <circle cx="30" cy="75" r="4" class="rk-dirt-particle"></circle>
                    <circle cx="20" cy="80" r="3" class="rk-dirt-particle"></circle>
                    <circle cx="10" cy="70" r="5" class="rk-dirt-particle"></circle>
                </g>

                <circle cx="150" cy="75" r="45" fill="#1e293b"></circle>
                <circle cx="150" cy="75" r="35" fill="#334155"></circle>
                
                <circle cx="150" cy="75" r="20" fill="none" stroke-width="4" class="rk-friction-ring"></circle>
                <circle cx="150" cy="75" r="30" fill="none" stroke-width="2" class="rk-friction-ring" style="animation-delay: 0.3s;"></circle>

                <g style="transform-origin: 150px 75px;" id="svgRotor" class="rk-anim-fast">
                    <line x1="150" y1="45" x2="150" y2="105" stroke-width="8" stroke-linecap="round"></line>
                    <line x1="120" y1="75" x2="180" y2="75" stroke-width="8" stroke-linecap="round"></line>
                    <circle cx="150" cy="75" r="8" fill="#ffffff"></circle>
                </g>

                <rect x="135" y="125" width="30" height="20" rx="4" fill="#0f172a"></rect>
                <text x="150" y="139" fill="#ef4444" font-size="12" font-family="monospace" font-weight="bold" text-anchor="middle" id="svgDisplay">45W</text>
            </svg>
        </div>
    </div>

    <div class="rk-err-content-box">
        <div class="rk-err-panel active" id="err-gear">
            <h3>Zostawienie fabrycznego biegu (Bieg 3)</h3>
            <p>Instalatorzy po montażu uruchamiają pompę na maksymalnych obrotach, aby szybko odpowietrzyć układ, zapominając o przełączeniu urządzenia w tryb <strong>AUTO</strong> lub <strong>Stałociśnieniowy</strong>.</p>
            <p>Skutkuje to ciągłym poborem maksymalnej mocy przez urządzenie, ignorując całkowicie zalety silników adaptacyjnych.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Ciągły pobór np. 45 W zamiast 8 W przez cały rok. Generowanie szumów w <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">instalacji podłogowej</a>.</span>
            </div>
        </div>

        <div class="rk-err-panel" id="err-valves">
            <h3>Montaż pompy bez odcinających zaworów</h3>
            <p>Brak zaworów kulowych ze śrubunkami tuż przed i tuż za pompą obiegową. Jest to oszczędność rzędu kilkudziesięciu złotych, która mści się przy pierwszej konserwacji.</p>
            <p>Uniemożliwia to szybki demontaż urządzenia lub czyszczenie filtra siatkowego bez integracji w zład całej instalacji.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Konieczność spuszczania kilkuset litrów <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">wody demineralizowanej z inhibitorem korozji</a> z całego układu, aby wyczyścić filtr lub wymienić pompę.</span>
            </div>
        </div>

        <div class="rk-err-panel" id="err-dirt">
            <h3>Uruchomienie w brudnej instalacji</h3>
            <p>Zaniechanie płukania zładu przed rozruchem to proszenie się o kłopoty. Pozostałości po montażu, takie jak opiłki tworzywa sztucznego z kalibratora rur PEX czy resztki pakuł uszczelniających, trafiają swobodnie do obiegu.</p>
            <p>Zanieczyszczenia są następnie zasysane prosto do precyzyjnej komory wirnika nowej pompy.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Permanentne zablokowanie mechaniczne i przepalenie stojana przy pierwszym uruchomieniu pompy. Błąd ten automatycznie skutkuje odmową naprawy gwarancyjnej.</span>
            </div>
        </div>

        <div class="rk-err-panel" id="err-air">
            <h3>Brak odpowietrzenia przed startem</h3>
            <p>Nowoczesne pompy posiadają wprawdzie funkcję automatycznego odpowietrzania, jednak przy całkowicie pierwszym napełnianiu ręczne poluzowanie śruby czołowej wału jest absolutnie kluczowe.</p>
            <p>Woda stanowi naturalną poduszkę poślizgową dla ceramicznych łożysk w pompach bezdławnicowych. Jej brak to destrukcja mechaniczna.</p>
            <div class="rk-consequence">
                <strong>Skutek techniczny</strong>
                <span>Tarcie suchych łożysk powodujące ich natychmiastowe uszkodzenie, zablokowanie urządzenia oraz głośne <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawy zapowietrzenia</a>.</span>
            </div>
        </div>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const errorBtns = document.querySelectorAll('.rk-err-btn');
    const panels = document.querySelectorAll('.rk-err-panel');
    const svgStage = document.getElementById('svgStage');
    const svgRotor = document.getElementById('svgRotor');
    const svgDisplay = document.getElementById('svgDisplay');

    function resetSVG() {
        svgStage.classList.remove('show-valves-missing', 'show-dirt', 'show-friction');
        svgRotor.className.baseVal = '';
        svgDisplay.textContent = '--W';
        svgDisplay.setAttribute('fill', '#94a3b8');
    }

    errorBtns.forEach(btn => {
        btn.addEventListener('click', function() {
            errorBtns.forEach(b => b.classList.remove('active'));
            this.classList.add('active');
            
            const targetId = this.getAttribute('data-target');
            panels.forEach(p => p.classList.remove('active'));
            document.getElementById(targetId).classList.add('active');

            resetSVG();
            
            if (targetId === 'err-gear') {
                svgRotor.className.baseVal = 'rk-anim-fast';
                svgDisplay.textContent = '45W';
                svgDisplay.setAttribute('fill', '#ef4444');
            } 
            else if (targetId === 'err-valves') {
                svgStage.classList.add('show-valves-missing');
                svgRotor.className.baseVal = 'rk-anim-fast';
                svgRotor.style.stroke = '#38bdf8';
                svgDisplay.textContent = '8W';
                svgDisplay.setAttribute('fill', '#38bdf8');
            }
            else if (targetId === 'err-dirt') {
                svgStage.classList.add('show-dirt');
                svgRotor.className.baseVal = 'rk-anim-jammed';
                svgDisplay.textContent = 'ERR';
                svgDisplay.setAttribute('fill', '#f59e0b');
            }
            else if (targetId === 'err-air') {
                svgStage.classList.add('show-friction');
                svgRotor.className.baseVal = 'rk-anim-friction';
                svgDisplay.textContent = '12W';
                svgDisplay.setAttribute('fill', '#f59e0b');
            }
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-bledy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jakie są najczęstsze błędy instalatorów przy montażu i konfiguracji pomp obiegowych?",
    "description": "Zestawienie najgroźniejszych błędów wykonawczych: od braku odpowietrzenia, przez złe nastawy biegów, po brak płukania instalacji. Zobacz interaktywną diagnostykę.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-bledy",
    "name": "Wskaźnik Awaryjności Pomp Obiegowych 2026",
    "description": "Klasyfikacja uszkodzeń pomp obiegowych wynikająca z zaniedbań montażowych i braku weryfikacji hydraulicznej zładu.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "błędy przy montażu ogrzewania podłogowego",
      "ustawienie pompy obiegowej na 3 bieg",
      "brak zaworów przy pompie",
      "płukanie instalacji podłogówki",
      "odpowietrzanie pompy obiegowej"
    ],
    "measurementTechnique": "Analiza wpływu zanieczyszczeń mechanicznych, braku armatury odcinającej oraz błędnych nastaw sterownika na żywotność urządzenia.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Ciągła praca na 3 biegu (straty 45W).",
        "Brak zaworów - konieczność zrzutu wody demineralizowanej.",
        "Opiłki i pakuły blokujące precyzyjny wirnik.",
        "Suche łożyska z powodu zaniechania odpowietrzenia ręcznego."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-bledy",
    "name": "Symulator Diagnostyczny Błędów Pompy",
    "description": "Interaktywne narzędzie wizualizujące fizyczne skutki braku płukania zładu, zastosowania niewłaściwych nastaw i braku zaworów odcinających w układzie hydraulicznym.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-prj-dark: #0f172a;
    --rk-prj-blue: #2563eb;
    --rk-prj-light: #eff6ff;
    --rk-prj-accent: #f59e0b;
    --rk-prj-green: #059669;
    --rk-prj-border: #cbd5e1;
    --rk-prj-bg: #ffffff;
    --rk-prj-text: #334155;
}

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

/* Tagi Długi Ogon */
.rk-prj-tags {
    padding: 25px 35px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    background: linear-gradient(to bottom, #f8fafc, #ffffff);
}

.rk-mat-tag {
    background: var(--rk-prj-light);
    color: var(--rk-prj-blue);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    border: 1px solid rgba(37, 99, 235, 0.2);
    text-transform: lowercase;
}

/* Nagłówek */
.rk-prj-header {
    padding: 25px 35px;
}

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

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

/* Sekcja Interaktywna - Podział 2 kolumny */
.rk-prj-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0;
    border-top: 1px solid var(--rk-prj-border);
    border-bottom: 1px solid var(--rk-prj-border);
}

/* Lewa Kolumna - Schemat zależności */
.rk-prj-flow {
    padding: 35px;
    background: #f8fafc;
    border-right: 1px solid var(--rk-prj-border);
}

.rk-prj-flow h3 {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-prj-dark);
    margin: 0 0 25px 0;
}

.rk-flow-step {
    display: flex;
    align-items: flex-start;
    gap: 15px;
    margin-bottom: 25px;
    position: relative;
}

.rk-flow-step:not(:last-child)::after {
    content: '';
    position: absolute;
    left: 17px;
    top: 40px;
    bottom: -20px;
    width: 2px;
    background: var(--rk-prj-blue);
    opacity: 0.2;
}

.rk-flow-number {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: var(--rk-prj-blue);
    color: white;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 900;
    font-size: 16px;
    flex-shrink: 0;
    z-index: 1;
}

.rk-flow-content h4 {
    margin: 0 0 5px 0;
    font-size: 16px;
    font-weight: 800;
    color: var(--rk-prj-dark);
}

.rk-flow-content p {
    margin: 0;
    font-size: 14px;
    color: var(--rk-prj-text);
    line-height: 1.5;
}

.rk-flow-content a {
    color: var(--rk-prj-blue);
    text-decoration: none;
    font-weight: 700;
}

.rk-flow-result {
    margin-top: 30px;
    padding: 15px;
    background: var(--rk-prj-dark);
    border-radius: 12px;
    color: white;
    display: flex;
    align-items: center;
    gap: 15px;
}

/* Prawa Kolumna - Symulator */
.rk-prj-simulator {
    padding: 35px;
    background: #ffffff;
    display: flex;
    flex-direction: column;
}

.rk-sim-title {
    font-size: 18px;
    font-weight: 800;
    color: var(--rk-prj-dark);
    margin: 0 0 20px 0;
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Custom Controls */
.rk-sim-control {
    margin-bottom: 25px;
}

.rk-sim-label {
    display: block;
    font-size: 14px;
    font-weight: 700;
    color: var(--rk-prj-text);
    margin-bottom: 10px;
}

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

.rk-radio-btn {
    flex: 1;
    position: relative;
}

.rk-radio-btn input {
    display: none;
}

.rk-radio-label {
    display: block;
    text-align: center;
    padding: 12px;
    background: var(--rk-prj-light);
    border: 2px solid transparent;
    border-radius: 10px;
    font-weight: 700;
    font-size: 14px;
    color: var(--rk-prj-text);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-radio-btn input:checked + .rk-radio-label {
    background: white;
    border-color: var(--rk-prj-blue);
    color: var(--rk-prj-blue);
    box-shadow: 0 4px 6px -1px rgba(37, 99, 235, 0.1);
}

/* SVG Animacja */
.rk-sim-visual {
    margin-top: auto;
    padding: 20px;
    background: var(--rk-prj-light);
    border-radius: 16px;
    text-align: center;
    border: 1px solid rgba(37, 99, 235, 0.1);
}

.rk-live-stats {
    display: flex;
    justify-content: space-around;
    margin-bottom: 15px;
}

.rk-stat-box {
    text-align: center;
}

.rk-stat-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-prj-blue);
    font-variant-numeric: tabular-nums;
}

.rk-stat-lbl {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-prj-text);
    text-transform: uppercase;
}

/* SVG Pipe */
.rk-pipe-svg {
    width: 100%;
    height: 60px;
}

.rk-pipe-path {
    stroke-dasharray: 10;
    animation: flowAnim 2s linear infinite;
}

@keyframes flowAnim {
    to { stroke-dashoffset: -20; }
}

/* Tekst podsumowujący */
.rk-prj-summary {
    padding: 30px 35px;
    background: #ffffff;
}

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

.rk-prj-summary strong {
    color: var(--rk-prj-dark);
}

/* CTA Masive */
.rk-prj-cta-box {
    padding: 40px 35px;
    background: linear-gradient(135deg, var(--rk-prj-dark) 0%, #1e293b 100%);
    text-align: center;
}

.rk-prj-cta-title {
    font-size: 24px;
    font-weight: 900;
    color: #ffffff;
    margin: 0 0 15px 0;
}

.rk-prj-cta-text {
    font-size: 16px;
    color: #94a3b8;
    margin: 0 auto 30px auto;
    max-width: 600px;
    line-height: 1.6;
}

.rk-btn-project {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    background: var(--rk-prj-blue);
    color: #ffffff;
    font-size: 18px;
    font-weight: 900;
    padding: 20px 45px;
    border-radius: 16px;
    text-decoration: none;
    box-shadow: 0 10px 25px -5px rgba(37, 99, 235, 0.5);
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

.rk-btn-project:hover {
    transform: translateY(-4px) scale(1.02);
    background: #1d4ed8;
    box-shadow: 0 20px 35px -5px rgba(37, 99, 235, 0.6);
}

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

.rk-btn-project:hover svg {
    transform: translateX(6px);
}

@media (max-width: 768px) {
    .rk-prj-grid { grid-template-columns: 1fr; }
    .rk-prj-flow { border-right: none; border-bottom: 1px solid var(--rk-prj-border); padding: 25px; }
    .rk-prj-simulator, .rk-prj-header, .rk-prj-summary, .rk-prj-cta-box, .rk-prj-tags { padding: 25px; }
    .rk-btn-project { width: 100%; padding: 18px 20px; font-size: 16px; }
    .rk-prj-header h2 { font-size: 24px; }
}
</style>

<div class="rk-prj-container" id="rkProjectIntegrator">
    <div class="rk-prj-tags">
        <span class="rk-mat-tag"># projekt ogrzewania podłogowego z pompą ciepła</span>
        <span class="rk-mat-tag"># obliczenia strat ciśnienia</span>
        <span class="rk-mat-tag"># rozstaw rur a wydajność pompy</span>
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
    </div>

    <div class="rk-prj-header">
        <h2>Jak dobór pompy wpływa na profesjonalny projekt ogrzewania podłogowego?</h2>
        <p>Wybór i parametry pompy obiegowej są ściśle powiązane z kluczowymi elementami dokumentacji technicznej. Pompa nie istnieje w próżni – jej punkt pracy jest bezpośrednią wypadkową konkretnych, twardych wyliczeń inżynierskich dla Twojego budynku.</p>
    </div>

    <div class="rk-prj-grid">
        <div class="rk-prj-flow">
            <h3>Architektura profesjonalnego doboru</h3>
            
            <div class="rk-flow-step">
                <div class="rk-flow-number">1</div>
                <div class="rk-flow-content">
                    <h4><a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Obliczenia OZC (PN-EN 12831)</a></h4>
                    <p>Definiują całkowite zapotrzebowanie na moc grzewczą [kW]. To fundament do określenia ilości ciepła, jaką woda musi dostarczyć.</p>
                </div>
            </div>

            <div class="rk-flow-step">
                <div class="rk-flow-number">2</div>
                <div class="rk-flow-content">
                    <h4><a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">Rozstaw rur w pętlach</a></h4>
                    <p>Decyduje o wymaganej temperaturze zasilania i bezpośrednio przekłada się na wielkość przepływów (l/min) na rotametrach.</p>
                </div>
            </div>

            <div class="rk-flow-step">
                <div class="rk-flow-number">3</div>
                <div class="rk-flow-content">
                    <h4>Geometria i układ pętli</h4>
                    <p>Długość rur i ilość zagięć generuje sumaryczne opory w Paskalach (Pa). To one wymuszają wysokość podnoszenia pompy.</p>
                </div>
            </div>

            <div class="rk-flow-result">
                <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                <div style="font-weight: 800; font-size: 15px;">WYNIK: Optymalny punkt roboczy (Q i H)</div>
            </div>
        </div>

        <div class="rk-prj-simulator">
            <h3 class="rk-sim-title">
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
                Symulator Zależności Projektowych
            </h3>

            <div class="rk-sim-control">
                <span class="rk-sim-label">Rozstaw rur (gęstość):</span>
                <div class="rk-radio-group">
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-spacing" value="10" checked>
                        <span class="rk-radio-label">Co 10 cm (Gęsto)</span>
                    </label>
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-spacing" value="15">
                        <span class="rk-radio-label">Co 15 cm (Rzadko)</span>
                    </label>
                </div>
            </div>

            <div class="rk-sim-control">
                <span class="rk-sim-label">Okładzina podłogowa (Opór cieplny R):</span>
                <div class="rk-radio-group">
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-floor" value="tiles" checked>
                        <span class="rk-radio-label">Płytki (0,02 m2K/W)</span>
                    </label>
                    <label class="rk-radio-btn">
                        <input type="radio" name="rk-floor" value="laminate">
                        <span class="rk-radio-label">Panele (0,08 m2K/W)</span>
                    </label>
                </div>
            </div>

            <div class="rk-sim-visual">
                <div class="rk-live-stats">
                    <div class="rk-stat-box">
                        <div class="rk-stat-lbl">Opory hydrauliczne</div>
                        <div class="rk-stat-val" id="rk-out-h">2.4 m</div>
                    </div>
                    <div class="rk-stat-box">
                        <div class="rk-stat-lbl">Przepływ na rotametrze</div>
                        <div class="rk-stat-val" id="rk-out-q">1.8 l/min</div>
                    </div>
                </div>
                <svg class="rk-pipe-svg" viewBox="0 0 300 60" preserveAspectRatio="none">
                    <path d="M10,30 Q75,10 150,30 T290,30" fill="none" stroke="#cbd5e1" stroke-width="8" stroke-linecap="round"/>
                    <path d="M10,30 Q75,10 150,30 T290,30" fill="none" stroke="#2563eb" stroke-width="4" stroke-linecap="round" class="rk-pipe-path" id="rk-svg-flow"/>
                </svg>
            </div>
        </div>
    </div>

    <div class="rk-prj-summary">
        <p>Gęstość rozstawu rur (np. co 10 cm w strefach brzegowych i łazienkach, co 15 cm w salonach) determinuje łączną długość rur, a tym samym bezpośrednio wpływa na opory hydrauliczne, które pompa musi pokonać.</p>
        <p>Projektant, znając opór cieplny okładziny podłogowej (np. płytki ceramiczne o <strong>R = 0,02 m2K/W</strong> lub panele o <strong>R = 0,08 m2K/W</strong>) oraz planowaną <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">grubość wylewki jastrychowej</a> (np. 65 mm), precyzyjnie wylicza wymaganą temperaturę zasilania.</p>
        <p>Te dane pozwalają na określenie optymalnego przepływu cząstkowego, co daje końcową wartość wydajności pompy. <strong>Projekt instalacji eliminuje zgubne dobieranie pompy „na oko”</strong> i chroni Inwestora przed kosztownym przewymiarowaniem lub brakiem komfortu cieplnego zimą.</p>
    </div>

    <div class="rk-prj-cta-box">
        <h3 class="rk-prj-cta-title">Przestań zgadywać. Zainwestuj w inżynierię.</h3>
        <p class="rk-prj-cta-text">Złe wyliczenia to zimna podłoga i pompa pobierająca 400% więcej prądu niż powinna. Zamów kompletny projekt i zyskaj gwarancję perfekcyjnie zbilansowanego układu hydraulicznego na dekady.</p>
        <a href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/" class="rk-btn-project">
            ZAMÓW PROFESJONALNY PROJEKT PODŁOGÓWKI
            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"><line x1="5" y1="12" x2="19" y2="12"></line><polyline points="12 5 19 12 12 19"></polyline></svg>
        </a>
    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const spaceRadios = document.querySelectorAll('input[name="rk-spacing"]');
    const floorRadios = document.querySelectorAll('input[name="rk-floor"]');
    const outH = document.getElementById('rk-out-h');
    const outQ = document.getElementById('rk-out-q');
    const svgFlow = document.getElementById('rk-svg-flow');

    function calculateSimulation() {
        let spaceVal = document.querySelector('input[name="rk-spacing"]:checked').value;
        let floorVal = document.querySelector('input[name="rk-floor"]:checked').value;

        let resH = 2.0; // Base head
        let resQ = 1.5; // Base flow
        let animSpeed = 2; // SVG animation duration in seconds

        // Logika obliczeniowa symulatora
        if (spaceVal === "10") {
            // Gęsty rozstaw = więcej rur = większe opory, ale niższa temperatura i mniejszy przepływ na obieg
            resH += 0.8;
            resQ -= 0.3;
        } else if (spaceVal === "15") {
            // Rzadszy rozstaw = mniejsze opory, ale wymaga większego przepływu by oddać moc
            resH -= 0.4;
            resQ += 0.5;
        }

        if (floorVal === "laminate") {
            // Panele izolują, więc układ potrzebuje znacznie większego przepływu i wyższej delty/temperatury
            resQ += 0.8;
            resH += 0.3;
            animSpeed = 0.8; // Fast flow required
        } else {
            // Płytki dobrze przewodzą
            animSpeed = 2.0; // Normal flow
        }

        // Formatowanie i aktualizacja UI
        outH.textContent = resH.toFixed(1) + " m";
        outQ.textContent = resQ.toFixed(1) + " l/min";
        svgFlow.style.animationDuration = animSpeed + "s";
    }

    spaceRadios.forEach(r => r.addEventListener('change', calculateSimulation));
    floorRadios.forEach(r => r.addEventListener('change', calculateSimulation));
    
    // Initial calculate
    calculateSimulation();
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-projekt",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Jak dobór pompy wpływa na profesjonalny projekt ogrzewania podłogowego?",
    "description": "Zrozumienie ścisłej korelacji pomiędzy obliczeniami OZC, rozstawem rur grzewczych a wymaganymi parametrami pompy obiegowej w nowoczesnej podłogówce.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-projekt",
    "name": "Wpływ parametrów projektu na dobór pompy obiegowej 2026",
    "description": "Zestawienie relacji hydraulicznych pomiędzy gęstością rozstawu rur, oporem cieplnym okładzin podłogowych a ostatecznym przepływem i oporem pompy.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "projekt ogrzewania podłogowego z pompą ciepła",
      "obliczenia strat ciśnienia",
      "rozstaw rur a wydajność pompy",
      "opór cieplny paneli a podłogówka",
      "dobór pompy obiegowej do podłogówki"
    ],
    "measurementTechnique": "Algorytm inżynierski wyznaczający przepływy i straty ciśnienia na podstawie wytycznych normy PN-EN 12831 oraz oporów R posadzki.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Obliczenia OZC jako fundament określenia mocy grzewczej [kW].",
        "Rozstaw rur kształtujący opory hydrauliczne pętli.",
        "Wpływ okładziny: płytki ceramiczne (0,02 m2K/W) vs panele (0,08 m2K/W) na przepływy."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-projekt",
    "name": "Symulator Zależności Projektowych Podłogówki",
    "description": "Narzędzie interaktywne ilustrujące zmiany oporów hydraulicznych (m H2O) i przepływu (l/min) w zależności od wybranego rozstawu rur oraz zastosowanej okładziny podłogowej.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-case-dark: #0f172a;
    --rk-case-slate: #475569;
    --rk-case-bg: #f8fafc;
    --rk-case-card: #ffffff;
    --rk-case-border: #e2e8f0;
    
    /* Kolory funkcyjne */
    --rk-case-blue: #0ea5e9;
    --rk-case-blue-light: #e0f2fe;
    --rk-case-red: #ef4444;
    --rk-case-red-light: #fee2e2;
    --rk-case-green: #10b981;
    --rk-case-green-light: #dcfce7;
    --rk-case-gold: #f59e0b;
}

.rk-case-container {
    max-width: 950px;
    margin: 40px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-case-card);
    border-radius: 24px;
    box-shadow: 0 25px 50px -12px rgba(14, 165, 233, 0.15);
    border: 1px solid rgba(14, 165, 233, 0.2);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Tagi Long Tail */
.rk-case-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: var(--rk-case-dark);
}

.rk-mat-tag {
    background: rgba(255,255,255,0.1);
    color: var(--rk-case-blue-light);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid rgba(224, 242, 254, 0.2);
    transition: all 0.3s;
}

.rk-mat-tag:hover {
    background: var(--rk-case-blue-light);
    color: var(--rk-case-dark);
}

/* Nagłówek */
.rk-case-header {
    padding: 25px 40px 30px;
    background: var(--rk-case-dark);
    color: #ffffff;
    border-bottom: 4px solid var(--rk-case-gold);
}

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

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

/* Ekspert Block */
.rk-case-expert {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 25px 40px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-case-border);
}

.rk-expert-photo {
    width: 80px;
    height: 80px;
    border-radius: 50%;
    object-fit: cover;
    border: 3px solid var(--rk-case-blue);
    flex-shrink: 0;
}

.rk-expert-quote {
    position: relative;
}

.rk-expert-quote p {
    font-size: 16px;
    font-weight: 700;
    color: var(--rk-case-dark);
    font-style: italic;
    margin: 0 0 8px 0;
    line-height: 1.5;
}

.rk-expert-name {
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-case-blue);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Symulator - Przełącznik Przed/Po */
.rk-case-simulator {
    padding: 40px;
    background: var(--rk-case-bg);
}

.rk-toggle-wrapper {
    display: flex;
    justify-content: center;
    margin-bottom: 35px;
}

.rk-state-toggle {
    display: flex;
    background: #e2e8f0;
    border-radius: 16px;
    padding: 6px;
    position: relative;
    width: 100%;
    max-width: 500px;
}

.rk-state-toggle input { display: none; }

.rk-toggle-lbl {
    flex: 1;
    text-align: center;
    padding: 14px 20px;
    font-size: 15px;
    font-weight: 800;
    color: var(--rk-case-slate);
    cursor: pointer;
    position: relative;
    z-index: 2;
    transition: color 0.3s;
}

.rk-state-toggle input:checked + .rk-toggle-lbl {
    color: #ffffff;
}

.rk-toggle-glider {
    position: absolute;
    top: 6px; left: 6px;
    height: calc(100% - 12px);
    width: calc(50% - 6px);
    background: var(--rk-case-red);
    border-radius: 12px;
    transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.4s;
    box-shadow: 0 4px 10px rgba(0,0,0,0.1);
    z-index: 1;
}

#stateAfter:checked ~ .rk-toggle-glider {
    transform: translateX(100%);
    background: var(--rk-case-green);
}

/* Grid Danych */
.rk-data-tiles {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 15px;
    margin-bottom: 30px;
}

.rk-tile {
    background: #ffffff;
    border: 1px solid var(--rk-case-border);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 4px 6px rgba(0,0,0,0.02);
    transition: all 0.4s ease;
}

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

.rk-tile-val {
    font-size: 24px;
    font-weight: 900;
    color: var(--rk-case-dark);
    transition: color 0.4s;
}

.rk-tile-desc {
    font-size: 12px;
    color: #94a3b8;
    margin-top: 5px;
    font-weight: 500;
}

/* Wizualizacja SVG */
.rk-case-visual {
    background: #ffffff;
    border-radius: 16px;
    border: 1px solid var(--rk-case-border);
    padding: 30px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 30px;
    transition: border-color 0.4s;
}

.rk-svg-box {
    width: 200px;
    flex-shrink: 0;
}

.rk-case-story {
    flex: 1;
}

.rk-case-story h3 {
    font-size: 20px;
    font-weight: 900;
    margin: 0 0 10px 0;
    color: var(--rk-case-dark);
    transition: color 0.4s;
}

.rk-case-story p {
    font-size: 15px;
    line-height: 1.6;
    color: var(--rk-case-slate);
    margin: 0;
}

/* Stany Wizualne - Dynamiczne klasy */
.state-before .rk-tile-val.dynamic { color: var(--rk-case-red); }
.state-before .rk-case-visual { border-top: 4px solid var(--rk-case-red); }
.state-before .svg-dial { stroke: var(--rk-case-red); stroke-dasharray: 100 100; transition: stroke-dasharray 1s ease-in-out; }
.state-before .svg-waves { stroke: var(--rk-case-red); opacity: 1; animation: pulseWave 0.5s infinite; }

.state-after .rk-tile-val.dynamic { color: var(--rk-case-green); }
.state-after .rk-case-visual { border-top: 4px solid var(--rk-case-green); }
.state-after .svg-dial { stroke: var(--rk-case-green); stroke-dasharray: 20 180; transition: stroke-dasharray 1s ease-in-out; }
.state-after .svg-waves { stroke: var(--rk-case-green); opacity: 0; }

@keyframes pulseWave {
    0% { transform: scale(0.9); opacity: 0.5; }
    50% { transform: scale(1.1); opacity: 1; }
    100% { transform: scale(0.9); opacity: 0.5; }
}

@media (max-width: 800px) {
    .rk-data-tiles { grid-template-columns: 1fr 1fr; }
    .rk-case-visual { flex-direction: column; text-align: center; }
    .rk-case-expert { flex-direction: column; text-align: center; }
}
@media (max-width: 480px) {
    .rk-data-tiles { grid-template-columns: 1fr; }
    .rk-toggle-lbl { font-size: 13px; padding: 12px 10px; }
}
</style>

<div class="rk-case-container" id="rkCaseApp">
    
    <div class="rk-case-tags">
        <span class="rk-mat-tag"># modernizacja ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># wymiana pompy obiegowej w starym domu</span>
        <span class="rk-mat-tag"># opory hydrauliczne w starych rurach</span>
        <span class="rk-mat-tag"># zużycie prądu przez pompę obiegową</span>
    </div>

    <div class="rk-case-header">
        <h2>Case Study: 140 m² z lat 70. – Dlaczego nowa podłogówka nie grzała?</h2>
        <p>Poznaj historię Pana Dawida z Poznania, który zmodernizował dom, wyrzucił grzejniki, wylał nowe jastrychy, ale zostawił &#8222;dobrą, starą pompę&#8221; z kotłowni. Zobacz, jak wyliczenia hydrauliczne uratowały tę inwestycję.</p>
    </div>

    <div class="rk-case-expert">
        <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Audyt Instalacji" class="rk-expert-photo">
        <div class="rk-expert-quote">
            <p>&#8222;To klasyczny błąd przy termomodernizacjach. Inwestorzy ładują dziesiątki tysięcy w pompę ciepła i nową wylewkę, ale zostawiają starą pompę 3-biegową, bo 'przecież działa&#8217;. Stara pompa nie radzi sobie z ogromnymi oporami gęsto ułożonych rur podłogówki, dławi przepływ i zżera prąd.&#8221;</p>
            <div class="rk-expert-name">Robert Kucharski – Audyt i Projekt OZC</div>
        </div>
    </div>

    <div class="rk-case-simulator">
        
        <div class="rk-toggle-wrapper">
            <div class="rk-state-toggle">
                <input type="radio" name="caseState" id="stateBefore" value="before" checked>
                <label for="stateBefore" class="rk-toggle-lbl">Przed Audytem Roberta</label>
                
                <input type="radio" name="caseState" id="stateAfter" value="after">
                <label for="stateAfter" class="rk-toggle-lbl">Po Doborze Inżynierskim</label>
                
                <div class="rk-toggle-glider"></div>
            </div>
        </div>

        <div class="rk-data-tiles state-before" id="rkTileGroup">
            <div class="rk-tile">
                <div class="rk-tile-title">Pompa Obiegowa</div>
                <div class="rk-tile-val" id="valPump" style="font-size: 18px;">Stary Typ (AC)</div>
                <div class="rk-tile-desc" id="descPump">3 biegi stałe</div>
            </div>
            <div class="rk-tile">
                <div class="rk-tile-title">Pobór Mocy</div>
                <div class="rk-tile-val dynamic" id="valPower">85 W</div>
                <div class="rk-tile-desc" id="descPower">Praca ciągła</div>
            </div>
            <div class="rk-tile">
                <div class="rk-tile-title">Koszty Energii (Rok)</div>
                <div class="rk-tile-val dynamic" id="valCost">~326 PLN</div>
                <div class="rk-tile-desc">Sezon grzewczy</div>
            </div>
            <div class="rk-tile">
                <div class="rk-tile-title">Komfort Cieplny</div>
                <div class="rk-tile-val dynamic" id="valComfort" style="font-size: 18px;">Niedogrzanie</div>
                <div class="rk-tile-desc" id="descComfort">Chłodna łazienka</div>
            </div>
        </div>

        <div class="rk-case-visual state-before" id="rkVisualBox">
            <div class="rk-svg-box">
                <!-- SVG Dashboard Pompy -->
                <svg viewBox="0 0 100 100" width="100%" height="100%">
                    <!-- Tło i obudowa -->
                    <circle cx="50" cy="50" r="45" fill="#f8fafc" stroke="#e2e8f0" stroke-width="2"/>
                    
                    <!-- Skala mocy -->
                    <path d="M 20 80 A 40 40 0 1 1 80 80" fill="none" stroke="#cbd5e1" stroke-width="8" stroke-linecap="round"/>
                    <path d="M 20 80 A 40 40 0 1 1 80 80" fill="none" class="svg-dial" stroke-width="8" stroke-linecap="round"/>
                    
                    <!-- Fale dźwiękowe (Hałas/Kawitacja) -->
                    <g class="svg-waves" style="transform-origin: 50px 50px;">
                        <path d="M 10 50 Q -10 50 10 30" fill="none" stroke-width="3" stroke-linecap="round"/>
                        <path d="M 90 50 Q 110 50 90 30" fill="none" stroke-width="3" stroke-linecap="round"/>
                    </g>
                    
                    <text x="50" y="55" font-family="monospace" font-weight="bold" font-size="20" text-anchor="middle" fill="#0f172a" id="svgWattText">85W</text>
                    <text x="50" y="70" font-family="sans-serif" font-weight="bold" font-size="8" text-anchor="middle" fill="#64748b" id="svgStatusText">HAŁAS</text>
                </svg>
            </div>
            
            <div class="rk-case-story">
                <h3 id="storyTitle">Hałas w rurach i zimne strefy brzegowe</h3>
                <p id="storyText">Pan Dawid pozostawił starą pompę węzłową. Urządzenie tłoczyło wodę na sztywnym 3 biegu, pobierając aż 85W. Z powodu wysokich oporów hydraulicznych gęstej podłogówki (rury układane co 10 cm), pompa nie dawała rady &#8222;przepchnąć&#8221; wody do najdalszej dobudówki, a wysoka prędkość w pobliżu rozdzielacza powodowała irytujący szum kawitacyjny nocą.</p>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const radios = document.querySelectorAll('input[name="caseState"]');
    
    // UI Elements
    const tileGroup = document.getElementById('rkTileGroup');
    const visualBox = document.getElementById('rkVisualBox');
    
    // Data Elements
    const valPump = document.getElementById('valPump');
    const descPump = document.getElementById('descPump');
    const valPower = document.getElementById('valPower');
    const descPower = document.getElementById('descPower');
    const valCost = document.getElementById('valCost');
    const valComfort = document.getElementById('valComfort');
    const descComfort = document.getElementById('descComfort');
    
    const storyTitle = document.getElementById('storyTitle');
    const storyText = document.getElementById('storyText');
    
    const svgWattText = document.getElementById('svgWattText');
    const svgStatusText = document.getElementById('svgStatusText');

    const stateData = {
        before: {
            pump: "Stary Typ (AC)", dPump: "3 biegi stałe",
            power: "85 W", dPower: "Praca ciągła",
            cost: "~326 PLN",
            comfort: "Niedogrzanie", dComfort: "Zimna dobudówka",
            title: "Hałas w rurach i zimne strefy brzegowe",
            text: "Pan Dawid pozostawił starą pompę węzłową. Urządzenie tłoczyło wodę na sztywnym 3 biegu, pobierając aż 85W. Z powodu wysokich oporów hydraulicznych gęstej podłogówki (rury układane co 10 cm), pompa nie dawała rady przepchnąć czynnika do najdalszej dobudówki, a nadmiar ciśnienia przy rozdzielaczu powodował irytujący szum kawitacyjny nocą.",
            svgW: "85W", svgS: "HAŁAS"
        },
        after: {
            pump: "Nowy Typ (EC)", dPump: "AUTOADAPT",
            power: "12 W", dPower: "Praca adaptacyjna",
            cost: "~46 PLN",
            comfort: "Idealny", dComfort: "Równe temperatury",
            title: "Cisza, oszczędność i równomierne ciepło",
            text: "Po audycie, wyliczyliśmy dokładne opory hydrauliczne instalacji (H) oraz wymagany przepływ (Q). Wymiana na nowoczesną pompę z silnikiem EC i trybem stałociśnieniowym (CP) całkowicie wyeliminowała szumy. Pompa adaptuje się do zamykających się termostatów, pobierając zaledwie 12W prądu, a woda w końcu dociera do każdego pomieszczenia.",
            svgW: "12W", svgS: "AUTO"
        }
    };

    radios.forEach(radio => {
        radio.addEventListener('change', function() {
            const state = this.value;
            const data = stateData[state];

            // Change Classes for Colors/Animations
            tileGroup.className = `rk-data-tiles state-${state}`;
            visualBox.className = `rk-case-visual state-${state}`;

            // Update Data
            valPump.textContent = data.pump;
            descPump.textContent = data.dPump;
            valPower.textContent = data.power;
            descPower.textContent = data.dPower;
            valCost.textContent = data.cost;
            valComfort.textContent = data.comfort;
            descComfort.textContent = data.dComfort;
            
            storyTitle.textContent = data.title;
            storyText.textContent = data.text;
            
            svgWattText.textContent = data.svgW;
            svgStatusText.textContent = data.svgS;
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-casestudy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Case Study: 140 m² z lat 70. – Dlaczego nowa podłogówka nie grzała?",
    "description": "Praktyczne studium przypadku (modernizacja domu 140m2 w Poznaniu). Zobacz, jak inżynierski dobór i wymiana starej pompy AC na energooszczędną pompę EC rozwiązały problem niedogrzania i wysokich rachunków.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Ekspert HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-casestudy",
    "name": "Porównanie parametrów po termomodernizacji (Pompa AC vs EC)",
    "description": "Zestawienie empirycznych danych eksploatacyjnych po audycie inżynierskim. Wymiana nieefektywnego urządzenia węzłowego na model adaptacyjny w domu 140m2.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "modernizacja ogrzewania podłogowego",
      "wymiana pompy obiegowej w starym domu",
      "opory hydrauliczne w starych rurach",
      "zużycie prądu przez pompę obiegową",
      "pompa energooszczędna do podłogówki"
    ],
    "measurementTechnique": "Pomiary poboru mocy elektrycznej oraz identyfikacja stref niedogrzania spowodowanych spadkiem ciśnienia w pętli krytycznej przed i po montażu nowej armatury.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Przed audytem: Pompa AC pobierała 85W, roczny koszt ~326 PLN, brak dopływu czynnika do stref brzegowych.",
        "Po audycie: Pompa EC z autoadaptacją pobiera 12W, roczny koszt ~46 PLN, pełne zrównoważenie hydrauliczne."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-casestudy",
    "name": "Symulator Efektów Termomodernizacji",
    "description": "Interaktywny interfejs pozwalający na przełączanie między stanami 'przed' i 'po' wymianie pompy obiegowej, ilustrujący bezpośrednie korzyści finansowe i akustyczne.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-auth-dark: #0f172a;
    --rk-auth-panel: #1e293b;
    --rk-auth-bg: #ffffff;
    --rk-auth-surface: #f8fafc;
    --rk-auth-border: #e2e8f0;
    --rk-auth-text: #334155;
    --rk-auth-muted: #64748b;
    
    --rk-auth-blue: #0284c7;
    --rk-auth-gold: #eab308;
    --rk-auth-fb: #1877F2;
    --rk-auth-li: #0A66C2;
}

.rk-auth-container {
    max-width: 950px;
    margin: 60px auto;
    font-family: 'Inter', -apple-system, sans-serif;
    background: var(--rk-auth-bg);
    border-radius: 24px;
    box-shadow: 0 10px 30px -10px rgba(15, 23, 42, 0.1);
    border: 1px solid var(--rk-auth-border);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Header Area */
.rk-auth-header {
    background: var(--rk-auth-dark);
    padding: 35px 50px;
    color: #ffffff;
    border-bottom: 4px solid var(--rk-auth-gold);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 20px;
}

.rk-auth-header-text h2 {
    font-size: 26px;
    font-weight: 900;
    margin: 0 0 8px 0;
    line-height: 1.3;
    color: #ffffff;
}

.rk-auth-header-text p {
    font-size: 15px;
    color: #cbd5e1;
    margin: 0;
    font-weight: 500;
}

.rk-auth-trust-badge {
    background: rgba(234, 179, 8, 0.15);
    border: 1px solid rgba(234, 179, 8, 0.3);
    color: var(--rk-auth-gold);
    padding: 10px 20px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    gap: 10px;
    font-weight: 800;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: 1px;
    flex-shrink: 0;
}

/* Main Layout Grid */
.rk-auth-grid {
    display: grid;
    grid-template-columns: 320px 1fr;
    background: var(--rk-auth-bg);
}

/* Left Sidebar: Profile */
.rk-auth-profile {
    background: var(--rk-auth-surface);
    padding: 40px 30px;
    border-right: 1px solid var(--rk-auth-border);
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

.rk-auth-photo-wrap {
    width: 160px;
    height: 160px;
    margin-bottom: 25px;
}

.rk-auth-photo {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid #ffffff;
    box-shadow: 0 4px 10px rgba(2, 132, 199, 0.1);
}

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

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

.rk-auth-socials {
    display: flex;
    flex-direction: column;
    gap: 10px;
    width: 100%;
}

.rk-social-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px;
    border-radius: 12px;
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    text-decoration: none;
}

.rk-social-btn.fb { background: var(--rk-auth-fb); }
.rk-social-btn.fb:hover { background: #166fe5; }
.rk-social-btn.li { background: var(--rk-auth-li); }
.rk-social-btn.li:hover { background: #0959aa; }

/* Right Content Area */
.rk-auth-content {
    display: flex;
    flex-direction: column;
}

/* Cytat (Hook) */
.rk-auth-quote-box {
    padding: 35px 40px 25px;
    background: #ffffff;
    border-bottom: 1px solid var(--rk-auth-border);
}

.rk-auth-quote-mark {
    font-size: 60px;
    color: var(--rk-auth-blue);
    line-height: 0;
    opacity: 0.2;
    margin-bottom: -15px;
    display: block;
    font-family: serif;
}

.rk-auth-quote-text {
    font-size: 19px;
    font-weight: 700;
    color: var(--rk-auth-dark);
    line-height: 1.5;
    margin: 0;
    font-style: italic;
}

/* Navigation Tabs */
.rk-auth-tabs {
    display: flex;
    border-bottom: 1px solid var(--rk-auth-border);
    background: var(--rk-auth-surface);
}

.rk-auth-tab {
    flex: 1;
    padding: 18px 10px;
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    font-size: 13px;
    font-weight: 800;
    color: var(--rk-auth-muted);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

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

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

/* Tab Panels */
.rk-auth-panel {
    padding: 40px;
    display: none;
}

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

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

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

.rk-auth-panel p:last-child { margin-bottom: 0; }

.rk-auth-panel a {
    color: var(--rk-auth-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 1px solid transparent;
}

.rk-auth-panel a:hover {
    border-color: var(--rk-auth-blue);
}

/* Stats Grid in Panel 2 */
.rk-auth-stats {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 25px;
}

.rk-stat-box {
    background: var(--rk-auth-surface);
    border: 1px solid var(--rk-auth-border);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    align-items: center;
    gap: 15px;
}

.rk-stat-icon {
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: #ffffff;
    color: var(--rk-auth-blue);
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--rk-auth-border);
    flex-shrink: 0;
}

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

.rk-stat-val {
    font-size: 22px;
    font-weight: 900;
    color: var(--rk-auth-dark);
    line-height: 1.2;
}

.rk-stat-label {
    font-size: 12px;
    font-weight: 700;
    color: var(--rk-auth-muted);
    text-transform: uppercase;
}

/* Mobile */
@media (max-width: 850px) {
    .rk-auth-grid { grid-template-columns: 1fr; }
    .rk-auth-header { flex-direction: column; text-align: center; padding: 30px 25px; }
    .rk-auth-trust-badge { width: 100%; justify-content: center; }
    .rk-auth-profile { border-right: none; border-bottom: 1px solid var(--rk-auth-border); padding: 30px 25px; }
    .rk-auth-socials { flex-direction: row; }
    .rk-auth-tabs { flex-direction: column; background: #ffffff; }
    .rk-auth-tab { border-bottom: none; border-left: 4px solid transparent; justify-content: flex-start; padding: 15px 25px; }
    .rk-auth-tab.active { border-left-color: var(--rk-auth-blue); border-bottom-color: transparent; background: var(--rk-auth-surface); }
    .rk-auth-quote-box { padding: 25px; }
    .rk-auth-panel { padding: 30px 25px; }
    .rk-auth-stats { grid-template-columns: 1fr; }
}
</style>

<div class="rk-auth-container">
    
    <div class="rk-auth-header">
        <div class="rk-auth-header-text">
            <h2>Ekspert HVAC Robert Kucharski: Dobór pompy to inżynieria, nie zgadywanka</h2>
            <p>Nie powielam instalatorskich mitów. Zobacz, kto odpowiada za wiedzę techniczną i obliczenia w tym artykule.</p>
        </div>
        <div class="rk-auth-trust-badge">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
            Weryfikacja HVAC
        </div>
    </div>

    <div class="rk-auth-grid">
        
        <div class="rk-auth-profile">
            <div class="rk-auth-photo-wrap">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski - Inżynier HVAC" class="rk-auth-photo">
            </div>
            
            <h3 class="rk-auth-name">Robert Kucharski</h3>
            <div class="rk-auth-title">Inżynier &amp; Specjalista HVAC</div>
            
            <div class="rk-auth-socials">
                <a href="https://www.facebook.com/projektogrzewaniapl/" target="_blank" rel="noopener noreferrer" class="rk-social-btn fb">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"></path></svg>
                    Projekt Ogrzewania
                </a>
                <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener noreferrer" class="rk-social-btn li">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect x="2" y="9" width="4" height="12"></rect><circle cx="4" cy="4" r="2"></circle></svg>
                    LinkedIn
                </a>
            </div>
        </div>

        <div class="rk-auth-content">
            
            <div class="rk-auth-quote-box">
                <span class="rk-auth-quote-mark">&#8222;</span>
                <p class="rk-auth-quote-text">
                    Nigdy nie kupuj pompy obiegowej &#8222;na zapas&#8221;. Przewymiarowana pompa to hałas, kawitacja i marnowanie prądu. Niedowymiarowana to zimna podłoga. Matematyka układu wybacza znacznie mniej niż wylewka betonowa – tutaj liczą się twarde obliczenia oporów, a nie przypuszczenia instalatora.
                </p>
            </div>

            <div class="rk-auth-tabs">
                <button class="rk-auth-tab active" data-panel="omnie">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"></path><circle cx="12" cy="7" r="4"></circle></svg>
                    O Mnie
                </button>
                <button class="rk-auth-tab" data-panel="liczby">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    Fakty i Liczby
                </button>
                <button class="rk-auth-tab" data-panel="filozofia">
                    <svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon></svg>
                    Filozofia Projektowa
                </button>
            </div>

            <div class="rk-auth-panel active" id="panel-omnie">
                <h3>Praktyka wygrywa z teorią</h3>
                <p>
                    Projektowanie systemów ogrzewania to czysta matematyka i hydraulika. Od lat doradzam inwestorom, audytuję błędy wykonawcze na placach budowy i optymalizuję pracę źródeł ciepła. Oprócz działalności projektowej, zarządzam również portalami remont.biz.pl oraz <a sobir.pl, gdzie dzielę się konkretną, twardą wiedzą.
                </p>
                <p>
                    Wiem dokładnie, ile kosztuje inwestora niewiedza. W swoich projektach łączę rygorystyczne normy inżynierskie z bezkompromisowym pragmatyzmem, udowadniając, że odpowiednio zbilansowany zład wody to gwarancja spokoju na dekady.
                </p>
            </div>

            <div class="rk-auth-panel" id="panel-liczby">
                <h3>Instalacje oparte na twardych danych</h3>
                <p>Każdy opór hydrauliczny w rurze, każdy zakręt i przepływ na rotametrze mają gigantyczne znaczenie dla żywotności pompy. Moje podejście opiera się wyłącznie na wyliczeniach.</p>
                
                <div class="rk-auth-stats">
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">1000+</div>
                            <div class="rk-stat-label">Wykonanych Projektów OZC</div>
                        </div>
                    </div>
                    
                    <div class="rk-stat-box">
                        <div class="rk-stat-icon">
                            <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 2v20M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6"></path></svg>
                        </div>
                        <div class="rk-stat-info">
                            <div class="rk-stat-val">3700+</div>
                            <div class="rk-stat-label">Aktywnych Obserwatorów</div>
                        </div>
                    </div>
                </div>
            </div>

            <div class="rk-auth-panel" id="panel-filozofia">
                <h3>Bezbłędny system zaczyna się na papierze</h3>
                <p>
                    Odrzucam dobieranie urządzeń na zasadzie &#8222;zawsze tak montujemy i działa&#8221;. Brak analizy krzywych ciśnienia (H) i wydajności (Q) to najczęstsza przyczyna awarii silników EC i głośnej pracy instalacji.
                </p>
                <p>
                    Wszystkie algorytmy i artykuły techniczne, które znajdziesz na tej stronie, bazują na obowiązujących normach projektowych (m.in. <a href="https://projekt-ogrzewania.pl/norma-obliczen-ogrzewania-podlogowego-en-1264/">PN-EN 1264</a> i PN-EN 12831). Zapewnia to pełną zgodność prawną i maksymalizuje sprawność energetyczną Twojego domu.
                </p>
            </div>

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

<script>
document.addEventListener('DOMContentLoaded', function() {
    const tabs = document.querySelectorAll('.rk-auth-tab');
    const panels = document.querySelectorAll('.rk-auth-panel');

    tabs.forEach(tab => {
        tab.addEventListener('click', function() {
            // Remove active classes
            tabs.forEach(t => t.classList.remove('active'));
            panels.forEach(p => p.classList.remove('active'));

            // Add active class to clicked tab
            this.classList.add('active');

            // Show corresponding panel
            const target = this.getAttribute('data-panel');
            document.getElementById('panel-' + target).classList.add('active');
        });
    });
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-autor",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Ekspert HVAC Robert Kucharski: Dobór pompy to inżynieria, nie zgadywanka",
    "description": "Profil ekspercki Roberta Kucharskiego, inżyniera HVAC weryfikującego błędy hydrauliczne oraz dobór parametrów ciśnienia i przepływu w instalacjach płaszczyznowych.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Specjalista HVAC",
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-autor",
    "name": "Baza kompetencji inżynierskich HVAC - Robert Kucharski",
    "description": "Zestawienie twardych statystyk i doświadczenia w zakresie normatywnego projektowania hydrauliki instalacji płaszczyznowych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej",
      "obliczenia oporów hydraulicznych",
      "norma PN-EN 1264 podłogówka",
      "inżynier hvac robert kucharski",
      "audyt instalacji grzewczej"
    ],
    "measurementTechnique": "Weryfikacja doświadczenia na bazie ponad 1000 zrealizowanych i zoptymalizowanych projektów OZC oraz sieci zaufania online.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Zrealizowane projekty instalacji płaszczyznowych i doborów hydraulicznych: 1000+",
        "Społeczność ekspercka: Zaufanie ponad 3700 obserwatorów.",
        "Metodologia: Odrzucenie dobierania sprzętu na zapas na rzecz rygorystycznych obliczeń strat ciśnienia i przepływu."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-autor",
    "name": "Statyczny Profil E-E-A-T Autora",
    "description": "Moduł weryfikujący autorytet inżynierski twórcy artykułu, integrujący bezpośredni cytat (hook), portfolio oraz potwierdzenie zastosowania norm technicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>



<style>
:root {
    --rk-faq-dark: #1e293b;
    --rk-faq-primary: #3b82f6;
    --rk-faq-accent: #8b5cf6;
    --rk-faq-bg: #ffffff;
    --rk-faq-surface: #f8fafc;
    --rk-faq-border: #e2e8f0;
    --rk-faq-text: #475569;
    --rk-faq-danger: #ef4444;
}

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

/* Sekcja Nagłówkowa */
.rk-faq-top {
    padding: 40px 50px;
    background: linear-gradient(145deg, var(--rk-faq-surface) 0%, #ffffff 100%);
    border-bottom: 1px solid var(--rk-faq-border);
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-faq-top h2 {
    font-size: 32px;
    font-weight: 900;
    color: var(--rk-faq-dark);
    margin: 0;
    line-height: 1.2;
    letter-spacing: -0.5px;
}

.rk-faq-top p {
    font-size: 16px;
    color: var(--rk-faq-text);
    margin: 0;
    max-width: 750px;
    line-height: 1.6;
}

/* Master Switch */
.rk-faq-master-control {
    display: inline-flex;
    align-items: center;
    gap: 15px;
    background: var(--rk-faq-bg);
    padding: 12px 24px;
    border-radius: 12px;
    border: 1px solid var(--rk-faq-border);
    align-self: flex-start;
    cursor: pointer;
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
    transition: border-color 0.3s;
}

.rk-faq-master-control:hover {
    border-color: var(--rk-faq-primary);
}

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

.rk-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
}

.rk-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #cbd5e1;
    transition: .4s;
    border-radius: 24px;
}

.rk-slider:before {
    position: absolute;
    content: "";
    height: 18px; width: 18px;
    left: 3px; bottom: 3px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}

input:checked + .rk-slider { background-color: var(--rk-faq-primary); }
input:checked + .rk-slider:before { transform: translateX(20px); }

/* Lista FAQ */
.rk-faq-list {
    padding: 20px 50px 40px;
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.rk-faq-item {
    background: var(--rk-faq-bg);
    border: 1px solid var(--rk-faq-border);
    border-radius: 16px;
    overflow: hidden;
    transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.rk-faq-item.active {
    border-color: var(--rk-faq-primary);
    box-shadow: 0 10px 20px -5px rgba(59, 130, 246, 0.1);
}

.rk-faq-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 20px 25px;
    cursor: pointer;
    user-select: none;
    background: transparent;
    transition: background 0.3s;
}

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

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

.rk-faq-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    border-radius: 10px;
    background: var(--rk-faq-surface);
    color: var(--rk-faq-primary);
    flex-shrink: 0;
    transition: all 0.3s;
}

.rk-faq-item.active .rk-faq-icon {
    background: var(--rk-faq-primary);
    color: #ffffff;
}

.rk-faq-item.active .rk-faq-icon.danger-icon {
    background: var(--rk-faq-danger);
    color: #ffffff;
}

.rk-faq-header h3 {
    font-size: 17px;
    font-weight: 700;
    color: var(--rk-faq-dark);
    margin: 0;
    line-height: 1.4;
}

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

.rk-faq-item.active .rk-faq-chevron {
    transform: rotate(180deg);
    color: var(--rk-faq-primary);
}

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

.rk-faq-content {
    padding: 0 25px 25px 82px; /* Wyrównanie do tekstu, ominięcie ikony */
}

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

.rk-faq-content a {
    color: var(--rk-faq-primary);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(59, 130, 246, 0.2);
    transition: border-color 0.2s;
}

.rk-faq-content a:hover {
    border-color: var(--rk-faq-primary);
}

@media (max-width: 768px) {
    .rk-faq-top { padding: 30px 20px; }
    .rk-faq-top h2 { font-size: 26px; }
    .rk-faq-list { padding: 15px 20px 30px; gap: 10px; }
    .rk-faq-header { padding: 15px; }
    .rk-faq-content { padding: 0 15px 20px 15px; }
    .rk-faq-question-box { gap: 12px; }
    .rk-faq-header h3 { font-size: 15px; }
}
</style>

<div class="rk-faq-container" id="rkFaqApp">
    <div class="rk-faq-top">
        <h2>FAQ – Najczęściej zadawane pytania dotyczące pomp obiegowych</h2>
        <p>Baza wiedzy diagnostycznej. Eksperckie, techniczne odpowiedzi na najczęstsze problemy z przepływem, trybami pracy i integracją pomp cyrkulacyjnych w płaszczyznowych systemach grzewczych.</p>
        
        <label class="rk-faq-master-control">
            <span class="rk-faq-master-label">Rozwiń wszystkie odpowiedzi</span>
            <div class="rk-switch">
                <input type="checkbox" id="rkToggleAllFaq">
                <span class="rk-slider"></span>
            </div>
        </label>
    </div>

    <div class="rk-faq-list">
        
        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon danger-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z"></path><line x1="12" y1="9" x2="12" y2="13"></line><line x1="12" y1="17" x2="12.01" y2="17"></line></svg>
                    </div>
                    <h3>Czy pompa obiegowa do podłogówki może pracować na trybie proporcjonalnym (PP)?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p><strong>Nie, praca pompy w trybie proporcjonalnym (PP) jest kardynalnym błędem wykonawczym.</strong> W tym trybie zamknięcie części pętli grzewczych powoduje obniżenie ciśnienia przez pompę, co skutkuje drastycznym spadkiem przepływów w pozostałych, otwartych obiegach i niedogrzaniem pomieszczeń.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
                    </div>
                    <h3>Jaki przepływ na rotametrach powinna zapewnić pompa obiegowa?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>Prawidłowy przepływ dla standardowych pętli o długości 70–90 metrów wynosi <strong>od 1,5 do 2,5 litra na minutę (l/min)</strong>. Wartości te muszą wynikać bezpośrednio z projektu hydraulicznego i być precyzyjnie wyregulowane na belce rozdzielacza za pomocą <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrów</a>.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polygon points="11 5 6 9 2 9 2 15 6 15 11 19 11 5"></polygon><path d="M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07"></path></svg>
                    </div>
                    <h3>Dlaczego pompa obiegowa podłogówki buczy i głośno pracuje?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>Główną przyczyną głośnej pracy jest <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">zapowietrzenie układu</a> lub zjawisko kawitacji wywołane zbyt niskim ciśnieniem statycznym w instalacji (poniżej 1,0 bar). Innym powodem może być zablokowanie wirnika przez osad magnetyczny w wyniku braku filtra magnetycznego w układzie.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12h4l2-9 4 18 2-9h4"></path><path d="M12 2v2"></path><path d="M12 20v2"></path></svg>
                    </div>
                    <h3>Czy pompa wbudowana w pompę ciepła wystarczy do obsłużenia podłogówki?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>W budynkach o powierzchni do 120 m² ze sprzyjającą architekturą hydrauliczną <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła</a> ze zintegrowaną pompą cyrkulacyjną zazwyczaj jest wystarczająca. Przy większych metrażach lub skomplikowanych układach kaskadowych konieczne jest zastosowanie <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgła hydraulicznego</a> i zewnętrznej pompy obiegowej.</p>
                </div>
            </div>
        </div>

        <div class="rk-faq-item">
            <div class="rk-faq-header">
                <div class="rk-faq-question-box">
                    <div class="rk-faq-icon">
                        <svg width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"></path><polyline points="22 4 12 14.01 9 11.01"></polyline></svg>
                    </div>
                    <h3>Jak sprawdzić, czy elektroniczna pompa obiegowa działa prawidłowo?</h3>
                </div>
                <div class="rk-faq-chevron">
                    <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
                </div>
            </div>
            <div class="rk-faq-body">
                <div class="rk-faq-content">
                    <p>Prawidłowe działanie poznasz po stabilnym wskazaniu aktualnego poboru mocy (wyrażonego w Watach na wyświetlaczu) oraz braku drgań. Dodatkowo rura zasilająca za pompą powinna osiągnąć temperaturę zgodną z nastawą na <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworze mieszającym</a> w czasie kilkunastu minut od startu.</p>
                </div>
            </div>
        </div>

    </div>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const faqItems = document.querySelectorAll('.rk-faq-item');
    const toggleAllCheckbox = document.getElementById('rkToggleAllFaq');

    // Obsługa pojedynczych akordeonów
    faqItems.forEach(item => {
        const header = item.querySelector('.rk-faq-header');
        const body = item.querySelector('.rk-faq-body');

        header.addEventListener('click', () => {
            const isActive = item.classList.contains('active');
            
            if (isActive) {
                item.classList.remove('active');
                body.style.maxHeight = '0px';
            } else {
                item.classList.add('active');
                body.style.maxHeight = body.scrollHeight + "px";
            }
            updateMasterSwitchState();
        });
    });

    // Obsługa przełącznika "Rozwiń wszystkie"
    toggleAllCheckbox.addEventListener('change', function() {
        const isChecked = this.checked;
        
        faqItems.forEach(item => {
            const body = item.querySelector('.rk-faq-body');
            if (isChecked) {
                item.classList.add('active');
                body.style.maxHeight = body.scrollHeight + "px";
            } else {
                item.classList.remove('active');
                body.style.maxHeight = '0px';
            }
        });
    });

    // Funkcja aktualizująca stan przełącznika głównego
    function updateMasterSwitchState() {
        const allActive = Array.from(faqItems).every(item => item.classList.contains('active'));
        toggleAllCheckbox.checked = allActive;
    }
});
</script>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-faq",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "FAQ – Najczęściej zadawane pytania dotyczące pomp obiegowych",
    "description": "Eksperckie odpowiedzi na najczęstsze problemy z pompami obiegowymi w systemach ogrzewania podłogowego. Diagnostyka, tryby pracy i ustawienia.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-faq",
    "name": "Baza Diagnostyczna Pomp Obiegowych 2026",
    "description": "Zbiór typowych awarii, optymalnych parametrów przepływu i konfiguracji hydraulicznych dla układów płaszczyznowych ogrzewania.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "tryb proporcjonalny a stałociśnieniowy",
      "przepływ na rotametrach podłogówki",
      "dlaczego pompa obiegowa buczy",
      "pompa obiegowa a pompa ciepła",
      "diagnostyka pompy ogrzewania podłogowego"
    ],
    "measurementTechnique": "Analiza objawów akustycznych i termicznych w odniesieniu do nastaw hydraulicznych na rozdzielaczu podłogowym.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Weryfikacja trybu PP (błąd) vs CP (prawidłowy)",
        "Kontrola przepływów nominalnych (1,5 - 2,5 l/min)",
        "Diagnostyka kawitacji i zapowietrzenia zładu",
        "Zależność wbudowanej pompy obiegowej od powierzchni budynku"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-faq",
    "name": "Interaktywny Asystent Diagnostyki Pomp",
    "description": "Moduł typu Accordion FAQ pozwalający użytkownikowi na szybkie filtrowanie i odczytywanie rozwiązań najczęstszych problemów hydraulicznych.",
    "applicationCategory": "EducationalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#faq-schema",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Czy pompa obiegowa do podłogówki może pracować na trybie proporcjonalnym (PP)?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Nie, praca pompy w trybie proporcjonalnym (PP) jest kardynalnym błędem wykonawczym. W tym trybie zamknięcie części pętli grzewczych powoduje obniżenie ciśnienia przez pompę, co skutkuje drastycznym spadkiem przepływów w pozostałych, otwartych obiegach i niedogrzaniem pomieszczeń."
        }
      },
      {
        "@type": "Question",
        "name": "Jaki przepływ na rotametrach powinna zapewnić pompa obiegowa?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowy przepływ dla standardowych pętli o długości 70–90 metrów wynosi od 1,5 do 2,5 litra na minutę (l/min). Wartości te muszą wynikać bezpośrednio z projektu hydraulicznego i być precyzyjnie wyregulowane na belce rozdzielacza."
        }
      },
      {
        "@type": "Question",
        "name": "Dlaczego pompa obiegowa podłogówki buczy i głośno pracuje?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Główną przyczyną głośnej pracy jest zapowietrzenie układu lub zjawisko kawitacji wywołane zbyt niskim ciśnieniem statycznym w instalacji (poniżej 1,0 bar). Innym powodem może być zablokowanie wirnika przez osad magnetyczny w wyniku braku filtra."
        }
      },
      {
        "@type": "Question",
        "name": "Czy pompa wbudowana w pompę ciepła wystarczy do obsłużenia podłogówki?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "W budynkach o powierzchni do 120 m² ze sprzyjającą architekturą hydrauliczną pompa fabryczna zazwyczaj jest wystarczająca. Przy większych metrażach lub skomplikowanych układach kaskadowych konieczne jest zastosowanie sprzęgła hydraulicznego i zewnętrznej pompy."
        }
      },
      {
        "@type": "Question",
        "name": "Jak sprawdzić, czy elektroniczna pompa obiegowa działa prawidłowo?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Prawidłowe działanie poznasz po stabilnym wskazaniu aktualnego poboru mocy (wyrażonego w Watach na wyświetlaczu) oraz braku drgań. Dodatkowo rura zasilająca za pompą powinna osiągnąć zadaną temperaturę w czasie kilkunastu minut od startu."
        }
      }
    ]
  }
]
</script>



<style>
:root {
    --rk-pmp-dark: #1e293b;
    --rk-pmp-blue: #0284c7;
    --rk-pmp-accent: #38bdf8;
    --rk-pmp-green: #10b981;
    --rk-pmp-red: #ef4444;
    --rk-pmp-gray: #64748b;
    --rk-pmp-bg: #f8fafc;
    --rk-pmp-card: #ffffff;
    --rk-pmp-border: #e2e8f0;
}

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

/* Tagi Długi Ogon */
.rk-tags-row {
    padding: 20px 30px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    justify-content: center;
}

.rk-mat-tag {
    background: rgba(2, 132, 199, 0.08);
    color: var(--rk-pmp-blue);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 700;
    border: 1px solid rgba(2, 132, 199, 0.15);
    transition: all 0.3s;
}

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

/* Nagłówek i Wstęp */
.rk-pmp-header {
    padding: 30px 40px;
    text-align: center;
    border-bottom: 1px solid var(--rk-pmp-border);
}

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

.rk-pmp-header p {
    font-size: 16px;
    color: var(--rk-pmp-gray);
    max-width: 700px;
    margin: 0 auto;
    line-height: 1.6;
}

/* Interaktywny Panel */
.rk-pmp-dashboard {
    display: grid;
    grid-template-columns: 1.2fr 1fr;
    background: var(--rk-pmp-bg);
    border-bottom: 1px solid var(--rk-pmp-border);
}

.rk-pmp-controls {
    padding: 40px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.rk-toggle-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--rk-pmp-card);
    padding: 15px 20px;
    border-radius: 12px;
    border: 1px solid var(--rk-pmp-border);
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
    cursor: pointer;
    transition: all 0.2s;
}

.rk-toggle-row:hover {
    border-color: var(--rk-pmp-accent);
}

.rk-toggle-label {
    font-size: 15px;
    font-weight: 700;
    color: var(--rk-pmp-dark);
}

/* Switch CSS */
.rk-switch {
    position: relative;
    display: inline-block;
    width: 50px;
    height: 28px;
}
.rk-switch input { opacity: 0; width: 0; height: 0; }
.rk-slider {
    position: absolute;
    cursor: pointer;
    top: 0; left: 0; right: 0; bottom: 0;
    background-color: #cbd5e1;
    transition: .4s;
    border-radius: 34px;
}
.rk-slider:before {
    position: absolute;
    content: "";
    height: 20px; width: 20px;
    left: 4px; bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
input:checked + .rk-slider { background-color: var(--rk-pmp-green); }
input:checked + .rk-slider:before { transform: translateX(22px); }

/* SVG Visualizer */
.rk-pmp-visual {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-left: 1px solid var(--rk-pmp-border);
    background: linear-gradient(135deg, #ffffff 0%, #f1f5f9 100%);
}

.rk-pmp-svg-box {
    position: relative;
    width: 160px;
    height: 160px;
    margin-bottom: 25px;
}

.rk-svg-rotor {
    transform-origin: center;
    transition: all 0.5s ease;
}

.anim-spin-slow { animation: pmpSpin 8s linear infinite; }
.anim-spin-fast { animation: pmpSpin 1.5s linear infinite; }
.color-off { stroke: #94a3b8; }
.color-on { stroke: var(--rk-pmp-green); filter: drop-shadow(0 0 8px rgba(16, 185, 129, 0.4)); }

@keyframes pmpSpin { 100% { transform: rotate(360deg); } }

.rk-status-badge {
    padding: 8px 24px;
    border-radius: 999px;
    font-size: 14px;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 1px;
    background: #e2e8f0;
    color: var(--rk-pmp-gray);
    transition: all 0.3s;
}

.rk-status-badge.status-ready {
    background: var(--rk-pmp-green);
    color: #ffffff;
    box-shadow: 0 10px 20px -5px rgba(16, 185, 129, 0.4);
}

/* Grid Detali */
.rk-pmp-details {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    padding: 40px;
}

.rk-detail-card {
    background: var(--rk-pmp-bg);
    padding: 25px;
    border-radius: 16px;
    border: 1px solid var(--rk-pmp-border);
}

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

.rk-detail-card h3 svg { color: var(--rk-pmp-blue); }

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

.rk-detail-card a {
    color: var(--rk-pmp-blue);
    font-weight: 700;
    text-decoration: none;
    border-bottom: 2px solid rgba(2, 132, 199, 0.2);
    transition: border-color 0.2s;
}

.rk-detail-card a:hover { border-color: var(--rk-pmp-blue); }

@media (max-width: 768px) {
    .rk-pmp-dashboard { grid-template-columns: 1fr; }
    .rk-pmp-visual { border-left: none; border-top: 1px solid var(--rk-pmp-border); padding: 30px; }
    .rk-pmp-details { grid-template-columns: 1fr; padding: 25px; gap: 15px; }
    .rk-pmp-controls { padding: 25px; }
    .rk-pmp-header { padding: 25px 20px; }
    .rk-pmp-header h2 { font-size: 24px; }
}
</style>

<div class="rk-pmp-container" id="pmp-configurator-app">
    
    <div class="rk-tags-row">
        <span class="rk-mat-tag"># dobór pompy obiegowej do podłogówki</span>
        <span class="rk-mat-tag"># współczynnik efektywności energetycznej eei</span>
        <span class="rk-mat-tag"># tryb stałociśnieniowy pompy</span>
        <span class="rk-mat-tag"># straty ciśnienia w instalacji</span>
    </div>

    <div class="rk-pmp-header">
        <h2>Podsumowanie – Kryteria wyboru niezawodnej pompy obiegowej</h2>
        <p>Wybór pompy obiegowej do instalacji ogrzewania podłogowego musi być podyktowany wyłącznie rzetelną analizą inżynierską, a nie pozorną oszczędnością przy zakupie. Uruchom weryfikator i sprawdź kluczowe parametry.</p>
    </div>

    <div class="rk-pmp-dashboard">
        <div class="rk-pmp-controls">
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Zgodność z dyrektywą ErP (EEI ≤ 0,20)</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Tryb stałociśnieniowy (CP) i wyświetlacz</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Korpus z żeliwa i wał ceramiczny</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
            <label class="rk-toggle-row">
                <span class="rk-toggle-label">Zgodność z projektem hydraulicznym</span>
                <div class="rk-switch">
                    <input type="checkbox" class="pmp-req-check">
                    <span class="rk-slider"></span>
                </div>
            </label>
        </div>

        <div class="rk-pmp-visual">
            <div class="rk-pmp-svg-box">
                <svg viewBox="0 0 100 100" fill="none">
                    <circle cx="50" cy="50" r="45" stroke="#cbd5e1" stroke-width="4" fill="#ffffff"/>
                    <circle cx="50" cy="50" r="35" stroke="#e2e8f0" stroke-width="8" />
                    <g class="rk-svg-rotor anim-spin-slow color-off" id="pmpRotor">
                        <line x1="50" y1="15" x2="50" y2="85" stroke-width="6" stroke-linecap="round"/>
                        <line x1="15" y1="50" x2="85" y2="50" stroke-width="6" stroke-linecap="round"/>
                        <circle cx="50" cy="50" r="8" fill="currentColor" />
                    </g>
                    <rect x="35" y="40" width="30" height="20" rx="4" fill="#1e293b" />
                    <text x="50" y="54" fill="#38bdf8" font-size="10" font-family="monospace" font-weight="bold" text-anchor="middle" id="pmpWattage">&#8212; W</text>
                </svg>
            </div>
            <div class="rk-status-badge" id="pmpStatusText">Urządzenie amatorskie</div>
        </div>
    </div>

    <div class="rk-pmp-details">
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"></path></svg>
                Zgodność z dyrektywą ErP
            </h3>
            <p>Urządzenie musi posiadać współczynnik efektywności energetycznej <strong>EEI ≤ 0,20</strong>. Spełnienie tego warunku gwarantuje minimalny pobór prądu na poziomie zaledwie kilku watów podczas inteligentnej pracy adaptacyjnej.</p>
        </div>
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 12 16 14"></polyline></svg>
                Wielofunkcyjność elektroniki
            </h3>
            <p>Solidna pompa musi oferować dedykowany tryb stałociśnieniowy (<strong>CP</strong>), niezbędny przy sterowaniu strefowym, oraz czytelny wyświetlacz informujący o aktualnym przepływie [m³/h] i poborze mocy [W].</p>
        </div>
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path></svg>
                Wysoka jakość materiałowa
            </h3>
            <p>Korpus wykonany z ciężkiego żeliwa z powłoką kataforetyczną oraz precyzyjny wał ceramiczny z nowoczesnymi łożyskami. To zestawienie gwarantuje cichą i bezawaryjną pracę przez minimum <strong>10–15 lat</strong>.</p>
        </div>
        <div class="rk-detail-card">
            <h3>
                <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><line x1="16" y1="13" x2="8" y2="13"></line><line x1="16" y1="17" x2="8" y2="17"></line><polyline points="10 9 9 9 8 9"></polyline></svg>
                Oparcie na dokumentacji
            </h3>
            <p>Zakup musi być bezwzględnie potwierdzony obliczeniami za pomocą <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a>, w oparciu o wyliczone <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">zapotrzebowanie cieplne OZC</a>. Eliminuje to ryzyko błędów hydraulicznych.</p>
        </div>
    </div>
</div>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-podsumowanie",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Podsumowanie – Kryteria wyboru niezawodnej pompy obiegowej",
    "description": "Zestawienie rygorystycznych kryteriów inżynierskich doboru energooszczędnej pompy obiegowej do ogrzewania podłogowego. Sprawdź parametry techniczne przed zakupem.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-podsumowanie",
    "name": "Standardy Techniczne Pomp Obiegowych 2026",
    "description": "Specyfikacja techniczna i minimalne wymogi materiałowo-elektroniczne dla pomp cyrkulacyjnych w płaszczyznowych systemach grzewczych.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "dobór pompy obiegowej do podłogówki",
      "współczynnik efektywności energetycznej eei",
      "tryb stałociśnieniowy cp pompy",
      "obliczenia strat ciśnienia w instalacji",
      "jakość pompy obiegowej"
    ],
    "measurementTechnique": "Analiza wskaźnika EEI z dyrektywy ErP, krzywych podnoszenia oraz oporów hydraulicznych rurociągów.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "EEI ≤ 0,20 - gwarancja energooszczędności",
        "Tryb CP (Constant Pressure) - dla systemów ze sterowaniem strefowym",
        "Żeliwo kataforetyczne i wał ceramiczny - żywotność 10-15 lat",
        "Weryfikacja mocy w odniesieniu do projektu OZC"
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-podsumowanie",
    "name": "Interaktywny Weryfikator Klasy Pompy Obiegowej",
    "description": "Narzędzie symulacyjne pozwalające na ocenę jakości wybranej pompy obiegowej poprzez weryfikację czterech kluczowych kryteriów inżynierskich.",
    "applicationCategory": "TechnicalApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>

<script>
document.addEventListener('DOMContentLoaded', function() {
    const checkboxes = document.querySelectorAll('.pmp-req-check');
    const rotor = document.getElementById('pmpRotor');
    const statusText = document.getElementById('pmpStatusText');
    const wattageDisplay = document.getElementById('pmpWattage');

    function updatePumpStatus() {
        let checkedCount = 0;
        checkboxes.forEach(cb => { if(cb.checked) checkedCount++; });

        if (checkedCount === 0) {
            statusText.textContent = 'Urządzenie amatorskie';
            statusText.className = 'rk-status-badge';
            rotor.className.baseVal = 'rk-svg-rotor anim-spin-slow color-off';
            wattageDisplay.textContent = '-- W';
            wattageDisplay.setAttribute('fill', '#64748b');
        } else if (checkedCount > 0 && checkedCount < 4) {
            statusText.textContent = `Weryfikacja: ${checkedCount}/4 kryteriów`;
            statusText.className = 'rk-status-badge';
            rotor.className.baseVal = 'rk-svg-rotor anim-spin-slow color-on';
            wattageDisplay.textContent = `${45 - (checkedCount * 10)} W`;
            wattageDisplay.setAttribute('fill', '#38bdf8');
        } else if (checkedCount === 4) {
            statusText.textContent = 'Klasa: Inżynierska (Zatwierdzona)';
            statusText.className = 'rk-status-badge status-ready';
            rotor.className.baseVal = 'rk-svg-rotor anim-spin-fast color-on';
            wattageDisplay.textContent = '6 W';
            wattageDisplay.setAttribute('fill', '#10b981');
        }
    }

    checkboxes.forEach(cb => {
        cb.addEventListener('change', updatePumpStatus);
    });
});
</script>



<style>
:root {
    --rk-dl-dark: #0f172a;
    --rk-dl-slate: #475569;
    --rk-dl-bg: #f8fafc;
    --rk-dl-card: #ffffff;
    --rk-dl-border: #e2e8f0;
    
    /* Kolory Akcentujące */
    --rk-dl-blue: #2563eb;
    --rk-dl-pdf: #ef4444; /* Czerwony dla PDF */
    --rk-dl-img: #10b981; /* Zielony dla WebP */
}

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

/* Tagi Long Tail */
.rk-dl-tags {
    padding: 25px 40px 0;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    background: var(--rk-dl-card);
}

.rk-mat-tag {
    background: var(--rk-dl-bg);
    color: var(--rk-dl-slate);
    padding: 6px 14px;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 800;
    border: 1px solid var(--rk-dl-border);
    transition: all 0.3s;
}

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

/* Nagłówek */
.rk-dl-header {
    padding: 25px 40px 30px;
    background: var(--rk-dl-card);
    color: var(--rk-dl-dark);
    border-bottom: 1px solid var(--rk-dl-border);
}

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

.rk-dl-header p {
    font-size: 15px;
    color: var(--rk-dl-slate);
    margin: 0;
    line-height: 1.6;
    max-width: 800px;
}

/* Układ główny - Grid */
.rk-dl-layout {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--rk-dl-bg);
}

/* Lewa Kolumna - Podgląd Infografiki */
.rk-dl-preview-area {
    padding: 40px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-right: 1px solid var(--rk-dl-border);
}

.rk-preview-box {
    width: 100%;
    max-width: 320px;
    background: #ffffff;
    border: 8px solid #ffffff;
    border-radius: 16px;
    box-shadow: 0 10px 25px -5px rgba(0,0,0,0.1);
    overflow: hidden;
    position: relative;
}

.rk-preview-box img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: 8px;
    border: 1px solid var(--rk-dl-border);
}

.rk-preview-label {
    margin-top: 20px;
    font-size: 12px;
    font-weight: 900;
    color: var(--rk-dl-slate);
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* Prawa Kolumna - Przyciski Pobierania */
.rk-dl-actions-area {
    padding: 40px;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 20px;
}

.rk-action-title {
    font-size: 20px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 10px 0;
}

.rk-action-desc {
    font-size: 14px;
    color: var(--rk-dl-slate);
    margin: 0 0 20px 0;
    line-height: 1.6;
}

.rk-btn-card {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 20px;
    background: #ffffff;
    border: 2px solid var(--rk-dl-border);
    border-radius: 16px;
    text-decoration: none;
    transition: all 0.2s ease;
    box-shadow: 0 2px 4px rgba(0,0,0,0.02);
}

.rk-btn-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 15px -3px rgba(0,0,0,0.05);
}

.rk-btn-card.pdf:hover { border-color: var(--rk-dl-pdf); }
.rk-btn-card.img:hover { border-color: var(--rk-dl-img); }

.rk-btn-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 12px;
    flex-shrink: 0;
}

.rk-btn-card.pdf .rk-btn-icon { background: #fef2f2; color: var(--rk-dl-pdf); }
.rk-btn-card.img .rk-btn-icon { background: #f0fdf4; color: var(--rk-dl-img); }

.rk-btn-content {
    display: flex;
    flex-direction: column;
}

.rk-btn-headline {
    font-size: 16px;
    font-weight: 900;
    color: var(--rk-dl-dark);
    margin: 0 0 4px 0;
}

.rk-btn-sub {
    font-size: 13px;
    font-weight: 600;
    color: var(--rk-dl-slate);
    margin: 0;
}

/* Stopka z Copyright */
.rk-dl-footer {
    background: #ffffff;
    border-top: 1px solid var(--rk-dl-border);
    padding: 20px 40px;
    display: flex;
    align-items: flex-start;
    gap: 15px;
}

.rk-footer-shield {
    color: var(--rk-dl-slate);
    margin-top: 2px;
    flex-shrink: 0;
}

.rk-footer-copy {
    font-size: 12px;
    font-weight: 500;
    color: var(--rk-dl-slate);
    line-height: 1.6;
    margin: 0;
}

.rk-footer-copy strong {
    color: var(--rk-dl-dark);
    font-weight: 800;
}

@media (max-width: 768px) {
    .rk-dl-layout { grid-template-columns: 1fr; }
    .rk-dl-preview-area { border-right: none; border-bottom: 1px solid var(--rk-dl-border); padding: 30px 20px; }
    .rk-dl-actions-area { padding: 30px 20px; }
    .rk-dl-header { padding: 25px 20px; }
    .rk-dl-tags { padding: 20px 20px 0; }
    .rk-dl-footer { padding: 20px; flex-direction: column; align-items: center; text-align: center; }
}
</style>

<div class="rk-dl-container">
    
    <div class="rk-dl-tags">
        <span class="rk-mat-tag"># schemat podłączenia pompy obiegowej pdf</span>
        <span class="rk-mat-tag"># infografika instalacja ogrzewania podłogowego</span>
        <span class="rk-mat-tag"># instrukcja montażu pompy obiegowej do pobrania</span>
        <span class="rk-mat-tag"># układ mieszający podłogówki schemat</span>
    </div>

    <div class="rk-dl-header">
        <h2>Materiały techniczne do pobrania</h2>
        <p>Pobierz przygotowaną przeze mnie infografikę w wysokiej rozdzielczości. Zawiera ona przekrój najważniejszych wytycznych projektowych i montażowych dla pomp obiegowych.</p>
    </div>

    <div class="rk-dl-layout">
        <div class="rk-dl-preview-area">
            <div class="rk-preview-box">
                <img decoding="async" src="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.webp" alt="Infografika - Pompa obiegowa w instalacji ogrzewania podłogowego" loading="lazy">
            </div>
            <div class="rk-preview-label">Podgląd Dokumentu</div>
        </div>

        <div class="rk-dl-actions-area">
            <h3 class="rk-action-title">Wybierz format pliku</h3>
            <p class="rk-action-desc">Dokumentacja jest dostępna w formacie wektorowym (PDF do druku) oraz w lekkim formacie graficznym (WebP do podglądu na telefonie).</p>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.pdf" target="_blank" class="rk-btn-card pdf">
                <div class="rk-btn-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path><polyline points="14 2 14 8 20 8"></polyline><path d="M12 18v-6"></path><path d="M9 15l3 3 3-3"></path></svg>
                </div>
                <div class="rk-btn-content">
                    <h4 class="rk-btn-headline">Pobierz plik PDF</h4>
                    <p class="rk-btn-sub">Wysoka jakość • Wersja do druku</p>
                </div>
            </a>

            <a href="https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.webp" target="_blank" class="rk-btn-card img">
                <div class="rk-btn-icon">
                    <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="3" width="18" height="18" rx="2" ry="2"></rect><circle cx="8.5" cy="8.5" r="1.5"></circle><polyline points="21 15 16 10 5 21"></polyline></svg>
                </div>
                <div class="rk-btn-content">
                    <h4 class="rk-btn-headline">Wyświetl obraz WebP</h4>
                    <p class="rk-btn-sub">Lekki plik • Podgląd w przeglądarce</p>
                </div>
            </a>
        </div>
    </div>

    <div class="rk-dl-footer">
        <div class="rk-footer-shield">
            <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"></path></svg>
        </div>
        <p class="rk-footer-copy">
            <strong>© 2026 Projekt-Ogrzewania.pl | Autor: Robert Kucharski.</strong> Udostępnianie materiału PDF dozwolone wyłącznie z zachowaniem logotypu portalu i bez modyfikacji pliku. Chronione prawem autorskim.
        </p>
    </div>

</div>

<script type="application/ld+json">
[
  {
    "@context": "https://schema.org",
    "@type": "Article",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#article-materialy",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/"
    },
    "headline": "Materiały techniczne do pobrania: Schematy i wytyczne pomp obiegowych",
    "description": "Pobierz darmową infografikę w formacie PDF oraz WebP zawierającą techniczne zasady doboru, trybów pracy oraz montażu pompy obiegowej w ogrzewaniu podłogowym.",
    "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/12/Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.webp",
    "author": {
      "@type": "Person",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "sameAs": [
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy",
        "https://www.facebook.com/projektogrzewaniapl/",
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ]
    },
    "publisher": {
      "@type": "Organization",
      "name": "Projekt-Ogrzewania.pl",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1.jpg"
      }
    },
    "datePublished": "2026-06-09",
    "dateModified": "2026-06-09"
  },
  {
    "@context": "https://schema.org",
    "@type": "Dataset",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#dataset-infografika",
    "name": "Infografika techniczna: Pompa obiegowa w podłogówce",
    "description": "Zestawienie graficzne schematów montażowych, wzorów obliczeniowych (Q i H) oraz charakterystyk trybów pracy (CP/PP) do pobrania w formacie PDF i WebP.",
    "license": "https://projekt-ogrzewania.pl/",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    },
    "keywords": [
      "schemat podłączenia pompy obiegowej pdf",
      "infografika instalacja ogrzewania podłogowego",
      "instrukcja montażu pompy obiegowej do pobrania",
      "układ mieszający podłogówki schemat",
      "jak podłączyć pompę podłogówki pdf"
    ],
    "measurementTechnique": "Synteza wiedzy inżynierskiej z normy PN-EN 1264 zaprezentowana w formie zoptymalizowanej infografiki 2D.",
    "mainEntity": {
      "@type": "ItemList",
      "itemListElement": [
        "Plik PDF: Format wektorowy przeznaczony do wydruku przez instalatorów (Infografika-Pompa-obiegowa-w-instalacji-ogrzewania-podlogowego.pdf).",
        "Plik WebP: Skompresowany format rastrowy do podglądu bezpośrednio w przeglądarkach na urządzeniach mobilnych."
      ]
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "WebApplication",
    "@id": "https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/#webapp-repozytorium",
    "name": "Interfejs Repozytorium Dokumentacji HVAC",
    "description": "Statyczny interfejs graficzny ułatwiający użytkownikom szybki podgląd i pobieranie dokumentacji technicznej w preferowanym formacie z zachowaniem ochrony praw autorskich.",
    "applicationCategory": "MultimediaApplication",
    "operatingSystem": "All",
    "browserRequirements": "Requires JavaScript and HTML5",
    "creator": {
      "@type": "Person",
      "name": "Robert Kucharski"
    }
  }
]
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">Pompa obiegowa w instalacji ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
